Sponsored Link:  NEVERDIE - Trillion Dollar Gaming Infrastructure - One Billion VR JobsICO LIVE
Contract Overview | DigixCrowdSale
ETH Balance: 466,647.059532885422905454 Ether
ETH USD Value: $104,001,630.16 (@ $222.87/ETH)
No Of Transactions: 3397 txns
Token Tracker DGD
  Latest 25 txns from a total Of 3397 transactions View All

TxHash Block Age From To Value [TxFee]
0x964354a4bf3b46f112ba584e70790361cc0142135138bd1fe792c936324d1236405334212 hrs 50 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x999f6882566aa51b4a0480d5401c329631e296b9d1025d7b0515db1168f8b235405333712 hrs 51 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x442efbb3dcb1d44f4f4ec8f924aadf8380b08bc97735cce938f035969fd39bde405333512 hrs 52 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0xd7f724f4cbf5e1434a7ab03f46c32979643b03114abcae513a5427af39d04520405333212 hrs 52 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x4f5ea0e95ff88e0a4531569a413b20ed0031d2212e51759845069f9cf67be30a405333012 hrs 52 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x4530e78cd95c4d4e0e349b1ff2d0eb582ac36e6a9f2e5cb43e805d9249311e90405332912 hrs 53 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0xc382847c0223dd3bcc88a17dcac36051551a5aeae857654b1049f5bafa3711cb405332212 hrs 54 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x9eaf34aab83a0c34ea9ca924365b52dc3fb8b5cc06b3d675fe6d98308c802890405332012 hrs 55 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202078
0xe7471e29d817e79bbe6eb9004e971d330b02ca0484d221b6ef6ba9711a5ee69f405332012 hrs 55 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x194c31762d7bacbee20adb0aa98b1d60a54cb3f4b386faa3f8ca13528c665cab405331612 hrs 57 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0xf25dbb5ac82113d41b2647fe870a20aed744a824acd89974a33cad486d3ff480405331512 hrs 57 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x4a492dec2bd4fc75b3b4e3cfa12675486f640b830fa3bf8544be4f40f6dc4a86405331312 hrs 57 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x01bb602b4f747fa46e8eb073c253eba74a935dc2711917fe48d33fc5fb5f3eee405330612 hrs 59 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00202213
0x0d5aa1a98cfa6129e2e8f4f52b460b8df6dc13ef19c2550e47fe6b20d158fc9d405239017 hrs 39 mins ago0x709ea4af57f8b1e0caf62b7341ef4ff4d323c2ac  IN   DigixCrowdSale0 Ether0.00233578
0xa9fcb3eeeb50324d556d0d85ae89ae13e408d4574f567d88a85549e43265609540462342 days 1 hr ago0x4a822c2b30f8116ecb43b78da40e3754b8459a54  IN   DigixCrowdSale0.01 Ether0.0019842
0xfb75c6cd13e089f42c15a0ac07f4edbf62d5cfd876e2b6b45222087a30340abb399640712 days 22 hrs ago0x04ca7de79aad06c33ea1782b0fbf4dfd0a329a47  IN   DigixCrowdSale0.01 Ether0.00049652
0x9813c0a4dc79ea747b8cc2a29237b953214d40fc5a6d9203adabc15c16e330e0399173413 days 20 hrs ago0x28c04471ce4f5d1f027ca5f69faa5678c6f87937  IN   DigixCrowdSale0.01 Ether0.13391221
0xc6425ddb8deb5b76b50ea2349d77f55ccb047864f37c87a72395fa19916a38b4398315515 days 13 hrs ago0x130debc6d68b109a8d0cb9c2e96e5c78973b25fa  IN   DigixCrowdSale0.01 Ether0.00202213
0x7bb1d4136346a467b70543cfddfc901f493a0cdc08e4b8da17924fa49ed11145396763118 days 15 hrs ago0xc71c2fb83ad90e41cca74a2bc5ad8f2ffea0b6a5  IN   DigixCrowdSale0 Ether0.0019842
0x7a1db6690910ced25ab5ba8aee2f1d3683120d0a2be35fccba52a25499fdaf05395973820 days 4 hrs ago0xc03ad28c83d0686b231de84282167c1943031d73  IN   DigixCrowdSale0 Ether0.0019842
0x5ae72bdd965799d8621063aab221212faa83483bbac122577afe2c76eac988da395948420 days 5 hrs ago0x1285195ca5bb316d316ea8afb927c7c6818ce189  IN   DigixCrowdSale0 Ether0.00577752
0xec816d402a5092ff107730f8b4ce90443650d506aabbdabb51c34fc9bca077cf395925620 days 6 hrs ago0x750fc69ffa68021a4fb94493aebb569641c439cc  IN   DigixCrowdSale0 Ether0.18849552
0x84c0c9502228e1df974825b417c1c221f53cccb9e83ab68e5fd9b4e4e68dc006395731720 days 16 hrs ago0x750fc69ffa68021a4fb94493aebb569641c439cc  IN   DigixCrowdSale0 Ether0.00566916
0x5d0cfdab65979857fdec472ac0c3c163cfef4144755690a258ed3b7949584eb7395465521 days 4 hrs ago0x92f477acbf5c93c790a231d4227d85be5c1d245a  IN   DigixCrowdSale0.8 Ether0.000441
0xdc415a00caa8d6c6aeee53c1a41cd8581686014aefadc3a232efbe70e0a4d4c7393357825 days 10 hrs ago0x7e71705c67a43a030312faf94106b7a71854e496  IN   DigixCrowdSale1 Ether0.00557467
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
  Latest 25 Internal Txns, Click here to View More View All
