Sponsored Link:   PAVOCOIN - IoT blockchain for the AgTech ecosystem. Bringing together IoT, blockchain, and agriculture. Join now!
 Latest 25 txns from a total Of 23121 transactions (+1 PendingTxn)
View All

TxHash Age From To Value [TxFee]
0x10b048d988f388d2349517f396623719934f91fa741ca76f03cb335894e0cb04(pending)0xa64d34e219c38883a99a81fd3ab01c512b5e6c96  IN  0x540449e4d172cd9491c76320440cd74933d5691a0 Ether(pending)
0xac3f0ff36fa1dfe32252325e4988f402ab35d285e8bf4468cebde7205165fb911 min ago0x29c7fa2f68ce39a80e155cc87802abbc16b2d1e7  IN  DecentBetToken_v10 Ether0.002159265
0xe6fb9266e61c049f9eaadd7980a625c63df8fb9e1ea4db5fc1bd051e46667f7c4 mins ago0xcece280ead5af39b61e73a26ab3b9597ae7c09cb  IN  DecentBetToken_v10 Ether0.00075586
0x47656b461bca328e052a3408305e3348a56c40bf304a52b35fce716cfb00d54f6 mins ago0x17efdcf0a220b95ba2576b43227ba6b6ec1fe078  IN  DecentBetToken_v10 Ether0.00068379
0x050ee751ccd02ac4e6ce2e51ea259f3f959434af8115a20946b73640934cea9b9 mins ago0x17efdcf0a220b95ba2576b43227ba6b6ec1fe078  IN  DecentBetToken_v10 Ether0.00158379
0x06d333bd2f90e38e5301c26e2856888790edb4a1b2d8b52c87a51b5b6c67890715 mins ago0x17efdcf0a220b95ba2576b43227ba6b6ec1fe078  IN  DecentBetToken_v10 Ether0.0015
0x3c7513c993b037ec73856b90fd71af59d6458d4faef1cdf1925812805b42debb31 mins ago0x29c7fa2f68ce39a80e155cc87802abbc16b2d1e7  IN  DecentBetToken_v10 Ether0.001549513
0x98642ef0ecf81db03738f3f996687104ab826a562da9b92c1720ce85ac47d22539 mins ago0xc472a7f3c3c4ab63ab88ad2b6a8bc10285109ce2  IN  DecentBetToken_v10 Ether0.00075714
0xaef133fe07f002dfd284c1cc376df7215e0b095b28dda80bd435e7b7adeaddbd1 hr 3 mins ago0x29c7fa2f68ce39a80e155cc87802abbc16b2d1e7  IN  DecentBetToken_v10 Ether0.001271
0x0e02f6a8031e694d03dec420bd71987216baa9ad91f032418cd27248706849721 hr 34 mins ago0x764ae5748b18c40cdb2741620912d4d93d95d363  IN  DecentBetToken_v10 Ether0.001552137
0xcc9009f9ec16bf2541d22be5f9e5775ea0aaa242c064a4a4ddd4541ebb3fd67a1 hr 39 mins ago0x13126569ead169befc4ea47782ebb348df77734a  IN  DecentBetToken_v10 Ether0.00085849
0x73714ddb6f1596e4b8f77c7327b97a47b0112f08ef8427084784ceee242fb7691 hr 42 mins ago0x764ae5748b18c40cdb2741620912d4d93d95d363  IN  DecentBetToken_v10 Ether0.002164513
0x6fef56878c379cbedc2c1904f012a7fc6f5bbde777610b7ef6c07bb9fccbc0f82 hrs 30 mins ago0x29c7fa2f68ce39a80e155cc87802abbc16b2d1e7  IN  DecentBetToken_v10 Ether0.002167137
0x7e471e71021faa08ea5dd562b73e21e5e4462befe780e18d1c97d3f5f2a0be032 hrs 32 mins ago0x209452dac8be4bea5746f28df779e5d58884f197  IN  DecentBetToken_v10 Ether0.00075714
0xccf830f3dbfd91226a487a10df022808a9a76483da09d4c43cc932ead5a41ce64 hrs 2 mins ago0x45b90e961d3265dea15f4f0b5aeb0b2449cada3b  IN  DecentBetToken_v10 Ether0.000429565
0x072fe40fe942d3bef619f59f2cb1dda6b238553535f5613cc8e23b7ecfa4b0c94 hrs 5 mins ago0xc3c94831bed8f195af72c9a3a76a01d074c62167  IN  DecentBetToken_v10 Ether0.001552137
0x1d8663474e2c852cb23da5a241204fd898ff17f559ae1b26f641dc4e774a42034 hrs 17 mins ago0x2386b2a988a3635ac7deddc179b9e41e6e44d3e7  IN  DecentBetToken_v10 Ether0.00075714
0x055172d3ca0956774b27f4e80ca016a6f97cc9a6a0bf2d6bc6a74ec05213d8854 hrs 35 mins ago0x7d8bb063ea16ff0319ed6af02f46d24e753d3c80  IN  DecentBetToken_v10 Ether0.00075586
0xf409a07c99c2f8970263b25c9961d7e8b716a2793db6da26a1b505349aa1f52f4 hrs 52 mins ago0xfec704d46924a10ad7dc9d6b660254922591bb1b  IN  DecentBetToken_v10 Ether0.000429245
0x5ff8b6ceb0d9c10777301ef5c4f88971d7b615299d1790087ddaa062a635468e5 hrs 15 mins ago0x278982f83f3f20566ad8754cee17ebf129e02e4e  IN  DecentBetToken_v10 Ether0.000226758
0x6d72938b47960f25ceee35c657cac6279768c3f19e46a5854f82277e0876c4315 hrs 21 mins ago0x45b90e961d3265dea15f4f0b5aeb0b2449cada3b  IN  DecentBetToken_v10 Ether0.000429565
0xd0cfcce710613033d7117fde1da38b036da12ce021126e305650bef0aabf20565 hrs 29 mins ago0x3f4cac52b03afe81d504bb58838ad266070a6af1  IN  DecentBetToken_v10 Ether0.000794997
0x21fa353d8469fa7de3e8a45a5e43a428a1382a4e3504bb757e2b429c627bc58b5 hrs 35 mins ago0x65d750e275bcde2bcbcc10ee60487dc92ff0662a  IN  DecentBetToken_v10 Ether0.00151172
0x9e3d057334425418b8bf8c62fb6280550d32ce95cdd92ef08e98891851bff2127 hrs 28 mins ago0x0a8eb65e6efc1996ad656ba3a2cd7c854bade440  IN  DecentBetToken_v10 Ether0.001706445
0x3bdf69d1e287b62b0f62b1f0f58cf3f4cffa42399ec85647c9c930a12c3ae2dd9 hrs 10 mins ago0x4478fc07bfcd5816b1bda073749931607fce2312  IN  DecentBetToken_v10 Ether0.001097853
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 3 Internal Transactions

ParentTxHash Block Age From To Value
0x2bf3494e84e18f7223c681de2eefca507aaf211bacc077327595541b909dea414400741212 days 20 hrs ago0x540449e4d172cd9491c76320440cd74933d5691a0xc87b1bf162c1719e3ffdf34995d1853192d6633b37,477.195050645441247452 Ether
0x27a33650cb2d1b5a63361867c42240a3b1329437177d9875cde6c08a3f1598264304044240 days 20 hrs ago0xcc5465f67e9c28a4f3cf3791e75c1934cd28cedc0x540449e4d172cd9491c76320440cd74933d5691a35.53 Ether
0xa5bc850559ba2641009807ebccce3650a0c783b09f88cfd5f208d0ac243cf1794302822241 days 6 hrs ago0x540449e4d172cd9491c76320440cd74933d5691a  Contract Creation0 Ether
[ Download CSV Export  ] 
Warning: The compiled contract might be susceptible to 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.