Latest 4 txns

TxHash Age From To Value [TxFee]
0xaa3da402a04e7a859f75dc66dd59808b26e72d8085f8ea941ed2ecf37c8b5c6a11 days 5 hrs ago0xb7cf24accd758df9c92797f4835ab0a10e568098  IN   0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether0.000071353
0xeb9b0b45029656f39f028a78ac5790b3ced0a677b0c9a9544c1f1bbd7f9e2b8111 days 5 hrs ago0xb7cf24accd758df9c92797f4835ab0a10e568098  IN   0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether0.000086417
0x7a72bb7db916b0427deb1eff6309671b0d8e17574e56cca60833e4c806f006bb11 days 5 hrs ago0xb7cf24accd758df9c92797f4835ab0a10e568098  IN   0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether0.000045794
0x56398a6d453314c79ff2f8ccea63c8ee530ec179cd6ba07730b7d2d382d80d2111 days 5 hrs ago0xb7cf24accd758df9c92797f4835ab0a10e568098  IN    Contract Creation0 Ether0.001396669
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 8 Internal Transactions

ParentTxHash Block Age From To Value
0x7b960e29e48ba93c60b2cb7ad4727a1e6499839f306f5d516334abc261181a99103677037 days 12 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0xe83ff50e4f4e4277a5e1b635d2df2c7948dfb7f394c1095da187dcd4453a3e7b103676797 days 12 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0x0eea90a0593bec05bb2933bd1d5375a566ce62ef06770ea0c51259ecf882a453103672277 days 14 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0x64a53fe0fafd8846678cf4d52f77354742911e9d878007d43957dbdf2a45b873103671497 days 14 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0xdf390366dc0487dd94135b3347f8d72423b7e1a7888cc5cca926565d337e26f6103667387 days 15 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0x328c829a9b3823cf267247d9ad54ff844f2eb21ae8672c99bd08dc72315ea670103667127 days 15 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0x73710713703907e3841eb4c3809efa7f52c0093d7a1c0ab0e832bc77db46695c103666867 days 16 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
0xc132cdcdce066502299ead0a97f33e373a003773825af5ab8d446040e5db6590103666597 days 16 hrs ago0xf8bffca43fb76d46ba18b528eeec7608e6ee694b0x096ce139d8cc7991d23035fc4983c35e4ae3170e0 Ether
[ Download CSV Export  ] 
Contract Source Code Verified (Exact Match)
Contract Name: TokenRegistry
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.23;

pragma solidity ^0.4.23;

pragma solidity ^0.4.23;

// ----------------------------------------------------------------------------
contract ERC20 {

    // ERC Token Standard #223 Interface
    // https://github.com/ethereum/EIPs/issues/223

    string public symbol;
    string public  name;
    uint8 public decimals;

    function transfer(address _to, uint _value, bytes _data) external returns (bool success);

    // approveAndCall
    function approveAndCall(address spender, uint tokens, bytes data) external returns (bool success);

    // ERC Token Standard #20 Interface
    // https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md


    function totalSupply() public constant returns (uint);
    function balanceOf(address tokenOwner) public constant returns (uint balance);
    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function transfer(address to, uint tokens) public returns (bool success);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);
    event Transfer(address indexed from, address indexed to, uint tokens);
    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);

    // bulk operations
    function transferBulk(address[] to, uint[] tokens) public;
    function approveBulk(address[] spender, uint[] tokens) public;
}


interface TokenRegistryInterface
{
    function getPriceInToken(ERC20 tokenContract, uint128 priceWei) external view returns (uint128);
    function areAllTokensAllowed(address[] tokens) external view returns (bool);
    function isTokenInList(address[] allowedTokens, address currentToken) external pure returns (bool);
    function getAllOracleTokens() external view returns (address[]);
    function onTokensReceived(ERC20 tokenContract, uint tokenCount) external;
    function withdrawEthFromBalance() external;
    function canConvertToEth(ERC20 tokenContract) external view returns (bool);
    function convertTokensToEth(ERC20 tokenContract, address seller, uint sellerValue) external;
}

