Sponsored Link:   INVOX FINANCE - Helps Small Businesses Grow Worldwide with 9% Interest Loans. 20% bonus! ICO Open
Contract Overview | DigixCrowdSale
ETH Balance: 466,648.147462885422905454 Ether
ETH USD Value: $300,796,729.37 (@ $644.59/ETH)
No Of Transactions: 3538 txns
Misc  
   
Address Watch Add To Watch List
Contract Creator 0x4366ddc115d8cf213c564da36e64c8ebaa30cdbdat txn 0xd93209e55e6c3e84c8b26612ab82ea7c2cb9f8c8b53f92b1a0a84c5a5fd68209
Token Balances
  Latest 25 txns from a total Of 3538 transactions View All

TxHash Age From To Value [TxFee]
0x4e5e87c6da6b8205c21db75892acc9db1eeddc4c369507b5fde6bb742bb306892 days 9 hrs ago0x41e7adb02a3a1e13ce766801f221ec8b28cf8fa0  IN   DigixCrowdSale0 Ether0.00091635
0x45877ac314212f3c71a31887e67cac934752644661fd18b7a9e6142303db9dd58 days 17 hrs ago0x41e7adb02a3a1e13ce766801f221ec8b28cf8fa0  IN   DigixCrowdSale0 Ether0.00091635
0xc996cfa18b27b17090552106ff8ffd2c124fff2154f3260c414f075fbc1147e58 days 17 hrs ago0x41e7adb02a3a1e13ce766801f221ec8b28cf8fa0  IN   DigixCrowdSale0 Ether0.003873926
0xf0b1d8a0253e765ead07564937bb159a029476895b9b6e83211e89985390e7d611 days 9 hrs ago0xe68ac22a49d232e7ce7b777073382d786ef581b4  IN   DigixCrowdSale0 Ether0.000094486
0x83846d85aee4fb2cfd495968ac2ff1055525adbfdea02c4b2c80efae9284678314 days 4 hrs ago0x746ac4553191ccc706097b974a3cb03fed360a69  IN   DigixCrowdSale0 Ether0.000893513
0xd2ab73fe81a788b2b14810a366d6e5eb2f375d65bdee6a1cad343071cd566ab522 days 16 hrs ago0x7700edddd3fc34c18fe2ab14b5345f1596d10553  IN   DigixCrowdSale0.00001 Ether0.00007
0xd92d716d7a5e53d5ffb751dc508e40cbb1f661548cf6867488a2f52d4adad10624 days 14 hrs ago0xfaf4a828a64a45d8a849a9f73d31021683b1d3a7  IN   DigixCrowdSale0 Ether0.000065379
0x499fea8795db45352b9e18ff7b956070c9476cf2de2f9f86052ac8b31666294630 days 6 mins ago0xb0567ce23179fe16506f16b1d0cab57873091589  IN   DigixCrowdSale0 Ether0.001984206
0x46d51f3db34797928d155a1b52684db4ba908b72f6f5e7fdd9174fdd06a9eb6332 days 22 hrs ago0xe0e6b606d43ce301d49fa861fc3e2ca3543db9f6  IN   DigixCrowdSale0 Ether0.008220282
0xd1a6a8e4089ca3cf83f07b762174a19186f6d38fa702000342304cf373f6c0e138 days 8 mins ago0x22a2ffe891ac59e0151f23dfa00119845b229e7b  IN   DigixCrowdSale0 Ether0.0002
0x22799182847369a0063c5d7fba30d71e41b44f7ef70deda77e792b26e314aef938 days 8 hrs ago0x7c0bf55bab08b4c1ebac3fc115c394a739c62538  IN   DigixCrowdSale0 Ether0.0000244079
0xbe3e6fd430e6aff600b11ea924fa9defc95a5e18ce94f9bdc65ffc4639a19e4546 days 16 hrs ago0xd7a4fc2eda6a6db74cdca7278329986de8bae727  IN   DigixCrowdSale0 Ether0.000661402
0xbb92f899ef2953103a4be8f3c62aece65a89e64603b2574f1c8392b0613e920d58 days 21 hrs ago0x359cba0132efd70d82fd1bb2aae1d7e8764a79bb  IN   DigixCrowdSale0 Ether0.000188972
0x080d5291242abef3d18619a3fc3bfe7e516d82d22361740d1ef2278281e911d160 days 11 hrs ago0xebeac5fda740e3399c44ba22914a7bf849119edd  IN   DigixCrowdSale0 Ether0.0002016
0xdb78d56a1afa944ca9b138e11986b45efb2bdf94082e792a3259ec97561b002960 days 11 hrs ago0xebeac5fda740e3399c44ba22914a7bf849119edd  IN   DigixCrowdSale0.0006 Ether0.0005292
0xc893178883b5c510f0b778184c26d8fce84b2bbfd85e3a8aaf56e3045fb076f461 days 19 hrs ago0x22740a38231e6c40fe708cc58041d5c02070c93f  IN   DigixCrowdSale0 Ether0.00047243
0x14750d5b79663f36877b888649f55108c8b40e3c1c72fc1148c42d29b746b93c62 days 11 hrs ago0xd5bac7d0f6dc788cf225b61ef94bc96eaf1bb430  IN   DigixCrowdSale1 wei0.00044
0xd982a4be9c1f5c24b29f5349130507a7fed714f87076ab62af45d7e50b8a159e66 days 3 hrs ago0x0c7200c61e91ea19e137eb0ed392f98769291d63  IN   DigixCrowdSale0 Ether0.003873926
0x0ebd000c250455dc73103c7049cd8d69f5ee8afb3a4927ba94390be6cd320f0767 days 5 hrs ago0x965105aa3acc32a29777093fb96fe33bbbedd587  IN   DigixCrowdSale0 Ether0.002173
0xc891fa6e1955e63335ecf16a88bcc52c0e7fa9646de76bbf630b07728d27d9cd72 days 3 hrs ago0x1756cbcf59e6f652c6593a5c667886891eb7b8a8  IN   DigixCrowdSale0 Ether0.00283458
0x5a279b291e2a6b92cc144a13d4038705674b761312cdbd7dc89dc3a9d68ab10490 days 16 hrs ago0xa1719da09b61c6d1fe0b1254b7e5374904e03cc2  IN   DigixCrowdSale0 Ether0.00021793
0x010edca033c125b868c9bb337f3e7d0e60bf707b274fc7935d4a1565378cdf7694 days 18 hrs ago0xcd672bb046a354e6f2c41ce90259a08359f6f50e  IN   DigixCrowdSale0.00159919 Ether0.00513
0xd4c557d003c246fcb9e840e54eefd1f1bf5e4977044ef38b591b8f6bf811f59996 days 14 hrs ago0xe7f3f19d998cc712d682c27f38b5f562b61b79fd  IN   DigixCrowdSale0 Ether0.001984206
0x5a231b8525d3be9ab69233ed41fc6ed1ff7d11f719bc19cc07a0251877eb538a99 days 13 hrs ago0xc681c19273819ec9e103d1ac31462c7997e09961  IN   DigixCrowdSale0 Ether0.000893513
0x261107d714052a20fc9f769bff04610d996c97704f7212db18fd0ed8270071f4101 days 14 hrs ago0x858496896a51c9da0972ac5a82f24a8c04404cdf  IN   DigixCrowdSale0 Ether0.000257025
[ 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
0x6e336046587e37c970d227f5bd277e4d0a3c353bb20b5f5e6a3c27eb063199841425482724 days 3 hrs ago0x2cab63e02d5b490e5f4a5d1b0d5189420ea54b2d0xf0160428a8552ac9bb7e050d90eeade4ddd528430.00310756 Ether
0xcbda7135ea9456bd09112cf21ed8c410dc0345e5acdf2b183cc86cc3d575230b1246256753 days 21 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe096a2db29039b0eb8606bd641ec09787971a9ab833887112fcdf4dde293a2361245970753 days 22 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x01913b538dc70659f71ecb0b96e6e780900720618e94fd9143041b4a16f9e4161245774753 days 23 hrs ago0x010622d2885d3eb139d3ea329f55563e9a73224d0xf0160428a8552ac9bb7e050d90eeade4ddd5284332.42321034 Ether
0xdf0484bdf2f58319a7f02f9cc315a7fd73c667a93bba024c64e68b762fd86c941245543754 days 13 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x79dce459ac90c56e970707d3ed4efe85943cbce499a032c08b9c646e17fee8f11245505754 days 22 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xff0dec3c6c267eb0ebc368a823f842292ebfaedfc724bd0a78ef0010aafe5b221245503754 days 23 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x56522333269648dc38d32691fee6a6efb83421f362bf9fa6f7482703116342b51245482754 days 27 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe6be770e642d34fee929d5166c669710071edda7a6bf683c16f96de44343f49f1245454754 days 36 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x966942df3a23ecb9e2bb2c90e8c314a285f748839e23caa59e416e9e7b0c08c51245452754 days 37 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x79d68ad7f0d17619ccd10ec0d46024a0531d9dee9b12cda81287098a34b0b9f51245433754 days 41 mins ago0x128b7ec1c1c6cebd3bfd73938a9c860da01dbfb00xf0160428a8552ac9bb7e050d90eeade4ddd5284369.2088221 Ether
0xeafe2904cd93a51a9e0444980dacfcc18931d18c7f0aca5a3193255dc36ebef01245425754 days 43 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x5a154e6b36d5d0ec2dffa8f73dbc494fc60c5d1898397b3d50616e05d24e6e841245421754 days 44 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x7aa24cc3d877593631619333a9fd3da3503ca655019135ebf03c1feee2a4bddf1245421754 days 44 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe17c5f709836ade2044cdb3f2bc98946b9f59df90852d9fe152fc266d2fca88d1245403754 days 49 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x449d0f93223c971bd37a65cbd98f6992bea00c08cd1060b7b398ea15630f99fc1245387754 days 52 mins ago0x2bdadc55ebfb632cc44d02e521ec5cc20d798ae00xf0160428a8552ac9bb7e050d90eeade4ddd528436.93 Ether
0x8192a692cc01bdacfb0a50db2b6ec1c1fd4ac193b28afad549dfddd020f2cad21245369754 days 55 mins ago0x2f097fda1d3d4edad846d816db83395ac11fc8e80xf0160428a8552ac9bb7e050d90eeade4ddd5284360.40000048 Ether
0x0ef6c4b6d35d6dfabab3f1037e1239bf1cf97a231d620cd83daa647fde05af591245369754 days 55 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x8b3015277c7a26c75c839267353e92770a03c1f7969326a2509ba8f53d444e881245363754 days 56 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xeae931ea300fbc477fd5130b731ff878f1faecc75254655e04bdf5ace62e8acf1245353754 days 59 mins ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x7eb80990d1b222b82c76f3d49752b1147f7408911deb5a39bcb38c84429766f71245351754 days 1 hr ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x1901a804abf9e1261f9ef46542e38fbd59fc8205a81ee11da63b753f5563f0c41245351754 days 1 hr ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xc20e73f9d23401381899a2a7389466cfb1186f16bc1271ffde11954a3a44a6dd1245350754 days 1 hr ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xcd29ff80352bd4b9f71341bc10ed28ac182902bf03440d5f7dd3689d2180f9cd1245348754 days 1 hr ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x522ae30a6e32cb4680fd0b3e919224488b607f1db89dd9d8b7d52119a13bc9a01245333754 days 1 hr 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.