Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
DODOMigrationBSC
Compiler Version
v0.6.9+commit.3e3065ac
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-02-09 */ // File: contracts/intf/IERC20.sol // This is a file copied from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol // SPDX-License-Identifier: MIT pragma solidity 0.6.9; pragma experimental ABIEncoderV2; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function name() external view returns (string memory); function symbol() external view returns (string memory); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: 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 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); } // File: contracts/lib/SafeMath.sol /** * @title SafeMath * @author DODO Breeder * * @notice Math operations with safety checks that revert on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "MUL_ERROR"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "DIVIDING_ERROR"); return a / b; } function divCeil(uint256 a, uint256 b) internal pure returns (uint256) { uint256 quotient = div(a, b); uint256 remainder = a - quotient * b; if (remainder > 0) { return quotient + 1; } else { return quotient; } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SUB_ERROR"); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "ADD_ERROR"); return c; } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = x / 2 + 1; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } // File: contracts/lib/InitializableOwnable.sol /** * @title Ownable * @author DODO Breeder * * @notice Ownership related functions */ contract InitializableOwnable { address public _OWNER_; address public _NEW_OWNER_; bool internal _INITIALIZED_; // ============ Events ============ event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // ============ Modifiers ============ modifier notInitialized() { require(!_INITIALIZED_, "DODO_INITIALIZED"); _; } modifier onlyOwner() { require(msg.sender == _OWNER_, "NOT_OWNER"); _; } // ============ Functions ============ function initOwner(address newOwner) public notInitialized { _INITIALIZED_ = true; _OWNER_ = newOwner; } function transferOwnership(address newOwner) public onlyOwner { emit OwnershipTransferPrepared(_OWNER_, newOwner); _NEW_OWNER_ = newOwner; } function claimOwnership() public { require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM"); emit OwnershipTransferred(_OWNER_, _NEW_OWNER_); _OWNER_ = _NEW_OWNER_; _NEW_OWNER_ = address(0); } } // File: contracts/intf/IDODOApprove.sol interface IDODOApprove { function claimTokens(address token,address who,address dest,uint256 amount) external; function getDODOProxy() external view returns (address); } // File: contracts/SmartRoute/DODOApproveProxy.sol interface IDODOApproveProxy { function isAllowedProxy(address _proxy) external view returns (bool); function claimTokens(address token,address who,address dest,uint256 amount) external; } /** * @title DODOApproveProxy * @author DODO Breeder * * @notice Allow different version dodoproxy to claim from DODOApprove */ contract DODOApproveProxy is InitializableOwnable { // ============ Storage ============ uint256 private constant _TIMELOCK_DURATION_ = 3 days; mapping (address => bool) public _IS_ALLOWED_PROXY_; uint256 public _TIMELOCK_; address public _PENDING_ADD_DODO_PROXY_; address public immutable _DODO_APPROVE_; // ============ Modifiers ============ modifier notLocked() { require( _TIMELOCK_ <= block.timestamp, "SetProxy is timelocked" ); _; } constructor(address dodoApporve) public { _DODO_APPROVE_ = dodoApporve; } function init(address owner, address[] memory proxies) external { initOwner(owner); for(uint i = 0; i < proxies.length; i++) _IS_ALLOWED_PROXY_[proxies[i]] = true; } function unlockAddProxy(address newDodoProxy) public onlyOwner { _TIMELOCK_ = block.timestamp + _TIMELOCK_DURATION_; _PENDING_ADD_DODO_PROXY_ = newDodoProxy; } function lockAddProxy() public onlyOwner { _PENDING_ADD_DODO_PROXY_ = address(0); _TIMELOCK_ = 0; } function addDODOProxy() external onlyOwner notLocked() { _IS_ALLOWED_PROXY_[_PENDING_ADD_DODO_PROXY_] = true; lockAddProxy(); } function removeDODOProxy (address oldDodoProxy) public onlyOwner { _IS_ALLOWED_PROXY_[oldDodoProxy] = false; } function claimTokens( address token, address who, address dest, uint256 amount ) external { require(_IS_ALLOWED_PROXY_[msg.sender], "DODOApproveProxy:Access restricted"); IDODOApprove(_DODO_APPROVE_).claimTokens( token, who, dest, amount ); } function isAllowedProxy(address _proxy) external view returns (bool) { return _IS_ALLOWED_PROXY_[_proxy]; } } // File: contracts/DODOToken/DODOMigrationBSC.sol /** * @title DODOMigration between Ethereum and BSC * @author DODO Breeder */ contract DODOMigrationBSC is InitializableOwnable { using SafeMath for uint256; // ============ Storage ============ address public immutable _ETH_DODO_TOKEN_; address public immutable _DODO_APPROVE_PROXY_; mapping(address => uint256) public balances; constructor(address ethDodoToken, address dodoApproveProxy) public { _ETH_DODO_TOKEN_ = ethDodoToken; _DODO_APPROVE_PROXY_ = dodoApproveProxy; } // ============ Events ============ event Lock(address indexed sender, address indexed mintToBscAccount, uint256 amount); event Unlock(address indexed to, uint256 amount); // ============ Functions ============ function lock(uint256 amount, address mintToBscAccount) external { IDODOApproveProxy(_DODO_APPROVE_PROXY_).claimTokens( _ETH_DODO_TOKEN_, msg.sender, address(this), amount ); balances[msg.sender] = balances[msg.sender].add(amount); emit Lock(msg.sender, mintToBscAccount, amount); } function unlock(address unlockTo, uint256 amount) external onlyOwner { require(balances[unlockTo] >= amount); balances[unlockTo] = balances[unlockTo].sub(amount); IERC20(_ETH_DODO_TOKEN_).transfer(unlockTo, amount); emit Unlock(unlockTo, amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"ethDodoToken","type":"address"},{"internalType":"address","name":"dodoApproveProxy","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"mintToBscAccount","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"inputs":[],"name":"_DODO_APPROVE_PROXY_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ETH_DODO_TOKEN_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"mintToBscAccount","type":"address"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"unlockTo","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c060405234801561001057600080fd5b5060405161090538038061090583398101604081905261002f9161004d565b6001600160601b0319606092831b8116608052911b1660a05261009e565b6000806040838503121561005f578182fd5b825161006a81610086565b602084015190925061007b81610086565b809150509250929050565b6001600160a01b038116811461009b57600080fd5b50565b60805160601c60a05160601c61082f6100d6600039806102a252806105335250806101ba52806102cf5280610451525061082f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806366dfbfb41161006657806366dfbfb4146101065780637eee288d146101195780638456db151461012c578063eb99be1214610134578063f2fde38b1461013c5761009e565b80630d009297146100a357806312656e11146100b857806316048bc4146100d657806327e235e3146100de5780634e71e0c8146100fe575b600080fd5b6100b66100b1366004610647565b61014f565b005b6100c06101b8565b6040516100cd91906106df565b60405180910390f35b6100c06101dc565b6100f16100ec366004610647565b6101eb565b6040516100cd91906107f0565b6100b66101fd565b6100b66101143660046106b3565b61028b565b6100b6610127366004610669565b6103ac565b6100c0610522565b6100c0610531565b6100b661014a366004610647565b610555565b600154600160a01b900460ff16156101825760405162461bcd60e51b815260040161017990610780565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b031681565b60026020526000908152604090205481565b6001546001600160a01b031633146102275760405162461bcd60e51b815260040161017990610736565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60405163052f523360e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630a5ea466906102fd907f0000000000000000000000000000000000000000000000000000000000000000903390309088906004016106f3565b600060405180830381600087803b15801561031757600080fd5b505af115801561032b573d6000803e3d6000fd5b505033600090815260026020526040902054610350925090508363ffffffff6105da16565b33600081815260026020526040908190209290925590516001600160a01b03831691907fec36c0364d931187a76cf66d7eee08fad0ec2e8b7458a8d8b26b36769d4d13f3906103a09086906107f0565b60405180910390a35050565b6000546001600160a01b031633146103d65760405162461bcd60e51b8152600401610179906107aa565b6001600160a01b0382166000908152600260205260409020548111156103fb57600080fd5b6001600160a01b038216600090815260026020526040902054610424908263ffffffff61060816565b6001600160a01b038084166000908152600260205260409081902092909255905163a9059cbb60e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063a9059cbb9061048a908590859060040161071d565b602060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610693565b50816001600160a01b03167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f18260405161051691906107f0565b60405180910390a25050565b6001546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000546001600160a01b0316331461057f5760405162461bcd60e51b8152600401610179906107aa565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000828201838110156105ff5760405162461bcd60e51b8152600401610179906107cd565b90505b92915050565b60008282111561062a5760405162461bcd60e51b81526004016101799061075d565b50900390565b80356001600160a01b038116811461060257600080fd5b600060208284031215610658578081fd5b6106628383610630565b9392505050565b6000806040838503121561067b578081fd5b6106858484610630565b946020939093013593505050565b6000602082840312156106a4578081fd5b815180151581146105ff578182fd5b600080604083850312156106c5578182fd5b823591506106d68460208501610630565b90509250929050565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b9081526020019056fea2646970667358221220b383fd346e631bd5edc496a0830ddf0c6c0c49be69bb648fe12d1e76e6a4c26664736f6c6343000609003300000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd000000000000000000000000335ac99bb3e51bdbf22025f092ebc1cf2c5cc619
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806366dfbfb41161006657806366dfbfb4146101065780637eee288d146101195780638456db151461012c578063eb99be1214610134578063f2fde38b1461013c5761009e565b80630d009297146100a357806312656e11146100b857806316048bc4146100d657806327e235e3146100de5780634e71e0c8146100fe575b600080fd5b6100b66100b1366004610647565b61014f565b005b6100c06101b8565b6040516100cd91906106df565b60405180910390f35b6100c06101dc565b6100f16100ec366004610647565b6101eb565b6040516100cd91906107f0565b6100b66101fd565b6100b66101143660046106b3565b61028b565b6100b6610127366004610669565b6103ac565b6100c0610522565b6100c0610531565b6100b661014a366004610647565b610555565b600154600160a01b900460ff16156101825760405162461bcd60e51b815260040161017990610780565b60405180910390fd5b6001805460ff60a01b1916600160a01b179055600080546001600160a01b039092166001600160a01b0319909216919091179055565b7f00000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd81565b6000546001600160a01b031681565b60026020526000908152604090205481565b6001546001600160a01b031633146102275760405162461bcd60e51b815260040161017990610736565b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b60405163052f523360e11b81526001600160a01b037f000000000000000000000000335ac99bb3e51bdbf22025f092ebc1cf2c5cc6191690630a5ea466906102fd907f00000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd903390309088906004016106f3565b600060405180830381600087803b15801561031757600080fd5b505af115801561032b573d6000803e3d6000fd5b505033600090815260026020526040902054610350925090508363ffffffff6105da16565b33600081815260026020526040908190209290925590516001600160a01b03831691907fec36c0364d931187a76cf66d7eee08fad0ec2e8b7458a8d8b26b36769d4d13f3906103a09086906107f0565b60405180910390a35050565b6000546001600160a01b031633146103d65760405162461bcd60e51b8152600401610179906107aa565b6001600160a01b0382166000908152600260205260409020548111156103fb57600080fd5b6001600160a01b038216600090815260026020526040902054610424908263ffffffff61060816565b6001600160a01b038084166000908152600260205260409081902092909255905163a9059cbb60e01b81527f00000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd9091169063a9059cbb9061048a908590859060040161071d565b602060405180830381600087803b1580156104a457600080fd5b505af11580156104b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104dc9190610693565b50816001600160a01b03167f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f18260405161051691906107f0565b60405180910390a25050565b6001546001600160a01b031681565b7f000000000000000000000000335ac99bb3e51bdbf22025f092ebc1cf2c5cc61981565b6000546001600160a01b0316331461057f5760405162461bcd60e51b8152600401610179906107aa565b600080546040516001600160a01b03808516939216917fdcf55418cee3220104fef63f979ff3c4097ad240c0c43dcb33ce837748983e6291a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000828201838110156105ff5760405162461bcd60e51b8152600401610179906107cd565b90505b92915050565b60008282111561062a5760405162461bcd60e51b81526004016101799061075d565b50900390565b80356001600160a01b038116811461060257600080fd5b600060208284031215610658578081fd5b6106628383610630565b9392505050565b6000806040838503121561067b578081fd5b6106858484610630565b946020939093013593505050565b6000602082840312156106a4578081fd5b815180151581146105ff578182fd5b600080604083850312156106c5578182fd5b823591506106d68460208501610630565b90509250929050565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b6020808252600d908201526c494e56414c49445f434c41494d60981b604082015260600190565b60208082526009908201526829aaa12fa2a92927a960b91b604082015260600190565b60208082526010908201526f1113d113d7d25392551250531256915160821b604082015260600190565b6020808252600990820152682727aa2fa7aba722a960b91b604082015260600190565b60208082526009908201526820a2222fa2a92927a960b91b604082015260600190565b9081526020019056fea2646970667358221220b383fd346e631bd5edc496a0830ddf0c6c0c49be69bb648fe12d1e76e6a4c26664736f6c63430006090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd000000000000000000000000335ac99bb3e51bdbf22025f092ebc1cf2c5cc619
-----Decoded View---------------
Arg [0] : ethDodoToken (address): 0x43Dfc4159D86F3A37A5A4B3D4580b888ad7d4DDd
Arg [1] : dodoApproveProxy (address): 0x335aC99bb3E51BDbF22025f092Ebc1Cf2c5cC619
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000043dfc4159d86f3a37a5a4b3d4580b888ad7d4ddd
Arg [1] : 000000000000000000000000335ac99bb3e51bdbf22025f092ebc1cf2c5cc619
Deployed Bytecode Sourcemap
8202:1377:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4920:127;;;;;;;;;:::i;:::-;;8338:41;;;:::i;:::-;;;;;;;;;;;;;;;;4287:22;;;:::i;8438:43::-;;;;;;;;;:::i;:::-;;;;;;;;5226:228;;;:::i;8902:375::-;;;;;;;;;:::i;9285:289::-;;;;;;;;;:::i;4316:26::-;;;:::i;8386:45::-;;;:::i;5055:163::-;;;;;;;;;:::i;4920:127::-;4709:13;;-1:-1:-1;;;4709:13:0;;;;4708:14;4700:43;;;;-1:-1:-1;;;4700:43:0;;;;;;;;;;;;;;;;;5006:4:::1;4990:20:::0;;-1:-1:-1;;;;4990:20:0::1;-1:-1:-1::0;;;4990:20:0::1;::::0;;;5021:18;;-1:-1:-1;;;;;5021:18:0;;::::1;-1:-1:-1::0;;;;;;5021:18:0;;::::1;::::0;;;::::1;::::0;;4920:127::o;8338:41::-;;;:::o;4287:22::-;;;-1:-1:-1;;;;;4287:22:0;;:::o;8438:43::-;;;;;;;;;;;;;:::o;5226:228::-;5292:11;;-1:-1:-1;;;;;5292:11:0;5278:10;:25;5270:51;;;;-1:-1:-1;;;5270:51:0;;;;;;;;;5367:11;;;5358:7;;5337:42;;-1:-1:-1;;;;;5367:11:0;;;;5358:7;;;;5337:42;;;5400:11;;;;5390:21;;-1:-1:-1;;;;;;5390:21:0;;;-1:-1:-1;;;;;5400:11:0;;5390:21;;;;5422:24;;;5226:228::o;8902:375::-;8978:167;;-1:-1:-1;;;8978:167:0;;-1:-1:-1;;;;;8996:20:0;8978:51;;;;:167;;9044:16;;9075:10;;9108:4;;9128:6;;8978:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;9188:10:0;9179:20;;;;:8;:20;;;;;;:32;;-1:-1:-1;9179:20:0;-1:-1:-1;9204:6:0;9179:32;:24;:32;:::i;:::-;9165:10;9156:20;;;;:8;:20;;;;;;;:55;;;;9227:42;;-1:-1:-1;;;;;9227:42:0;;;9165:10;9227:42;;;;9262:6;;9227:42;;;;;;;;;;8902:375;;:::o;9285:289::-;4825:7;;-1:-1:-1;;;;;4825:7:0;4811:10;:21;4803:43;;;;-1:-1:-1;;;4803:43:0;;;;;;;;;-1:-1:-1;;;;;9373:18:0;::::1;;::::0;;;:8:::1;:18;::::0;;;;;:28;-1:-1:-1;9373:28:0::1;9365:37;;;::::0;::::1;;-1:-1:-1::0;;;;;9434:18:0;::::1;;::::0;;;:8:::1;:18;::::0;;;;;:30:::1;::::0;9457:6;9434:30:::1;:22;:30;:::i;:::-;-1:-1:-1::0;;;;;9413:18:0;;::::1;;::::0;;;:8:::1;:18;::::0;;;;;;:51;;;;9475;;-1:-1:-1;;;9475:51:0;;9482:16:::1;9475:33:::0;;::::1;::::0;::::1;::::0;:51:::1;::::0;9422:8;;9519:6;;9475:51:::1;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9549:8;-1:-1:-1::0;;;;;9542:24:0::1;;9559:6;9542:24;;;;;;;;;;;;;;;9285:289:::0;;:::o;4316:26::-;;;-1:-1:-1;;;;;4316:26:0;;:::o;8386:45::-;;;:::o;5055:163::-;4825:7;;-1:-1:-1;;;;;4825:7:0;4811:10;:21;4803:43;;;;-1:-1:-1;;;4803:43:0;;;;;;;;;5159:7:::1;::::0;;5133:44:::1;::::0;-1:-1:-1;;;;;5133:44:0;;::::1;::::0;5159:7;::::1;::::0;5133:44:::1;::::0;::::1;5188:11;:22:::0;;-1:-1:-1;;;;;;5188:22:0::1;-1:-1:-1::0;;;;;5188:22:0;;;::::1;::::0;;;::::1;::::0;;5055:163::o;3720:161::-;3778:7;3810:5;;;3834:6;;;;3826:28;;;;-1:-1:-1;;;3826:28:0;;;;;;;;;3872:1;-1:-1:-1;3720:161:0;;;;;:::o;3575:137::-;3633:7;3666:1;3661;:6;;3653:28;;;;-1:-1:-1;;;3653:28:0;;;;;;;;;-1:-1:-1;3699:5:0;;;3575:137::o;5:130:-1:-;72:20;;-1:-1;;;;;7575:54;;8158:35;;8148:2;;8207:1;;8197:12;414:241;;518:2;506:9;497:7;493:23;489:32;486:2;;;-1:-1;;524:12;486:2;586:53;631:7;607:22;586:53;;;576:63;480:175;-1:-1;;;480:175;662:366;;;783:2;771:9;762:7;758:23;754:32;751:2;;;-1:-1;;789:12;751:2;851:53;896:7;872:22;851:53;;;841:63;941:2;980:22;;;;344:20;;-1:-1;;;745:283;1035:257;;1147:2;1135:9;1126:7;1122:23;1118:32;1115:2;;;-1:-1;;1153:12;1115:2;223:6;217:13;8304:5;7487:13;7480:21;8282:5;8279:32;8269:2;;-1:-1;;8315:12;1299:366;;;1420:2;1408:9;1399:7;1395:23;1391:32;1388:2;;;-1:-1;;1426:12;1388:2;1509:22;344:20;1478:63;;1596:53;1641:7;1578:2;1621:9;1617:22;1596:53;;;1586:63;;1382:283;;;;;;3659:222;-1:-1;;;;;7575:54;;;;1892:37;;3786:2;3771:18;;3757:124;3888:572;-1:-1;;;;;7575:54;;;1892:37;;7575:54;;;4280:2;4265:18;;1751:58;7575:54;;4363:2;4348:18;;1892:37;4446:2;4431:18;;3610:37;;;;4107:3;4092:19;;4078:382;4467:333;-1:-1;;;;;7575:54;;;;1892:37;;4786:2;4771:18;;3610:37;4622:2;4607:18;;4593:207;4807:416;5007:2;5021:47;;;2166:2;4992:18;;;7255:19;-1:-1;;;7295:14;;;2182:36;2237:12;;;4978:245;5230:416;5430:2;5444:47;;;2488:1;5415:18;;;7255:19;-1:-1;;;7295:14;;;2503:32;2554:12;;;5401:245;5653:416;5853:2;5867:47;;;2805:2;5838:18;;;7255:19;-1:-1;;;7295:14;;;2821:39;2879:12;;;5824:245;6076:416;6276:2;6290:47;;;3130:1;6261:18;;;7255:19;-1:-1;;;7295:14;;;3145:32;3196:12;;;6247:245;6499:416;6699:2;6713:47;;;3447:1;6684:18;;;7255:19;-1:-1;;;7295:14;;;3462:32;3513:12;;;6670:245;6922:222;3610:37;;;7049:2;7034:18;;7020:124
Swarm Source
ipfs://b383fd346e631bd5edc496a0830ddf0c6c0c49be69bb648fe12d1e76e6a4c266
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 29 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.190955 | 49,125,001 | $9,380,664.57 |
Loading...
Loading
[ 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.