ETH Price: $3,581.10 (-2.81%)

Contract

0xdeD2a011ea4cd0e23f353d5Ee13652920b68413e
 

Overview

ETH Balance

0.515248472219976553 ETH

Eth Value

$1,845.16 (@ $3,581.10/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer124951912021-05-24 5:36:331288 days ago1621834593IN
0xdeD2a011...20b68413e
0.4 ETH0.0009060541
Transfer124944562021-05-24 2:52:041288 days ago1621824724IN
0xdeD2a011...20b68413e
0.3 ETH0.0007955636.00000145
Transfer Ownersh...123208762021-04-27 6:54:031315 days ago1619506443IN
0xdeD2a011...20b68413e
0 ETH0.0014308550

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
188194882023-12-19 10:44:59348 days ago1702982699
0xdeD2a011...20b68413e
0.00961849 ETH
188194712023-12-19 10:41:35348 days ago1702982495
0xdeD2a011...20b68413e
0.01033255 ETH
184599262023-10-30 2:13:23399 days ago1698632003
0xdeD2a011...20b68413e
0.00146202 ETH
184598222023-10-30 1:52:23399 days ago1698630743
0xdeD2a011...20b68413e
0.00162977 ETH
184248342023-10-25 4:18:47404 days ago1698207527
0xdeD2a011...20b68413e
0.00314913 ETH
184248272023-10-25 4:17:23404 days ago1698207443
0xdeD2a011...20b68413e
0.00313881 ETH
181993292023-09-23 15:11:47435 days ago1695481907
0xdeD2a011...20b68413e
0.00161117 ETH
181993142023-09-23 15:08:47435 days ago1695481727
0xdeD2a011...20b68413e
0.00135502 ETH
181989162023-09-23 13:47:47435 days ago1695476867
0xdeD2a011...20b68413e
0.00105093 ETH
181988902023-09-23 13:42:35435 days ago1695476555
0xdeD2a011...20b68413e
0.00113422 ETH
181985182023-09-23 12:27:35435 days ago1695472055
0xdeD2a011...20b68413e
0.00193954 ETH
181979792023-09-23 10:39:11436 days ago1695465551
0xdeD2a011...20b68413e
0.00222042 ETH
141760422022-02-10 3:49:071026 days ago1644464947
0xdeD2a011...20b68413e
0.01431245 ETH
141756082022-02-10 2:11:241026 days ago1644459084
0xdeD2a011...20b68413e
0.01073137 ETH
141691652022-02-09 2:30:081027 days ago1644373808
0xdeD2a011...20b68413e
0.02809395 ETH
140808262022-01-26 10:57:331040 days ago1643194653
0xdeD2a011...20b68413e
0.02248702 ETH
140806332022-01-26 10:11:151041 days ago1643191875
0xdeD2a011...20b68413e
0.00826883 ETH
140805892022-01-26 10:03:221041 days ago1643191402
0xdeD2a011...20b68413e
0.02550159 ETH
126178992021-06-12 5:39:551269 days ago1623476395
0xdeD2a011...20b68413e
0.00304734 ETH
126136532021-06-11 13:56:221269 days ago1623419782
0xdeD2a011...20b68413e
0.00208964 ETH
126054172021-06-10 7:28:381271 days ago1623310118
0xdeD2a011...20b68413e
0.00269876 ETH
125475652021-06-01 8:48:241280 days ago1622537304
0xdeD2a011...20b68413e
0.0055194 ETH
125468172021-06-01 5:50:371280 days ago1622526637
0xdeD2a011...20b68413e
0.00287007 ETH
125467402021-06-01 5:32:571280 days ago1622525577
0xdeD2a011...20b68413e
0.00539776 ETH
124946812021-05-24 3:39:301288 days ago1621827570
0xdeD2a011...20b68413e
0.00444476 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xF31cc067...759C5f236
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TokenBankV2

Compiler Version
v0.5.10+commit.5a6ea5b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-04-26
*/

// File: contracts/MultiSigInterface.sol

pragma solidity >=0.4.21 <0.6.0;

contract MultiSigInterface{
  function update_and_check_reach_majority(uint64 id, string memory name, bytes32 hash, address sender) public returns (bool);
  function is_signer(address addr) public view returns(bool);
}

// File: contracts/MultiSigTools.sol

pragma solidity >=0.4.21 <0.6.0;


contract MultiSigTools{
  MultiSigInterface public multisig_contract;
  constructor(address _contract) public{
    require(_contract!= address(0x0));
    multisig_contract = MultiSigInterface(_contract);
  }

  modifier only_signer{
    require(multisig_contract.is_signer(msg.sender), "only a signer can call in MultiSigTools");
    _;
  }

  modifier is_majority_sig(uint64 id, string memory name) {
    bytes32 hash = keccak256(abi.encodePacked(msg.sig, msg.data));
    if(multisig_contract.update_and_check_reach_majority(id, name, hash, msg.sender)){
      _;
    }
  }

  modifier is_majority_sig_with_hash(uint64 id, string memory name, bytes32 hash) {
    if(multisig_contract.update_and_check_reach_majority(id, name, hash, msg.sender)){
      _;
    }
  }

  event TransferMultiSig(address _old, address _new);

  function transfer_multisig(uint64 id, address _contract) public only_signer
  is_majority_sig(id, "transfer_multisig"){
    require(_contract != address(0x0));
    address old = address(multisig_contract);
    multisig_contract = MultiSigInterface(_contract);
    emit TransferMultiSig(old, _contract);
  }
}

// File: contracts/TrustListTools.sol

pragma solidity >=0.4.21 <0.6.0;

contract TrustListInterface{
  function is_trusted(address addr) public returns(bool);
}
contract TrustListTools{
  TrustListInterface public trustlist;
  constructor(address _list) public {
    //require(_list != address(0x0));
    trustlist = TrustListInterface(_list);
  }

  modifier is_trusted(address addr){
    require(trustlist.is_trusted(addr), "not a trusted issuer");
    _;
  }

}

// File: contracts/erc20/IERC20.sol

pragma solidity >=0.4.21 <0.6.0;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// File: contracts/utils/TokenClaimer.sol

pragma solidity >=0.4.21 <0.6.0;


contract TokenClaimer{

    event ClaimedTokens(address indexed _token, address indexed _to, uint _amount);
    /// @notice This method can be used by the controller to extract mistakenly
    ///  sent tokens to this contract.
    /// @param _token The address of the token contract that you want to recover
    ///  set to 0 in case you want to extract ether.
  function _claimStdTokens(address _token, address payable to) internal {
        if (_token == address(0x0)) {
            to.transfer(address(this).balance);
            return;
        }
        uint balance = IERC20(_token).balanceOf(address(this));

        (bool status,) = _token.call(abi.encodeWithSignature("transfer(address,uint256)", to, balance));
        require(status, "call failed");
        emit ClaimedTokens(_token, to, balance);
  }
}

// File: contracts/utils/Ownable.sol

pragma solidity >=0.4.21 <0.6.0;

contract Ownable {
    address private _contract_owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        address msgSender = msg.sender;
        _contract_owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _contract_owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_contract_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_contract_owner, newOwner);
        _contract_owner = newOwner;
    }
}

