Sponsored:   Kirik Meta Protocol - New Generation of Blockchain - Join Pre-Sale Aug 15-17
Contract Overview
Balance: 0 Ether
Ether Value: $0
Transactions: 20 txns
Token Tracker: TrueDeck (TDP)
 Latest 20 txns

TxHash Age From To Value [TxFee]
0xaf4fd3cbb4c44f36cc965ab6b3550aa9fba28d2f12590db0a9d3a744402cbe6839 days 20 hrs ago0x2216b8c76794d9d0c3b75c85a2af66825876a522  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00045951
0x88ca5ef4f14748f4a4e3a8b9ca6a4ff64ec28a39dd2650b845bad07f9046223857 days 2 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.0054
0xbada52b03a2bc3fbccb2f10835e6320e4cdb35931346cc69fa2cef654286155f61 days 20 hrs ago0x2216b8c76794d9d0c3b75c85a2af66825876a522  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.003655478
0x0165612e8e8d9a0b9aed95ea80b7a87ec99f18ed73d1b5668742b27935ea1c1d62 days 10 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00378
0x82aceda6608e1e567eb7e64220bef4055599b5b2e5aab1ab9097828106dedcaa64 days 22 hrs ago0x380d72d916d5072659b00f8b284986c0e2dbd12e  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.000126276
0x2b852c59056f71251968c9369bc7fd2ea85265a316aaf43fb5ccf093c6b86d2067 days 10 hrs ago0x2216b8c76794d9d0c3b75c85a2af66825876a522  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.003655478
0x80cb2a64591d2c429a1a0ae9915c08eae95ec060d50b6d5cb04b632846b2921467 days 10 hrs ago0x0c23947f8cc5ffac51c39791ac280ca79ea0f58b  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.003655478
0x5538414893350ce1ab3f57b8d0eb9df2b6cadfe74f637e38e50cf8bdb39598f667 days 10 hrs ago0x2216b8c76794d9d0c3b75c85a2af66825876a522  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.004885478
0xb2b96d83fde6558828737b504b9c7f051338d7556737fbe4f3c72753c69a0f6067 days 10 hrs ago0xdf4d1326ca5001b694af6d6daf2ab7d78f7b4270  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.003655478
0x8682645a5e06a3208cd471c81abac6c63a79864764a502a3876f40517bbc7d6e67 days 10 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.001730925
0xbdc06ca3b739c476612698c21937706e61964387974421b4cac97d17234468ea67 days 10 hrs ago0x2216b8c76794d9d0c3b75c85a2af66825876a522  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00365023
0x5f05831348b11a49e8a72606e4bd7ff4a5bc870a70bbf053842aa0574c90534a67 days 10 hrs ago0x0c23947f8cc5ffac51c39791ac280ca79ea0f58b  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.003652854
0x537a1151dba63d7eaefcf3653be886b38119c47fa12e26870db61c182f36e5aa67 days 20 hrs ago0x534939d68d610c19015b7aae542415026b5f6fb9  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00042092
0xee494ae965531640b3075ac78f93c66441aafff8869bd1f4a67f63a3f18bd63368 days 2 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.001515192
0x032be3bb7739d4d6fa4a2f96ff27d215a266c0522282eade78f952120efe2de568 days 2 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00252
0xbd85de76fff0032cf73a43f9478d59e8034ea5acc7fbe2550f4d492657554c0768 days 3 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00186963
0xad1668c377d109e3677aed89a093c0f856d954706ed9433f7cc222f89cd2e4cc68 days 3 hrs agoMercatox  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.00189
0xcd827c679ec3c656e4335b1d8553a84f439e27581ab27b62ad0a156cfad44d2d72 days 11 hrs ago0x301df3ab354249b4179be4f4e4ab6e5a6a570738  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.001084272
0xd8c151892231f437f5a08aa76ad8330e6192049724fa2527feda5643c903db8581 days 9 hrs ago0x301df3ab354249b4179be4f4e4ab6e5a6a570738  IN   0x4221eb87b28de194e916f2b09274471fb0b01b1c0 Ether0.047110968
0x3e26c024b244df9e75b9c6e2c61b3fed908336c2601751c822c8e1866d083bad81 days 10 hrs ago0x301df3ab354249b4179be4f4e4ab6e5a6a570738  IN    Contract Creation0 Ether0.2175779
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
View All
ParentTxHash Block Age From To Value
Warning: The compiled contract might be susceptible to EventStructWrongData (very low-severity) Solidity compiler bugs.

Contract Source Code Verified (Exact match)
Contract Name: TrueDeckToken
Compiler Version: v0.4.23+commit.124ca40d
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.23;