ParentTxHash Block Age From To Value
0x6e336046587e37c970d227f5bd277e4d0a3c353bb20b5f5e6a3c27eb063199841425482448 days 13 hrs ago0x2cab63e02d5b490e5f4a5d1b0d5189420ea54b2d0xf0160428a8552ac9bb7e050d90eeade4ddd528430.00310756 Ether
0xcbda7135ea9456bd09112cf21ed8c410dc0345e5acdf2b183cc86cc3d575230b1246256478 days 8 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe096a2db29039b0eb8606bd641ec09787971a9ab833887112fcdf4dde293a2361245970478 days 9 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x01913b538dc70659f71ecb0b96e6e780900720618e94fd9143041b4a16f9e4161245774478 days 10 hrs ago0x010622d2885d3eb139d3ea329f55563e9a73224d0xf0160428a8552ac9bb7e050d90eeade4ddd5284332.42321034 Ether
0xdf0484bdf2f58319a7f02f9cc315a7fd73c667a93bba024c64e68b762fd86c941245543478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x79dce459ac90c56e970707d3ed4efe85943cbce499a032c08b9c646e17fee8f11245505478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xff0dec3c6c267eb0ebc368a823f842292ebfaedfc724bd0a78ef0010aafe5b221245503478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x56522333269648dc38d32691fee6a6efb83421f362bf9fa6f7482703116342b51245482478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe6be770e642d34fee929d5166c669710071edda7a6bf683c16f96de44343f49f1245454478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x966942df3a23ecb9e2bb2c90e8c314a285f748839e23caa59e416e9e7b0c08c51245452478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x79d68ad7f0d17619ccd10ec0d46024a0531d9dee9b12cda81287098a34b0b9f51245433478 days 11 hrs ago0x128b7ec1c1c6cebd3bfd73938a9c860da01dbfb00xf0160428a8552ac9bb7e050d90eeade4ddd5284369.2088221 Ether
0xeafe2904cd93a51a9e0444980dacfcc18931d18c7f0aca5a3193255dc36ebef01245425478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x5a154e6b36d5d0ec2dffa8f73dbc494fc60c5d1898397b3d50616e05d24e6e841245421478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x7aa24cc3d877593631619333a9fd3da3503ca655019135ebf03c1feee2a4bddf1245421478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe17c5f709836ade2044cdb3f2bc98946b9f59df90852d9fe152fc266d2fca88d1245403478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x449d0f93223c971bd37a65cbd98f6992bea00c08cd1060b7b398ea15630f99fc1245387478 days 11 hrs ago0x2bdadc55ebfb632cc44d02e521ec5cc20d798ae00xf0160428a8552ac9bb7e050d90eeade4ddd528436.93 Ether
0x8192a692cc01bdacfb0a50db2b6ec1c1fd4ac193b28afad549dfddd020f2cad21245369478 days 11 hrs ago0x2f097fda1d3d4edad846d816db83395ac11fc8e80xf0160428a8552ac9bb7e050d90eeade4ddd5284360.40000048 Ether
0x0ef6c4b6d35d6dfabab3f1037e1239bf1cf97a231d620cd83daa647fde05af591245369478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x8b3015277c7a26c75c839267353e92770a03c1f7969326a2509ba8f53d444e881245363478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xeae931ea300fbc477fd5130b731ff878f1faecc75254655e04bdf5ace62e8acf1245353478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x7eb80990d1b222b82c76f3d49752b1147f7408911deb5a39bcb38c84429766f71245351478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x1901a804abf9e1261f9ef46542e38fbd59fc8205a81ee11da63b753f5563f0c41245351478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xc20e73f9d23401381899a2a7389466cfb1186f16bc1271ffde11954a3a44a6dd1245350478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xcd29ff80352bd4b9f71341bc10ed28ac182902bf03440d5f7dd3689d2180f9cd1245348478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x522ae30a6e32cb4680fd0b3e919224488b607f1db89dd9d8b7d52119a13bc9a01245333478 days 11 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
[ Download CSV Export  ] 



  Contract Source Code   Find Similiar Contracts
/// @title DigixDAO Contract Interfaces