// File: contracts/utils/SafeMath.sol

pragma solidity >=0.4.21 <0.6.0;

library SafeMath {
    function safeAdd(uint a, uint b) public pure returns (uint c) {
        c = a + b;
        require(c >= a, "add");
    }
    function safeSub(uint a, uint b) public pure returns (uint c) {
        require(b <= a, "sub");
        c = a - b;
    }
    function safeMul(uint a, uint b) public pure returns (uint c) {
        c = a * b;
        require(a == 0 || c / a == b, "mul");
    }
    function safeDiv(uint a, uint b) public pure returns (uint c) {
        require(b > 0, "div");
        c = a / b;
    }
}

// File: contracts/utils/Address.sol

pragma solidity >=0.4.21 <0.6.0;

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
    function toPayable(address account) internal pure returns (address payable) {
        return address(uint160(account));
    }
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-call-value
        (bool success, ) = recipient.call.value(amount)("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

// File: contracts/erc20/SafeERC20.sol

pragma solidity >=0.4.21 <0.6.0;




library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).safeAdd(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).safeSub(value);
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

// File: contracts/assets/TokenBankV2.sol

pragma solidity >=0.4.21 <0.6.0;







contract TokenBankV2 is Ownable, TokenClaimer, TrustListTools{
  using SafeERC20 for IERC20;

  string public bank_name;
  //address public erc20_token_addr;

  event withdraw_token(address token, address to, uint256 amount);
  event issue_token(address token, address to, uint256 amount);

  event RecvETH(uint256 v);
  function() external payable{
    emit RecvETH(msg.value);
  }

  constructor(string memory name, address _tlist) TrustListTools(_tlist) public{
    bank_name = name;
  }


  function claimStdTokens(address _token, address payable to)
    public onlyOwner{
      _claimStdTokens(_token, to);
  }

  function balance(address erc20_token_addr) public view returns(uint){
    if(erc20_token_addr == address(0x0)){
      return address(this).balance;
    }
    return IERC20(erc20_token_addr).balanceOf(address(this));
  }

  function transfer(address erc20_token_addr, address payable to, uint tokens)
    public
    onlyOwner
    returns (bool success){
    require(tokens <= balance(erc20_token_addr), "TokenBankV2 not enough tokens");
    if(erc20_token_addr == address(0x0)){
      (bool _success, ) = to.call.value(tokens)("");
      require(_success, "TokenBankV2 transfer eth failed");
      emit withdraw_token(erc20_token_addr, to, tokens);
      return true;
    }
    IERC20(erc20_token_addr).safeTransfer(to, tokens);
    emit withdraw_token(erc20_token_addr, to, tokens);
    return true;
  }

  function issue(address erc20_token_addr, address payable _to, uint _amount)
    public
    is_trusted(msg.sender)
    returns (bool success){
      require(_amount <= balance(erc20_token_addr), "TokenBankV2 not enough tokens");
      if(erc20_token_addr == address(0x0)){
        (bool _success, ) = _to.call.value(_amount)("");
        require(_success, "TokenBankV2 transfer eth failed");
        emit issue_token(erc20_token_addr, _to, _amount);
        return true;
      }
      IERC20(erc20_token_addr).safeTransfer(_to, _amount);
      emit issue_token(erc20_token_addr, _to, _amount);
      return true;
    }
}