/**
 * @title SafeMath
 * @dev Math operations with safety checks that throw on error
 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        assert(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        assert(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        assert(c >= a);
        return c;
    }
}

/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address public owner;

    event OwnershipRenounced(
        address indexed previousOwner
    );
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor() public {
        owner = msg.sender;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        require(newOwner != address(0));
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }
}

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     */
    modifier whenNotPaused() {
        require(!paused);
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     */
    modifier whenPaused() {
        require(paused);
        _;
    }

    /**
     * @dev called by the owner to pause, triggers stopped state
     */
    function pause() onlyOwner whenNotPaused public {
        paused = true;
        emit Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() onlyOwner whenPaused public {
        paused = false;
        emit Unpause();
    }
}

/**
 * @title ERC20Basic
 * @dev Simpler version of ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/179
 */
contract ERC20Basic {
    function totalSupply() public view returns (uint256);
    function balanceOf(address who) public view returns (uint256);
    function transfer(address to, uint256 value) public returns (bool);
    event Transfer(
        address indexed from,
        address indexed to,
        uint256 value
    );
}

/**
 * @title ERC20 interface
 * @dev see https://github.com/ethereum/EIPs/issues/20
 */
contract ERC20 is ERC20Basic {
    function allowance(address owner, address spender) public view returns (uint256);
    function transferFrom(address from, address to, uint256 value) public returns (bool);
    function approve(address spender, uint256 value) public returns (bool);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

/**
 * @title PoSTokenStandard
 * @dev the interface of PoSTokenStandard
 */
contract PoSTokenStandard {
    uint256 public stakeStartTime;
    uint256 public stakeMinAge;
    uint256 public stakeMaxAge;
    function mint() public returns (bool);
    function coinAge() public view returns (uint256);
    function annualInterest() public view returns (uint256);
    function calculateReward() public view returns (uint256);
    function calculateRewardAt(uint256 _now) public view returns (uint256);
    event Mint(
        address indexed _address,
        uint256 _reward
    );
}

/**
 * @title TrueDeck TDP Token
 * @dev ERC20, PoS Token for TrueDeck Platform
 */
contract TrueDeckToken is ERC20, PoSTokenStandard, Pausable {
    using SafeMath for uint256;

    event CoinAgeRecordEvent(
        address indexed who,
        uint256 value,
        uint64 time
    );
    event CoinAgeResetEvent(
        address indexed who,
        uint256 value,
        uint64 time
    );

    string public constant name = "TrueDeck";
    string public constant symbol = "TDP";
    uint8 public constant decimals = 18;

    mapping (address => uint256) balances;

    mapping (address => mapping (address => uint256)) internal allowed;

    uint256 totalSupply_;

    /**
    * @dev Total Number of TDP tokens that can ever be created.
    *      200M TDP Tokens
    */
    uint256 public MAX_TOTAL_SUPPLY = 200000000 * 10 ** uint256(decimals);

    /**
    * @dev Initial supply of TDP tokens.
    *      70M TDP Tokens
    *      35% of Maximum Total Supply
    *      Will be distributed as follows:
    *           5% : Platform Partners
    *           1% : Pre-Airdrop
    *          15% : Mega-Airdrop
    *           4% : Bounty (Vested over 6 months)
    *          10% : Development (Vested over 12 months)
    */
    uint256 public INITIAL_SUPPLY = 70000000 * 10 ** uint256(decimals);

    /**
    * @dev Time at which the contract was deployed
    */
    uint256 public chainStartTime;

    /**
    * @dev Ethereum Blockchain Block Number at time the contract was deployed
    */
    uint256 public chainStartBlockNumber;

    /**
    * @dev To keep the record of a single incoming token transfer
    */
    struct CoinAgeRecord {
        uint256 amount;
        uint64 time;
    }

    /**
    * @dev To keep the coin age record for all addresses
    */
    mapping(address => CoinAgeRecord[]) coinAgeRecordMap;

    /**
     * @dev Modifier to make contract mint new tokens only
     *      - Staking has started.
     *      - When total supply has not reached MAX_TOTAL_SUPPLY.
     */
    modifier canMint() {
        require(stakeStartTime > 0 && now >= stakeStartTime && totalSupply_ < MAX_TOTAL_SUPPLY);            // solium-disable-line
        _;
    }

    constructor() public {
        chainStartTime = now;                                                                               // solium-disable-line
        chainStartBlockNumber = block.number;

        stakeMinAge = 3 days;
        stakeMaxAge = 60 days;

        balances[msg.sender] = INITIAL_SUPPLY;
        totalSupply_ = INITIAL_SUPPLY;
    }

    /**
    * @dev total number of tokens in existence
    */
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    /**
    * @dev Transfer the specified amount of tokens to the specified address.
    *      This function works the same with the previous one
    *      but doesn't contain `_data` param.
    *      Added due to backwards compatibility reasons.
    * @param _to The address to transfer to.
    * @param _value The amount to be transferred.
    */
    function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {
        require(_to != address(0));

        if (msg.sender == _to) {
            return mint();
        }

        require(_value <= balances[msg.sender]);

        balances[msg.sender] = balances[msg.sender].sub(_value);
        balances[_to] = balances[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);

        logCoinAgeRecord(msg.sender, _to, _value);

        return true;
    }


    /**
     * @dev Transfer tokens from one address to another
     * @param _from address The address which you want to send tokens from
     * @param _to address The address which you want to transfer to
     * @param _value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {
        require(_to != address(0));
        require(_value <= balances[_from]);
        require(_value <= allowed[_from][msg.sender]);

        balances[_from] = balances[_from].sub(_value);
        balances[_to] = balances[_to].add(_value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        emit Transfer(_from, _to, _value);

        // Coin age should not be recorded if receiver is the sender.
        if (_from != _to) {
            logCoinAgeRecord(_from, _to, _value);
        }

        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     *
     * Beware that changing an allowance with this method brings the risk that someone may use both the old
     * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
     * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     * @param _spender The address which will spend the funds.
     * @param _value The amount of tokens to be spent.
     */
    function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {
        require(_spender != address(0));
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param _owner address The address which owns the funds.
     * @param _spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address _owner, address _spender) public view returns (uint256) {
        return allowed[_owner][_spender];
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _addedValue The amount of tokens to increase the allowance by.
     */
    function increaseApproval(address _spender, uint256 _addedValue) public whenNotPaused returns (bool) {
        require(_spender != address(0));
        allowed[msg.sender][_spender] = (allowed[msg.sender][_spender].add(_addedValue));
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     *
     * approve should be called when allowed[_spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * @param _spender The address which will spend the funds.
     * @param _subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseApproval(address _spender, uint256 _subtractedValue) public whenNotPaused returns (bool) {
        require(_spender != address(0));
        uint256 oldValue = allowed[msg.sender][_spender];
        if (_subtractedValue > oldValue) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    /**
    * @dev Gets the balance of the specified address.
    * @param _owner The address to query the the balance of.
    * @return An uint256 representing the amount owned by the passed address.
    */
    function balanceOf(address _owner) public view returns (uint256) {
        return balances[_owner];
    }

    /**
    * @dev Mints new TDP token and rewards to caller as per the coin age.
    *      Deletes all previous coinage records and resets with new coin age record.
    */
    function mint() public whenNotPaused canMint returns (bool) {
        if (balances[msg.sender] <= 0) {
            return false;
        }

        if (coinAgeRecordMap[msg.sender].length <= 0) {
            return false;
        }

        uint256 reward = calculateRewardInternal(msg.sender, now);                                          // solium-disable-line
        if (reward <= 0) {
            return false;
        }

        if (reward > MAX_TOTAL_SUPPLY.sub(totalSupply_)) {
            reward = MAX_TOTAL_SUPPLY.sub(totalSupply_);
        }

        totalSupply_ = totalSupply_.add(reward);
        balances[msg.sender] = balances[msg.sender].add(reward);
        emit Mint(msg.sender, reward);
        emit Transfer(address(0), msg.sender, reward);

        uint64 _now = uint64(now);                                                                          // solium-disable-line
        delete coinAgeRecordMap[msg.sender];
        coinAgeRecordMap[msg.sender].push(CoinAgeRecord(balances[msg.sender], _now));
        emit CoinAgeResetEvent(msg.sender, balances[msg.sender], _now);

        return true;
    }

    /**
    * @dev Returns coinage for the caller address
    */
    function coinAge() public view returns (uint256) {
        return getCoinAgeInternal(msg.sender, now);                                                         // solium-disable-line
    }

    /**
    * @dev Returns current annual interest
    */
    function annualInterest() public view returns(uint256) {
        return getAnnualInterest(now);                                                                      // solium-disable-line
    }

    /**
    * @dev Calculates and returns proof-of-stake reward
    */
    function calculateReward() public view returns (uint256) {
        return calculateRewardInternal(msg.sender, now);                                                    // solium-disable-line
    }

    /**
    * @dev Calculates and returns proof-of-stake reward for provided time
    *
    * @param _now timestamp The time for which the reward will be calculated
    */
    function calculateRewardAt(uint256 _now) public view returns (uint256) {
        return calculateRewardInternal(msg.sender, _now);
    }

    /**
    * @dev Returns coinage record for the given address and index
    *
    * @param _address address The address for which coinage record will be fetched
    * @param _index index The index of coinage record for that address
    */
    function coinAgeRecordForAddress(address _address, uint256 _index) public view onlyOwner returns (uint256, uint64) {
        if (coinAgeRecordMap[_address].length > _index) {
            return (coinAgeRecordMap[_address][_index].amount, coinAgeRecordMap[_address][_index].time);
        } else {
            return (0, 0);
        }
    }

    /**
    * @dev Returns coinage for the caller address
    *
    * @param _address address The address for which coinage will be calculated
    */
    function coinAgeForAddress(address _address) public view onlyOwner returns (uint256) {
        return getCoinAgeInternal(_address, now);                                                           // solium-disable-line
    }

    /**
    * @dev Returns coinage for the caller address
    *
    * @param _address address The address for which coinage will be calculated
    * @param _now timestamp The time for which the coinage will be calculated
    */
    function coinAgeForAddressAt(address _address, uint256 _now) public view onlyOwner returns (uint256) {
        return getCoinAgeInternal(_address, _now);
    }

    /**
    * @dev Calculates and returns proof-of-stake reward for provided address and time
    *
    * @param _address address The address for which reward will be calculated
    */
    function calculateRewardForAddress(address _address) public view onlyOwner returns (uint256) {
        return calculateRewardInternal(_address, now);                                                      // solium-disable-line
    }

    /**
    * @dev Calculates and returns proof-of-stake reward for provided address and time
    *
    * @param _address address The address for which reward will be calculated
    * @param _now timestamp The time for which the reward will be calculated
    */
    function calculateRewardForAddressAt(address _address, uint256 _now) public view onlyOwner returns (uint256) {
        return calculateRewardInternal(_address, _now);
    }

    /**
    * @dev Sets the stake start time
    */
    function startStakingAt(uint256 timestamp) public onlyOwner {
        require(stakeStartTime <= 0 && timestamp >= chainStartTime && timestamp > now);                     // solium-disable-line
        stakeStartTime = timestamp;
    }

    /**
    * @dev Returns true if the given _address is a contract, false otherwise.
    */
    function isContract(address _address) private view returns (bool) {
        uint256 length;
        /* solium-disable-next-line */
        assembly {
            //retrieve the size of the code on target address, this needs assembly
            length := extcodesize(_address)
        }
        return (length>0);
    }


    /**
    * @dev Logs coinage record for sender and receiver.
    *      Deletes sender's previous coinage records if any.
    *      Doesn't record coinage for contracts.
    *
    * @param _from address The address which you want to send tokens from
    * @param _to address The address which you want to transfer to
    * @param _value uint256 the amount of tokens to be transferred
    */
    function logCoinAgeRecord(address _from, address _to, uint256 _value) private returns (bool) {
        if (coinAgeRecordMap[_from].length > 0) {
            delete coinAgeRecordMap[_from];
        }

        uint64 _now = uint64(now);                                                                          // solium-disable-line

        if (balances[_from] != 0 && !isContract(_from)) {
            coinAgeRecordMap[_from].push(CoinAgeRecord(balances[_from], _now));
            emit CoinAgeResetEvent(_from, balances[_from], _now);
        }

        if (_value != 0 && !isContract(_to)) {
            coinAgeRecordMap[_to].push(CoinAgeRecord(_value, _now));
            emit CoinAgeRecordEvent(_to, _value, _now);
        }

        return true;
    }

    /**
    * @dev Calculates and returns proof-of-stake reward for provided address
    *
    * @param _address address The address for which reward will be calculated
    * @param _now timestamp The time for which the reward will be calculated
    */
    function calculateRewardInternal(address _address, uint256 _now) private view returns (uint256) {
        uint256 _coinAge = getCoinAgeInternal(_address, _now);
        if (_coinAge <= 0) {
            return 0;
        }

        uint256 interest = getAnnualInterest(_now);

        return (_coinAge.mul(interest)).div(365 * 100);
    }

    /**
    * @dev Calculates the coin age for given address and time.
    *
    * @param _address address The address for which coinage will be calculated
    * @param _now timestamp The time for which the coinage will be calculated
    */
    function getCoinAgeInternal(address _address, uint256 _now) private view returns (uint256 _coinAge) {
        if (coinAgeRecordMap[_address].length <= 0) {
            return 0;
        }

        for (uint256 i = 0; i < coinAgeRecordMap[_address].length; i++) {
            if (_now < uint256(coinAgeRecordMap[_address][i].time).add(stakeMinAge)) {
                continue;
            }

            uint256 secondsPassed = _now.sub(uint256(coinAgeRecordMap[_address][i].time));
            if (secondsPassed > stakeMaxAge ) {
                secondsPassed = stakeMaxAge;
            }

            _coinAge = _coinAge.add((coinAgeRecordMap[_address][i].amount).mul(secondsPassed.div(1 days)));
        }
    }

    /**
    * @dev Returns the annual interest rate for given time
    *
    * @param _now timestamp The time for which the annual interest will be calculated
    */
    function getAnnualInterest(uint256 _now) private view returns(uint256 interest) {
        if (stakeStartTime > 0 && _now >= stakeStartTime && totalSupply_ < MAX_TOTAL_SUPPLY) {
            uint256 secondsPassed = _now.sub(stakeStartTime);
            // 1st Year = 30% annually
            if (secondsPassed <= 365 days) {
                interest = 30;
            } else if (secondsPassed <= 547 days) {  // 2nd Year, 1st Half = 25% annually
                interest = 25;
            } else if (secondsPassed <= 730 days) {  // 2nd Year, 2nd Half = 20% annually
                interest = 20;
            } else if (secondsPassed <= 911 days) {  // 3rd Year, 1st Half = 15% annually
                interest = 15;
            } else if (secondsPassed <= 1094 days) {  // 3rd Year, 2nd Half = 10% annually
                interest = 10;
            } else {  // 4th Year Onwards = 5% annually
                interest = 5;
            }
        } else {
            interest = 0;
        }
    }

    /**
    * @dev Batch token transfer. Used by contract creator to distribute initial tokens.
    *      Does not record any coinage for the owner.
    *
    * @param _recipients Array of address
    * @param _values Array of amount
    */
    function batchTransfer(address[] _recipients, uint256[] _values) public onlyOwner returns (bool) {
        require(_recipients.length > 0 && _recipients.length == _values.length);

        uint256 total = 0;
        for(uint256 i = 0; i < _values.length; i++) {
            total = total.add(_values[i]);
        }
        require(total <= balances[msg.sender]);

        uint64 _now = uint64(now);                                                                          // solium-disable-line
        for(uint256 j = 0; j < _recipients.length; j++){
            balances[_recipients[j]] = balances[_recipients[j]].add(_values[j]);
            balances[msg.sender] = balances[msg.sender].sub(_values[j]);
            emit Transfer(msg.sender, _recipients[j], _values[j]);

            coinAgeRecordMap[_recipients[j]].push(CoinAgeRecord(_values[j], _now));
            emit CoinAgeRecordEvent(_recipients[j], _values[j], _now);
        }

        return true;
    }
}

    Contract ABI  
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"coinAge","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_index","type":"uint256"}],"name":"coinAgeRecordForAddress","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint64"}],"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":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOTAL_SUPPLY","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"coinAgeForAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"chainStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_now","type":"uint256"}],"name":"calculateRewardForAddressAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_subtractedValue","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"calculateReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakeStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_recipients","type":"address[]"},{"name":"_values","type":"uint256[]"}],"name":"batchTransfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"annualInterest","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakeMinAge","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"},{"name":"_now","type":"uint256"}],"name":"coinAgeForAddressAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"chainStartBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_addedValue","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_now","type":"uint256"}],"name":"calculateRewardAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","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":true,"inputs":[],"name":"stakeMaxAge","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"timestamp","type":"uint256"}],"name":"startStakingAt","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"calculateRewardForAddress","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"time","type":"uint64"}],"name":"CoinAgeRecordEvent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"who","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"time","type":"uint64"}],"name":"CoinAgeResetEvent","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_reward","type":"uint256"}],"name":"Mint","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"},{"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"}]

  Contract Creation Code Switch To Opcodes View
