Sponsored:   Kirik Meta Protocol - New Generation of Blockchain - Join Pre-Sale Aug 15-17
 Latest 25 txns from a total Of 23662 transactions

TxHash Age From To Value [TxFee]
0x2eccd96edef2afd6791e701cb1b945156e13105a3ed86b6ec3bf0d4a9dbb640a9 hrs 36 mins ago0x53989814465316847e57caa557fc2967891b06f2  IN   DecentBetToken_v10 Ether0.000157578
0x14ed0c9144446a0d5a95add2f4b6c70588b0b0f7a50c7bbdc8c0ac36e689f6cc10 hrs 42 mins ago0xc9bfaa4c93cf068b8a1ba770854d724939514f0f  IN   DecentBetToken_v10 Ether0.000037793
0xf8c56ffb77d4101e5967c86c4b310165b03d98f1cf0b8f05cc6598455eabda3619 hrs 53 mins ago0xddd7bea8e2f121d338c220910a92e197dcf400f7  IN   DecentBetToken_v10 Ether0.000189285
0x80b2b5e65486816705ec5adeaefce855c57c765cc6f8fbfc8500ed76a3d83a373 days 2 hrs ago0x6d9f303aad5616a45db798c167808115b4cb6a43  IN   DecentBetToken_v10 Ether0.000343652
0x7856a90f3b8c4b18794961e5ac0f909e16fb5692c99bd7ad95859ad9d523270a3 days 2 hrs ago0x5aa5e6cfc8f86a1e6aed316b4bd6fc2744c4b2d9  IN   DecentBetToken_v10 Ether0.000908568
0x91a269a87a11e2a03bb295b6bf25528ac6d32124ed0727143ab339b7bf22820a3 days 2 hrs ago0x5aa5e6cfc8f86a1e6aed316b4bd6fc2744c4b2d9  IN   DecentBetToken_v10 Ether0.000936192
0x69fb8ba40938837e489c56d6d38c33481ef2b198d2fa86aa377de82e74dd53b13 days 3 hrs ago0x5aa5e6cfc8f86a1e6aed316b4bd6fc2744c4b2d9  IN   DecentBetToken_v10 Ether0.00126396
0x5c0bd4bdfec65bb7d19d43c448cda0fb9ae50389cc6f64ead90b057cbfa454923 days 22 hrs ago0xc1378cf1f0a05e37f273b29bf04073578a1d4841  IN   DecentBetToken_v10 Ether0.000343396
0x7fc36e8c13c6e90c6a6584e093630c38bf43b575d8972a4e05c081158e9c02675 days 9 hrs ago0x5d51bd2f3a413432038b0fc92da09ef870df3970  IN   DecentBetToken_v10 Ether0.0002403772
0x7b5faf366a25e58a2d350b179189ab9630d22835bfed9e294193c89d7cef207e5 days 9 hrs ago0x8b4eebaf8ce3e53e3cd063fa421dde4dda5949c8  IN   DecentBetToken_v10 Ether0.000415723
0xa7002c8c54fefcffdcab62ff25f84345d4de3eeafe6dcee697887699251ab9916 days 3 hrs ago0x9965be1f67639ea2482615e9a3600cffdc6f773a  IN   DecentBetToken_v10 Ether0.000515478
0x61fd8f9c8482e16deafb91c8ea047a98fbca2509d5dbe8a4f47b717f3880978d6 days 15 hrs ago0xaf96af85f2215e4e603deef76171c3b99a4f92b6  IN   DecentBetToken_v10 Ether0.00070977
0x97cd67c1d72cf5d9e1bdc572e7742c47b750f9454bc7a83242574690d0734e4f6 days 15 hrs ago0xc350d1ecc1c71e41612be8c6c690f8af4dda32e6  IN   DecentBetToken_v10 Ether0.003754179
0xac48392edd358270421780bd8081ef83738a82e219d8a10716fc637ec901bd026 days 15 hrs ago0xaf96af85f2215e4e603deef76171c3b99a4f92b6  IN   DecentBetToken_v10 Ether0.001030956
0xff5f68777d38634900954775b578b287c7dd07e035af21a7463d5e88dbaf5c6a6 days 15 hrs ago0x45d803c38f1bf8ca9cf2154f66a3e4ee4ad1a44c  IN   DecentBetToken_v10 Ether0.003747843
0x931ff38233240539e1cc91a7e6a914a9b979ac382e8f011ccc09b2624fcb759d6 days 15 hrs ago0x45d803c38f1bf8ca9cf2154f66a3e4ee4ad1a44c  IN   DecentBetToken_v10 Ether0.002493018
0x72d1ae2dbfa43b6774620b47fee0cf1fcc6232ef6dd6045cfd9d379abcf7f2286 days 15 hrs ago0xaf96af85f2215e4e603deef76171c3b99a4f92b6  IN   DecentBetToken_v10 Ether0.000944339
0x2ccf0dd3ad7e99e1fd62d0c72fa449fb3876d3226102e642a0044f4870b1098e6 days 15 hrs ago0x45d803c38f1bf8ca9cf2154f66a3e4ee4ad1a44c  IN   DecentBetToken_v10 Ether0.005226507
0xe543d80fe0a291f10ba9584bf20e807004e6d6ac87c558bf1effccdcb79c55927 days 8 hrs ago0x0d03e8dadc286abc3acb89f640a779ff739d0251  IN   DecentBetToken_v10 Ether0.001287735
0x7b7a9673b98d8dd62e57f1b7ccdb905b1b1eea5aedc191051316892556e082a87 days 8 hrs ago0xe34aee599e9d09fe2a814f7adafc28b4824f49b8  IN   DecentBetToken_v10 Ether0.001002892
0x4cd9c25a5eeb51a7b5fe1129e88b8ce4ee66b8abf75d755f27695898ed4795937 days 8 hrs ago0xe34aee599e9d09fe2a814f7adafc28b4824f49b8  IN   DecentBetToken_v10 Ether0.002322892
0x6a4ed108c43f387bea569eb771cc6a21008de028522d1015e3f9716ce5add6637 days 8 hrs ago0xe34aee599e9d09fe2a814f7adafc28b4824f49b8  IN   DecentBetToken_v10 Ether0.001102376
0xecd0b320937e6baeeeb4a431830096322b1bfb1dee7dfa702108f27f807515507 days 11 hrs ago0xe34aee599e9d09fe2a814f7adafc28b4824f49b8  IN   DecentBetToken_v10 Ether0.002320076
0xbf521dedcf00412895c334fc327d5e63ec5c052d632c2737cf90e9739259c0427 days 16 hrs ago0xe34aee599e9d09fe2a814f7adafc28b4824f49b8  IN   DecentBetToken_v10 Ether0.002322892
0x33e7e96c3d08d1212439c2719c6fc26aa536023a0a937414a22f13e4346a06f57 days 23 hrs ago0xc01aac0667ba4322eed96612dfc5e18cfc8f35d9  IN   DecentBetToken_v10 Ether0.00429565
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0x2bf3494e84e18f7223c681de2eefca507aaf211bacc077327595541b909dea414400741299 days 21 hrs ago0x540449e4d172cd9491c76320440cd74933d5691a0xc87b1bf162c1719e3ffdf34995d1853192d6633b37,477.195050645441247452 Ether
0x27a33650cb2d1b5a63361867c42240a3b1329437177d9875cde6c08a3f1598264304044327 days 21 hrs ago0xcc5465f67e9c28a4f3cf3791e75c1934cd28cedc0x540449e4d172cd9491c76320440cd74933d5691a35.53 Ether
0xa5bc850559ba2641009807ebccce3650a0c783b09f88cfd5f208d0ac243cf1794302822328 days 7 hrs ago0x540449e4d172cd9491c76320440cd74933d5691a  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: DecentBetToken
Compiler Version: v0.4.16+commit.d7661dd9
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

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 ABI  
[{"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 Switch To Opcodes View
606060409081526001805460ff199081169091556004805460a060020a60ff0219169055600880549091169055805190810160405269152d02c7e14af68000008152692a5a058fc295ed00000060208201526200006190600d90600262000412565b50620000886934f086f3b33b684000006103e8640100000000620020216200038282021704565b60145534156200009757600080fd5b60405160c0806200299a8339810160405280805191906020018051919060200180519190602001805191906020018051919060200180519150505b600160a060020a0386161515620000e857600080fd5b600160a060020a0384161515620000fe57600080fd5b600160a060020a03851615156200011457600080fd5b8215156200012157600080fd5b62000139640100000000620015a8620003c382021704565b8210156200014657600080fd5b8181116200015357600080fd5b6001805460ff19168117905560058054600160a060020a03808816600160a060020a0319928316179092556004805487841690831617905560138590556201517f19840160105560118490556012839055601680549091167387f7beeda96216ec2a325e417a45ed262495686b17908190556a25391ee35a05c54d00000060158190559116600090815260026020526040812082905554620002039164010000000062002092620003c882021704565b600055856200021162000461565b600160a060020a039091168152602001604051809103906000f08015156200023857600080fd5b60188054600160a060020a031916600160a060020a0392831617908190551663cd3faa6a6000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515620002ad57600080fd5b6102c65a03f11515620002bf57600080fd5b505050604051805190501515620002d557600080fd5b60178054600160a060020a031916600160a060020a03888116919091179182905516634c3a6ae06000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15156200034d57600080fd5b6102c65a03f115156200035f57600080fd5b5050506040518051905015156200037557600080fd5b5b50505050505062000496565b6000828202620003b8841580620003a45750838583811515620003a157fe5b04145b640100000000620020d36200040182021704565b8091505b5092915050565b425b90565b6000828201620003b8848210801590620003a45750838210155b640100000000620020d36200040182021704565b8091505b5092915050565b8015156200040e57600080fd5b5b50565b82600281019282156200044e579160200282015b828111156200044e57825182906001605060020a031690559160200191906001019062000426565b5b506200045d92915062000472565b5090565b60405161037a806200262083390190565b620003c591905b808211156200045d576000815560010162000479565b5090565b90565b61217a80620004a66000396000f3006060604052361561022a5763ffffffff60e060020a60003504166306d65af3811461023657806306fdde031461025b57806308e496ea146102e6578063095ea7b31461030b5780630fb9dcd51461034157806318160ddd146103695780631865c57d1461038e5780631afaa8bf146103c55780631df93558146103ea5780631ed692c01461040f5780631f97c00e1461042457806323b872dd14610449578063313ce567146102e657806345977d03146104aa57806347858c79146104c2578063485f7a7e146104e95780634eb12d7f1461050e57806354da51ad14610540578063557ed1ba146105685780635de4ccb01461058d578063600440cb146105bc57806363193251146105eb57806367a4e7c41461061e57806368f673301461064557806370a082311461066c578063728d5e941461069d57806374eedd46146106c257806385f2aef2146106e75780638a9cb361146107165780638b2de7961461073b57806395d89b41146107605780639a45a263146107eb5780639a508c8e1461081a578063a9059cbb1461082f578063a95ff7d514610865578063aedc0c5c1461088c578063c752ff62146108ad578063d226d723146108d2578063d7e7088a14610904578063da88a83114610925578063dd62ed3e1461093d578063e244fe8914610974578063e8b5e51f1461022a578063eb08aa3b146109cf578063f08d1c34146109fe578063f4660ff514610a31578063f99f977c14610a60578063ffeb7d7514610a85575b5b610233610aa6565b5b005b341561024157600080fd5b610249610bbb565b60405190815260200160405180910390f35b341561026657600080fd5b61026e610bc1565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b341561031657600080fd5b61032d600160a060020a0360043516602435610bfd565b604051901515815260200160405180910390f35b341561034c57600080fd5b610249600435610c89565b60405190815260200160405180910390f35b341561037457600080fd5b610249610e74565b60405190815260200160405180910390f35b341561039957600080fd5b6103a1610e7a565b604051808260048111156103b157fe5b60ff16815260200191505060405180910390f35b34156103d057600080fd5b610249610f97565b60405190815260200160405180910390f35b34156103f557600080fd5b610249610f9c565b60405190815260200160405180910390f35b341561041a57600080fd5b610233610fa2565b005b341561042f57600080fd5b6102496111b8565b60405190815260200160405180910390f35b341561045457600080fd5b61032d600160a060020a03600435811690602435166044356111be565b604051901515815260200160405180910390f35b34156102f157600080fd5b610249610bf8565b60405190815260200160405180910390f35b34156104b557600080fd5b61023360043561135a565b005b34156104cd57600080fd5b61032d611548565b604051901515815260200160405180910390f35b34156104f457600080fd5b610249611558565b60405190815260200160405180910390f35b341561051957600080fd5b61052460043561155e565b604051600160a060020a03909116815260200160405180910390f35b341561054b57600080fd5b610249600435611590565b60405190815260200160405180910390f35b341561057357600080fd5b6102496115a8565b60405190815260200160405180910390f35b341561059857600080fd5b6105246115ad565b604051600160a060020a03909116815260200160405180910390f35b34156105c757600080fd5b6105246115bc565b604051600160a060020a03909116815260200160405180910390f35b34156105f657600080fd5b61032d600160a060020a03600435166115cb565b604051901515815260200160405180910390f35b341561062957600080fd5b61032d6115e0565b604051901515815260200160405180910390f35b341561065057600080fd5b61032d6115e9565b604051901515815260200160405180910390f35b341561067757600080fd5b610249600160a060020a03600435166115f2565b60405190815260200160405180910390f35b34156106a857600080fd5b610249611611565b60405190815260200160405180910390f35b34156106cd57600080fd5b610249611617565b60405190815260200160405180910390f35b34156106f257600080fd5b61052461161d565b604051600160a060020a03909116815260200160405180910390f35b341561072157600080fd5b61024961162c565b60405190815260200160405180910390f35b341561074657600080fd5b610249611631565b60405190815260200160405180910390f35b341561076b57600080fd5b61026e611636565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102ab5780820151818401525b602001610292565b50505050905090810190601f1680156102d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f657600080fd5b61052461166d565b604051600160a060020a03909116815260200160405180910390f35b341561082557600080fd5b61023361167c565b005b341561083a57600080fd5b61032d600160a060020a0360043516602435611812565b604051901515815260200160405180910390f35b341561087057600080fd5b61032d6118fa565b604051901515815260200160405180910390f35b341561089757600080fd5b610233600160a060020a0360043516611900565b005b34156108b857600080fd5b6102496119c1565b60405190815260200160405180910390f35b34156108dd57600080fd5b6105246004356119c7565b604051600160a060020a03909116815260200160405180910390f35b341561090f57600080fd5b610233600160a060020a03600435166119f9565b005b341561093057600080fd5b610233600435611b7a565b005b341561094857600080fd5b610249600160a060020a0360043581169060243516611bbf565b60405190815260200160405180910390f35b341561097f57600080fd5b6102336004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650611bec95505050505050565b005b610233610aa6565b005b34156109da57600080fd5b610524611d47565b604051600160a060020a03909116815260200160405180910390f35b3415610a0957600080fd5b61032d600160a060020a0360043516611d56565b604051901515815260200160405180910390f35b3415610a3c57600080fd5b610524611d6b565b604051600160a060020a03909116815260200160405180910390f35b3415610a6b57600080fd5b610249611d7a565b60405190815260200160405180910390f35b3415610a9057600080fd5b610233600160a060020a0360043516611d7f565b005b600060015b610ab3610e7a565b6004811115610abe57fe5b14158015610ae0575060025b610ad2610e7a565b6004811115610add57fe5b14155b8015610b00575060035b610af2610e7a565b6004811115610afd57fe5b14155b15610b0a57600080fd5b60015b610b15610e7a565b6004811115610b2057fe5b148015610b465750600160a060020a0333166000908152600a602052604090205460ff16155b15610b5057600080fd5b60025b610b5b610e7a565b6004811115610b6657fe5b148015610b8c5750600160a060020a0333166000908152600c602052604090205460ff16155b15610b9657600080fd5b341515610ba257600080fd5b610bab34610c89565b9050610bb73382611dfb565b5b50565b60105481565b60408051908101604052601081527f446563656e742e42657420546f6b656e00000000000000000000000000000000602082015281565b601281565b600060045b610c0a610e7a565b6004811115610c1557fe5b14610c1f57600080fd5b600160a060020a03338116600081815260036020908152604080832094881680845294909152908190208590557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a35060015b92915050565b6000601054610c966115a8565b10158015610cac5750601154610caa6115a8565b105b15610cd857610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b601154610ce36115a8565b10158015610cfe57506011546201518001610cfc6115a8565b105b15610d2a57610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546201518001610d3a6115a8565b10158015610d5557506011546202a30001610d536115a8565b105b15610d8157610cd1610cca83610cc56013546078612021565b612021565b6064612050565b9050610e69565b6011546202a30001610d916115a8565b10158015610dac575060115462093a8001610daa6115a8565b105b15610dd857610cd1610cca83610cc5601354606e612021565b612021565b6064612050565b9050610e69565b60115462093a8001610de86115a8565b10158015610e0357506011546212750001610e016115a8565b105b15610e2f57610cd1610cca83610cc56013546069612021565b612021565b6064612050565b9050610e69565b6011546212750001610e3f6115a8565b10158015610e555750601254610e536115a8565b105b15610e6957610cd182601354612021565b90505b5b5b5b5b5b5b919050565b60005481565b60085460009060ff1615610e9057506004610f8e565b601054610e9b6115a8565b1015610ea957506000610f8e565b601054610eb46115a8565b10158015610eca5750601154610ec86115a8565b105b8015610ed95750601454600054105b15610ee657506001610f8e565b601154610ef16115a8565b10158015610f0c57506011546202a30001610f0a6115a8565b105b8015610f1b5750601454600054105b15610f2857506002610f8e565b6011546202a30001610f386115a8565b10158015610f4e5750601254610f4c6115a8565b105b8015610f5d5750601454600054105b15610f6a57506003610f8e565b601254610f756115a8565b101580610f855750601454600054145b15610f8e575060045b5b5b5b5b5b5b90565b604681565b60115481565b6000808060045b610fb1610e7a565b6004811115610fbc57fe5b14610fc657600080fd5b60085460ff1615610fd657600080fd5b6008805460ff19166001179055600054610ffc90610ff5906012612021565b6046612050565b601854600160a060020a03166000908152600260205260409020549093506110249084612092565b60188054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529086905190815260200160405180910390a3611082610ff5600054600a612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549092506110aa9083612092565b601854600160a060020a03908116600090815260026020526040808220939093556017549091169160008051602061212f8339815191529085905190815260200160405180910390a361110a610ff56000546002612021565b6046612050565b601754600160a060020a03166000908152600260205260409020549091506111329082612092565b60178054600160a060020a03908116600090815260026020526040808220949094559154169160008051602061212f8339815191529084905190815260200160405180910390a3601754600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156111b257600080fd5b5b505050565b60145481565b600060045b6111cb610e7a565b60048111156111d657fe5b146111e057600080fd5b600160a060020a0384166000908152600260205260409020548290108015906112305750600160a060020a0380851660009081526003602090815260408083203390941683529290522054829010155b801561125c5750600160a060020a03831660009081526002602052604090205461125a8184612092565b115b1561134957600160a060020a0383166000908152600260205260409020546112849083612092565b600160a060020a0380851660009081526002602052604080822093909355908616815220546112b390836120ba565b600160a060020a03808616600090815260026020908152604080832094909455600381528382203390931682529190915220546112f090836120ba565b600160a060020a038086166000818152600360209081526040808320338616845290915290819020939093559085169160008051602061212f8339815191529085905190815260200160405180910390a350600161134d565b5060005b5b9392505050565b601281565b60045b611365610e7a565b600481111561137057fe5b1461137a57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156113c257600080fd5b6102c65a03f115156113d357600080fd5b5050506040518051600160a060020a0316151590506113f157600080fd5b60045460a060020a900460ff161561140857600080fd5b80151561141457600080fd5b600160a060020a03331660009081526002602052604090205481111561143957600080fd5b600160a060020a03331660009081526002602052604090205461145c90826120ba565b600160a060020a0333166000908152600260205260408120919091555461148390826120ba565b6000556007546114939082612092565b600755600654600160a060020a031663753e88e5338360405160e060020a63ffffffff8516028152600160a060020a0390921660048301526024820152604401600060405180830381600087803b15156114ec57600080fd5b6102c65a03f115156114fd57600080fd5b5050600654600160a060020a03908116915033167f7e5c344a8141a805725cb476f76c6953b842222b967edd1f78ddb6e8b3f397ac8360405190815260200160405180910390a35b50565b60045460a060020a900460ff1681565b60155481565b600b80548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b600d816002811061159d57fe5b0160005b5054905081565b425b90565b600654600160a060020a031681565b600554600160a060020a031681565b600c6020526000908152604090205460ff1681565b60015460ff1681565b60085460ff1681565b600160a060020a0381166000908152600260205260409020545b919050565b60135481565b60125481565b600454600160a060020a031681565b606481565b600a81565b60408051908101604052600481527f4442455400000000000000000000000000000000000000000000000000000000602082015281565b601754600160a060020a031681565b60045b611687610e7a565b600481111561169257fe5b1461169c57600080fd5b600654600160a060020a0316638da5cb5b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156116e457600080fd5b6102c65a03f115156116f557600080fd5b5050506040518051600160a060020a03161515905061171357600080fd5b60055433600160a060020a0390811691161461172e57600080fd5b60045460a060020a900460ff161561174557600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055600654600160a060020a0316639a508c8e6040518163ffffffff1660e060020a028152600401600060405180830381600087803b15156117a857600080fd5b6102c65a03f115156117b957600080fd5b50506006547fdefffffb60c1e133c8c4d138aca8eb2459d671a44b864db2b2febc8e2b5c17f891503390600160a060020a0316604051600160a060020a039283168152911660208201526040908101905180910390a15b565b60008060045b611820610e7a565b600481111561182b57fe5b1461183557600080fd5b50600160a060020a03331660009081526002602052604090205482811080159061185f5750600083115b156118ee5761186e81846120ba565b600160a060020a033381166000908152600260205260408082208490559187168152205490915061189f9084612092565b600160a060020a03808616600081815260026020526040908190209390935591339091169060008051602061212f8339815191529086905190815260200160405180910390a3600191506118f3565b600091505b5092915050565b60015b90565b60045433600160a060020a0390811691161461191b57600080fd5b60005b611926610e7a565b600481111561193157fe5b1461193b57600080fd5b600160a060020a0381166000908152600a602052604090205460ff161561196157600080fd5b600980546001810161197383826120e3565b916000526020600020900160005b8154600160a060020a038086166101009390930a838102910219909116179091556000908152600a60205260409020805460ff19166001179055505b5b50565b60075481565b600980548290811061156c57fe5b906000526020600020900160005b915054906101000a9004600160a060020a031681565b60045b611a04610e7a565b6004811115611a0f57fe5b14611a1957600080fd5b600160a060020a0381161515611a2e57600080fd5b60055433600160a060020a03908116911614611a4957600080fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055166361d3d7a66000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611ab457600080fd5b6102c65a03f11515611ac557600080fd5b505050604051805190501515611ada57600080fd5b600654600160a060020a0316639ef916ab6040518163ffffffff1660e060020a028152600401600060405180830381600087803b1515611b1957600080fd5b6102c65a03f11515611b2a57600080fd5b50506006547f7845d5aa74cc410e35571258d954f23b82276e160fe8c188fa80566580f279cc9150600160a060020a0316604051600160a060020a03909116815260200160405180910390a15b50565b60045433600160a060020a03908116911614611b9557600080fd5b60005b611ba0610e7a565b6004811115611bab57fe5b14611bb557600080fd5b60138190555b5b50565b600160a060020a038083166000908152600360209081526040808320938516835292905220545b92915050565b60045460009033600160a060020a03908116911614611c0a57600080fd5b60005b611c15610e7a565b6004811115611c2057fe5b14158015611c42575060015b611c34610e7a565b6004811115611c3f57fe5b14155b15611c4c57600080fd5b5060005b8151811015611d4157600c6000838381518110611c6957fe5b90602001906020020151600160a060020a0316815260208101919091526040016000205460ff161515611d3857600b805460018101611ca883826120e3565b916000526020600020900160005b848481518110611cc257fe5b90602001906020020151909190916101000a815481600160a060020a030219169083600160a060020a03160217905550506001600c6000848481518110611d0557fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790555b5b600101611c50565b5b5b5050565b601654600160a060020a031681565b600a6020526000908152604090205460ff1681565b601854600160a060020a031681565b600281565b60045b611d8a610e7a565b6004811115611d9557fe5b14611d9f57600080fd5b600160a060020a0381161515611db457600080fd5b60055433600160a060020a03908116911614611dcf57600080fd5b6005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b50565b611e0760005482612092565b6000819055601454901115611e1b57600080fd5b60025b611e26610e7a565b6004811115611e3157fe5b1415611fb657601154611e426115a8565b10158015611e5d57506011546201518001611e5b6115a8565b105b15611ef057600d60005b0160005b5054600160a060020a0333166000908152600f60205260408120611e96915b0160005b505483612092565b1115611ea157600080fd5b600160a060020a0333166000908152600f60205260408120611eca915b0160005b505482612092565b600160a060020a0333166000908152600f60205260408120905b0160005b50555b611fb6565b6011546201518001611f006115a8565b10158015611f1b57506011546202a30001611f196115a8565b105b15611fb657600d60015b0160005b5054600160a060020a0333166000908152600f60205260409020611f5a906001611e8a565b0160005b505483612092565b1115611f6557600080fd5b600160a060020a0333166000908152600f60205260409020611f94906001611ebe565b0160005b505482612092565b600160a060020a0333166000908152600f6020526040902060015b0160005b50555b5b5b5b600160a060020a038216600090815260026020526040902054611fdc9082612092565b600160a060020a03831660008181526002602052604080822093909355909160008051602061212f8339815191529084905190815260200160405180910390a35b5050565b6000828202612045841580612040575083858381151561203d57fe5b04145b6120d3565b8091505b5092915050565b60008061205f600084116120d3565b828481151561206a57fe5b049050612045838581151561207b57fe5b068285020185146120d3565b8091505b5092915050565b60008282016120458482108015906120405750838210155b6120d3565b8091505b5092915050565b60006120c8838311156120d3565b508082035b92915050565b801515610bb757600080fd5b5b50565b8154818355818115116111b2576000838152602090206111b291810190830161210d565b5b505050565b610f8e91905b808211156121275760008155600101612113565b5090565b905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820d9a2a62c16e2a50b0ed5ccb86cb2fbfeff37b0760de4c89994dd659a835690e1002960606040526000805460ff19169055341561001957600080fd5b60405160208061037a833981016040528080519150505b600160a060020a038116151561004557600080fd5b6000805460018054600160a060020a031916600160a060020a0385811691909117825561010060a860020a031990921661010033909316929092029190911760ff19161790556100ba6100a36401000000006100c481026101f41704565b6301e133806401000000006101f96100c982021704565b6002555b5061010e565b425b90565b60008282016100f38482108015906100e15750838210155b6401000000006102216100fe82021704565b8091505b5092915050565b80151561010a57600080fd5b5b50565b61025d8061011d6000396000f3006060604052361561003b5763ffffffff60e060020a600035041663a438b0e58114610043578063a69df4b514610068578063cd3faa6a1461007d575b5b600080fd5b005b341561004e57600080fd5b6100566100a4565b60405190815260200160405180910390f35b341561007357600080fd5b6100416100ac565b005b341561008857600080fd5b6100906101eb565b604051901515815260200160405180910390f35b6301e1338081565b6002546100b76101f4565b10156100c257600080fd5b6000805460015473ffffffffffffffffffffffffffffffffffffffff61010090920482169263a9059cbb92919091169083906370a082319030906040516020015260405160e060020a63ffffffff841602815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401602060405180830381600087803b151561014e57600080fd5b6102c65a03f1151561015f57600080fd5b5050506040518051905060006040516020015260405160e060020a63ffffffff851602815273ffffffffffffffffffffffffffffffffffffffff90921660048301526024820152604401602060405180830381600087803b15156101c257600080fd5b6102c65a03f115156101d357600080fd5b5050506040518051905015156101e857600080fd5b5b565b60005460ff1681565b425b90565b60008282016102168482108015906102115750838210155b610221565b8091505b5092915050565b80151561022d57600080fd5b5b505600a165627a7a723058208697dadd41b5838ed936227d9d121e93966f6622d6fc34db3d94461b77986ea00029000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b86800000000000000000000000000000000000000000000000000000000000008e80000000000000000000000000000000000000000000000000000000059c614800000000000000000000000000000000000000000000000000000000059eafe80

    Constructor Arguments (ABI-encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b86800000000000000000000000000000000000000000000000000000000000008e80000000000000000000000000000000000000000000000000000000059c614800000000000000000000000000000000000000000000000000000000059eafe80

-----Decoded View---------------
Found 6 constructor arguments :
Arg [0] : 000000000000000000000000c87b1bf162c1719e3ffdf34995d1853192d6633b
Arg [1] : 000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868
Arg [2] : 000000000000000000000000818e6a1cdccc7db87e991d979aa8d3eec199b868
Arg [3] : 00000000000000000000000000000000000000000000000000000000000008e8
Arg [4] : 0000000000000000000000000000000000000000000000000000000059c61480
Arg [5] : 0000000000000000000000000000000000000000000000000000000059eafe80


   Swarm Source:
bzzr://8697dadd41b5838ed936227d9d121e93966f6622d6fc34db3d94461b77986ea0

 

View All
Block Age txn Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "downvote" button for any spammy posts, and the "upvote" for interesting conversations.