contract TokenBankV2Factory {
  event CreateTokenBank(string name, address addr);

  function newTokenBankV2(string memory name, address tlist) public returns(address){
    TokenBankV2 addr = new TokenBankV2(name, tlist);
    emit CreateTokenBank(name, address(addr));
    addr.transferOwnership(msg.sender);
    return address(addr);
  }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"bank_name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_token","type":"address"},{"name":"to","type":"address"}],"name":"claimStdTokens","outputs":[],"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":"trustlist","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"erc20_token_addr","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"name":"issue","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"erc20_token_addr","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"erc20_token_addr","type":"address"}],"name":"balance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"name","type":"string"},{"name":"_tlist","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"withdraw_token","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"issue_token","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"v","type":"uint256"}],"name":"RecvETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]

Deployed Bytecode

0x60806040526004361061007b5760003560e01c8063b61399921161004e578063b6139992146101bd578063beabacc814610214578063e3d670d714610257578063f2fde38b1461029c5761007b565b80630a396440146100b0578063128873dd1461013a5780638da5cb5b14610177578063a21efbda146101a8575b6040805134815290517f88817d61020445ee452f5f17f78019fe724199337d2e16c0b94176c00a88e2849181900360200190a1005b3480156100bc57600080fd5b506100c56102cf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100ff5781810151838201526020016100e7565b50505050905090810190601f16801561012c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561014657600080fd5b506101756004803603604081101561015d57600080fd5b506001600160a01b038135811691602001351661035a565b005b34801561018357600080fd5b5061018c6103c7565b604080516001600160a01b039092168252519081900360200190f35b3480156101b457600080fd5b5061018c6103d6565b3480156101c957600080fd5b50610200600480360360608110156101e057600080fd5b506001600160a01b038135811691602081013590911690604001356103e5565b604080519115158252519081900360200190f35b34801561022057600080fd5b506102006004803603606081101561023757600080fd5b506001600160a01b0381358116916020810135909116906040013561067d565b34801561026357600080fd5b5061028a6004803603602081101561027a57600080fd5b50356001600160a01b03166108b1565b60408051918252519081900360200190f35b3480156102a857600080fd5b50610175600480360360208110156102bf57600080fd5b50356001600160a01b0316610943565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156103525780601f1061032757610100808354040283529160200191610352565b820191906000526020600020905b81548152906001019060200180831161033557829003601f168201915b505050505081565b6000546001600160a01b031633146103b9576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6103c382826109ae565b5050565b6000546001600160a01b031690565b6001546001600160a01b031681565b60015460408051632153522560e11b8152336004820181905291516000936001600160a01b0316916342a6a44a91602480830192602092919082900301818887803b15801561043357600080fd5b505af1158015610447573d6000803e3d6000fd5b505050506040513d602081101561045d57600080fd5b50516104a7576040805162461bcd60e51b81526020600482015260146024820152733737ba1030903a393ab9ba32b21034b9b9bab2b960611b604482015290519081900360640190fd5b6104b0856108b1565b831115610504576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e42616e6b5632206e6f7420656e6f75676820746f6b656e73000000604482015290519081900360640190fd5b6001600160a01b03851661060c576040516000906001600160a01b0386169085908381818185875af1925050503d806000811461055d576040519150601f19603f3d011682016040523d82523d6000602084013e610562565b606091505b50509050806105b8576040805162461bcd60e51b815260206004820152601f60248201527f546f6b656e42616e6b5632207472616e7366657220657468206661696c656400604482015290519081900360640190fd5b604080516001600160a01b0380891682528716602082015280820186905290517f4c43e932490af3f9bccfdba8571f82aa82b5f7eaf7fbb4a26cb119a62e577a1f9181900360600190a16001925050610675565b6106266001600160a01b038616858563ffffffff610be716565b604080516001600160a01b0380881682528616602082015280820185905290517f4c43e932490af3f9bccfdba8571f82aa82b5f7eaf7fbb4a26cb119a62e577a1f9181900360600190a1600191505b509392505050565b600080546001600160a01b031633146106dd576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6106e6846108b1565b82111561073a576040805162461bcd60e51b815260206004820152601d60248201527f546f6b656e42616e6b5632206e6f7420656e6f75676820746f6b656e73000000604482015290519081900360640190fd5b6001600160a01b038416610842576040516000906001600160a01b0385169084908381818185875af1925050503d8060008114610793576040519150601f19603f3d011682016040523d82523d6000602084013e610798565b606091505b50509050806107ee576040805162461bcd60e51b815260206004820152601f60248201527f546f6b656e42616e6b5632207472616e7366657220657468206661696c656400604482015290519081900360640190fd5b604080516001600160a01b0380881682528616602082015280820185905290517f35579f0c79dc131799efacfb60f9120e2530a6aa6ca46ccdaaa9d083ced65c8a9181900360600190a160019150506108aa565b61085c6001600160a01b038516848463ffffffff610be716565b604080516001600160a01b0380871682528516602082015280820184905290517f35579f0c79dc131799efacfb60f9120e2530a6aa6ca46ccdaaa9d083ced65c8a9181900360600190a15060015b9392505050565b60006001600160a01b0382166108c95750303161093e565b604080516370a0823160e01b815230600482015290516001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561090f57600080fd5b505afa158015610923573d6000803e3d6000fd5b505050506040513d602081101561093957600080fd5b505190505b919050565b6000546001600160a01b031633146109a2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6109ab81610c3e565b50565b6001600160a01b0382166109f8576040516001600160a01b03821690303180156108fc02916000818181858888f193505050501580156109f2573d6000803e3d6000fd5b506103c3565b604080516370a0823160e01b815230600482015290516000916001600160a01b038516916370a0823191602480820192602092909190829003018186803b158015610a4257600080fd5b505afa158015610a56573d6000803e3d6000fd5b505050506040513d6020811015610a6c57600080fd5b5051604080516001600160a01b038581166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b178152925182519495506000949188169390918291908083835b60208310610aeb5780518252601f199092019160209182019101610acc565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610b4d576040519150601f19603f3d011682016040523d82523d6000602084013e610b52565b606091505b5050905080610b96576040805162461bcd60e51b815260206004820152600b60248201526a18d85b1b0819985a5b195960aa1b604482015290519081900360640190fd5b826001600160a01b0316846001600160a01b03167ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c846040518082815260200191505060405180910390a350505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c39908490610cde565b505050565b6001600160a01b038116610c835760405162461bcd60e51b8152600401808060200182810382526026815260200180610ed96026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610cf0826001600160a01b0316610e9c565b610d41576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610d7f5780518252601f199092019160209182019101610d60565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610de1576040519150601f19603f3d011682016040523d82523d6000602084013e610de6565b606091505b509150915081610e3d576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e9657808060200190516020811015610e5957600080fd5b5051610e965760405162461bcd60e51b815260040180806020018281038252602a815260200180610eff602a913960400191505060405180910390fd5b50505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708115801590610ed05750808214155b94935050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72305820c85e73acfafb65daada5f246085353baf86e0c8b10d530d7fffbbeffb9da6f8d64736f6c634300050a0032