60806040526003805460a060020a60ff02191690556aa56fa5b99019a5c80000006007556a39e7139a8c08fa0600000060085534801561003e57600080fd5b5060038054600160a060020a033316600160a060020a031990911681179091554260095543600a556203f480600155624f1a00600255600854600091825260046020526040909120819055600655611c5b8061009b6000396000f3006080604052600436106101b65763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101bb578063095ea7b3146102455780631249c58b1461027d57806318160ddd146102925780631e1b13c0146102b9578063207f281a146102ce57806323b872dd146103145780632ff2e9dc1461033e578063313ce5671461035357806333039d3d1461037e5780633f4ba83a14610393578063536f7570146103aa5780635b054f9b146103cb5780635c975abb146103e05780635ccc6c0c146103f5578063661884631461041957806370a082311461043d578063725cedd31461045e5780637419f190146104735780638456cb591461048857806388d695b21461049d5780638da5cb5b1461052b57806395d89b411461055c578063a9059cbb14610571578063b2552fc414610595578063cbd8877e146105aa578063ccd22016146105bf578063cd474b04146105e3578063d73dd623146105f8578063d74d7e791461061c578063dd62ed3e14610634578063e1c3bac61461065b578063e48225ce14610670578063f2fde38b14610688578063fc3459e7146106a9575b600080fd5b3480156101c757600080fd5b506101d06106ca565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020a5781810151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025157600080fd5b50610269600160a060020a0360043516602435610701565b604080519115158252519081900360200190f35b34801561028957600080fd5b50610269610797565b34801561029e57600080fd5b506102a7610a2b565b60408051918252519081900360200190f35b3480156102c557600080fd5b506102a7610a32565b3480156102da57600080fd5b506102f2600160a060020a0360043516602435610a43565b6040805192835267ffffffffffffffff90911660208301528051918290030190f35b34801561032057600080fd5b50610269600160a060020a0360043581169060243516604435610b12565b34801561034a57600080fd5b506102a7610cba565b34801561035f57600080fd5b50610368610cc0565b6040805160ff9092168252519081900360200190f35b34801561038a57600080fd5b506102a7610cc5565b34801561039f57600080fd5b506103a8610ccb565b005b3480156103b657600080fd5b506102a7600160a060020a0360043516610d47565b3480156103d757600080fd5b506102a7610d6f565b3480156103ec57600080fd5b50610269610d75565b34801561040157600080fd5b506102a7600160a060020a0360043516602435610d85565b34801561042557600080fd5b50610269600160a060020a0360043516602435610db4565b34801561044957600080fd5b506102a7600160a060020a0360043516610edd565b34801561046a57600080fd5b506102a7610ef8565b34801561047f57600080fd5b506102a7610f04565b34801561049457600080fd5b506103a8610f0a565b3480156104a957600080fd5b506040805160206004803580820135838102808601850190965280855261026995369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610f8b9650505050505050565b34801561053757600080fd5b506105406112ec565b60408051600160a060020a039092168252519081900360200190f35b34801561056857600080fd5b506101d06112fb565b34801561057d57600080fd5b50610269600160a060020a0360043516602435611332565b3480156105a157600080fd5b506102a761145e565b3480156105b657600080fd5b506102a7611469565b3480156105cb57600080fd5b506102a7600160a060020a036004351660243561146f565b3480156105ef57600080fd5b506102a7611497565b34801561060457600080fd5b50610269600160a060020a036004351660243561149d565b34801561062857600080fd5b506102a760043561156c565b34801561064057600080fd5b506102a7600160a060020a0360043581169060243516611578565b34801561066757600080fd5b506102a76115a3565b34801561067c57600080fd5b506103a86004356115a9565b34801561069457600080fd5b506103a8600160a060020a03600435166115f3565b3480156106b557600080fd5b506102a7600160a060020a036004351661168c565b60408051808201909152600881527f547275654465636b000000000000000000000000000000000000000000000000602082015281565b60035460009060a060020a900460ff161561071b57600080fd5b600160a060020a038316151561073057600080fd5b600160a060020a03338116600081815260056020908152604080832094881680845294825291829020869055815186815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060015b92915050565b6003546000908190819060a060020a900460ff16156107b557600080fd5b600080541180156107c857506000544210155b80156107d75750600754600654105b15156107e257600080fd5b600160a060020a033316600090815260046020526040812054116108095760009250610a26565b600160a060020a0333166000908152600b6020526040812054116108305760009250610a26565b61083a33426116b0565b91506000821161084d5760009250610a26565b6006546007546108629163ffffffff61170a16565b8211156108815760065460075461087e9163ffffffff61170a16565b91505b600654610894908363ffffffff61171c16565b600655600160a060020a0333166000908152600460205260409020546108c0908363ffffffff61171c16565b600160a060020a033316600081815260046020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03331691600091600080516020611c108339815191529181900360200190a350600160a060020a0333166000908152600b6020526040812042916109669190611bba565b33600160a060020a03166000818152600b602090815260408083208151808301835260048085528386208054835267ffffffffffffffff898116848801818152865460018082018955978b52898b20965160029091029096019586555194909501805467ffffffffffffffff1916949091169390931790925594869052938352925481519081529182019290925281517ffb84b354f2a3abf8b552bc3549cab624cb28da4680c641714c3e18385b0cef4a929181900390910190a2600192505b505090565b6006545b90565b6000610a3e3342611729565b905090565b600354600090819033600160a060020a03908116911614610a6357600080fd5b600160a060020a0384166000908152600b6020526040902054831015610b0457600160a060020a0384166000908152600b60205260409020805484908110610aa757fe5b60009182526020808320600290920290910154600160a060020a0387168352600b9091526040909120805485908110610adc57fe5b600091825260209091206001600290920201015490925067ffffffffffffffff169050610b0b565b5060009050805b9250929050565b60035460009060a060020a900460ff1615610b2c57600080fd5b600160a060020a0383161515610b4157600080fd5b600160a060020a038416600090815260046020526040902054821115610b6657600080fd5b600160a060020a0380851660009081526005602090815260408083203390941683529290522054821115610b9957600080fd5b600160a060020a038416600090815260046020526040902054610bc2908363ffffffff61170a16565b600160a060020a038086166000908152600460205260408082209390935590851681522054610bf7908363ffffffff61171c16565b600160a060020a03808516600090815260046020908152604080832094909455878316825260058152838220339093168252919091522054610c3f908363ffffffff61170a16565b600160a060020a03808616600081815260056020908152604080832033861684528252918290209490945580518681529051928716939192600080516020611c10833981519152929181900390910190a3600160a060020a0384811690841614610cb057610cae8484846118b7565b505b5060019392505050565b60085481565b601281565b60075481565b60035433600160a060020a03908116911614610ce657600080fd5b60035460a060020a900460ff161515610cfe57600080fd5b6003805474ff0000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60035460009033600160a060020a03908116911614610d6557600080fd5b6107918242611729565b60095481565b60035460a060020a900460ff1681565b60035460009033600160a060020a03908116911614610da357600080fd5b610dad83836116b0565b9392505050565b600354600090819060a060020a900460ff1615610dd057600080fd5b600160a060020a0384161515610de557600080fd5b50600160a060020a0333811660009081526005602090815260408083209387168352929052205480831115610e4157600160a060020a033381166000908152600560209081526040808320938816835292905290812055610e78565b610e51818463ffffffff61170a16565b600160a060020a033381166000908152600560209081526040808320938916835292905220555b600160a060020a0333811660008181526005602090815260408083209489168084529482529182902054825190815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35060019392505050565b600160a060020a031660009081526004602052604090205490565b6000610a3e33426116b0565b60005481565b60035433600160a060020a03908116911614610f2557600080fd5b60035460a060020a900460ff1615610f3c57600080fd5b6003805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600354600090819081908190819033600160a060020a03908116911614610fb157600080fd5b60008751118015610fc3575085518751145b1515610fce57600080fd5b60009350600092505b8551831015611015576110088684815181101515610ff157fe5b60209081029091010151859063ffffffff61171c16565b9350600190920191610fd7565b600160a060020a03331660009081526004602052604090205484111561103a57600080fd5b5042905060005b86518110156112df576110a6868281518110151561105b57fe5b90602001906020020151600460008a8581518110151561107757fe5b6020908102909101810151600160a060020a03168252810191909152604001600020549063ffffffff61171c16565b6004600089848151811015156110b857fe5b6020908102909101810151600160a060020a0316825281019190915260400160002055855161111e908790839081106110ed57fe5b6020908102909101810151600160a060020a033316600090815260049092526040909120549063ffffffff61170a16565b600160a060020a033316600090815260046020526040902055865187908290811061114557fe5b90602001906020020151600160a060020a031633600160a060020a0316600080516020611c10833981519152888481518110151561117f57fe5b906020019060200201516040518082815260200191505060405180910390a3600b600088838151811015156111b057fe5b90602001906020020151600160a060020a0316600160a060020a03168152602001908152602001600020604080519081016040528088848151811015156111f357fe5b602090810291909101810151825267ffffffffffffffff86811692820192909252835460018082018655600095865294829020845160029092020190815592015191909201805467ffffffffffffffff191691909216179055865187908290811061125a57fe5b90602001906020020151600160a060020a03167f53a8d4ac205b1443462b4a408200e7294418c8d4d090daf4390fd8caf5c935b2878381518110151561129c57fe5b9060200190602002015184604051808381526020018267ffffffffffffffff1667ffffffffffffffff1681526020019250505060405180910390a2600101611041565b5060019695505050505050565b600354600160a060020a031681565b60408051808201909152600381527f5444500000000000000000000000000000000000000000000000000000000000602082015281565b60035460009060a060020a900460ff161561134c57600080fd5b600160a060020a038316151561136157600080fd5b82600160a060020a031633600160a060020a0316141561138a57611383610797565b9050610791565b600160a060020a0333166000908152600460205260409020548211156113af57600080fd5b600160a060020a0333166000908152600460205260409020546113d8908363ffffffff61170a16565b600160a060020a03338116600090815260046020526040808220939093559085168152205461140d908363ffffffff61171c16565b600160a060020a03808516600081815260046020908152604091829020949094558051868152905191933390931692600080516020611c1083398151915292918290030190a3610cb03384846118b7565b6000610a3e42611abb565b60015481565b60035460009033600160a060020a0390811691161461148d57600080fd5b610dad8383611729565b600a5481565b60035460009060a060020a900460ff16156114b757600080fd5b600160a060020a03831615156114cc57600080fd5b600160a060020a03338116600090815260056020908152604080832093871683529290522054611502908363ffffffff61171c16565b600160a060020a0333811660008181526005602090815260408083209489168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350600192915050565b600061079133836116b0565b600160a060020a03918216600090815260056020908152604080832093909416825291909152205490565b60025481565b60035433600160a060020a039081169116146115c457600080fd5b60008054111580156115d857506009548110155b80156115e357504281115b15156115ee57600080fd5b600055565b60035433600160a060020a0390811691161461160e57600080fd5b600160a060020a038116151561162357600080fd5b600354604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60035460009033600160a060020a039081169116146116aa57600080fd5b61079182425b60008060006116bf8585611729565b9150600082116116d25760009250611702565b6116db84611abb565b90506116ff618e946116f3848463ffffffff611b7416565b9063ffffffff611b9d16565b92505b505092915050565b60008282111561171657fe5b50900390565b8181018281101561079157fe5b600160a060020a0382166000908152600b60205260408120548190819081106117555760009250611702565b600091505b600160a060020a0385166000908152600b602052604090205482101561170257600154600160a060020a0386166000908152600b6020526040902080546117d1929190859081106117a757fe5b600091825260209091206001600290920201015467ffffffffffffffff169063ffffffff61171c16565b8410156117dd576118ac565b600160a060020a0385166000908152600b60205260409020805461183191908490811061180657fe5b6000918252602090912060016002909202010154859067ffffffffffffffff1663ffffffff61170a16565b905060025481111561184257506002545b6118a961189c61185b836201518063ffffffff611b9d16565b600160a060020a0388166000908152600b6020526040902080548690811061187f57fe5b60009182526020909120600290910201549063ffffffff611b7416565b849063ffffffff61171c16565b92505b60019091019061175a565b600160a060020a0383166000908152600b602052604081205481908110156118fa57600160a060020a0385166000908152600b602052604081206118fa91611bba565b50600160a060020a03841660009081526004602052604090205442901580159061192a575061192885611bb2565b155b156119eb57600160a060020a0385166000818152600b602090815260408083208151808301835260048085528386208054835267ffffffffffffffff898116848801818152865460018082018955978b52898b20965160029091029096019586555194909501805467ffffffffffffffff1916949091169390931790925594869052938352925481519081529182019290925281517ffb84b354f2a3abf8b552bc3549cab624cb28da4680c641714c3e18385b0cef4a929181900390910190a25b8215801590611a0057506119fe84611bb2565b155b15611ab057600160a060020a0384166000818152600b602090815260408083208151808301835288815267ffffffffffffffff8781168286018181528454600180820187559589529787902093516002909802909301968755915195909201805467ffffffffffffffff19169590921694909417905580518781529182019290925281517f53a8d4ac205b1443462b4a408200e7294418c8d4d090daf4390fd8caf5c935b2929181900390910190a25b506001949350505050565b60008060008054118015611ad157506000548310155b8015611ae05750600754600654105b15611b6957600054611af990849063ffffffff61170a16565b90506301e133808111611b0f57601e9150611b64565b6302d124808111611b235760199150611b64565b6303c267008111611b375760149150611b64565b6304b106808111611b4b57600f9150611b64565b6305a249008111611b5f57600a9150611b64565b600591505b611b6e565b600091505b50919050565b6000821515611b8557506000610791565b50818102818382811515611b9557fe5b041461079157fe5b60008183811515611baa57fe5b049392505050565b6000903b1190565b5080546000825560020290600052602060002090810190611bdb9190611bde565b50565b610a2f91905b80821115611c0b576000815560018101805467ffffffffffffffff19169055600201611be4565b50905600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a723058208ea6efea24e22d3d75293afc8217c89cf5c6da030553a87c534779955dd3d3d90029

   Swarm Source:
bzzr://8ea6efea24e22d3d75293afc8217c89cf5c6da030553a87c534779955dd3d3d9

 

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.