The funds will be moved to a new multisig address, 0x75bA02c5bAF9cc3E9fE01C51Df3cB1437E8690D4 on Sep 4, 2018.
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 3,627 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Send Funds | 23209012 | 164 days ago | IN | 0 ETH | 0.00005755 | ||||
| Get Payout | 23209001 | 164 days ago | IN | 0 ETH | 0.00002841 | ||||
| Claim | 21597681 | 389 days ago | IN | 0 ETH | 0.00032693 | ||||
| Claim | 21285260 | 433 days ago | IN | 0 ETH | 0.0007563 | ||||
| Claim Founders | 20788868 | 502 days ago | IN | 0 ETH | 0.0001357 | ||||
| Get Payout | 20427961 | 552 days ago | IN | 0 ETH | 0.00043732 | ||||
| Proxy Purchase | 18999615 | 752 days ago | IN | 0 ETH | 0.00057423 | ||||
| Get Payout | 18832253 | 776 days ago | IN | 0 ETH | 0.00087233 | ||||
| Claim For | 18832253 | 776 days ago | IN | 0 ETH | 0.00091707 | ||||
| Claim | 17656161 | 940 days ago | IN | 0 ETH | 0.00103385 | ||||
| Claim | 16226246 | 1141 days ago | IN | 0 ETH | 0.00163214 | ||||
| Claim | 15982513 | 1175 days ago | IN | 0 ETH | 0.00138347 | ||||
| Claim Founders | 15022785 | 1320 days ago | IN | 0 ETH | 0.00046062 | ||||
| Claim For | 14887932 | 1343 days ago | IN | 0 ETH | 0.0015468 | ||||
| Claim Founders | 14884907 | 1343 days ago | IN | 0 ETH | 0.0010268 | ||||
| Claim | 14883547 | 1344 days ago | IN | 0 ETH | 0.0027665 | ||||
| Claim For | 14701108 | 1373 days ago | IN | 0 ETH | 0.00161012 | ||||
| Claim | 14701078 | 1373 days ago | IN | 0 ETH | 0.00842359 | ||||
| Claim | 14673159 | 1377 days ago | IN | 0 ETH | 0.00315995 | ||||
| Claim | 14668089 | 1378 days ago | IN | 0 ETH | 0.00341087 | ||||
| Claim | 14668060 | 1378 days ago | IN | 0 ETH | 0.00378176 | ||||
| Claim | 14410939 | 1418 days ago | IN | 0 ETH | 0.0012659 | ||||
| Claim Founders | 14410936 | 1418 days ago | IN | 0 ETH | 0.00111318 | ||||
| Claim | 14274348 | 1440 days ago | IN | 0 ETH | 0.00090223 | ||||
| Claim For | 13671282 | 1533 days ago | IN | 0 ETH | 0.0027808 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 23209012 | 164 days ago | 465,134.95988259 ETH | ||||
| Transfer | 6268263 | 2710 days ago | 465,134.95988259 ETH | ||||
| Transfer | 6268229 | 2710 days ago | 465,134.95988259 ETH | ||||
| Transfer | 1425482 | 3567 days ago | 0.00310756 ETH | ||||
| Transfer | 1246256 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245970 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245774 | 3597 days ago | 32.42321034 ETH | ||||
| Transfer | 1245543 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245505 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245503 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245482 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245454 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245452 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245433 | 3597 days ago | 69.2088221 ETH | ||||
| Transfer | 1245425 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245421 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245421 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245403 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245387 | 3597 days ago | 6.93 ETH | ||||
| Transfer | 1245369 | 3597 days ago | 60.40000048 ETH | ||||
| Transfer | 1245369 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245363 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245353 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245351 | 3597 days ago | Contract Creation | 0 ETH | |||
| Transfer | 1245351 | 3597 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
TokenSales
Compiler Version
v0.3.0-1f9578ce
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2016-03-30
*/
/// @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 Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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
606060405236156101695760e060020a6000350463034187fd81146101785780630b97bc861461019e5780630c77a697146101a85780631959a002146101c95780631ed24195146101fe5780633f5b7675146102235780634a5dddd21461022e5780634beda18b146102405780634e71d92d146102495780635d7e8c15146102575780636d568c43146102605780636d98e9fc1461028257806374ffdcd01461028e5780637d3d6522146102975780638006745b146102a857806385b31d7b146102eb5780638c0e2a31146103015780638c3c4b34146103275780638d68cf5914610344578063a4fd6f5614610363578063a69df4b514610371578063ab51902014610394578063b7fba4d3146103ac578063bb7859b5146103d2578063bc126ba1146103dd578063c24a0f8b146103e8578063cea943ee146103f4578063db83694c14610463578063ddeae03314610477578063f5582870146104c0578063f697a0ed146104c9575b6104e2600060006104e4610202565b610563600435601254600090600160a060020a0390811633919091161461070b57610002565b6105636004545b90565b610563600d54600090819081908190819060ff166001141561098d57610b59565b6105756004355b600160a060020a0381166000908152601460205260408120546001548291829182918291610b94919061039e565b6105635b600754600090421180610216575060045442105b15610b60575060006101a5565b6105636005546101a5565b61056360043560006105e3823461053d565b61056360185481565b61056360006107183361047e565b61056360135481565b6105636004355b601354601754620186a083810291909104909102045b919050565b6105635b6000546101a5565b61056360175481565b6105635b60085460015410156101a5565b600435600160a060020a03908116600090815260156020908152604080519281902054938416835260a060020a90930460ff169082015281519081900390910190f35b61057560006000600060006000610bd8336101d0565b610563600435601254600090819032600160a060020a03908116911614610cde57610002565b6105a0600d54600e54600f5460105460ff93909316925b90919293565b610563601254600090819060a060020a900460ff1615610c0a57610c06565b6105635b6000610be96103ec565b610563601254600090600160a060020a03908116339190911614610d8f57610002565b6105636004356024355b600060006106f984846104d3565b6105c6600435600160a060020a038181166000908152601660205260409020541661027d565b6105636006546101a5565b6105636001546101a5565b6105635b6007546101a5565b60408051600754600854600a54600554600654600454600954600b54600c549289526020890194909452878901929092526060870195909552608086019390935260a085019290925260c084015260e0830152600160a060020a03166101008201529051908190036101200190f35b6105a060005460015460025460035461033e565b6105636004355b6007546000908190819081904210806104b25750600160a060020a03851681526014602052604081206002015460ff166001145b1561071f5760019350610799565b61056360195481565b6105636004356024355b60185490910260028204010490565b005b600014156104f157610002565b33600160a060020a031660009081526015602052604090205434925060a060020a900460ff16600114156105345750604060002054600160a060020a0316610537565b50335b61055481835b60006000600060006000600060006105ea88610267565b151561055f57610002565b5050565b60408051918252519081900360200190f35b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b604080519485526020850193909352838301919091526060830152519081900360800190f35b60408051600160a060020a03929092168252519081900360200190f35b905061027d565b600954600254919750908701111561060557600096506106ed565b879450610610610202565b925082600014806106215750856000145b1561062f57600096506106ed565b826003141561063d57606493505b826002141561064b57607393505b826001141561065957608293505b879150620f42408461066a84610267565b600160a060020a038c1660009081526014602052604080822080549390940261271002949094049182018355600192830180548701905582548201909255600280548a01905581548501825591516013549293508392879290917f75cc31666f3b6385ba515cf89fd41064642231a796fa7eeea1ba48d9b8ebe2699190a4600196505b50505050505092915050565b60185460035490910204949350505050565b506013819055600161027d565b90506101a5565b61072761029b565b151561076557600160a060020a0385166000818152601460205260408051908220600101549082818181858883f19350505050151561076d57610002565b6107a161029b565b600160a060020a0385166000908152601460205260409020600201805460ff1916600190811790915593505b505050919050565b15610799576040805160115460e160020a637c4b281d02825260d160020a653632b233b2b90260048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f1156100025750506040805151600160a060020a03881660009081526014602052919091205460015491955061083192509061039e565b600a54600160a060020a03878116600090815260146020908152604080518184205460e060020a6340c10f1902825233861660048301526024820188905291519698509490049550918716936340c10f1993604480820194939183900301908290876161da5a03f1156100025750506040515190508015610907575082600160a060020a031663e42bff6686836040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750506040515190505b1561098457600e805483019055600f805482019055601080546001908101909155600160a060020a038616600081815260146020526040808220600201805460ff1916909417909355915183928592917f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79190a460019350610799565b60009350610799565b6007544210156109a05760009450610b59565b6109a861029b565b15156109b75760009450610b59565b6040805160115460e160020a637c4b281d02825260d160020a653632b233b2b90260048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f115610002575050604080518051600b54600c5460e060020a6340c10f19028452600160a060020a039081166004858101829052602486018490529551939a50919850939650945091871692506340c10f1991604480830192602092919082900301816000876161da5a03f1156100025750506040515190508015610ae5575083600160a060020a031663e42bff6682846040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750506040515190505b15610b5457600d805460ff19166001908117909155600e805485019055600f80548401905560108054909101905560405182908490600160a060020a038416907f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf790600090a460019450610b59565b600094505b5050505090565b6006544210610b71575060036101a5565b6005544210610b82575060026101a5565b6005544210156101a5575060016101a5565b600a54600160a060020a038816600090815260146020526040902080546001820154600292909201549098509096509194508604925060ff16905091939590929450565b945094509450945094509091929394565b42101590506101a5565b6040516000818181858888f19550505050505b5090565b610c1261029b565b1515610c215760009150610c06565b610c29610367565b1515610c385760009150610c06565b6040805160115460e160020a637c4b281d0282527f73616c65313a64616f000000000000000000000000000000000000000000000060048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f11561000257505060405151915050600160a060020a03811660001415610cca5760009150610c06565b80600160a060020a03166000610bf3610286565b823060405160d780610db58339018083600160a060020a0316815260200182600160a060020a0316815260200192505050604051809103906000f0600160a060020a038181166000908152601560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168a1774ff0000000000000000000000000000000000000000191660a060020a179091559790931682526016905220805490941617909255506001919050565b506012805474ff00000000000000000000000000000000000000001916905560016101a556606060408181528060d7833960a090525160805160008054600160a060020a031990811684179091556001805482168317905560028054909116831790555050608c80604b6000396000f360606040523615600a575b60886001546000547f4a5dddd200000000000000000000000000000000000000000000000000000000606090815273ffffffffffffffffffffffffffffffffffffffff918216606452911690634a5dddd29062019e10903490608490602090602481858988f11560025750506040515115159250608a915050576002565b005b56
Deployed Bytecode
0x606060405236156101695760e060020a6000350463034187fd81146101785780630b97bc861461019e5780630c77a697146101a85780631959a002146101c95780631ed24195146101fe5780633f5b7675146102235780634a5dddd21461022e5780634beda18b146102405780634e71d92d146102495780635d7e8c15146102575780636d568c43146102605780636d98e9fc1461028257806374ffdcd01461028e5780637d3d6522146102975780638006745b146102a857806385b31d7b146102eb5780638c0e2a31146103015780638c3c4b34146103275780638d68cf5914610344578063a4fd6f5614610363578063a69df4b514610371578063ab51902014610394578063b7fba4d3146103ac578063bb7859b5146103d2578063bc126ba1146103dd578063c24a0f8b146103e8578063cea943ee146103f4578063db83694c14610463578063ddeae03314610477578063f5582870146104c0578063f697a0ed146104c9575b6104e2600060006104e4610202565b610563600435601254600090600160a060020a0390811633919091161461070b57610002565b6105636004545b90565b610563600d54600090819081908190819060ff166001141561098d57610b59565b6105756004355b600160a060020a0381166000908152601460205260408120546001548291829182918291610b94919061039e565b6105635b600754600090421180610216575060045442105b15610b60575060006101a5565b6105636005546101a5565b61056360043560006105e3823461053d565b61056360185481565b61056360006107183361047e565b61056360135481565b6105636004355b601354601754620186a083810291909104909102045b919050565b6105635b6000546101a5565b61056360175481565b6105635b60085460015410156101a5565b600435600160a060020a03908116600090815260156020908152604080519281902054938416835260a060020a90930460ff169082015281519081900390910190f35b61057560006000600060006000610bd8336101d0565b610563600435601254600090819032600160a060020a03908116911614610cde57610002565b6105a0600d54600e54600f5460105460ff93909316925b90919293565b610563601254600090819060a060020a900460ff1615610c0a57610c06565b6105635b6000610be96103ec565b610563601254600090600160a060020a03908116339190911614610d8f57610002565b6105636004356024355b600060006106f984846104d3565b6105c6600435600160a060020a038181166000908152601660205260409020541661027d565b6105636006546101a5565b6105636001546101a5565b6105635b6007546101a5565b60408051600754600854600a54600554600654600454600954600b54600c549289526020890194909452878901929092526060870195909552608086019390935260a085019290925260c084015260e0830152600160a060020a03166101008201529051908190036101200190f35b6105a060005460015460025460035461033e565b6105636004355b6007546000908190819081904210806104b25750600160a060020a03851681526014602052604081206002015460ff166001145b1561071f5760019350610799565b61056360195481565b6105636004356024355b60185490910260028204010490565b005b600014156104f157610002565b33600160a060020a031660009081526015602052604090205434925060a060020a900460ff16600114156105345750604060002054600160a060020a0316610537565b50335b61055481835b60006000600060006000600060006105ea88610267565b151561055f57610002565b5050565b60408051918252519081900360200190f35b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b604080519485526020850193909352838301919091526060830152519081900360800190f35b60408051600160a060020a03929092168252519081900360200190f35b905061027d565b600954600254919750908701111561060557600096506106ed565b879450610610610202565b925082600014806106215750856000145b1561062f57600096506106ed565b826003141561063d57606493505b826002141561064b57607393505b826001141561065957608293505b879150620f42408461066a84610267565b600160a060020a038c1660009081526014602052604080822080549390940261271002949094049182018355600192830180548701905582548201909255600280548a01905581548501825591516013549293508392879290917f75cc31666f3b6385ba515cf89fd41064642231a796fa7eeea1ba48d9b8ebe2699190a4600196505b50505050505092915050565b60185460035490910204949350505050565b506013819055600161027d565b90506101a5565b61072761029b565b151561076557600160a060020a0385166000818152601460205260408051908220600101549082818181858883f19350505050151561076d57610002565b6107a161029b565b600160a060020a0385166000908152601460205260409020600201805460ff1916600190811790915593505b505050919050565b15610799576040805160115460e160020a637c4b281d02825260d160020a653632b233b2b90260048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f1156100025750506040805151600160a060020a03881660009081526014602052919091205460015491955061083192509061039e565b600a54600160a060020a03878116600090815260146020908152604080518184205460e060020a6340c10f1902825233861660048301526024820188905291519698509490049550918716936340c10f1993604480820194939183900301908290876161da5a03f1156100025750506040515190508015610907575082600160a060020a031663e42bff6686836040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750506040515190505b1561098457600e805483019055600f805482019055601080546001908101909155600160a060020a038616600081815260146020526040808220600201805460ff1916909417909355915183928592917f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf79190a460019350610799565b60009350610799565b6007544210156109a05760009450610b59565b6109a861029b565b15156109b75760009450610b59565b6040805160115460e160020a637c4b281d02825260d160020a653632b233b2b90260048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f115610002575050604080518051600b54600c5460e060020a6340c10f19028452600160a060020a039081166004858101829052602486018490529551939a50919850939650945091871692506340c10f1991604480830192602092919082900301816000876161da5a03f1156100025750506040515190508015610ae5575083600160a060020a031663e42bff6682846040518360e060020a0281526004018083600160a060020a03168152602001828152602001925050506020604051808303816000876161da5a03f1156100025750506040515190505b15610b5457600d805460ff19166001908117909155600e805485019055600f80548401905560108054909101905560405182908490600160a060020a038416907f34fcbac0073d7c3d388e51312faf357774904998eeb8fca628b9e6f65ee1cbf790600090a460019450610b59565b600094505b5050505090565b6006544210610b71575060036101a5565b6005544210610b82575060026101a5565b6005544210156101a5575060016101a5565b600a54600160a060020a038816600090815260146020526040902080546001820154600292909201549098509096509194508604925060ff16905091939590929450565b945094509450945094509091929394565b42101590506101a5565b6040516000818181858888f19550505050505b5090565b610c1261029b565b1515610c215760009150610c06565b610c29610367565b1515610c385760009150610c06565b6040805160115460e160020a637c4b281d0282527f73616c65313a64616f000000000000000000000000000000000000000000000060048301529151600160a060020a03929092169163f896503a9160248082019260209290919082900301816000876161da5a03f11561000257505060405151915050600160a060020a03811660001415610cca5760009150610c06565b80600160a060020a03166000610bf3610286565b823060405160d780610db58339018083600160a060020a0316815260200182600160a060020a0316815260200192505050604051809103906000f0600160a060020a038181166000908152601560209081526040808320805473ffffffffffffffffffffffffffffffffffffffff199081168a1774ff0000000000000000000000000000000000000000191660a060020a179091559790931682526016905220805490941617909255506001919050565b506012805474ff00000000000000000000000000000000000000001916905560016101a556606060408181528060d7833960a090525160805160008054600160a060020a031990811684179091556001805482168317905560028054909116831790555050608c80604b6000396000f360606040523615600a575b60886001546000547f4a5dddd200000000000000000000000000000000000000000000000000000000606090815273ffffffffffffffffffffffffffffffffffffffff918216606452911690634a5dddd29062019e10903490608490602090602481858988f11560025750506040515115159250608a915050576002565b005b56
Loading...
Loading
Loading...
Loading
Net Worth in USD
$2,547.75
Net Worth in ETH
1.140203
Token Allocations
OMG
94.71%
XDATA
5.23%
BUX
0.04%
Others
0.02%
Multichain Portfolio | 34 Chains
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.