Deployed Bytecode Sourcemap

9064:2107:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9434:18;;;9442:9;9434:18;;;;;;;;;;;;;9064:2107;9163:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9163:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9163:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9578:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9578:123:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9578:123:0;;;;;;;;;;:::i;:::-;;4295:88;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4295:88:0;;;:::i;:::-;;;;-1:-1:-1;;;;;4295:88:0;;;;;;;;;;;;;;1750:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1750:35:0;;;:::i;10537:631::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10537:631:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10537:631:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;9937:594;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9937:594:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9937:594:0;;;;;;;;;;;;;;;;;:::i;9707:224::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9707:224:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9707:224:0;-1:-1:-1;;;;;9707:224:0;;:::i;:::-;;;;;;;;;;;;;;;;4757:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4757:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4757:109:0;-1:-1:-1;;;;;4757:109:0;;:::i;9163:23::-;;;;;;;;;;;;;;-1:-1:-1;;9163:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9578:123::-;4516:15;;-1:-1:-1;;;;;4516:15:0;4535:10;4516:29;4508:74;;;;;-1:-1:-1;;;4508:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9668:27;9684:6;9692:2;9668:15;:27::i;:::-;9578:123;;:::o;4295:88::-;4333:7;4360:15;-1:-1:-1;;;;;4360:15:0;;4295:88::o;1750:35::-;;;-1:-1:-1;;;;;1750:35:0;;:::o;10537:631::-;1967:9;;:26;;;-1:-1:-1;;;1967:26:0;;10641:10;1967:26;;;;;;;;-1:-1:-1;;;;;;;1967:9:0;;:20;;:26;;;;;;;;;;;;;;-1:-1:-1;1967:9:0;:26;;;5:2:-1;;;;30:1;27;20:12;5:2;1967:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1967:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1967:26:0;1959:59;;;;;-1:-1:-1;;;1959:59:0;;;;;;;;;;;;-1:-1:-1;;;1959:59:0;;;;;;;;;;;;;;;10708:25;10716:16;10708:7;:25::i;:::-;10697:7;:36;;10689:78;;;;;-1:-1:-1;;;10689:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10779:32:0;;10776:248;;10843:27;;10824:13;;-1:-1:-1;;;;;10843:8:0;;;10858:7;;10824:13;10843:27;10824:13;10843:27;10858:7;10843:8;:27;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10823:47:0;;;10889:8;10881:52;;;;;-1:-1:-1;;;10881:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10949:43;;;-1:-1:-1;;;;;10949:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11010:4;11003:11;;;;;10776:248;11032:51;-1:-1:-1;;;;;11032:37:0;;11070:3;11075:7;11032:37;:51::i;:::-;11097:43;;;-1:-1:-1;;;;;11097:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;11156:4;11149:11;;2025:1;10537:631;;;;;;:::o;9937:594::-;10055:12;4516:15;;-1:-1:-1;;;;;4516:15:0;4535:10;4516:29;4508:74;;;;;-1:-1:-1;;;4508:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10093:25;10101:16;10093:7;:25::i;:::-;10083:6;:35;;10075:77;;;;;-1:-1:-1;;;10075:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10162:32:0;;10159:237;;10224:25;;10205:13;;-1:-1:-1;;;;;10224:7:0;;;10238:6;;10205:13;10224:25;10205:13;10224:25;10238:6;10224:7;:25;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;10204:45:0;;;10266:8;10258:52;;;;;-1:-1:-1;;;10258:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10324:44;;;-1:-1:-1;;;;;10324:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10384:4;10377:11;;;;;10159:237;10402:49;-1:-1:-1;;;;;10402:37:0;;10440:2;10444:6;10402:37;:49::i;:::-;10463:44;;;-1:-1:-1;;;;;10463:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10521:4:0;4593:1;9937:594;;;;;:::o;9707:224::-;9770:4;-1:-1:-1;;;;;9785:32:0;;9782:81;;-1:-1:-1;9842:4:0;9834:21;9827:28;;9782:81;9876:49;;;-1:-1:-1;;;9876:49:0;;9919:4;9876:49;;;;;;-1:-1:-1;;;;;9876:34:0;;;-1:-1:-1;;9876:49:0;;;;;;;;;;;;;;:34;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;9876:49:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9876:49:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9876:49:0;;-1:-1:-1;9707:224:0;;;;:::o;4757:109::-;4516:15;;-1:-1:-1;;;;;4516:15:0;4535:10;4516:29;4508:74;;;;;-1:-1:-1;;;4508:74:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4830:28;4849:8;4830:18;:28::i;:::-;4757:109;:::o;3246:460::-;-1:-1:-1;;;;;3331:22:0;;3327:110;;3370:34;;-1:-1:-1;;;;;3370:11:0;;;3390:4;3382:21;3370:34;;;;;;;;;3382:21;3370:11;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3370:34:0;3419:7;;3327:110;3462:39;;;-1:-1:-1;;;3462:39:0;;3495:4;3462:39;;;;;;-1:-1:-1;;;;;;;3462:24:0;;;-1:-1:-1;;3462:39:0;;;;;;;;;;;;;;;:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;3462:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3462:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3462:39:0;3543:65;;;-1:-1:-1;;;;;3543:65:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;3543:65:0;;;;;;3462:39;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;3531:78:0;;;;3462:39;;-1:-1:-1;;;3531:11:0;;;;:78;;;;25:18:-1;3531:78:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3531:78:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3514:95:0;;;3628:6;3620:30;;;;;-1:-1:-1;;;3620:30:0;;;;;;;;;;;;-1:-1:-1;;;3620:30:0;;;;;;;;;;;;;;;3666:34;;;;;;;;-1:-1:-1;;;;;3666:34:0;;;;;;;;;;;;;;;;;3246:460;;;;:::o;7023:176::-;7132:58;;;-1:-1:-1;;;;;7132:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;7132:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;7106:85:0;;7125:5;;7106:18;:85::i;:::-;7023:176;;;:::o;4972:247::-;-1:-1:-1;;;;;5046:22:0;;5038:73;;;;-1:-1:-1;;;5038:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5148:15;;;5127:47;;-1:-1:-1;;;;;5127:47:0;;;;5148:15;;;5127:47;;;5185:15;:26;;-1:-1:-1;;;;;;5185:26:0;-1:-1:-1;;;;;5185:26:0;;;;;;;;;;4972:247::o;8366:598::-;8454:27;-1:-1:-1;;;;;8454:25:0;;;:27::i;:::-;8446:71;;;;;-1:-1:-1;;;8446:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;8591:12;8605:23;8640:5;-1:-1:-1;;;;;8632:19:0;8652:4;8632:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;8632:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;8590:67:0;;;;8676:7;8668:52;;;;;-1:-1:-1;;;8668:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8737:17;;:21;8733:224;;8879:10;8868:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8868:30:0;8860:85;;;;-1:-1:-1;;;8860:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8366:598;;;;:::o;5956:374::-;6016:4;6239:20;;6082:66;6279:15;;;;;:42;;;6310:11;6298:8;:23;;6279:42;6271:51;5956:374;-1:-1:-1;;;;5956:374:0:o

Swarm Source

bzzr://c85e73acfafb65daada5f246085353baf86e0c8b10d530d7fffbbeffb9da6f8d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.