Decent.bet token v2 can be found here, https://etherscan.io/token/0x9b68bfae21df5a510931a262cecf63f41338f264
ERC-20
Overview
Max Total Supply
17,270,321.810178624359159889 DBET
Holders
3,839
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DecentBetToken
Compiler Version
v0.4.16+commit.d7661dd9
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2017-09-23 */ pragma solidity ^0.4.8; // accepted from zeppelin-solidity https://github.com/OpenZeppelin/zeppelin-solidity /* * ERC20 interface * see https://github.com/ethereum/EIPs/issues/20 */ contract ERC20 { uint public totalSupply; function balanceOf(address who) constant returns (uint); function allowance(address owner, address spender) constant returns (uint); function transfer(address to, uint value) returns (bool ok); function transferFrom(address from, address to, uint value) returns (bool ok); function approve(address spender, uint value) returns (bool ok); event Transfer(address indexed from, address indexed to, uint value); event Approval(address indexed owner, address indexed spender, uint value); } // accepted from zeppelin-solidity https://github.com/OpenZeppelin/zeppelin-solidity /** * Math operations with safety checks */ contract SafeMath { function safeMul(uint a, uint b) internal returns (uint) { uint c = a * b; assert(a == 0 || c / a == b); return c; } function safeDiv(uint a, uint b) internal returns (uint) { assert(b > 0); uint c = a / b; assert(a == b * c + a % b); return c; } function safeSub(uint a, uint b) internal returns (uint) { assert(b <= a); return a - b; } function safeAdd(uint a, uint b) internal returns (uint) { uint c = a + b; assert(c >= a && c >= b); return c; } function max64(uint64 a, uint64 b) internal constant returns (uint64) { return a >= b ? a : b; } function min64(uint64 a, uint64 b) internal constant returns (uint64) { return a < b ? a : b; } function max256(uint256 a, uint256 b) internal constant returns (uint256) { return a >= b ? a : b; } function min256(uint256 a, uint256 b) internal constant returns (uint256) { return a < b ? a : b; } function assert(bool assertion) internal { if (!assertion) { throw; } } } /// @title Multisignature wallet - Allows multiple parties to agree on transactions before execution. /// @author Stefan George - <[email protected]> contract MultiSigWallet { // flag to determine if address is for a real contract or not bool public isMultiSigWallet = false; uint constant public MAX_OWNER_COUNT = 50; event Confirmation(address indexed sender, uint indexed transactionId); event Revocation(address indexed sender, uint indexed transactionId); event Submission(uint indexed transactionId); event Execution(uint indexed transactionId); event ExecutionFailure(uint indexed transactionId); event Deposit(address indexed sender, uint value); event OwnerAddition(address indexed owner); event OwnerRemoval(address indexed owner); event RequirementChange(uint required); mapping (uint => Transaction) public transactions; mapping (uint => mapping (address => bool)) public confirmations; mapping (address => bool) public isOwner; address[] public owners; uint public required; uint public transactionCount; struct Transaction { address destination; uint value; bytes data; bool executed; } modifier onlyWallet() { if (msg.sender != address(this)) throw; _; } modifier ownerDoesNotExist(address owner) { if (isOwner[owner]) throw; _; } modifier ownerExists(address owner) { if (!isOwner[owner]) throw; _; } modifier transactionExists(uint transactionId) { if (transactions[transactionId].destination == 0) throw; _; } modifier confirmed(uint transactionId, address owner) { if (!confirmations[transactionId][owner]) throw; _; } modifier notConfirmed(uint transactionId, address owner) { if (confirmations[transactionId][owner]) throw; _; } modifier notExecuted(uint transactionId) { if (transactions[transactionId].executed) throw; _; } modifier notNull(address _address) { if (_address == 0) throw; _; } modifier validRequirement(uint ownerCount, uint _required) { if (ownerCount > MAX_OWNER_COUNT) throw; if (_required > ownerCount) throw; if (_required == 0) throw; if (ownerCount == 0) throw; _; } /// @dev Fallback function allows to deposit ether. function() payable { if (msg.value > 0) Deposit(msg.sender, msg.value); } /* * Public functions */ /// @dev Contract constructor sets initial owners and required number of confirmations. /// @param _owners List of initial owners. /// @param _required Number of required confirmations. function MultiSigWallet(address[] _owners, uint _required) public validRequirement(_owners.length, _required) { for (uint i=0; i<_owners.length; i++) { if (isOwner[_owners[i]] || _owners[i] == 0) throw; isOwner[_owners[i]] = true; } isMultiSigWallet = true; owners = _owners; required = _required; } /// @dev Allows to add a new owner. Transaction has to be sent by wallet. /// @param owner Address of new owner. function addOwner(address owner) public onlyWallet ownerDoesNotExist(owner) notNull(owner) validRequirement(owners.length + 1, required) { isOwner[owner] = true; owners.push(owner); OwnerAddition(owner); } /// @dev Allows to remove an owner. Transaction has to be sent by wallet. /// @param owner Address of owner. function removeOwner(address owner) public onlyWallet ownerExists(owner) { isOwner[owner] = false; for (uint i=0; i<owners.length - 1; i++) if (owners[i] == owner) { owners[i] = owners[owners.length - 1]; break; } owners.length -= 1; if (required > owners.length) changeRequirement(owners.length); OwnerRemoval(owner); } /// @dev Allows to replace an owner with a new owner. Transaction has to be sent by wallet. /// @param owner Address of owner to be replaced. /// @param newOwner Address of new owner. /// @param index the indx of the owner to be replaced function replaceOwnerIndexed(address owner, address newOwner, uint index) public onlyWallet ownerExists(owner) ownerDoesNotExist(newOwner) { if (owners[index] != owner) throw; owners[index] = newOwner; isOwner[owner] = false; isOwner[newOwner] = true; OwnerRemoval(owner); OwnerAddition(newOwner); } /// @dev Allows to change the number of required confirmations. Transaction has to be sent by wallet. /// @param _required Number of required confirmations. function changeRequirement(uint _required) public onlyWallet validRequirement(owners.length, _required) { required = _required; RequirementChange(_required); } /// @dev Allows an owner to submit and confirm a transaction. /// @param destination Transaction target address. /// @param value Transaction ether value. /// @param data Transaction data payload. /// @return Returns transaction ID. function submitTransaction(address destination, uint value, bytes data) public returns (uint transactionId) { transactionId = addTransaction(destination, value, data); confirmTransaction(transactionId); } /// @dev Allows an owner to confirm a transaction. /// @param transactionId Transaction ID. function confirmTransaction(uint transactionId) public ownerExists(msg.sender) transactionExists(transactionId) notConfirmed(transactionId, msg.sender) { confirmations[transactionId][msg.sender] = true; Confirmation(msg.sender, transactionId); executeTransaction(transactionId); } /// @dev Allows an owner to revoke a confirmation for a transaction. /// @param transactionId Transaction ID. function revokeConfirmation(uint transactionId) public ownerExists(msg.sender) confirmed(transactionId, msg.sender) notExecuted(transactionId) { confirmations[transactionId][msg.sender] = false; Revocation(msg.sender, transactionId); } /// @dev Returns the confirmation status of a transaction. /// @param transactionId Transaction ID. /// @return Confirmation status. function isConfirmed(uint transactionId) public constant returns (bool) { uint count = 0; for (uint i=0; i<owners.length; i++) { if (confirmations[transactionId][owners[i]]) count += 1; if (count == required) return true; } } /* * Internal functions */ /// @dev Allows anyone to execute a confirmed transaction. /// @param transactionId Transaction ID. function executeTransaction(uint transactionId) internal notExecuted(transactionId) { if (isConfirmed(transactionId)) { Transaction tx = transactions[transactionId]; tx.executed = true; if (tx.destination.call.value(tx.value)(tx.data)) Execution(transactionId); else { ExecutionFailure(transactionId); tx.executed = false; } } } /// @dev Adds a new transaction to the transaction mapping, if transaction does not exist yet. /// @param destination Transaction target address. /// @param value Transaction ether value. /// @param data Transaction data payload. /// @return Returns transaction ID. function addTransaction(address destination, uint value, bytes data) internal notNull(destination) returns (uint transactionId) { transactionId = transactionCount; transactions[transactionId] = Transaction({ destination: destination, value: value, data: data, executed: false }); transactionCount += 1; Submission(transactionId); } /* * Web3 call functions */ /// @dev Returns number of confirmations of a transaction. /// @param transactionId Transaction ID. /// @return Number of confirmations. function getConfirmationCount(uint transactionId) public constant returns (uint count) { for (uint i=0; i<owners.length; i++) if (confirmations[transactionId][owners[i]]) count += 1; } /// @dev Returns total number of transactions after filers are applied. /// @param pending Include pending transactions. /// @param executed Include executed transactions. /// @return Total number of transactions after filters are applied. function getTransactionCount(bool pending, bool executed) public constant returns (uint count) { for (uint i=0; i<transactionCount; i++) if ((pending && !transactions[i].executed) || (executed && transactions[i].executed)) count += 1; } /// @dev Returns list of owners. /// @return List of owner addresses. function getOwners() public constant returns (address[]) { return owners; } /// @dev Returns array with owner addresses, which confirmed transaction. /// @param transactionId Transaction ID. /// @return Returns array of owner addresses. function getConfirmations(uint transactionId) public constant returns (address[] _confirmations) { address[] memory confirmationsTemp = new address[](owners.length); uint count = 0; uint i; for (i=0; i<owners.length; i++) if (confirmations[transactionId][owners[i]]) { confirmationsTemp[count] = owners[i]; count += 1; } _confirmations = new address[](count); for (i=0; i<count; i++) _confirmations[i] = confirmationsTemp[i]; } /// @dev Returns list of transaction IDs in defined range. /// @param from Index start position of transaction array. /// @param to Index end position of transaction array. /// @param pending Include pending transactions. /// @param executed Include executed transactions. /// @return Returns array of transaction IDs. function getTransactionIds(uint from, uint to, bool pending, bool executed) public constant returns (uint[] _transactionIds) { uint[] memory transactionIdsTemp = new uint[](transactionCount); uint count = 0; uint i; for (i=0; i<transactionCount; i++) if ((pending && !transactions[i].executed) || (executed && transactions[i].executed)) { transactionIdsTemp[count] = i; count += 1; } _transactionIds = new uint[](to - from); for (i=from; i<to; i++) _transactionIds[i - from] = transactionIdsTemp[i]; } } contract UpgradeAgent is SafeMath { address public owner; bool public isUpgradeAgent; function upgradeFrom(address _from, uint256 _value) public; function finalizeUpgrade() public; function setOriginalSupply() public; } /// @title Time-locked vault of tokens allocated to DecentBet after 365 days contract DecentBetVault is SafeMath { // flag to determine if address is for a real contract or not bool public isDecentBetVault = false; DecentBetToken decentBetToken; address decentBetMultisig; uint256 unlockedAtTime; // smaller lock for testing uint256 public constant timeOffset = 1 years; /// @notice Constructor function sets the DecentBet Multisig address and /// total number of locked tokens to transfer function DecentBetVault(address _decentBetMultisig) /** internal */ { if (_decentBetMultisig == 0x0) throw; decentBetToken = DecentBetToken(msg.sender); decentBetMultisig = _decentBetMultisig; isDecentBetVault = true; // 1 year later unlockedAtTime = safeAdd(getTime(), timeOffset); } /// @notice Transfer locked tokens to Decent.bet's multisig wallet function unlock() external { // Wait your turn! if (getTime() < unlockedAtTime) throw; // Will fail if allocation (and therefore toTransfer) is 0. if (!decentBetToken.transfer(decentBetMultisig, decentBetToken.balanceOf(this))) throw; } function getTime() internal returns (uint256) { return now; } // disallow ETH payments to TimeVault function() payable { throw; } } /// @title DecentBet crowdsale contract contract DecentBetToken is SafeMath, ERC20 { // flag to determine if address is for a real contract or not bool public isDecentBetToken = false; // State machine enum State{Waiting, PreSale, CommunitySale, PublicSale, Success} // Token information string public constant name = "Decent.Bet Token"; string public constant symbol = "DBET"; uint256 public constant decimals = 18; // decimal places uint256 public constant housePercentOfTotal = 10; uint256 public constant vaultPercentOfTotal = 18; uint256 public constant bountyPercentOfTotal = 2; uint256 public constant crowdfundPercentOfTotal = 70; uint256 public constant hundredPercent = 100; mapping (address => uint256) balances; mapping (address => mapping (address => uint256)) allowed; // Authorized addresses address public team; // Upgrade information bool public finalizedUpgrade = false; address public upgradeMaster; UpgradeAgent public upgradeAgent; uint256 public totalUpgraded; // Crowdsale information bool public finalizedCrowdfunding = false; // Whitelisted addresses for pre-sale address[] public preSaleWhitelist; mapping (address => bool) public preSaleAllowed; // Whitelisted addresses from community address[] public communitySaleWhitelist; mapping (address => bool) public communitySaleAllowed; uint[2] public communitySaleCap = [100000 ether, 200000 ether]; mapping (address => uint[2]) communitySalePurchases; uint256 public preSaleStartTime; // Pre-sale start block timestamp uint256 public fundingStartTime; // crowdsale start block timestamp uint256 public fundingEndTime; // crowdsale end block timestamp // DBET:ETH exchange rate - Needs to be updated at time of ICO. // Price of ETH/0.125. For example: If ETH/USD = 300, it would be 2400 DBETs per ETH. uint256 public baseTokensPerEther; uint256 public tokenCreationMax = safeMul(250000 ether, 1000); // A maximum of 250M DBETs can be minted during ICO. // Amount of tokens alloted to pre-sale investors. uint256 public preSaleAllotment; // Address of pre-sale investors. address public preSaleAddress; // for testing on testnet //uint256 public constant tokenCreationMax = safeMul(10 ether, baseTokensPerEther); //uint256 public constant tokenCreationMin = safeMul(3 ether, baseTokensPerEther); address public decentBetMultisig; DecentBetVault public timeVault; // DecentBet's time-locked vault event Upgrade(address indexed _from, address indexed _to, uint256 _value); event UpgradeFinalized(address sender, address upgradeAgent); event UpgradeAgentSet(address agent); // Allow only the team address to continue modifier onlyTeam() { if(msg.sender != team) throw; _; } function DecentBetToken(address _decentBetMultisig, address _upgradeMaster, address _team, uint256 _baseTokensPerEther, uint256 _fundingStartTime, uint256 _fundingEndTime) { if (_decentBetMultisig == 0) throw; if (_team == 0) throw; if (_upgradeMaster == 0) throw; if (_baseTokensPerEther == 0) throw; // For testing/dev // if(_fundingStartTime == 0) throw; // Crowdsale can only officially start during/after the current block timestamp. if (_fundingStartTime < getTime()) throw; if (_fundingEndTime <= _fundingStartTime) throw; isDecentBetToken = true; upgradeMaster = _upgradeMaster; team = _team; baseTokensPerEther = _baseTokensPerEther; preSaleStartTime = _fundingStartTime - 1 days; fundingStartTime = _fundingStartTime; fundingEndTime = _fundingEndTime; // Pre-sale issuance from pre-sale contract // 0x7be601aab2f40cc23653965749b84e5cb8cfda43 preSaleAddress = 0x87f7beeda96216ec2a325e417a45ed262495686b; preSaleAllotment = 45000000 ether; balances[preSaleAddress] = preSaleAllotment; totalSupply = safeAdd(totalSupply, preSaleAllotment); timeVault = new DecentBetVault(_decentBetMultisig); if (!timeVault.isDecentBetVault()) throw; decentBetMultisig = _decentBetMultisig; if (!MultiSigWallet(decentBetMultisig).isMultiSigWallet()) throw; } function balanceOf(address who) constant returns (uint) { return balances[who]; } /// @notice Transfer `value` DBET tokens from sender's account /// `msg.sender` to provided account address `to`. /// @notice This function is disabled during the funding. /// @dev Required state: Success /// @param to The address of the recipient /// @param value The number of DBETs to transfer /// @return Whether the transfer was successful or not function transfer(address to, uint256 value) returns (bool ok) { if (getState() != State.Success) throw; // Abort if crowdfunding was not a success. uint256 senderBalance = balances[msg.sender]; if (senderBalance >= value && value > 0) { senderBalance = safeSub(senderBalance, value); balances[msg.sender] = senderBalance; balances[to] = safeAdd(balances[to], value); Transfer(msg.sender, to, value); return true; } return false; } /// @notice Transfer `value` DBET tokens from sender 'from' /// to provided account address `to`. /// @notice This function is disabled during the funding. /// @dev Required state: Success /// @param from The address of the sender /// @param to The address of the recipient /// @param value The number of DBETs to transfer /// @return Whether the transfer was successful or not function transferFrom(address from, address to, uint256 value) returns (bool ok) { if (getState() != State.Success) throw; // Abort if not in Success state. // protect against wrapping uints if (balances[from] >= value && allowed[from][msg.sender] >= value && safeAdd(balances[to], value) > balances[to]) { balances[to] = safeAdd(balances[to], value); balances[from] = safeSub(balances[from], value); allowed[from][msg.sender] = safeSub(allowed[from][msg.sender], value); Transfer(from, to, value); return true; } else {return false;} } /// @notice `msg.sender` approves `spender` to spend `value` tokens /// @param spender The address of the account able to transfer the tokens /// @param value The amount of wei to be approved for transfer /// @return Whether the approval was successful or not function approve(address spender, uint256 value) returns (bool ok) { if (getState() != State.Success) throw; // Abort if not in Success state. allowed[msg.sender][spender] = value; Approval(msg.sender, spender, value); return true; } /// @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 allowed to spent function allowance(address owner, address spender) constant returns (uint) { return allowed[owner][spender]; } // Token upgrade functionality /// @notice Upgrade tokens to the new token contract. /// @dev Required state: Success /// @param value The number of tokens to upgrade function upgrade(uint256 value) external { if (getState() != State.Success) throw; // Abort if not in Success state. if (upgradeAgent.owner() == 0x0) throw; // need a real upgradeAgent address if (finalizedUpgrade) throw; // cannot upgrade if finalized // Validate input value. if (value == 0) throw; if (value > balances[msg.sender]) throw; // update the balances here first before calling out (reentrancy) balances[msg.sender] = safeSub(balances[msg.sender], value); totalSupply = safeSub(totalSupply, value); totalUpgraded = safeAdd(totalUpgraded, value); upgradeAgent.upgradeFrom(msg.sender, value); Upgrade(msg.sender, upgradeAgent, value); } /// @notice Set address of upgrade target contract and enable upgrade /// process. /// @dev Required state: Success /// @param agent The address of the UpgradeAgent contract function setUpgradeAgent(address agent) external { if (getState() != State.Success) throw; // Abort if not in Success state. if (agent == 0x0) throw; // don't set agent to nothing if (msg.sender != upgradeMaster) throw; // Only a master can designate the next agent upgradeAgent = UpgradeAgent(agent); if (!upgradeAgent.isUpgradeAgent()) throw; // this needs to be called in success condition to guarantee the invariant is true upgradeAgent.setOriginalSupply(); UpgradeAgentSet(upgradeAgent); } /// @notice Set address of upgrade target contract and enable upgrade /// process. /// @dev Required state: Success /// @param master The address that will manage upgrades, not the upgradeAgent contract address function setUpgradeMaster(address master) external { if (getState() != State.Success) throw; // Abort if not in Success state. if (master == 0x0) throw; if (msg.sender != upgradeMaster) throw; // Only a master can designate the next master upgradeMaster = master; } /// @notice finalize the upgrade /// @dev Required state: Success function finalizeUpgrade() external { if (getState() != State.Success) throw; // Abort if not in Success state. if (upgradeAgent.owner() == 0x0) throw; // we need a valid upgrade agent if (msg.sender != upgradeMaster) throw; // only upgradeMaster can finalize if (finalizedUpgrade) throw; // can't finalize twice finalizedUpgrade = true; // prevent future upgrades upgradeAgent.finalizeUpgrade(); // call finalize upgrade on new contract UpgradeFinalized(msg.sender, upgradeAgent); } // Allow users to purchase by sending Ether to the contract function() payable { invest(); } // Updates tokens per ETH rates before the pre-sale function updateBaseTokensPerEther(uint _baseTokensPerEther) onlyTeam { if(getState() != State.Waiting) throw; baseTokensPerEther = _baseTokensPerEther; } // Returns the current rate after adding bonuses for the time period function getTokensAtCurrentRate(uint weiValue) constant returns (uint) { /* Pre-sale */ if(getTime() >= preSaleStartTime && getTime() < fundingStartTime) { return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 120)), 100); // 20% bonus } /* Community sale */ else if(getTime() >= fundingStartTime && getTime() < fundingStartTime + 1 days) { return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 120)), 100); // 20% bonus } else if(getTime() >= (fundingStartTime + 1 days) && getTime() < fundingStartTime + 2 days) { return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 120)), 100); // 20% bonus } /* Public sale */ else if(getTime() >= (fundingStartTime + 2 days) && getTime() < fundingStartTime + 1 weeks) { return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 110)), 100); // 10% bonus } else if(getTime() >= fundingStartTime + 1 weeks && getTime() < fundingStartTime + 2 weeks) { return safeDiv(safeMul(weiValue, safeMul(baseTokensPerEther, 105)), 100); // 5% bonus } else if(getTime() >= fundingStartTime + 2 weeks && getTime() < fundingEndTime) { return safeMul(weiValue, baseTokensPerEther); // 0% bonus } } // Allows the owner to add an address to the pre-sale whitelist. function addToPreSaleWhitelist(address _address) onlyTeam { // Add to pre-sale whitelist only if state is Waiting right now. if(getState() != State.Waiting) throw; // Address already added to whitelist. if (preSaleAllowed[_address]) throw; preSaleWhitelist.push(_address); preSaleAllowed[_address] = true; } // Allows the owner to add an address to the community whitelist. function addToCommunitySaleWhitelist(address[] addresses) onlyTeam { // Add to community sale whitelist only if state is Waiting or Presale right now. if(getState() != State.Waiting && getState() != State.PreSale) throw; for(uint i = 0; i < addresses.length; i++) { if(!communitySaleAllowed[addresses[i]]) { communitySaleWhitelist.push(addresses[i]); communitySaleAllowed[addresses[i]] = true; } } } /// @notice Create tokens when funding is active. /// @dev Required state: Funding /// @dev State transition: -> Funding Success (only if cap reached) function invest() payable { // Abort if not in PreSale, CommunitySale or PublicSale state. if (getState() != State.PreSale && getState() != State.CommunitySale && getState() != State.PublicSale) throw; // User hasn't been whitelisted for pre-sale. if(getState() == State.PreSale && !preSaleAllowed[msg.sender]) throw; // User hasn't been whitelisted for community sale. if(getState() == State.CommunitySale && !communitySaleAllowed[msg.sender]) throw; // Do not allow creating 0 tokens. if (msg.value == 0) throw; // multiply by exchange rate to get newly created token amount uint256 createdTokens = getTokensAtCurrentRate(msg.value); allocateTokens(msg.sender, createdTokens); } // Allocates tokens to an investors' address function allocateTokens(address _address, uint amount) internal { // we are creating tokens, so increase the totalSupply. totalSupply = safeAdd(totalSupply, amount); // don't go over the limit! if (totalSupply > tokenCreationMax) throw; // Don't allow community whitelisted addresses to purchase more than their cap. if(getState() == State.CommunitySale) { // Community sale day 1. // Whitelisted addresses can purchase a maximum of 100k DBETs (10k USD). if(getTime() >= fundingStartTime && getTime() < fundingStartTime + 1 days) { if(safeAdd(communitySalePurchases[msg.sender][0], amount) > communitySaleCap[0]) throw; else communitySalePurchases[msg.sender][0] = safeAdd(communitySalePurchases[msg.sender][0], amount); } // Community sale day 2. // Whitelisted addresses can purchase a maximum of 200k DBETs (20k USD). else if(getTime() >= (fundingStartTime + 1 days) && getTime() < fundingStartTime + 2 days) { if(safeAdd(communitySalePurchases[msg.sender][1], amount) > communitySaleCap[1]) throw; else communitySalePurchases[msg.sender][1] = safeAdd(communitySalePurchases[msg.sender][1], amount); } } // Assign new tokens to the sender. balances[_address] = safeAdd(balances[_address], amount); // Log token creation event Transfer(0, _address, amount); } /// @notice Finalize crowdfunding /// @dev If cap was reached or crowdfunding has ended then: /// create DBET for the DecentBet Multisig and team, /// transfer ETH to the DecentBet Multisig address. /// @dev Required state: Success function finalizeCrowdfunding() external { // Abort if not in Funding Success state. if (getState() != State.Success) throw; // don't finalize unless we won if (finalizedCrowdfunding) throw; // can't finalize twice (so sneaky!) // prevent more creation of tokens finalizedCrowdfunding = true; // Founder's supply : 18% of total goes to vault, time locked for 6 months uint256 vaultTokens = safeDiv(safeMul(totalSupply, vaultPercentOfTotal), crowdfundPercentOfTotal); balances[timeVault] = safeAdd(balances[timeVault], vaultTokens); Transfer(0, timeVault, vaultTokens); // House: 10% of total goes to Decent.bet for initial house setup uint256 houseTokens = safeDiv(safeMul(totalSupply, housePercentOfTotal), crowdfundPercentOfTotal); balances[timeVault] = safeAdd(balances[decentBetMultisig], houseTokens); Transfer(0, decentBetMultisig, houseTokens); // Bounties: 2% of total goes to Decent bet for bounties uint256 bountyTokens = safeDiv(safeMul(totalSupply, bountyPercentOfTotal), crowdfundPercentOfTotal); balances[decentBetMultisig] = safeAdd(balances[decentBetMultisig], bountyTokens); Transfer(0, decentBetMultisig, bountyTokens); // Transfer ETH to the DBET Multisig address. if (!decentBetMultisig.send(this.balance)) throw; } // Interface marker function isDecentBetCrowdsale() returns (bool) { return true; } function getTime() constant returns (uint256) { return now; } /// @notice This manages the crowdfunding state machine /// We make it a function and do not assign the result to a variable /// So there is no chance of the variable being stale function getState() public constant returns (State){ /* Successful if crowdsale was finalized */ if(finalizedCrowdfunding) return State.Success; /* Pre-sale not started */ else if (getTime() < preSaleStartTime) return State.Waiting; /* Pre-sale */ else if (getTime() >= preSaleStartTime && getTime() < fundingStartTime && totalSupply < tokenCreationMax) return State.PreSale; /* Community sale */ else if (getTime() >= fundingStartTime && getTime() < fundingStartTime + 2 days && totalSupply < tokenCreationMax) return State.CommunitySale; /* Public sale */ else if (getTime() >= (fundingStartTime + 2 days) && getTime() < fundingEndTime && totalSupply < tokenCreationMax) return State.PublicSale; /* Success */ else if (getTime() >= fundingEndTime || totalSupply == tokenCreationMax) return State.Success; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"preSaleStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"vaultPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"weiValue","type":"uint256"}],"name":"getTokensAtCurrentRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getState","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"crowdfundPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeCrowdfunding","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"tokenCreationMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finalizedUpgrade","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"preSaleAllotment","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"communitySaleWhitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"communitySaleCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeAgent","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"upgradeMaster","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"communitySaleAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isDecentBetToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalizedCrowdfunding","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"baseTokensPerEther","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"fundingEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"team","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hundredPercent","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"housePercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decentBetMultisig","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalizeUpgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"ok","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"isDecentBetCrowdsale","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addToPreSaleWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalUpgraded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"preSaleWhitelist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"agent","type":"address"}],"name":"setUpgradeAgent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_baseTokensPerEther","type":"uint256"}],"name":"updateBaseTokensPerEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"addresses","type":"address[]"}],"name":"addToCommunitySaleWhitelist","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"invest","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"preSaleAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"preSaleAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"timeVault","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bountyPercentOfTotal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"master","type":"address"}],"name":"setUpgradeMaster","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_decentBetMultisig","type":"address"},{"name":"_upgradeMaster","type":"address"},{"name":"_team","type":"address"},{"name":"_baseTokensPerEther","type":"uint256"},{"name":"_fundingStartTime","type":"uint256"},{"name":"_fundingEndTime","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Upgrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"sender","type":"address"},{"indexed":false,"name":"upgradeAgent","type":"address"}],"name":"UpgradeFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"agent","type":"address"}],"name":"UpgradeAgentSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
606060409081526001805460ff199081169091556004805460a060020a60ff0219169055600880549091169055805190810160405269152d02c7e14af68000008152692a5a058fc295ed00000060208201526200006190600d90600262000412565b50620000886934f086f3b33b684000006103e8640100000000620020216200038282021704565b60145534156200009757600080fd5b60405160c0806200299a8339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519150505b600160a060020a0386161515620000e857600080fd5b600160a060020a0384161515620000fe57600080fd5b600160a060020a03851615156200011457600080fd5b8215156200012157600080fd5b62000139640100000000620015a8620003c382021704565b8210156200014657600080fd5b8181116200015357600080fd5b6001805460ff19168117905560058054600160a060020a03808816600160a060020a0319928316179092556004805487841690831617905560138590556201517f19840160105560118490556012839055601680549091167387f7beeda96216ec2a325e417a45ed262495686b17908190556a25391ee35a05c54d00000060158190559116600090815260026020526040812082905554620002039164010000000062002092620003c882021704565b600055856200021162000461565b600160a060020a039091168152602001604051809103906000f08015156200023857600080fd5b60188054600160a060020a031916600160a060020a0392831617908190551663cd3faa6a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620002ad57600080fd5b6102c65a03f11515620002bf57600080fd5b505050604051805190501515620002d557600080fd5b60178054600160a060020a031916600160a060020a03888116919091179182905516634c3a6ae06000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200034d57600080fd5b6102c65a03f115156200035f57600080fd5b5050506040518051905015156200037557600080fd5b5b50505050505062000496565b6000828202620003b8841580620003a45750838583811515620003a157fe5b04145b640100000000620020d36200040182021704565b8091505b5092915050565b425b90565b6000828201620003b8848210801590620003a45750838210155b640100000000620020d36200040182021704565b8091505b5092915050565b8015156200040e57600080fd5b5b50565b82600281019282156200044e579160200282015b828111156200044e57825182906001605060020a031690559160200191906001019062000426565b5b506200045d92915062000472565b5090565b60405161037a806200262083390190565b620003c591905b808211156200045d576000815560010162000479565b5090565b90565b61217a80620004a66000396000f3006060604052361561022a5763ffffffff60e060020a60003504166306d65af3811461023657806306fdde031461025b57806308e496ea146102e6578063095ea7b31461030b5780630fb9dcd51461034157806318160ddd146103695780631865c57d1461038e5780631afaa8bf146103c55780631df93558146103ea5780631ed692c01461040f5780631f97c00e1461042457806323b872dd14610449578063313ce567146102e657806345977d03146104aa57806347858c79146104c2578063485f7a7e146104e95780634eb12d7f1461050e57806354da51ad14610540578063557ed1ba146105685780635de4ccb01461058d578063600440cb146105bc57806363193251146105eb57806367a4e7c41461061e57806368f673301461064557806370a082311461066c578063728d5e941461069d57806374eedd46146106c257806385f2aef2146106e75780638a9cb361146107165780638b2de7961461073b57806395d89b41146107605780639a45a263146107eb5780639a508c8e1461081a578063a9059cbb1461082f578063a95ff7d514610865578063aedc0c5c1461088c578063c752ff62146108ad578063d226d723146108d2578063d7e7088a14610904578063da88a83114610925578063dd62ed3e1461093d578063e244fe8914610974578063e8b5e51f1461022a578063eb08aa3b146109cf578063f08d1c34146109fe578063f4660ff514610a31578063f99f977c14610a60578063ffeb7d7514610a85575b5b610233610aa6565b5b005b341561024157600080fd5b610249610bbb565b60405190815260200160405180910390f35b341561026657600080fd5b61026e610bc1565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b341561031657600080fd5b61032d600160a060020a0360043516602435610bfd565b604051901515815260200160405180910390f35b341561034c57600080fd5b610249600435610c89565b60405190815260200160405180910390f35b341561037457600080fd5b610249610e74565b60405190815260200160405180910390f35b341561039957600080fd5b6103a1610e7a565b604051808260048111156103b157fe5b60ff16815260200191505060405180910390f35b34156103d057600080fd5b610249610f97565b60405190815260200160405180910390f35b34156103f557600080fd5b610249610f9c565b60405190815260200160405180910390f35b341561041a57600080fd5b610233610fa2565b005b341561042f57600080fd5b6102496111b8565b60405190815260200160405180910390f35b341561045457600080fd5b61032d600160a060020a03600435811690602435166044356111be565b604051901515815260200160405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b34156104b557600080fd5b61023360043561135a565b005b34156104cd57600080fd5b61032d611548565b604051901515815260200160405180910390f35b34156104f457600080fd5b610249611558565b60405190815260200160405180910390f35b341561051957600080fd5b61052460043561155e565b604051600160a060020a03909116815260200160405180910390f35b341561054b57600080fd5b610249600435611590565b60405190815260200160405180910390f35b341561057357600080fd5b6102496115a8565b60405190815260200160405180910390f35b341561059857600080fd5b6105246115ad565b604051600160a060020a03909116815260200160405180910390f35b34156105c757600080fd5b6105246115bc565b604051600160a060020a03909116815260200160405180910390f35b34156105f657600080fd5b61032d600160a060020a03600435166115cb565b604051901515815260200160405180910390f35b341561062957600080fd5b61032d6115e0565b604051901515815260200160405180910390f35b341561065057600080fd5b61032d6115e9565b604051901515815260200160405180910390f35b341561067757600080fd5b610249600160a060020a03600435166115f2565b60405190815260200160405180910390f35b34156106a857600080fd5b610249611611565b60405190815260200160405180910390f35b34156106cd57600080fd5b610249611617565b60405190815260200160405180910390f35b34156106f257600080fd5b61052461161d565b604051600160a060020a03909116815260200160405180910390f35b341561072157600080fd5b61024961162c565b60405190815260200160405180910390f35b341561074657600080fd5b610249611631565b60405190815260200160405180910390f35b341561076b57600080fd5b61026e611636565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f657600080fd5b61052461166d565b604051600160a060020a03909116815260200160405180910390f35b341561082557600080fd5b61023361167c565b005b341561083a57600080fd5b61032d600160a060020a0360043516602435611812565b604051901515815260200160405180910390f35b341561087057600080fd5b61032d6118fa565b604051901515815260200160405180910390f35b341561089757600080fd5b610233600160a060020a0360043516611900565b005b34156108b857600080fd5b6102496119c1565b60405190815260200160405180910390f35b34156108dd57600080fd5b6105246004356119c7565b604051600160a060020a03909116815260200160405180910390f35b341561090f57600080fd5b610233600160a060020a03600435166119f9565b005b341561093057600080fd5b610233600435611b7a565b005b341561094857600080fd5b610249600160a060020a0360043581169060243516611bbf565b60405190815260200160405180910390f35b341561097f57600080fd5b6102336004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611bec95505050505050565b005b610233610aa6565b005b34156109da57600080fd5b610524611d47565b604051600160a060020a03909116815260200160405180910390f35b3415610a0957600080fd5b61032d600160a060020a0360043516611d56565b604051901515815260200160405180910390f35b3415610a3c57600080fd5b610524611d6b565b604051600160a060020a03909116815260200160405180910390f35b3415610a6b57600080fd5b610249611d7a565b60405190815260200160405180910390f35b3415610a9057600080fd5b610233600160a060020a0360043516611d7f565b005b600060015b610ab3610e7a565b6004811115610abe57fe5b14158015610ae0575060025b610ad2610e7a565b6004811115610add57fe5b14155b8015610b00575060035b610af2610e7a565b6004811115610afd57fe5b14155b15610b0a57600080fd5b60015b610b15610e7a565b6004811115610b2057fe5b148015610b465750600160a060020a0333166000908152600a602052604090205460ff16155b15610b5057600080fd5b60025b610b5b610e7a565b6004811115610b6657fe5b148015610b8c5750600160a060020a0333166000908152600c602052604090205460ff16155b15610b9657600080fd5b341515610ba257600080fd5b610bab34610c89565b9050610bb73382611dfb565b5b50565b60105481565b60408051908101604052601081527f446563656e742e42657420546f6b656e00000000000000000000000000000000602082015281565b601281565b600060045b610c0a610e7a565b6004811115610c1557fe5b14610c1f57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000601054610c966115a8565b10158015610cac5750601154610caa6115a8565b105b15610cd857610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b601154610ce36115a8565b10158015610cfe57506011546201518001610cfc6115a8565b105b15610d2a57610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546201518001610d3a6115a8565b10158015610d5557506011546202a30001610d536115a8565b105b15610d8157610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546202a30001610d916115a8565b10158015610dac575060115462093a8001610daa6115a8565b105b15610dd857610cd1610cca83610cc5601354606e612021565b612021565b6064612050565b9050610e69565b60115462093a8001610de86115a8565b10158015610e0357506011546212750001610e016115a8565b105b15610e2f57610cd1610cca83610cc56013546069612021565b612021565b6064612050565b9050610e69565b6011546212750001610e3f6115a8565b10158015610e555750601254610e536115a8565b105b15610e6957610cd182601354612021565b90505b5b5b5b5b5b5b919050565b60005481565b60085460009060ff1615610e9057506004610f8e565b601054610e9b6115a8565b1015610ea957506000610f8e565b601054610eb46115a8565b10158015610eca5750601154610ec86115a8565b105b8015610ed95750601454600054105b15610ee657506001610f8e565b601154610ef16115a8565b10158015610f0c57506011546202a30001610f0a6115a8565b105b8015610f1b5750601454600054105b15610f2857506002610f8e565b6011546202a30001610f386115a8565b10158015610f4e5750601254610f4c6115a8565b105b8015610f5d5750601454600054105b15610f6a57506003610f8e565b601254610f756115a8565b101580610f855750601454600054145b15610f8e575060045b5b5b5b5b5b5b90565b604681565b60115481565b6000808060045b610fb1610e7a565b6004811115610fbc57fe5b14610fc657600080fd5b60085460ff1615610fd657600080fd5b6008805460ff19166001179055600054610ffc90610ff5906012612021565b6046612050565b601854600160a060020a03166000908152600260205260409020549093506110249084612092565b60188054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529086905190815260200160405180910390a3611082610ff5600054600a612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549092506110aa9083612092565b601854600160a060020a03908116600090815260026020526040808220939093556017549091169160008051602061212f8339815191529085905190815260200160405180910390a361110a610ff56000546002612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549091506111329082612092565b60178054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529084905190815260200160405180910390a3601754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156111b257600080fd5b5b505050565b60145481565b600060045b6111cb610e7a565b60048111156111d657fe5b146111e057600080fd5b600160a060020a0384166000908152600260205260409020548290108015906112305750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b801561125c5750600160a060020a03831660009081526002602052604090205461125a8184612092565b115b1561134957600160a060020a0383166000908152600260205260409020546112849083612092565b600160a060020a0380851660009081526002602052604080822093909355908616815220546112b390836120ba565b600160a060020a03808616600090815260026020908152604080832094909455600381528382203390931682529190915220546112f090836120ba565b600160a060020a038086166000818152600360209081526040808320338616845290915290819020939093559085169160008051602061212f8339815191529085905190815260200160405180910390a350600161134d565b5060005b5b9392505050565b601281565b60045b611365610e7a565b600481111561137057fe5b1461137a57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113c257600080fd5b6102c65a03f115156113d357600080fd5b5050506040518051600160a060020a0316151590506113f157600080fd5b60045460a060020a900460ff161561140857600080fd5b80151561141457600080fd5b600160a060020a03331660009081526002602052604090205481111561143957600080fd5b600160a060020a03331660009081526002602052604090205461145c90826120ba565b600160a060020a0333166000908152600260205260408120919091555461148390826120ba565b6000556007546114939082612092565b600755600654600160a060020a031663753e88e5338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114ec57600080fd5b6102c65a03f115156114fd57600080fd5b5050600654600160a060020a03908116915033167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac8360405190815260200160405180910390a35b50565b60045460a060020a900460ff1681565b60155481565b600b80548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600d816002811061159d57fe5b0160005b5054905081565b425b90565b600654600160a060020a031681565b600554600160a060020a031681565b600c6020526000908152604090205460ff1681565b60015460ff1681565b60085460ff1681565b600160a060020a0381166000908152600260205260409020545b919050565b60135481565b60125481565b600454600160a060020a031681565b606481565b600a81565b60408051908101604052600481527f4442455400000000000000000000000000000000000000000000000000000000602082015281565b601754600160a060020a031681565b60045b611687610e7a565b600481111561169257fe5b1461169c57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e457600080fd5b6102c65a03f115156116f557600080fd5b5050506040518051600160a060020a03161515905061171357600080fd5b60055433600160a060020a0390811691161461172e57600080fd5b60045460a060020a900460ff161561174557600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055600654600160a060020a0316639a508c8e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156117a857600080fd5b6102c65a03f115156117b957600080fd5b50506006547fdefffffb60c1e133c8c4d138aca8eb2459d671a44b864db2b2febc8e2b5c17f891503390600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a15b565b60008060045b611820610e7a565b600481111561182b57fe5b1461183557600080fd5b50600160a060020a03331660009081526002602052604090205482811080159061185f5750600083115b156118ee5761186e81846120ba565b600160a060020a033381166000908152600260205260408082208490559187168152205490915061189f9084612092565b600160a060020a03808616600081815260026020526040908190209390935591339091169060008051602061212f8339815191529086905190815260200160405180910390a3600191506118f3565b600091505b5092915050565b60015b90565b60045433600160a060020a0390811691161461191b57600080fd5b60005b611926610e7a565b600481111561193157fe5b1461193b57600080fd5b600160a060020a0381166000908152600a602052604090205460ff161561196157600080fd5b600980546001810161197383826120e3565b916000526020600020900160005b8154600160a060020a038086166101009390930a838102910219909116179091556000908152600a60205260409020805460ff19166001179055505b5b50565b60075481565b600980548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b60045b611a04610e7a565b6004811115611a0f57fe5b14611a1957600080fd5b600160a060020a0381161515611a2e57600080fd5b60055433600160a060020a03908116911614611a4957600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166361d3d7a66000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ab457600080fd5b6102c65a03f11515611ac557600080fd5b505050604051805190501515611ada57600080fd5b600654600160a060020a0316639ef916ab6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611b1957600080fd5b6102c65a03f11515611b2a57600080fd5b50506006547f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc9150600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b60045433600160a060020a03908116911614611b9557600080fd5b60005b611ba0610e7a565b6004811115611bab57fe5b14611bb557600080fd5b60138190555b5b50565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60045460009033600160a060020a03908116911614611c0a57600080fd5b60005b611c15610e7a565b6004811115611c2057fe5b14158015611c42575060015b611c34610e7a565b6004811115611c3f57fe5b14155b15611c4c57600080fd5b5060005b8151811015611d4157600c6000838381518110611c6957fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205460ff161515611d3857600b805460018101611ca883826120e3565b916000526020600020900160005b848481518110611cc257fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a03160217905550506001600c6000848481518110611d0557fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790555b5b600101611c50565b5b5b5050565b601654600160a060020a031681565b600a6020526000908152604090205460ff1681565b601854600160a060020a031681565b600281565b60045b611d8a610e7a565b6004811115611d9557fe5b14611d9f57600080fd5b600160a060020a0381161515611db457600080fd5b60055433600160a060020a03908116911614611dcf57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b611e0760005482612092565b6000819055601454901115611e1b57600080fd5b60025b611e26610e7a565b6004811115611e3157fe5b1415611fb657601154611e426115a8565b10158015611e5d57506011546201518001611e5b6115a8565b105b15611ef057600d60005b0160005b5054600160a060020a0333166000908152600f60205260408120611e96915b0160005b505483612092565b1115611ea157600080fd5b600160a060020a0333166000908152600f60205260408120611eca915b0160005b505482612092565b600160a060020a0333166000908152600f60205260408120905b0160005b50555b611fb6565b6011546201518001611f006115a8565b10158015611f1b57506011546202a30001611f196115a8565b105b15611fb657600d60015b0160005b5054600160a060020a0333166000908152600f60205260409020611f5a906001611e8a565b0160005b505483612092565b1115611f6557600080fd5b600160a060020a0333166000908152600f60205260409020611f94906001611ebe565b0160005b505482612092565b600160a060020a0333166000908152600f6020526040902060015b0160005b50555b5b5b5b600160a060020a038216600090815260026020526040902054611fdc9082612092565b600160a060020a03831660008181526002602052604080822093909355909160008051602061212f8339815191529084905190815260200160405180910390a35b5050565b6000828202612045841580612040575083858381151561203d57fe5b04145b6120d3565b8091505b5092915050565b60008061205f600084116120d3565b828481151561206a57fe5b049050612045838581151561207b57fe5b068285020185146120d3565b8091505b5092915050565b60008282016120458482108015906120405750838210155b6120d3565b8091505b5092915050565b60006120c8838311156120d3565b508082035b92915050565b801515610bb757600080fd5b5b50565b8154818355818115116111b2576000838152602090206111b291810190830161210d565b5b505050565b610f8e91905b808211156121275760008155600101612113565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d9a2a62c16e2a50b0ed5ccb86cb2fbfeff37b0760de4c89994dd659a835690e1002960606040526000805460ff19169055341561001957600080fd5b60405160208061037a833981016040528080519150505b600160a060020a038116151561004557600080fd5b6000805460018054600160a060020a031916600160a060020a0385811691909117825561010060a860020a031990921661010033909316929092029190911760ff19161790556100ba6100a36401000000006100c481026101f41704565b6301e133806401000000006101f96100c982021704565b6002555b5061010e565b425b90565b60008282016100f38482108015906100e15750838210155b6401000000006102216100fe82021704565b8091505b5092915050565b80151561010a57600080fd5b5b50565b61025d8061011d6000396000f3006060604052361561003b5763ffffffff60e060020a600035041663a438b0e58114610043578063a69df4b514610068578063cd3faa6a1461007d575b5b600080fd5b005b341561004e57600080fd5b6100566100a4565b60405190815260200160405180910390f35b341561007357600080fd5b6100416100ac565b005b341561008857600080fd5b6100906101eb565b604051901515815260200160405180910390f35b6301e1338081565b6002546100b76101f4565b10156100c257600080fd5b6000805460015473ffffffffffffffffffffffffffffffffffffffff61010090920482169263a9059cbb92919091169083906370a082319030906040516020015260405160e060020a63ffffffff841602815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381600087803b151561014e57600080fd5b6102c65a03f1151561015f57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156101c257600080fd5b6102c65a03f115156101d357600080fd5b5050506040518051905015156101e857600080fd5b5b565b60005460ff1681565b425b90565b60008282016102168482108015906102115750838210155b610221565b8091505b5092915050565b80151561022d57600080fd5b5b505600a165627a7a723058208697dadd41b5838ed936227d9d121e93966f6622d6fc34db3d94461b77986ea00029000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b86800000000000000000000000000000000000000000000000000000000000008e80000000000000000000000000000000000000000000000000000000059c614800000000000000000000000000000000000000000000000000000000059eafe80
Deployed Bytecode
0x6060604052361561022a5763ffffffff60e060020a60003504166306d65af3811461023657806306fdde031461025b57806308e496ea146102e6578063095ea7b31461030b5780630fb9dcd51461034157806318160ddd146103695780631865c57d1461038e5780631afaa8bf146103c55780631df93558146103ea5780631ed692c01461040f5780631f97c00e1461042457806323b872dd14610449578063313ce567146102e657806345977d03146104aa57806347858c79146104c2578063485f7a7e146104e95780634eb12d7f1461050e57806354da51ad14610540578063557ed1ba146105685780635de4ccb01461058d578063600440cb146105bc57806363193251146105eb57806367a4e7c41461061e57806368f673301461064557806370a082311461066c578063728d5e941461069d57806374eedd46146106c257806385f2aef2146106e75780638a9cb361146107165780638b2de7961461073b57806395d89b41146107605780639a45a263146107eb5780639a508c8e1461081a578063a9059cbb1461082f578063a95ff7d514610865578063aedc0c5c1461088c578063c752ff62146108ad578063d226d723146108d2578063d7e7088a14610904578063da88a83114610925578063dd62ed3e1461093d578063e244fe8914610974578063e8b5e51f1461022a578063eb08aa3b146109cf578063f08d1c34146109fe578063f4660ff514610a31578063f99f977c14610a60578063ffeb7d7514610a85575b5b610233610aa6565b5b005b341561024157600080fd5b610249610bbb565b60405190815260200160405180910390f35b341561026657600080fd5b61026e610bc1565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b341561031657600080fd5b61032d600160a060020a0360043516602435610bfd565b604051901515815260200160405180910390f35b341561034c57600080fd5b610249600435610c89565b60405190815260200160405180910390f35b341561037457600080fd5b610249610e74565b60405190815260200160405180910390f35b341561039957600080fd5b6103a1610e7a565b604051808260048111156103b157fe5b60ff16815260200191505060405180910390f35b34156103d057600080fd5b610249610f97565b60405190815260200160405180910390f35b34156103f557600080fd5b610249610f9c565b60405190815260200160405180910390f35b341561041a57600080fd5b610233610fa2565b005b341561042f57600080fd5b6102496111b8565b60405190815260200160405180910390f35b341561045457600080fd5b61032d600160a060020a03600435811690602435166044356111be565b604051901515815260200160405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b34156104b557600080fd5b61023360043561135a565b005b34156104cd57600080fd5b61032d611548565b604051901515815260200160405180910390f35b34156104f457600080fd5b610249611558565b60405190815260200160405180910390f35b341561051957600080fd5b61052460043561155e565b604051600160a060020a03909116815260200160405180910390f35b341561054b57600080fd5b610249600435611590565b60405190815260200160405180910390f35b341561057357600080fd5b6102496115a8565b60405190815260200160405180910390f35b341561059857600080fd5b6105246115ad565b604051600160a060020a03909116815260200160405180910390f35b34156105c757600080fd5b6105246115bc565b604051600160a060020a03909116815260200160405180910390f35b34156105f657600080fd5b61032d600160a060020a03600435166115cb565b604051901515815260200160405180910390f35b341561062957600080fd5b61032d6115e0565b604051901515815260200160405180910390f35b341561065057600080fd5b61032d6115e9565b604051901515815260200160405180910390f35b341561067757600080fd5b610249600160a060020a03600435166115f2565b60405190815260200160405180910390f35b34156106a857600080fd5b610249611611565b60405190815260200160405180910390f35b34156106cd57600080fd5b610249611617565b60405190815260200160405180910390f35b34156106f257600080fd5b61052461161d565b604051600160a060020a03909116815260200160405180910390f35b341561072157600080fd5b61024961162c565b60405190815260200160405180910390f35b341561074657600080fd5b610249611631565b60405190815260200160405180910390f35b341561076b57600080fd5b61026e611636565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f657600080fd5b61052461166d565b604051600160a060020a03909116815260200160405180910390f35b341561082557600080fd5b61023361167c565b005b341561083a57600080fd5b61032d600160a060020a0360043516602435611812565b604051901515815260200160405180910390f35b341561087057600080fd5b61032d6118fa565b604051901515815260200160405180910390f35b341561089757600080fd5b610233600160a060020a0360043516611900565b005b34156108b857600080fd5b6102496119c1565b60405190815260200160405180910390f35b34156108dd57600080fd5b6105246004356119c7565b604051600160a060020a03909116815260200160405180910390f35b341561090f57600080fd5b610233600160a060020a03600435166119f9565b005b341561093057600080fd5b610233600435611b7a565b005b341561094857600080fd5b610249600160a060020a0360043581169060243516611bbf565b60405190815260200160405180910390f35b341561097f57600080fd5b6102336004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611bec95505050505050565b005b610233610aa6565b005b34156109da57600080fd5b610524611d47565b604051600160a060020a03909116815260200160405180910390f35b3415610a0957600080fd5b61032d600160a060020a0360043516611d56565b604051901515815260200160405180910390f35b3415610a3c57600080fd5b610524611d6b565b604051600160a060020a03909116815260200160405180910390f35b3415610a6b57600080fd5b610249611d7a565b60405190815260200160405180910390f35b3415610a9057600080fd5b610233600160a060020a0360043516611d7f565b005b600060015b610ab3610e7a565b6004811115610abe57fe5b14158015610ae0575060025b610ad2610e7a565b6004811115610add57fe5b14155b8015610b00575060035b610af2610e7a565b6004811115610afd57fe5b14155b15610b0a57600080fd5b60015b610b15610e7a565b6004811115610b2057fe5b148015610b465750600160a060020a0333166000908152600a602052604090205460ff16155b15610b5057600080fd5b60025b610b5b610e7a565b6004811115610b6657fe5b148015610b8c5750600160a060020a0333166000908152600c602052604090205460ff16155b15610b9657600080fd5b341515610ba257600080fd5b610bab34610c89565b9050610bb73382611dfb565b5b50565b60105481565b60408051908101604052601081527f446563656e742e42657420546f6b656e00000000000000000000000000000000602082015281565b601281565b600060045b610c0a610e7a565b6004811115610c1557fe5b14610c1f57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000601054610c966115a8565b10158015610cac5750601154610caa6115a8565b105b15610cd857610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b601154610ce36115a8565b10158015610cfe57506011546201518001610cfc6115a8565b105b15610d2a57610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546201518001610d3a6115a8565b10158015610d5557506011546202a30001610d536115a8565b105b15610d8157610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546202a30001610d916115a8565b10158015610dac575060115462093a8001610daa6115a8565b105b15610dd857610cd1610cca83610cc5601354606e612021565b612021565b6064612050565b9050610e69565b60115462093a8001610de86115a8565b10158015610e0357506011546212750001610e016115a8565b105b15610e2f57610cd1610cca83610cc56013546069612021565b612021565b6064612050565b9050610e69565b6011546212750001610e3f6115a8565b10158015610e555750601254610e536115a8565b105b15610e6957610cd182601354612021565b90505b5b5b5b5b5b5b919050565b60005481565b60085460009060ff1615610e9057506004610f8e565b601054610e9b6115a8565b1015610ea957506000610f8e565b601054610eb46115a8565b10158015610eca5750601154610ec86115a8565b105b8015610ed95750601454600054105b15610ee657506001610f8e565b601154610ef16115a8565b10158015610f0c57506011546202a30001610f0a6115a8565b105b8015610f1b5750601454600054105b15610f2857506002610f8e565b6011546202a30001610f386115a8565b10158015610f4e5750601254610f4c6115a8565b105b8015610f5d5750601454600054105b15610f6a57506003610f8e565b601254610f756115a8565b101580610f855750601454600054145b15610f8e575060045b5b5b5b5b5b5b90565b604681565b60115481565b6000808060045b610fb1610e7a565b6004811115610fbc57fe5b14610fc657600080fd5b60085460ff1615610fd657600080fd5b6008805460ff19166001179055600054610ffc90610ff5906012612021565b6046612050565b601854600160a060020a03166000908152600260205260409020549093506110249084612092565b60188054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529086905190815260200160405180910390a3611082610ff5600054600a612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549092506110aa9083612092565b601854600160a060020a03908116600090815260026020526040808220939093556017549091169160008051602061212f8339815191529085905190815260200160405180910390a361110a610ff56000546002612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549091506111329082612092565b60178054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529084905190815260200160405180910390a3601754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156111b257600080fd5b5b505050565b60145481565b600060045b6111cb610e7a565b60048111156111d657fe5b146111e057600080fd5b600160a060020a0384166000908152600260205260409020548290108015906112305750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b801561125c5750600160a060020a03831660009081526002602052604090205461125a8184612092565b115b1561134957600160a060020a0383166000908152600260205260409020546112849083612092565b600160a060020a0380851660009081526002602052604080822093909355908616815220546112b390836120ba565b600160a060020a03808616600090815260026020908152604080832094909455600381528382203390931682529190915220546112f090836120ba565b600160a060020a038086166000818152600360209081526040808320338616845290915290819020939093559085169160008051602061212f8339815191529085905190815260200160405180910390a350600161134d565b5060005b5b9392505050565b601281565b60045b611365610e7a565b600481111561137057fe5b1461137a57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113c257600080fd5b6102c65a03f115156113d357600080fd5b5050506040518051600160a060020a0316151590506113f157600080fd5b60045460a060020a900460ff161561140857600080fd5b80151561141457600080fd5b600160a060020a03331660009081526002602052604090205481111561143957600080fd5b600160a060020a03331660009081526002602052604090205461145c90826120ba565b600160a060020a0333166000908152600260205260408120919091555461148390826120ba565b6000556007546114939082612092565b600755600654600160a060020a031663753e88e5338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114ec57600080fd5b6102c65a03f115156114fd57600080fd5b5050600654600160a060020a03908116915033167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac8360405190815260200160405180910390a35b50565b60045460a060020a900460ff1681565b60155481565b600b80548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600d816002811061159d57fe5b0160005b5054905081565b425b90565b600654600160a060020a031681565b600554600160a060020a031681565b600c6020526000908152604090205460ff1681565b60015460ff1681565b60085460ff1681565b600160a060020a0381166000908152600260205260409020545b919050565b60135481565b60125481565b600454600160a060020a031681565b606481565b600a81565b60408051908101604052600481527f4442455400000000000000000000000000000000000000000000000000000000602082015281565b601754600160a060020a031681565b60045b611687610e7a565b600481111561169257fe5b1461169c57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e457600080fd5b6102c65a03f115156116f557600080fd5b5050506040518051600160a060020a03161515905061171357600080fd5b60055433600160a060020a0390811691161461172e57600080fd5b60045460a060020a900460ff161561174557600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055600654600160a060020a0316639a508c8e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156117a857600080fd5b6102c65a03f115156117b957600080fd5b50506006547fdefffffb60c1e133c8c4d138aca8eb2459d671a44b864db2b2febc8e2b5c17f891503390600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a15b565b60008060045b611820610e7a565b600481111561182b57fe5b1461183557600080fd5b50600160a060020a03331660009081526002602052604090205482811080159061185f5750600083115b156118ee5761186e81846120ba565b600160a060020a033381166000908152600260205260408082208490559187168152205490915061189f9084612092565b600160a060020a03808616600081815260026020526040908190209390935591339091169060008051602061212f8339815191529086905190815260200160405180910390a3600191506118f3565b600091505b5092915050565b60015b90565b60045433600160a060020a0390811691161461191b57600080fd5b60005b611926610e7a565b600481111561193157fe5b1461193b57600080fd5b600160a060020a0381166000908152600a602052604090205460ff161561196157600080fd5b600980546001810161197383826120e3565b916000526020600020900160005b8154600160a060020a038086166101009390930a838102910219909116179091556000908152600a60205260409020805460ff19166001179055505b5b50565b60075481565b600980548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b60045b611a04610e7a565b6004811115611a0f57fe5b14611a1957600080fd5b600160a060020a0381161515611a2e57600080fd5b60055433600160a060020a03908116911614611a4957600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166361d3d7a66000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ab457600080fd5b6102c65a03f11515611ac557600080fd5b505050604051805190501515611ada57600080fd5b600654600160a060020a0316639ef916ab6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611b1957600080fd5b6102c65a03f11515611b2a57600080fd5b50506006547f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc9150600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b60045433600160a060020a03908116911614611b9557600080fd5b60005b611ba0610e7a565b6004811115611bab57fe5b14611bb557600080fd5b60138190555b5b50565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60045460009033600160a060020a03908116911614611c0a57600080fd5b60005b611c15610e7a565b6004811115611c2057fe5b14158015611c42575060015b611c34610e7a565b6004811115611c3f57fe5b14155b15611c4c57600080fd5b5060005b8151811015611d4157600c6000838381518110611c6957fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205460ff161515611d3857600b805460018101611ca883826120e3565b916000526020600020900160005b848481518110611cc257fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a03160217905550506001600c6000848481518110611d0557fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790555b5b600101611c50565b5b5b5050565b601654600160a060020a031681565b600a6020526000908152604090205460ff1681565b601854600160a060020a031681565b600281565b60045b611d8a610e7a565b6004811115611d9557fe5b14611d9f57600080fd5b600160a060020a0381161515611db457600080fd5b60055433600160a060020a03908116911614611dcf57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b611e0760005482612092565b6000819055601454901115611e1b57600080fd5b60025b611e26610e7a565b6004811115611e3157fe5b1415611fb657601154611e426115a8565b10158015611e5d57506011546201518001611e5b6115a8565b105b15611ef057600d60005b0160005b5054600160a060020a0333166000908152600f60205260408120611e96915b0160005b505483612092565b1115611ea157600080fd5b600160a060020a0333166000908152600f60205260408120611eca915b0160005b505482612092565b600160a060020a0333166000908152600f60205260408120905b0160005b50555b611fb6565b6011546201518001611f006115a8565b10158015611f1b57506011546202a30001611f196115a8565b105b15611fb657600d60015b0160005b5054600160a060020a0333166000908152600f60205260409020611f5a906001611e8a565b0160005b505483612092565b1115611f6557600080fd5b600160a060020a0333166000908152600f60205260409020611f94906001611ebe565b0160005b505482612092565b600160a060020a0333166000908152600f6020526040902060015b0160005b50555b5b5b5b600160a060020a038216600090815260026020526040902054611fdc9082612092565b600160a060020a03831660008181526002602052604080822093909355909160008051602061212f8339815191529084905190815260200160405180910390a35b5050565b6000828202612045841580612040575083858381151561203d57fe5b04145b6120d3565b8091505b5092915050565b60008061205f600084116120d3565b828481151561206a57fe5b049050612045838581151561207b57fe5b068285020185146120d3565b8091505b5092915050565b60008282016120458482108015906120405750838210155b6120d3565b8091505b5092915050565b60006120c8838311156120d3565b508082035b92915050565b801515610bb757600080fd5b5b50565b8154818355818115116111b2576000838152602090206111b291810190830161210d565b5b505050565b610f8e91905b808211156121275760008155600101612113565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d9a2a62c16e2a50b0ed5ccb86cb2fbfeff37b0760de4c89994dd659a835690e10029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b86800000000000000000000000000000000000000000000000000000000000008e80000000000000000000000000000000000000000000000000000000059c614800000000000000000000000000000000000000000000000000000000059eafe80
-----Decoded View---------------
Arg [0] : _decentBetMultisig (address): 0xc87B1bF162C1719E3ffdf34995d1853192D6633B
Arg [1] : _upgradeMaster (address): 0x818E6a1CDCcc7dB87E991d979AA8d3eec199b868
Arg [2] : _team (address): 0x818E6a1CDCcc7dB87E991d979AA8d3eec199b868
Arg [3] : _baseTokensPerEther (uint256): 2280
Arg [4] : _fundingStartTime (uint256): 1506153600
Arg [5] : _fundingEndTime (uint256): 1508572800
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b
Arg [1] : 000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868
Arg [2] : 000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868
Arg [3] : 00000000000000000000000000000000000000000000000000000000000008e8
Arg [4] : 0000000000000000000000000000000000000000000000000000000059c61480
Arg [5] : 0000000000000000000000000000000000000000000000000000000059eafe80
Swarm Source
bzzr://8697dadd41b5838ed936227d9d121e93966f6622d6fc34db3d94461b77986ea0
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.