contract ConfigInterface {
  address public owner;
  mapping (address => bool) admins;
  mapping (bytes32 => address) addressMap;
  mapping (bytes32 => bool) boolMap;
  mapping (bytes32 => bytes32) bytesMap;
  mapping (bytes32 => uint256) uintMap;

  /// @notice setConfigAddress sets configuration `_key` to `_val` 
  /// @param _key The key name of the configuration.
  /// @param _val The value of the configuration.
  /// @return Whether the configuration setting was successful or not.
  function setConfigAddress(bytes32 _key, address _val) returns (bool success);

  /// @notice setConfigBool sets configuration `_key` to `_val` 
  /// @param _key The key name of the configuration.
  /// @param _val The value of the configuration.
  /// @return Whether the configuration setting was successful or not.
  function setConfigBool(bytes32 _key, bool _val) returns (bool success);

  /// @notice setConfigBytes sets configuration `_key` to `_val`
  /// @param _key The key name of the configuration.
  /// @param _val The value of the configuration.
  /// @return Whether the configuration setting was successful or not.
  function setConfigBytes(bytes32 _key, bytes32 _val) returns (bool success);

  /// @notice setConfigUint `_key` to `_val`
  /// @param _key The key name of the configuration.
  /// @param _val The value of the configuration.
  /// @return Whether the configuration setting was successful or not.
  function setConfigUint(bytes32 _key, uint256 _val) returns (bool success);

  /// @notice getConfigAddress gets configuration `_key`'s value
  /// @param _key The key name of the configuration.
  /// @return The configuration value 
  function getConfigAddress(bytes32 _key) returns (address val);

  /// @notice getConfigBool gets configuration `_key`'s value
  /// @param _key The key name of the configuration.
  /// @return The configuration value 
  function getConfigBool(bytes32 _key) returns (bool val);

  /// @notice getConfigBytes gets configuration `_key`'s value
  /// @param _key The key name of the configuration.
  /// @return The configuration value 
  function getConfigBytes(bytes32 _key) returns (bytes32 val);

  /// @notice getConfigUint gets configuration `_key`'s value
  /// @param _key The key name of the configuration.
  /// @return The configuration value 
  function getConfigUint(bytes32 _key) returns (uint256 val);

  /// @notice addAdmin sets `_admin` as configuration admin
  /// @return Whether the configuration setting was successful or not.  
  function addAdmin(address _admin) returns (bool success);

  /// @notice removeAdmin removes  `_admin`'s rights
  /// @param _admin The key name of the configuration.
  /// @return Whether the configuration setting was successful or not.  
  function removeAdmin(address _admin) returns (bool success);

}