pragma solidity ^0.4.23;

// https://etherscan.io/address/0x3127be52acba38beab6b4b3a406dc04e557c037c#code
contract PriceOracleInterface {

    // How much TOKENs you get for 1 ETH, multiplied by 10^18
    uint256 public ETHPrice;
}

pragma solidity ^0.4.18;





/// @title Kyber Network interface
/// https://raw.githubusercontent.com/KyberNetwork/smart-contracts/master/contracts/KyberNetworkProxyInterface.sol
interface KyberNetworkProxyInterface {
    function getExpectedRate(ERC20 src, ERC20 dest, uint srcQty) external view returns (uint expectedRate, uint slippageRate);
    function swapTokenToEther(ERC20 token, uint srcAmount, uint minConversionRate) external returns(uint);
}

pragma solidity ^0.4.23;


/**
 * @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 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;
  }

}


contract TokenRegistry is TokenRegistryInterface, Ownable
{
    mapping (address => PriceOracleInterface) public priceOracle;
    //address[] public allTokens;
    address[] public allOracleTokens;
    mapping (address => bool) operators;
    mapping (address => KyberNetworkProxyInterface) public kyberOracle;
    ERC20 constant internal ETH_TOKEN_ADDRESS = ERC20(0x00eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee);
    bool public allowConvertTokensToEth;

    modifier onlyOperator() {
        require(operators[msg.sender] || msg.sender == owner);
        _;
    }

    function addOperator(address _newOperator) public onlyOwner {
        operators[_newOperator] = true;
    }

    function removeOperator(address _oldOperator) public onlyOwner {
        delete(operators[_oldOperator]);
    }

    function setAllowConvertTokensToEth(bool _newValue) public onlyOwner
    {
        allowConvertTokensToEth = _newValue;
    }

    function getAllOracleTokens() external view returns (address[])
    {
        return allOracleTokens;
    }

    function areAllTokensAllowed(address[] _tokens) external view returns (bool)
    {
        for (uint i = 0; i < _tokens.length; i++)
        {
            if (address(priceOracle[_tokens[i]]) == address(0x0) &&
                address(kyberOracle[_tokens[i]]) == address(0x0))
            {
                return false;
            }
        }
        return true;
    }

    function getPriceInToken(ERC20 _tokenContract, uint128 priceWei)
        external
        view
        returns (uint128)
    {
        if (isKyberToken(_tokenContract))
        {
            return getPriceInTokenKyber(_tokenContract, priceWei);
        }
        else
        {
            return getPriceInTokenOracle(_tokenContract, priceWei);
        }
    }

    function getPriceInTokenOracle(ERC20 _tokenContract, uint128 priceWei) public view returns (uint128)
    {
        PriceOracleInterface oracle = priceOracle[address(_tokenContract)];
        require(address(oracle) != address(0));

        uint256 ethPerToken = oracle.ETHPrice();
        int256 power = 36 - _tokenContract.decimals();
        require(power > 0);
        return uint128(uint256(priceWei) * ethPerToken / (10 ** uint256(power)));
    }

    function getPriceInTokenKyber(ERC20 _tokenContract, uint128 priceWei) public view returns (uint128)
    {
        KyberNetworkProxyInterface oracle = kyberOracle[address(_tokenContract)];
        require(address(oracle) != address(0));

        uint256 ethPerToken;
        (, ethPerToken) = oracle.getExpectedRate(ETH_TOKEN_ADDRESS, _tokenContract, priceWei);
        require(ethPerToken > 0);
        int256 power = 36 - _tokenContract.decimals();
        require(power > 0);
        return uint128(uint256(priceWei) * ethPerToken / (10 ** uint256(power)));
    }

    function isTokenInList(address[] _allowedTokens, address _currentToken) external pure returns (bool)
    {
        for (uint i = 0; i < _allowedTokens.length; i++)
        {
            if (_allowedTokens[i] == _currentToken)
            {
                return true;
            }
        }
        return false;
    }

    /// @dev Allow buy cuties for token
    function addToken(ERC20 _tokenContract, PriceOracleInterface _priceOracle) external onlyOwner
    {
        // check if not added yet
        require(address(priceOracle[address(_tokenContract)]) == address(0x0));
        require(address(kyberOracle[address(_tokenContract)]) == address(0x0));

        priceOracle[address(_tokenContract)] = _priceOracle;
        //allTokens.push(_tokenContract);
        allOracleTokens.push(_tokenContract);
    }

    /// @dev Allow buy cuties for token
    function addKyberToken(ERC20 _tokenContract, KyberNetworkProxyInterface _priceOracle) external onlyOwner
    {
        // check if not added yet
        require(address(priceOracle[address(_tokenContract)]) == address(0x0));
        require(address(kyberOracle[address(_tokenContract)]) == address(0x0));

        kyberOracle[address(_tokenContract)] = _priceOracle;
        //allTokens.push(_tokenContract);
    }

    /// @dev Disallow buy cuties for token
    function removeToken(ERC20 _tokenContract) external onlyOwner
    {
        delete priceOracle[address(_tokenContract)];
        delete kyberOracle[address(_tokenContract)];

        /*
        uint256 kindex = 0;
        while (kindex < allTokens.length)
        {
            if (address(allTokens[kindex]) == address(_tokenContract))
            {
                allTokens[kindex] = allTokens[allTokens.length-1];
                allTokens.length--;
            }
            else
            {
                kindex++;
            }
        }*/

        uint256 kindex = 0;
        while (kindex < allOracleTokens.length)
        {
            if (address(allOracleTokens[kindex]) == address(_tokenContract))
            {
                allOracleTokens[kindex] = allOracleTokens[allOracleTokens.length-1];
                allOracleTokens.length--;
            }
            else
            {
                kindex++;
            }
        }
    }

    // @dev Transfers to _withdrawToAddress all tokens controlled by
    // contract _tokenContract.
    function withdrawTokenFromBalance(ERC20 _tokenContract, address _withdrawToAddress) external onlyOperator
    {
        uint256 balance = _tokenContract.balanceOf(address(this));
        _tokenContract.transfer(_withdrawToAddress, balance);
    }

    function withdrawEthFromBalance() external onlyOperator
    {
        msg.sender.transfer(address(this).balance);
    }

    function onTokensReceived(ERC20 tokenContract, uint tokenCount) external onlyOperator
    {
        if (canConvertToEth(tokenContract))
        {
            _swapTokenToEther(
                kyberOracle[address(tokenContract)],
                tokenContract,
                tokenCount,
                this);

        }
    }

    function canConvertToEth(ERC20 tokenContract) public view returns (bool)
    {
        return isKyberToken(tokenContract);
    }

    function isKyberToken(ERC20 tokenContract) public view returns (bool)
    {
        return address(kyberOracle[address(tokenContract)]) != 0x0;
    }

    function convertTokensToEth(ERC20 tokenContract, address destAddress, uint tokenCount) public onlyOperator
    {
        require(allowConvertTokensToEth);

        _swapTokenToEther(
            kyberOracle[address(tokenContract)],
            tokenContract,
            tokenCount,
            destAddress);
    }

    //@param _kyberNetworkProxy kyberNetworkProxy contract address
    //@param token source token contract address
    //@param tokenQty token wei amount
    //@param destAddress address to send swapped ETH to
    function _swapTokenToEther(KyberNetworkProxyInterface _kyberNetworkProxy, ERC20 token, uint tokenQty, address destAddress) internal {

        uint minRate;
        (, minRate) = _kyberNetworkProxy.getExpectedRate(token, ETH_TOKEN_ADDRESS, tokenQty);

        // Mitigate ERC20 Approve front-running attack, by initially setting
        // allowance to 0
        require(token.approve(_kyberNetworkProxy, 0));

        // Approve tokens so network can take them during the swap
        token.approve(address(_kyberNetworkProxy), tokenQty);
        uint destAmount = _kyberNetworkProxy.swapTokenToEther(token, tokenQty, minRate);

        // Send received ethers to destination address
        destAddress.transfer(destAmount);
    }

    function () external payable
    {
    }
}

    Contract ABI  
