Sponsored Link:   SHIFT.cash - smart-contract based car title lending platform, 30 billion market, 35+ employees. Join NOW.
Contract Overview | DigixCrowdSale
ETH Balance: 466,648.147462885422905454 Ether
ETH USD Value: $455,677,249.52 (@ $976.49/ETH)
No Of Transactions: 3521 txns
Token Tracker DGD
Misc  
   
Address Watch Add To Watch List
Contract Creator 0x4366ddc115d8cf213c564da36e64c8ebaa30cdbdat txn 0xd93209e55e6c3e84c8b26612ab82ea7c2cb9f8c8b53f92b1a0a84c5a5fd68209
Token Tracker
  Latest 25 txns from a total Of 3521 transactions View All

TxHash Age From To Value [TxFee]
0xd982a4be9c1f5c24b29f5349130507a7fed714f87076ab62af45d7e50b8a159e1 day 13 hrs ago0x0c7200c61e91ea19e137eb0ed392f98769291d63  IN   DigixCrowdSale0 Ether0.003873926
0x0ebd000c250455dc73103c7049cd8d69f5ee8afb3a4927ba94390be6cd320f072 days 15 hrs ago0x965105aa3acc32a29777093fb96fe33bbbedd587  IN   DigixCrowdSale0 Ether0.002173
0xc891fa6e1955e63335ecf16a88bcc52c0e7fa9646de76bbf630b07728d27d9cd7 days 13 hrs ago0x1756cbcf59e6f652c6593a5c667886891eb7b8a8  IN   DigixCrowdSale0 Ether0.00283458
0x5a279b291e2a6b92cc144a13d4038705674b761312cdbd7dc89dc3a9d68ab10426 days 2 hrs ago0xa1719da09b61c6d1fe0b1254b7e5374904e03cc2  IN   DigixCrowdSale0 Ether0.00021793
0x010edca033c125b868c9bb337f3e7d0e60bf707b274fc7935d4a1565378cdf7630 days 4 hrs ago0xcd672bb046a354e6f2c41ce90259a08359f6f50e  IN   DigixCrowdSale0.00159919 Ether0.00513
0xd4c557d003c246fcb9e840e54eefd1f1bf5e4977044ef38b591b8f6bf811f59931 days 23 hrs ago0xe7f3f19d998cc712d682c27f38b5f562b61b79fd  IN   DigixCrowdSale0 Ether0.001984206
0x5a231b8525d3be9ab69233ed41fc6ed1ff7d11f719bc19cc07a0251877eb538a34 days 23 hrs ago0xc681c19273819ec9e103d1ac31462c7997e09961  IN   DigixCrowdSale0 Ether0.000893513
0x261107d714052a20fc9f769bff04610d996c97704f7212db18fd0ed8270071f437 days 27 mins ago0x858496896a51c9da0972ac5a82f24a8c04404cdf  IN   DigixCrowdSale0 Ether0.000257025
0xc33cb682e9980cacc72d70a085921bae6fafc933eb52378f0e7b18d44c8cc98750 days 2 hrs ago0xae3a8812d419d15bf979f712ed4f471a1f527488  IN   DigixCrowdSale0 Ether0.00188972
0xf4df1a31ddeb8cdd12297512dafbba39d6c502d47086b64fee33b2454d6e138550 days 15 hrs ago0x3ff51120d34f4318b6aff85dbca5481dbf03f40b  IN   DigixCrowdSale0 Ether0.00046935
0x2ff67de27c9f8ddf7c22beea23c910d5596f3d34a7ad2bb64c59448f95d8ac5951 days 10 hrs ago0xf466859ead1932d743d622cb74fc058882e8648a  IN   DigixCrowdSale0 Ether0.00094576
0xbbd467cc82b78ab8196be24e4534a7c32750cf0712aca34b8a5f807143614a2f56 days 17 hrs ago0x28c04471ce4f5d1f027ca5f69faa5678c6f87937  IN   DigixCrowdSale0 Ether0.000457653
0x873b18e5c3be2673eac691b9e0754c2f21d216aaba319aed29b10d1d44390f3e56 days 17 hrs ago0x28c04471ce4f5d1f027ca5f69faa5678c6f87937  IN   DigixCrowdSale0 Ether0.000496524
0x53848d010d33c95e31543d148fb056761733e71f8cede68ba74b4b728d3b10ad56 days 17 hrs ago0x28c04471ce4f5d1f027ca5f69faa5678c6f87937  IN   DigixCrowdSale0.001 Ether0.00046935
0xaa84f6d21b2f09d5bb9e8c4db2921ec2f29d0209d402c35fda7c07733064ddd159 days 21 hrs ago0xc3618873422b2ca0262a5cd4818b36279ae38f16  IN   DigixCrowdSale0 Ether0.001984206
0x493aea1c485f6dca9dbbdba5a46a2fb2ad3991967b4ac2d7cd19f1ea92c5330e62 days 9 hrs ago0x85d07fab251c26c123d0bd814c464a707b6935e0  IN   DigixCrowdSale0 Ether0.00377944
0xc032f57f41878182f4975e79c74f1e9217a05fb1d60922b6b17cfd536893bf4782 days 18 hrs ago0x0437087f0b2537ebf8cc72196a622901c96ac3c3  IN   DigixCrowdSale0.000016607433487 Ether0.018
0xa24e0bd7fd16f6c322bd091af47abab3995b176d497ff12cd59bcc878158194589 days 22 hrs ago0xf466859ead1932d743d622cb74fc058882e8648a  IN   DigixCrowdSale0 Ether0.000110945
0xe1c9ba9c054308ae9045fa28622203a430cccded882d67ce6253b3ca54f86bdc89 days 22 hrs ago0xf466859ead1932d743d622cb74fc058882e8648a  IN   DigixCrowdSale0 Ether0.000110945
0x952e853618c0c21ab4a50d501a2d825acc941bb8f625d29d3e1d7f76f2ca3d8e90 days 8 hrs ago0xf466859ead1932d743d622cb74fc058882e8648a  IN   DigixCrowdSale0 Ether0.000043586
0x32a3bf8430a55ef6a868ce054515f1276a7d414076502d86921165345151667a90 days 9 hrs ago0xf466859ead1932d743d622cb74fc058882e8648a  IN   DigixCrowdSale0 Ether0.00011182
0xe4d1b34ebbf20bcd183cc3f0f4e680f95b5afbcfbd64722cf87680bdc07ca83b92 days 1 hr ago0x4fe6b4a43d57e1686a73bd404ca7c882afdc81d2  IN   DigixCrowdSale0 Ether0.0000894
0xe377fca05ace5764d8f577a79d3b65843f9fd0a32fa8b23c8a980edab9afdfeb92 days 1 hr ago0x4fe6b4a43d57e1686a73bd404ca7c882afdc81d2  IN   DigixCrowdSale0 Ether0.000094576
0xf6c8ddd4e3f0fa980d8763f6e79998e6a33a36092d6958e76e7116a386265fc392 days 1 hr ago0x4fe6b4a43d57e1686a73bd404ca7c882afdc81d2  IN   DigixCrowdSale0 Ether0.000097624
0x6186a9d16a7aee98b900050ea36ee431c625189f3ab354e26822b4e3c74acf4592 days 1 hr ago0x4fe6b4a43d57e1686a73bd404ca7c882afdc81d2  IN   DigixCrowdSale0 Ether0.000087172
[ 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
0x6e336046587e37c970d227f5bd277e4d0a3c353bb20b5f5e6a3c27eb063199841425482659 days 12 hrs ago0x2cab63e02d5b490e5f4a5d1b0d5189420ea54b2d0xf0160428a8552ac9bb7e050d90eeade4ddd528430.00310756 Ether
0xcbda7135ea9456bd09112cf21ed8c410dc0345e5acdf2b183cc86cc3d575230b1246256689 days 7 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe096a2db29039b0eb8606bd641ec09787971a9ab833887112fcdf4dde293a2361245970689 days 8 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x01913b538dc70659f71ecb0b96e6e780900720618e94fd9143041b4a16f9e4161245774689 days 8 hrs ago0x010622d2885d3eb139d3ea329f55563e9a73224d0xf0160428a8552ac9bb7e050d90eeade4ddd5284332.42321034 Ether
0xdf0484bdf2f58319a7f02f9cc315a7fd73c667a93bba024c64e68b762fd86c941245543689 days 9 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x79dce459ac90c56e970707d3ed4efe85943cbce499a032c08b9c646e17fee8f11245505689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xff0dec3c6c267eb0ebc368a823f842292ebfaedfc724bd0a78ef0010aafe5b221245503689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x56522333269648dc38d32691fee6a6efb83421f362bf9fa6f7482703116342b51245482689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe6be770e642d34fee929d5166c669710071edda7a6bf683c16f96de44343f49f1245454689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x966942df3a23ecb9e2bb2c90e8c314a285f748839e23caa59e416e9e7b0c08c51245452689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x79d68ad7f0d17619ccd10ec0d46024a0531d9dee9b12cda81287098a34b0b9f51245433689 days 10 hrs ago0x128b7ec1c1c6cebd3bfd73938a9c860da01dbfb00xf0160428a8552ac9bb7e050d90eeade4ddd5284369.2088221 Ether
0xeafe2904cd93a51a9e0444980dacfcc18931d18c7f0aca5a3193255dc36ebef01245425689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x5a154e6b36d5d0ec2dffa8f73dbc494fc60c5d1898397b3d50616e05d24e6e841245421689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x7aa24cc3d877593631619333a9fd3da3503ca655019135ebf03c1feee2a4bddf1245421689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xe17c5f709836ade2044cdb3f2bc98946b9f59df90852d9fe152fc266d2fca88d1245403689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x449d0f93223c971bd37a65cbd98f6992bea00c08cd1060b7b398ea15630f99fc1245387689 days 10 hrs ago0x2bdadc55ebfb632cc44d02e521ec5cc20d798ae00xf0160428a8552ac9bb7e050d90eeade4ddd528436.93 Ether
0x8192a692cc01bdacfb0a50db2b6ec1c1fd4ac193b28afad549dfddd020f2cad21245369689 days 10 hrs ago0x2f097fda1d3d4edad846d816db83395ac11fc8e80xf0160428a8552ac9bb7e050d90eeade4ddd5284360.40000048 Ether
0x0ef6c4b6d35d6dfabab3f1037e1239bf1cf97a231d620cd83daa647fde05af591245369689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x8b3015277c7a26c75c839267353e92770a03c1f7969326a2509ba8f53d444e881245363689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xeae931ea300fbc477fd5130b731ff878f1faecc75254655e04bdf5ace62e8acf1245353689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x7eb80990d1b222b82c76f3d49752b1147f7408911deb5a39bcb38c84429766f71245351689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x1901a804abf9e1261f9ef46542e38fbd59fc8205a81ee11da63b753f5563f0c41245351689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xc20e73f9d23401381899a2a7389466cfb1186f16bc1271ffde11954a3a44a6dd1245350689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0xcd29ff80352bd4b9f71341bc10ed28ac182902bf03440d5f7dd3689d2180f9cd1245348689 days 10 hrs ago0xf0160428a8552ac9bb7e050d90eeade4ddd52843  Contract Creation0 Ether
0x522ae30a6e32cb4680fd0b3e919224488b607f1db89dd9d8b7d52119a13bc9a01245333689 days 10 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.