contract TokenInterface {

  struct User {
    bool locked;
    uint256 balance;
    uint256 badges;
    mapping (address => uint256) allowed;
  }

  mapping (address => User) users;
  mapping (address => uint256) balances;
  mapping (address => mapping (address => uint256)) allowed;
  mapping (address => bool) seller;

  address config;
  address owner;
  address dao;
  bool locked;

  /// @return total amount of tokens
  uint256 public totalSupply;
  uint256 public totalBadges;

  /// @param _owner The address from which the balance will be retrieved
  /// @return The balance
  function balanceOf(address _owner) constant returns (uint256 balance);

  /// @param _owner The address from which the badge count will be retrieved
  /// @return The badges count
  function badgesOf(address _owner) constant returns (uint256 badge);

  /// @notice send `_value` tokens to `_to` from `msg.sender`
  /// @param _to The address of the recipient
  /// @param _value The amount of tokens to be transfered
  /// @return Whether the transfer was successful or not
  function transfer(address _to, uint256 _value) returns (bool success);

  /// @notice send `_value` badges to `_to` from `msg.sender`
  /// @param _to The address of the recipient
  /// @param _value The amount of tokens to be transfered
  /// @return Whether the transfer was successful or not
  function sendBadge(address _to, uint256 _value) returns (bool success);

  /// @notice send `_value` tokens to `_to` from `_from` on the condition it is approved by `_from`
  /// @param _from The address of the sender
  /// @param _to The address of the recipient
  /// @param _value The amount of tokens to be transfered
  /// @return Whether the transfer was successful or not
  function transferFrom(address _from, address _to, uint256 _value) returns (bool success);

  /// @notice `msg.sender` approves `_spender` to spend `_value` tokens on its behalf
  /// @param _spender The address of the account able to transfer the tokens
  /// @param _value The amount of tokens to be approved for transfer
  /// @return Whether the approval was successful or not
  function approve(address _spender, uint256 _value) returns (bool success);

  /// @param _owner The address of the account owning tokens
  /// @param _spender The address of the account able to transfer the tokens
  /// @return Amount of remaining tokens of _owner that _spender is allowed to spend
  function allowance(address _owner, address _spender) constant returns (uint256 remaining);

  /// @notice mint `_amount` of tokens to `_owner`
  /// @param _owner The address of the account receiving the tokens
  /// @param _amount The amount of tokens to mint
  /// @return Whether or not minting was successful
  function mint(address _owner, uint256 _amount) returns (bool success);

  /// @notice mintBadge Mint `_amount` badges to `_owner`
  /// @param _owner The address of the account receiving the tokens
  /// @param _amount The amount of tokens to mint
  /// @return Whether or not minting was successful
  function mintBadge(address _owner, uint256 _amount) returns (bool success);

  function registerDao(address _dao) returns (bool success);

  function registerSeller(address _tokensales) returns (bool success);

  event Transfer(address indexed _from, address indexed _to, uint256 _value);
  event SendBadge(address indexed _from, address indexed _to, uint256 _amount);
  event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

contract TokenSalesInterface {

  struct SaleProxy {
    address payout;
    bool isProxy;
  }

  struct SaleStatus {
    bool founderClaim;
    uint256 releasedTokens;
    uint256 releasedBadges;
    uint256 claimers;
  }

  struct Info {
    uint256 totalWei;
    uint256 totalCents;
    uint256 realCents;
    uint256 amount;
  }

  struct SaleConfig {
    uint256 startDate;
    uint256 periodTwo;
    uint256 periodThree;
    uint256 endDate;
    uint256 goal;
    uint256 cap;
    uint256 badgeCost;
    uint256 founderAmount;
    address founderWallet;
  }

  struct Buyer {
    uint256 centsTotal;
    uint256 weiTotal;
    bool claimed;
  }

  Info saleInfo;
  SaleConfig saleConfig;
  SaleStatus saleStatus;

  address config;
  address owner;
  bool locked;

  uint256 public ethToCents;

  mapping (address => Buyer) buyers;
  mapping (address => SaleProxy) proxies;

  /// @notice Calculates the parts per billion 1⁄1,000,000,000 of `_a` to `_b`
  /// @param _a The antecedent
  /// @param _c The consequent
  /// @return Part per billion value
  function ppb(uint256 _a, uint256 _c) public constant returns (uint256 b);


  /// @notice Calculates the share from `_total` based on `_contrib` 
  /// @param _contrib The contributed amount in USD
  /// @param _total The total amount raised in USD
  /// @return Total number of shares
  function calcShare(uint256 _contrib, uint256 _total) public constant returns (uint256 share);

  /// @notice Calculates the current USD cents value of `_wei` 
  /// @param _wei the amount of wei
  /// @return The USD cents value
  function weiToCents(uint256 _wei) public constant returns (uint256 centsvalue);

  function proxyPurchase(address _user) returns (bool success);

  /// @notice Send msg.value purchase for _user.  
  /// @param _user The account to be credited
  /// @return Success if purchase was accepted
  function purchase(address _user, uint256 _amount) private returns (bool success);

  /// @notice Get crowdsale information for `_user`
  /// @param _user The account to be queried
  /// @return `centstotal` the total amount of USD cents contributed
  /// @return `weitotal` the total amount in wei contributed
  /// @return `share` the current token shares earned
  /// @return `badges` the number of proposer badges earned
  /// @return `claimed` is true if the tokens and badges have been claimed
  function userInfo(address _user) public constant returns (uint256 centstotal, uint256 weitotal, uint256 share, uint badges, bool claimed); 

  /// @notice Get the crowdsale information from msg.sender (see userInfo)
  function myInfo() public constant returns (uint256 centstotal, uint256 weitotal, uint256 share, uint badges, bool claimed); 

  /// @notice get the total amount of wei raised for the crowdsale
  /// @return The amount of wei raised
  function totalWei() public constant returns (uint);

  /// @notice get the total USD value in cents raised for the crowdsale
  /// @return the amount USD cents
  function totalCents() public constant returns (uint);

  /// @notice get the current crowdsale information
  /// @return `startsale` The unix timestamp for the start of the crowdsale and the first period modifier
  /// @return `two` The unix timestamp for the start of the second period modifier
  /// @return `three` The unix timestamp for the start of the third period modifier
  /// @return `endsale` The unix timestamp of the end of crowdsale
  /// @return `totalwei` The total amount of wei raised
  /// @return `totalcents` The total number of USD cents raised
  /// @return `amount` The amount of DGD tokens available for the crowdsale
  /// @return `goal` The USD value goal for the crowdsale
  /// @return `famount` Founders endowment
  /// @return `faddress` Founder wallet address
  /*function getSaleInfo() public constant returns (uint256 startsale, uint256 two, uint256 three, uint256 endsale, uint256 totalwei, uint256 totalcents, uint256 amount, uint256 goal, uint256 famount, address faddress);*/

  function claimFor(address _user) returns (bool success); 

  /// @notice Allows msg.sender to claim the DGD tokens and badges if the goal is reached or refunds the ETH contributed if goal is not reached at the end of the crowdsale
  function claim() returns (bool success);

  function claimFounders() returns (bool success);

  /// @notice See if the crowdsale goal has been reached
  function goalReached() public constant returns (bool reached);

  /// @notice Get the current sale period
  /// @return `saleperiod` 0 = Outside of the crowdsale period, 1 = First reward period, 2 = Second reward period, 3 = Final crowdsale period.
  function getPeriod() public constant returns (uint saleperiod);

  /// @notice Get the date for the start of the crowdsale
  /// @return `date` The unix timestamp for the start
  function startDate() public constant returns (uint date);
  
  /// @notice Get the date for the second reward period of the crowdsale
  /// @return `date` The unix timestamp for the second period
  function periodTwo() public constant returns (uint date);

  /// @notice Get the date for the final period of the crowdsale
  /// @return `date` The unix timestamp for the final period
  function periodThree() public constant returns (uint date);

  /// @notice Get the date for the end of the crowdsale
  /// @return `date` The unix timestamp for the end of the crowdsale
  function endDate() public constant returns (uint date);

  /// @notice Check if crowdsale has ended
  /// @return `ended` If the crowdsale has ended
  
  function isEnded() public constant returns (bool ended);

  /// @notice Send raised funds from the crowdsale to the DAO
  /// @return `success` if the send succeeded
  function sendFunds() public returns (bool success);

  //function regProxy(address _payment, address _payout) returns (bool success);
  function regProxy(address _payout) returns (bool success);

  function getProxy(address _payout) public returns (address proxy);
  
  function getPayout(address _proxy) public returns (address payout, bool isproxy);

  function unlock() public returns (bool success);

  function getSaleStatus() public constant returns (bool fclaim, uint256 reltokens, uint256 relbadges, uint256 claimers);

  function getSaleInfo() public constant returns (uint256 weiamount, uint256 cents, uint256 realcents, uint256 amount);

  function getSaleConfig() public constant returns (uint256 start, uint256 two, uint256 three, uint256 end, uint256 goal, uint256 cap, uint256 badgecost, uint256 famount, address fwallet);
  
  event Purchase(uint256 indexed _exchange, uint256 indexed _rate, uint256 indexed _cents);
  event Claim(address indexed _user, uint256 indexed _amount, uint256 indexed _badges);

}

contract ProxyPayment {

  address payout;
  address tokenSales; 
  address owner;

  function ProxyPayment(address _payout, address _tokenSales) {
    payout = _payout;
    tokenSales = _tokenSales;
    owner = _payout;
  }

  function () {
    if (!TokenSalesInterface(tokenSales).proxyPurchase.value(msg.value).gas(106000)(payout)) throw;
  }

}

contract TokenSales is TokenSalesInterface {

  modifier ifOwner() {
    if (msg.sender != owner) throw;
    _
  }

  modifier ifOOrigin() {
    if (tx.origin != owner) throw;
    _
  }

  mapping (address => address) proxyPayouts;
  uint256 public WEI_PER_ETH = 1000000000000000000;
  uint256 public BILLION = 1000000000;
  uint256 public CENTS = 100;


  function TokenSales(address _config) {
    owner = msg.sender;
    config = _config;
    saleStatus.founderClaim = false;
    saleStatus.releasedTokens = 0;
    saleStatus.releasedBadges = 0;
    saleStatus.claimers = 0;
    saleConfig.startDate = ConfigInterface(_config).getConfigUint("sale1:period1");
    saleConfig.periodTwo = ConfigInterface(_config).getConfigUint("sale1:period2");
    saleConfig.periodThree = ConfigInterface(_config).getConfigUint("sale1:period3");
    saleConfig.endDate = ConfigInterface(_config).getConfigUint("sale1:end");
    saleConfig.founderAmount = ConfigInterface(_config).getConfigUint("sale1:famount") * BILLION;
    saleConfig.founderWallet = ConfigInterface(_config).getConfigAddress("sale1:fwallet");
    saleConfig.goal = ConfigInterface(_config).getConfigUint("sale1:goal") * CENTS;
    saleConfig.cap = ConfigInterface(_config).getConfigUint("sale1:cap") * CENTS;
    saleConfig.badgeCost = ConfigInterface(_config).getConfigUint("sale1:badgecost") * CENTS;
    saleInfo.amount = ConfigInterface(_config).getConfigUint("sale1:amount") * BILLION;
    saleInfo.totalWei = 0;
    saleInfo.totalCents = 0;
    saleInfo.realCents;
    saleStatus.founderClaim = false;
    locked = true;
  }

  function () {
    if (getPeriod() == 0) throw;
    uint256 _amount = msg.value;
    address _sender;
    if (proxies[msg.sender].isProxy == true) {
      _sender = proxies[msg.sender].payout;
    } else {
      _sender = msg.sender;
    }
    if (!purchase(_sender, _amount)) throw;
  }

  function proxyPurchase(address _user) returns (bool success) {
    return purchase(_user, msg.value);
  }

  function purchase(address _user, uint256 _amount) private returns (bool success) {
    uint256 _cents = weiToCents(_amount);
    if ((saleInfo.realCents + _cents) > saleConfig.cap) return false;
    uint256 _wei = _amount;
    uint256 _modifier;
    uint _period = getPeriod();
    if ((_period == 0) || (_cents == 0)) {
      return false;
    } else {
      if (_period == 3) _modifier = 100;
      if (_period == 2) _modifier = 115;
      if (_period == 1) _modifier = 130;
      uint256 _creditwei = _amount;
      uint256 _creditcents = (weiToCents(_creditwei) * _modifier * 10000) / 1000000 ;
      buyers[_user].centsTotal += _creditcents;
      buyers[_user].weiTotal += _creditwei; 
      saleInfo.totalCents += _creditcents;
      saleInfo.realCents += _cents;
      saleInfo.totalWei += _creditwei;
      Purchase(ethToCents, _modifier, _creditcents); 
      return true;
    }
  }

  function ppb(uint256 _a, uint256 _c) public constant returns (uint256 b) {
    b = (BILLION * _a + _c / 2) / _c;
    return b;
  }

  function calcShare(uint256 _contrib, uint256 _total) public constant returns (uint256 share) {
    uint256 _ppb = ppb(_contrib, _total);
    share = ((_ppb * saleInfo.amount) / BILLION);
    return share;
  }

  function weiToCents(uint256 _wei) public constant returns (uint256 centsvalue) {
    centsvalue = ((_wei * 100000 / WEI_PER_ETH) * ethToCents) / 100000;
    return centsvalue;
  }

  function setEthToCents(uint256 _eth) ifOwner returns (bool success) {
    ethToCents = _eth;
    success = true;
    return success;
  }


  function getSaleStatus() public constant returns (bool fclaim, uint256 reltokens, uint256 relbadges, uint256 claimers) {
    return (saleStatus.founderClaim, saleStatus.releasedTokens, saleStatus.releasedBadges, saleStatus.claimers);
  }

  function getSaleInfo() public constant returns (uint256 weiamount, uint256 cents, uint256 realcents, uint256 amount) {
    return (saleInfo.totalWei, saleInfo.totalCents, saleInfo.realCents, saleInfo.amount);
  }


  function getSaleConfig() public constant returns (uint256 start, uint256 two, uint256 three, uint256 end, uint256 goal, uint256 cap, uint256 badgecost, uint256 famount, address fwallet) {
    return (saleConfig.startDate, saleConfig.periodTwo, saleConfig.periodThree, saleConfig.endDate, saleConfig.goal, saleConfig.cap, saleConfig.badgeCost, saleConfig.founderAmount, saleConfig.founderWallet);
  }

  function goalReached() public constant returns (bool reached) {
    reached = (saleInfo.totalCents >= saleConfig.goal);
    return reached;
  }

  function claim() returns (bool success) {
    return claimFor(msg.sender);
  }

  function claimFor(address _user) returns (bool success) {
    if ( (now < saleConfig.endDate) || (buyers[_user].claimed == true) ) {
      return true;
    }
  
    if (!goalReached()) {
      if (!address(_user).send(buyers[_user].weiTotal)) throw;
      buyers[_user].claimed = true;
      return true;
    }

    if (goalReached()) {
      address _tokenc = ConfigInterface(config).getConfigAddress("ledger");
      uint256 _tokens = calcShare(buyers[_user].centsTotal, saleInfo.totalCents); 
      uint256 _badges = buyers[_user].centsTotal / saleConfig.badgeCost;
      if ((TokenInterface(_tokenc).mint(msg.sender, _tokens)) && (TokenInterface(_tokenc).mintBadge(_user, _badges))) {
        saleStatus.releasedTokens += _tokens;
        saleStatus.releasedBadges += _badges;
        saleStatus.claimers += 1;
        buyers[_user].claimed = true;
        Claim(_user, _tokens, _badges);
        return true;
      } else {
        return false;
      }
    }

  }

  function claimFounders() returns (bool success) {
    if (saleStatus.founderClaim == true) return false;
    if (now < saleConfig.endDate) return false;
    if (!goalReached()) return false;
    address _tokenc = ConfigInterface(config).getConfigAddress("ledger");
    uint256 _tokens = saleConfig.founderAmount;
    uint256 _badges = 4;
    address _faddr = saleConfig.founderWallet;
    if ((TokenInterface(_tokenc).mint(_faddr, _tokens)) && (TokenInterface(_tokenc).mintBadge(_faddr, _badges))) {
      saleStatus.founderClaim = true;
      saleStatus.releasedTokens += _tokens;
      saleStatus.releasedBadges += _badges;
      saleStatus.claimers += 1;
      Claim(_faddr, _tokens, _badges);
      return true;
    } else {
      return false;
    }
  }

  function getPeriod() public constant returns (uint saleperiod) {
    if ((now > saleConfig.endDate) || (now < saleConfig.startDate)) {
      saleperiod = 0;
      return saleperiod;
    }
    if (now >= saleConfig.periodThree) {
      saleperiod = 3;
      return saleperiod;
    }
    if (now >= saleConfig.periodTwo) {
      saleperiod = 2;
      return saleperiod;
    }
    if (now < saleConfig.periodTwo) {
      saleperiod = 1;
      return saleperiod;
    }
  }

  function userInfo(address _user) public constant returns (uint256 centstotal, uint256 weitotal, uint256 share, uint badges, bool claimed) {
    share = calcShare(buyers[_user].centsTotal, saleInfo.totalCents);
    badges = buyers[_user].centsTotal / saleConfig.badgeCost;
    return (buyers[_user].centsTotal, buyers[_user].weiTotal, share, badges, buyers[_user].claimed);
  }

  function myInfo() public constant returns (uint256 centstotal, uint256 weitotal, uint256 share, uint badges, bool claimed) {
    return userInfo(msg.sender);
  }

  function totalWei() public constant returns (uint) {
    return saleInfo.totalWei;
  }

  function totalCents() public constant returns (uint) {
    return saleInfo.totalCents;
  }

  function startDate() public constant returns (uint date) {
    return saleConfig.startDate;
  }
  
  function periodTwo() public constant returns (uint date) {
    return saleConfig.periodTwo;
  }

  function periodThree() public constant returns (uint date) {
    return saleConfig.periodThree;
  }

  function endDate() public constant returns (uint date) {
    return saleConfig.endDate;
  }

  function isEnded() public constant returns (bool ended) {
    return (now >= endDate());
  }
  
  function sendFunds() public returns (bool success) {
    if (locked) return false;
    if (!goalReached()) return false;
    if (!isEnded()) return false;
    address _dao = ConfigInterface(config).getConfigAddress("sale1:dao");
    if (_dao == 0x0000000000000000000000000000000000000000) return false;
    return _dao.send(totalWei());
  }

  function regProxy(address _payout) ifOOrigin returns (bool success) {
    address _proxy = new ProxyPayment(_payout, address(this));
    proxies[_proxy].payout = _payout;
    proxies[_proxy].isProxy = true;
    proxyPayouts[_payout] = _proxy;
    return true;
  }
  
  function getProxy(address _payout) public returns (address proxy) {
    return proxyPayouts[_payout];
  }

  function getPayout(address _proxy) public returns (address payout, bool isproxy) {
    return (proxies[_proxy].payout, proxies[_proxy].isProxy);
  }

  function unlock() ifOwner public returns (bool success) {
    locked = false;
    return true;
  }
}

  Contract ABI  
[{"constant":false,"inputs":[{"name":"_eth","type":"uint256"}],"name":"setEthToCents","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"date","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"claimFounders","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"userInfo","outputs":[{"name":"centstotal","type":"uint256"},{"name":"weitotal","type":"uint256"},{"name":"share","type":"uint256"},{"name":"badges","type":"uint256"},{"name":"claimed","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"getPeriod","outputs":[{"name":"saleperiod","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"periodTwo","outputs":[{"name":"date","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"proxyPurchase","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"BILLION","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"ethToCents","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"_wei","type":"uint256"}],"name":"weiToCents","outputs":[{"name":"centsvalue","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"totalWei","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"WEI_PER_ETH","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"goalReached","outputs":[{"name":"reached","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_proxy","type":"address"}],"name":"getPayout","outputs":[{"name":"payout","type":"address"},{"name":"isproxy","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"myInfo","outputs":[{"name":"centstotal","type":"uint256"},{"name":"weitotal","type":"uint256"},{"name":"share","type":"uint256"},{"name":"badges","type":"uint256"},{"name":"claimed","type":"bool"}],"type":"function"},{"constant":false,"inputs":[{"name":"_payout","type":"address"}],"name":"regProxy","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"getSaleStatus","outputs":[{"name":"fclaim","type":"bool"},{"name":"reltokens","type":"uint256"},{"name":"relbadges","type":"uint256"},{"name":"claimers","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[],"name":"sendFunds","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"isEnded","outputs":[{"name":"ended","type":"bool"}],"type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[{"name":"_contrib","type":"uint256"},{"name":"_total","type":"uint256"}],"name":"calcShare","outputs":[{"name":"share","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_payout","type":"address"}],"name":"getProxy","outputs":[{"name":"proxy","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"periodThree","outputs":[{"name":"date","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"totalCents","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"date","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[],"name":"getSaleConfig","outputs":[{"name":"start","type":"uint256"},{"name":"two","type":"uint256"},{"name":"three","type":"uint256"},{"name":"end","type":"uint256"},{"name":"goal","type":"uint256"},{"name":"cap","type":"uint256"},{"name":"badgecost","type":"uint256"},{"name":"famount","type":"uint256"},{"name":"fwallet","type":"address"}],"type":"function"},{"constant":true,"inputs":[],"name":"getSaleInfo","outputs":[{"name":"weiamount","type":"uint256"},{"name":"cents","type":"uint256"},{"name":"realcents","type":"uint256"},{"name":"amount","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"_user","type":"address"}],"name":"claimFor","outputs":[{"name":"success","type":"bool"}],"type":"function"},{"constant":true,"inputs":[],"name":"CENTS","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":true,"inputs":[{"name":"_a","type":"uint256"},{"name":"_c","type":"uint256"}],"name":"ppb","outputs":[{"name":"b","type":"uint256"}],"type":"function"},{"inputs":[{"name":"_config","type":"address"}],"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_exchange","type":"uint256"},{"indexed":true,"name":"_rate","type":"uint256"},{"indexed":true,"name":"_cents","type":"uint256"}],"name":"Purchase","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":true,"name":"_amount","type":"uint256"},{"indexed":true,"name":"_badges","type":"uint256"}],"name":"Claim","type":"event"}]

  Contract Creation Code Switch To Opcodes View
606060405236156101695760e060020a6000350463034187fd81146101785780630b97bc861461019e5780630c77a697146101a85780631959a002146101c95780631ed24195146101fe5780633f5b7675146102235780634a5dddd21461022e5780634beda18b146102405780634e71d92d146102495780635d7e8c15146102575780636d568c43146102605780636d98e9fc1461028257806374ffdcd01461028e5780637d3d6522146102975780638006745b146102a857806385b31d7b146102eb5780638c0e2a31146103015780638c3c4b34146103275780638d68cf5914610344578063a4fd6f5614610363578063a69df4b514610371578063ab51902014610394578063b7fba4d3146103ac578063bb7859b5146103d2578063bc126ba1146103dd578063c24a0f8b146103e8578063cea943ee146103f4578063db83694c14610463578063ddeae03314610477578063f5582870146104c0578063f697a0ed146104c9575b6104e2600060006104e4610202565b610563600435601254600090600160a060020a0390811633919091161461070b57610002565b6105636004545b90565b610563600d54600090819081908190819060ff166001141561098d57610b59565b6105756004355b600160a060020a0381166000908152601460205260408120546001548291829182918291610b94919061039e565b6105635b600754600090421180610216575060045442105b15610b60575060006101a5565b6105636005546101a5565b61056360043560006105e3823461053d565b61056360185481565b61056360006107183361047e565b61056360135481565b6105636004355b601354601754620186a083810291909104909102045b919050565b6105635b6000546101a5565b61056360175481565b6105635b60085460015410156101a5565b600435600160a060020a03908116600090815260156020908152604080519281902054938416835260a060020a90930460ff169082015281519081900390910190f35b61057560006000600060006000610bd8336101d0565b610563600435601254600090819032600160a060020a03908116911614610cde57610002565b6105a0600d54600e54600f5460105460ff93909316925b90919293565b610563601254600090819060a060020a900460ff1615610c0a57610c06565b6105635b6000610be96103ec565b610563601254600090600160a060020a03908116339190911614610d8f57610002565b6105636004356024355b600060006106f984846104d3565b6105c6600435600160a060020a038181166000908152601660205260409020541661027d565b6105636006546101a5565b6105636001546101a5565b6105635b6007546101a5565b60408051600754600854600a54600554600654600454600954600b54600c549289526020890194909452878901929092526060870195909552608086019390935260a085019290925260c084015260e0830152600160a060020a03166101008201529051908190036101200190f35b6105a060005460015460025460035461033e565b6105636004355b6007546000908190819081904210806104b25750600160a060020a03851681526014602052604081206002015460ff166001145b1561071f5760019350610799565b61056360195481565b6105636004356024355b60185490910260028204010490565b005b600014156104f157610002565b33600160a060020a031660009081526015602052604090205434925060a060020a900460ff16600114156105345750604060002054600160a060020a0316610537565b50335b61055481835b60006000600060006000600060006105ea88610267565b151561055f57610002565b5050565b60408051918252519081900360200190f35b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b604080519485526020850193909352838301919091526060830152519081900360800190f35b60408051600160a060020a03929092168252519081900360200190f35b905061027d565b600954600254919750908701111561060557600096506106ed565b879450610610610202565b925082600014806106215750856000145b1561062f57600096506106ed565b826003141561063d57606493505b826002141561064b57607393505b826001141561065957608293505b879150620f42408461066a84610267565b600160a060020a038c1660009081526014602052604080822080549390940261271002949094049182018355600192830180548701905582548201909255600280548a01905581548501825591516013549293508392879290917f75cc31666f3b6385ba515cf89fd41064642231a796fa7eeea1ba48d9b8ebe2699190a4600196505b50505050505092915050565b60185460035490910204949350505050565b506013819055600161027d565b90506101a5565b61072761029b565b151561076557600160a060020a0385166000818152601460205260408051908220600101549082818181858883f19350505050151561076d57610002565b6107a161029b565b600160a060020a0385166000908152601460205260409020600201805460ff1916600190811790915593505b505050919050565b15610799576040805160115460e160020a637c4b281d02825260d160020a653632b233b2b90260048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f1156100025750506040805151600160a060020a03881660009081526014602052919091205460015491955061083192509061039e565b600a54600160a060020a03878116600090815260146020908152604080518184205460e060020a6340c10f1902825233861660048301526024820188905291519698509490049550918716936340c10f1993604480820194939183900301908290876161da5a03f1156100025750506040515190508015610907575082600160a060020a031663e42bff6686836040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750506040515190505b1561098457600e805483019055600f805482019055601080546001908101909155600160a060020a038616600081815260146020526040808220600201805460ff1916909417909355915183928592917f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79190a460019350610799565b60009350610799565b6007544210156109a05760009450610b59565b6109a861029b565b15156109b75760009450610b59565b6040805160115460e160020a637c4b281d02825260d160020a653632b233b2b90260048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f115610002575050604080518051600b54600c5460e060020a6340c10f19028452600160a060020a039081166004858101829052602486018490529551939a50919850939650945091871692506340c10f1991604480830192602092919082900301816000876161da5a03f1156100025750506040515190508015610ae5575083600160a060020a031663e42bff6682846040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750506040515190505b15610b5457600d805460ff19166001908117909155600e805485019055600f80548401905560108054909101905560405182908490600160a060020a038416907f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf790600090a460019450610b59565b600094505b5050505090565b6006544210610b71575060036101a5565b6005544210610b82575060026101a5565b6005544210156101a5575060016101a5565b600a54600160a060020a038816600090815260146020526040902080546001820154600292909201549098509096509194508604925060ff16905091939590929450565b945094509450945094509091929394565b42101590506101a5565b6040516000818181858888f19550505050505b5090565b610c1261029b565b1515610c215760009150610c06565b610c29610367565b1515610c385760009150610c06565b6040805160115460e160020a637c4b281d0282527f73616c65313a64616f000000000000000000000000000000000000000000000060048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f11561000257505060405151915050600160a060020a03811660001415610cca5760009150610c06565b80600160a060020a03166000610bf3610286565b823060405160d780610db58339018083600160a060020a0316815260200182600160a060020a0316815260200192505050604051809103906000f0600160a060020a038181166000908152601560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168a1774ff0000000000000000000000000000000000000000191660a060020a179091559790931682526016905220805490941617909255506001919050565b506012805474ff00000000000000000000000000000000000000001916905560016101a556606060408181528060d7833960a090525160805160008054600160a060020a031990811684179091556001805482168317905560028054909116831790555050608c80604b6000396000f360606040523615600a575b60886001546000547f4a5dddd200000000000000000000000000000000000000000000000000000000606090815273ffffffffffffffffffffffffffffffffffffffff918216606452911690634a5dddd29062019e10903490608490602090602481858988f11560025750506040515115159250608a915050576002565b005b56
View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.