[{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_priceOracle","type":"address"}],"name":"addKyberToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenContract","type":"address"}],"name":"isKyberToken","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"priceWei","type":"uint128"}],"name":"getPriceInTokenOracle","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"priceWei","type":"uint128"}],"name":"getPriceInTokenKyber","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_allowedTokens","type":"address[]"},{"name":"_currentToken","type":"address"}],"name":"isTokenInList","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"priceOracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenContract","type":"address"},{"name":"tokenCount","type":"uint256"}],"name":"onTokensReceived","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_priceOracle","type":"address"}],"name":"addToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"removeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"tokenContract","type":"address"}],"name":"canConvertToEth","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEthFromBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"kyberOracle","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_tokens","type":"address[]"}],"name":"areAllTokensAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"priceWei","type":"uint128"}],"name":"getPriceInToken","outputs":[{"name":"","type":"uint128"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_oldOperator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newValue","type":"bool"}],"name":"setAllowConvertTokensToEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"},{"name":"_withdrawToAddress","type":"address"}],"name":"withdrawTokenFromBalance","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"tokenContract","type":"address"},{"name":"destAddress","type":"address"},{"name":"tokenCount","type":"uint256"}],"name":"convertTokensToEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"allowConvertTokensToEth","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getAllOracleTokens","outputs":[{"name":"","type":"address[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"allOracleTokens","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

  Contract Creation Code Switch To Opcodes View
608060405260008054600160a060020a03191633179055611393806100256000396000f3006080604052600436106101245763ffffffff60e060020a6000350416630275d5c881146101265780630e187cac1461014d5780631308cbef146101825780631dbabd6f146101dd578063223e6b5b146102135780632951f1b2146102415780634e82a3911461027e5780635476bd72146102a25780635fa7b584146102c95780636c8251d2146102ea578063776247c41461030b57806378dbef5c146103205780638da5cb5b1461034157806390a308a5146103565780639870d7fe14610376578063a01da7b214610397578063ac8a584a146103cd578063c5947041146103ee578063cda8c71514610408578063ce99fe841461042f578063d52a3c0514610459578063e6cd92f31461046e578063e9f16276146104d3578063f2fde38b146104eb575b005b34801561013257600080fd5b50610124600160a060020a036004358116906024351661050c565b34801561015957600080fd5b5061016e600160a060020a03600435166105a8565b604080519115158252519081900360200190f35b34801561018e57600080fd5b506101b8600160a060020a03600435166fffffffffffffffffffffffffffffffff602435166105c8565b604080516fffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156101e957600080fd5b506101b8600160a060020a03600435166fffffffffffffffffffffffffffffffff6024351661072a565b34801561021f57600080fd5b5061016e6024600480358281019291013590600160a060020a03903516610863565b34801561024d57600080fd5b50610262600160a060020a03600435166108c2565b60408051600160a060020a039092168252519081900360200190f35b34801561028a57600080fd5b50610124600160a060020a03600435166024356108dd565b3480156102ae57600080fd5b50610124600160a060020a0360043581169060243516610949565b3480156102d557600080fd5b50610124600160a060020a0360043516610a21565b3480156102f657600080fd5b5061016e600160a060020a0360043516610b50565b34801561031757600080fd5b50610124610b61565b34801561032c57600080fd5b50610262600160a060020a0360043516610bc4565b34801561034d57600080fd5b50610262610bdf565b34801561036257600080fd5b5061016e6004803560248101910135610bee565b34801561038257600080fd5b50610124600160a060020a0360043516610c9e565b3480156103a357600080fd5b506101b8600160a060020a03600435166fffffffffffffffffffffffffffffffff60243516610cd9565b3480156103d957600080fd5b50610124600160a060020a0360043516610d04565b3480156103fa57600080fd5b506101246004351515610d3c565b34801561041457600080fd5b50610124600160a060020a0360043581169060243516610d66565b34801561043b57600080fd5b50610124600160a060020a0360043581169060243516604435610ec6565b34801561046557600080fd5b5061016e610f36565b34801561047a57600080fd5b50610483610f3f565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104bf5781810151838201526020016104a7565b505050509050019250505060405180910390f35b3480156104df57600080fd5b50610262600435610fa2565b3480156104f757600080fd5b50610124600160a060020a0360043516610fca565b600054600160a060020a0316331461052357600080fd5b600160a060020a03828116600090815260016020526040902054161561054857600080fd5b600160a060020a03828116600090815260046020526040902054161561056d57600080fd5b600160a060020a039182166000908152600460205260409020805473ffffffffffffffffffffffffffffffffffffffff191691909216179055565b600160a060020a0390811660009081526004602052604090205416151590565b600160a060020a0380831660009081526001602052604081205490911681808215156105f357600080fd5b82600160a060020a0316633732e1536040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561063157600080fd5b505af1158015610645573d6000803e3d6000fd5b505050506040513d602081101561065b57600080fd5b5051604080517f313ce5670000000000000000000000000000000000000000000000000000000081529051919350600160a060020a0388169163313ce567916004808201926020929091908290030181600087803b1580156106bc57600080fd5b505af11580156106d0573d6000803e3d6000fd5b505050506040513d60208110156106e657600080fd5b505160240360ff169050600081136106fd57600080fd5b80600a0a82866fffffffffffffffffffffffffffffffff160281151561071f57fe5b049695505050505050565b600160a060020a03808316600090815260046020526040812054909116818082151561075557600080fd5b604080517f809a9e5500000000000000000000000000000000000000000000000000000000815273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004820152600160a060020a0388811660248301526fffffffffffffffffffffffffffffffff8816604483015282519086169263809a9e5592606480820193918290030181600087803b1580156107e757600080fd5b505af11580156107fb573d6000803e3d6000fd5b505050506040513d604081101561081157600080fd5b506020015191506000821161082557600080fd5b85600160a060020a031663313ce5676040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106bc57600080fd5b6000805b838110156108b557600160a060020a03831685858381811061088557fe5b90506020020135600160a060020a0316600160a060020a031614156108ad57600191506108ba565b600101610867565b600091505b509392505050565b600160205260009081526040902054600160a060020a031681565b3360009081526003602052604090205460ff16806109055750600054600160a060020a031633145b151561091057600080fd5b61091982610b50565b1561094557600160a060020a03808316600090815260046020526040902054610945911683833061105e565b5050565b600054600160a060020a0316331461096057600080fd5b600160a060020a03828116600090815260016020526040902054161561098557600080fd5b600160a060020a0382811660009081526004602052604090205416156109aa57600080fd5b600160a060020a039182166000818152600160208190526040822080549590941673ffffffffffffffffffffffffffffffffffffffff199586161790935560028054938401815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9091018054909216179055565b60008054600160a060020a03163314610a3957600080fd5b50600160a060020a0381166000908152600160209081526040808320805473ffffffffffffffffffffffffffffffffffffffff1990811690915560049092528220805490911690555b6002548110156109455781600160a060020a0316600282815481101515610aa557fe5b600091825260209091200154600160a060020a03161415610b4757600280546000198101908110610ad257fe5b60009182526020909120015460028054600160a060020a039092169183908110610af857fe5b6000918252602090912001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556002805490610b4190600019830161132a565b50610b4b565b6001015b610a82565b6000610b5b826105a8565b92915050565b3360009081526003602052604090205460ff1680610b895750600054600160a060020a031633145b1515610b9457600080fd5b6040513390303180156108fc02916000818181858888f19350505050158015610bc1573d6000803e3d6000fd5b50565b600460205260009081526040902054600160a060020a031681565b600054600160a060020a031681565b6000805b82811015610c92576000600181868685818110610c0b57fe5b600160a060020a036020918202939093013583168452830193909352604090910160002054169190911490508015610c7c57506000600481868685818110610c4f57fe5b600160a060020a036020918202939093013583168452830193909352604090910160002054169190911490505b15610c8a5760009150610c97565b600101610bf2565b600191505b5092915050565b600054600160a060020a03163314610cb557600080fd5b600160a060020a03166000908152600360205260409020805460ff19166001179055565b6000610ce4836105a8565b15610cfa57610cf3838361072a565b9050610b5b565b610cf383836105c8565b600054600160a060020a03163314610d1b57600080fd5b600160a060020a03166000908152600360205260409020805460ff19169055565b600054600160a060020a03163314610d5357600080fd5b6005805460ff1916911515919091179055565b3360009081526003602052604081205460ff1680610d8e5750600054600160a060020a031633145b1515610d9957600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038516916370a082319160248083019260209291908290030181600087803b158015610dfa57600080fd5b505af1158015610e0e573d6000803e3d6000fd5b505050506040513d6020811015610e2457600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0385811660048301526024820184905291519293509085169163a9059cbb916044808201926020929091908290030181600087803b158015610e9557600080fd5b505af1158015610ea9573d6000803e3d6000fd5b505050506040513d6020811015610ebf57600080fd5b5050505050565b3360009081526003602052604090205460ff1680610eee5750600054600160a060020a031633145b1515610ef957600080fd5b60055460ff161515610f0a57600080fd5b600160a060020a03808416600090815260046020526040902054610f31911684838561105e565b505050565b60055460ff1681565b60606002805480602002602001604051908101604052809291908181526020018280548015610f9757602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610f79575b505050505090505b90565b6002805482908110610fb057fe5b600091825260209091200154600160a060020a0316905081565b600054600160a060020a03163314610fe157600080fd5b600160a060020a0381161515610ff657600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b604080517f809a9e55000000000000000000000000000000000000000000000000000000008152600160a060020a03858116600483015273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee602483015260448201859052825160009384939289169263809a9e55926064808301939282900301818787803b1580156110e357600080fd5b505af11580156110f7573d6000803e3d6000fd5b505050506040513d604081101561110d57600080fd5b50602090810151604080517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a038a81166004830152600060248301819052925193965089169363095ea7b39360448084019492939192918390030190829087803b15801561118357600080fd5b505af1158015611197573d6000803e3d6000fd5b505050506040513d60208110156111ad57600080fd5b505115156111ba57600080fd5b84600160a060020a031663095ea7b387866040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b15801561121d57600080fd5b505af1158015611231573d6000803e3d6000fd5b505050506040513d602081101561124757600080fd5b5050604080517f3bba21dc000000000000000000000000000000000000000000000000000000008152600160a060020a0387811660048301526024820187905260448201859052915191881691633bba21dc916064808201926020929091908290030181600087803b1580156112bc57600080fd5b505af11580156112d0573d6000803e3d6000fd5b505050506040513d60208110156112e657600080fd5b5051604051909150600160a060020a0384169082156108fc029083906000818181858888f19350505050158015611321573d6000803e3d6000fd5b50505050505050565b815481835581811115610f3157600083815260209020610f31918101908301610f9f91905b80821115611363576000815560010161134f565b50905600a165627a7a72305820b7f57fd60cae9df41421b55c44d71fa036ae1813b3ee3d68e7c908f31762f3970029

   Swarm Source:
bzzr://b7f57fd60cae9df41421b55c44d71fa036ae1813b3ee3d68e7c908f31762f397

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward