Overview
ETH Balance
0.0000085 ETH
Eth Value
$0.02 (@ $2,927.23/ETH)More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 32 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 11902816 | 1355 days ago | IN | 0 ETH | 0.0029412 | ||||
Withdraw | 11902769 | 1355 days ago | IN | 0 ETH | 0.01075 | ||||
Withdraw | 11466837 | 1422 days ago | IN | 0 ETH | 0.00288722 | ||||
Set Min Fee Rate | 11466651 | 1422 days ago | IN | 0 ETH | 0.00242077 | ||||
Create Policy | 11117306 | 1476 days ago | IN | 0.0000003 ETH | 0.00612283 | ||||
Create Policy | 11117253 | 1476 days ago | IN | 0.0000001 ETH | 0.00346803 | ||||
Create Policy | 11090957 | 1480 days ago | IN | 0.0000001 ETH | 0.0043032 | ||||
Create Policy | 11090955 | 1480 days ago | IN | 0.0000001 ETH | 0.00444664 | ||||
Create Policy | 11090948 | 1480 days ago | IN | 0.0000001 ETH | 0.0043032 | ||||
Create Policy | 11090946 | 1480 days ago | IN | 0.0000001 ETH | 0.0043032 | ||||
Create Policy | 11090944 | 1480 days ago | IN | 0.0000001 ETH | 0.00444664 | ||||
Create Policy | 11090825 | 1480 days ago | IN | 0.0000003 ETH | 0.00779607 | ||||
Create Policy | 11090821 | 1480 days ago | IN | 0.0000003 ETH | 0.00830757 | ||||
Create Policy | 11090818 | 1480 days ago | IN | 0.0000003 ETH | 0.00907817 | ||||
Create Policy | 11090816 | 1480 days ago | IN | 0.0000003 ETH | 0.00856667 | ||||
Create Policy | 11090813 | 1480 days ago | IN | 0.0000003 ETH | 0.00808251 | ||||
Create Policy | 11090795 | 1480 days ago | IN | 0.0000003 ETH | 0.00882084 | ||||
Create Policy | 11090791 | 1480 days ago | IN | 0.0000003 ETH | 0.00993398 | ||||
Create Policy | 11090754 | 1480 days ago | IN | 0.0000001 ETH | 0.00473352 | ||||
Create Policy | 11090740 | 1480 days ago | IN | 0.0000001 ETH | 0.00473352 | ||||
Create Policy | 11090736 | 1480 days ago | IN | 0.0000003 ETH | 0.00884116 | ||||
Create Policy | 11090728 | 1480 days ago | IN | 0.0000003 ETH | 0.00884155 | ||||
Create Policy | 11090722 | 1480 days ago | IN | 0.0000003 ETH | 0.00925386 | ||||
Withdraw | 11082104 | 1481 days ago | IN | 0 ETH | 0.00046956 | ||||
Create Policy | 11078813 | 1482 days ago | IN | 0.0000001 ETH | 0.00331014 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers. Name tag integration is not available in advanced view.
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | ||||
---|---|---|---|---|---|---|---|
13911001 | 1043 days ago | 0 ETH | |||||
13911001 | 1043 days ago | 0 ETH | |||||
13910575 | 1043 days ago | 0 ETH | |||||
13910575 | 1043 days ago | 0 ETH | |||||
13909504 | 1043 days ago | 0 ETH | |||||
13909504 | 1043 days ago | 0 ETH | |||||
13909419 | 1043 days ago | 0 ETH | |||||
13909419 | 1043 days ago | 0 ETH | |||||
13909190 | 1043 days ago | 0 ETH | |||||
13909190 | 1043 days ago | 0 ETH | |||||
13908758 | 1043 days ago | 0 ETH | |||||
13908758 | 1043 days ago | 0 ETH | |||||
13908434 | 1043 days ago | 0 ETH | |||||
13908434 | 1043 days ago | 0 ETH | |||||
13907510 | 1043 days ago | 0 ETH | |||||
13907510 | 1043 days ago | 0 ETH | |||||
13907437 | 1043 days ago | 0 ETH | |||||
13907437 | 1043 days ago | 0 ETH | |||||
13907259 | 1043 days ago | 0 ETH | |||||
13907259 | 1043 days ago | 0 ETH | |||||
13907078 | 1043 days ago | 0 ETH | |||||
13907078 | 1043 days ago | 0 ETH | |||||
13906957 | 1043 days ago | 0 ETH | |||||
13906957 | 1043 days ago | 0 ETH | |||||
13906509 | 1043 days ago | 0 ETH |
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xbbD3C0C7...6fcfCb2e2 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
Dispatcher
Compiler Version
v0.7.0+commit.9e61f92b
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.7.0; import "./Upgradeable.sol"; import "./Address.sol"; /** * @notice ERC897 - ERC DelegateProxy */ interface ERCProxy { function proxyType() external pure returns (uint256); function implementation() external view returns (address); } /** * @notice Proxying requests to other contracts. * Client should use ABI of real contract and address of this contract */ contract Dispatcher is Upgradeable, ERCProxy { using Address for address; event Upgraded(address indexed from, address indexed to, address owner); event RolledBack(address indexed from, address indexed to, address owner); /** * @dev Set upgrading status before and after operations */ modifier upgrading() { isUpgrade = UPGRADE_TRUE; _; isUpgrade = UPGRADE_FALSE; } /** * @param _target Target contract address */ constructor(address _target) upgrading { require(_target.isContract()); // Checks that target contract inherits Dispatcher state verifyState(_target); // `verifyState` must work with its contract verifyUpgradeableState(_target, _target); target = _target; finishUpgrade(); emit Upgraded(address(0), _target, msg.sender); } //------------------------ERC897------------------------ /** * @notice ERC897, whether it is a forwarding (1) or an upgradeable (2) proxy */ function proxyType() external pure override returns (uint256) { return 2; } /** * @notice ERC897, gets the address of the implementation where every call will be delegated */ function implementation() external view override returns (address) { return target; } //------------------------------------------------------------ /** * @notice Verify new contract storage and upgrade target * @param _target New target contract address */ function upgrade(address _target) public onlyOwner upgrading { require(_target.isContract()); // Checks that target contract has "correct" (as much as possible) state layout verifyState(_target); //`verifyState` must work with its contract verifyUpgradeableState(_target, _target); if (target.isContract()) { verifyUpgradeableState(target, _target); } previousTarget = target; target = _target; finishUpgrade(); emit Upgraded(previousTarget, _target, msg.sender); } /** * @notice Rollback to previous target * @dev Test storage carefully before upgrade again after rollback */ function rollback() public onlyOwner upgrading { require(previousTarget.isContract()); emit RolledBack(target, previousTarget, msg.sender); // should be always true because layout previousTarget -> target was already checked // but `verifyState` is not 100% accurate so check again verifyState(previousTarget); if (target.isContract()) { verifyUpgradeableState(previousTarget, target); } target = previousTarget; previousTarget = address(0); finishUpgrade(); } /** * @dev Call verifyState method for Upgradeable contract */ function verifyUpgradeableState(address _from, address _to) private { (bool callSuccess,) = _from.delegatecall(abi.encodeWithSelector(this.verifyState.selector, _to)); require(callSuccess); } /** * @dev Call finishUpgrade method from the Upgradeable contract */ function finishUpgrade() private { (bool callSuccess,) = target.delegatecall(abi.encodeWithSelector(this.finishUpgrade.selector, target)); require(callSuccess); } function verifyState(address _testTarget) public override onlyWhileUpgrading { //checks equivalence accessing state through new contract and current storage require(address(uint160(delegateGet(_testTarget, this.owner.selector))) == owner()); require(address(uint160(delegateGet(_testTarget, this.target.selector))) == target); require(address(uint160(delegateGet(_testTarget, this.previousTarget.selector))) == previousTarget); require(uint8(delegateGet(_testTarget, this.isUpgrade.selector)) == isUpgrade); } /** * @dev Override function using empty code because no reason to call this function in Dispatcher */ function finishUpgrade(address) public override {} /** * @dev Receive function sends empty request to the target contract */ receive() external payable { assert(target.isContract()); // execute receive function from target contract using storage of the dispatcher (bool callSuccess,) = target.delegatecall(""); if (!callSuccess) { revert(); } } /** * @dev Fallback function sends all requests to the target contract */ fallback() external payable { assert(target.isContract()); // execute requested function from target contract using storage of the dispatcher (bool callSuccess,) = target.delegatecall(msg.data); if (callSuccess) { // copy result of the request to the return data // we can use the second return value from `delegatecall` (bytes memory) // but it will consume a little more gas assembly { returndatacopy(0x0, 0x0, returndatasize()) return(0x0, returndatasize()) } } else { revert(); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. * * _Available since v2.4.0._ */ 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"); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.7.0; /** * @title Ownable * @dev The Ownable contract has an owner address, and provides basic authorization control * functions, this simplifies the implementation of "user permissions". */ abstract contract Ownable { address private _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 () { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /** * @return the address of the owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner()); _; } /** * @return true if `msg.sender` is the owner of the contract. */ function isOwner() public view returns (bool) { return msg.sender == _owner; } /** * @dev Allows the current owner to relinquish control of the contract. * @notice Renouncing to ownership will leave the contract without an owner. * It will not be possible to call the functions with the `onlyOwner` * modifier anymore. */ function renounceOwnership() public onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } /** * @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 { _transferOwnership(newOwner); } /** * @dev Transfers control of the contract to a newOwner. * @param newOwner The address to transfer ownership to. */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0)); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.7.0; import "./Ownable.sol"; /** * @notice Base contract for upgradeable contract * @dev Inherited contract should implement verifyState(address) method by checking storage variables * (see verifyState(address) in Dispatcher). Also contract should implement finishUpgrade(address) * if it is using constructor parameters by coping this parameters to the dispatcher storage */ abstract contract Upgradeable is Ownable { event StateVerified(address indexed testTarget, address sender); event UpgradeFinished(address indexed target, address sender); /** * @dev Contracts at the target must reserve the same location in storage for this address as in Dispatcher * Stored data actually lives in the Dispatcher * However the storage layout is specified here in the implementing contracts */ address public target; /** * @dev Previous contract address (if available). Used for rollback */ address public previousTarget; /** * @dev Upgrade status. Explicit `uint8` type is used instead of `bool` to save gas by excluding 0 value */ uint8 public isUpgrade; /** * @dev Guarantees that next slot will be separated from the previous */ uint256 stubSlot; /** * @dev Constants for `isUpgrade` field */ uint8 constant UPGRADE_FALSE = 1; uint8 constant UPGRADE_TRUE = 2; /** * @dev Checks that function executed while upgrading * Recommended to add to `verifyState` and `finishUpgrade` methods */ modifier onlyWhileUpgrading() { require(isUpgrade == UPGRADE_TRUE); _; } /** * @dev Method for verifying storage state. * Should check that new target contract returns right storage value */ function verifyState(address _testTarget) public virtual onlyWhileUpgrading { emit StateVerified(_testTarget, msg.sender); } /** * @dev Copy values from the new target to the current storage * @param _target New target contract address */ function finishUpgrade(address _target) public virtual onlyWhileUpgrading { emit UpgradeFinished(_target, msg.sender); } /** * @dev Base method to get data * @param _target Target to call * @param _selector Method selector * @param _numberOfArguments Number of used arguments * @param _argument1 First method argument * @param _argument2 Second method argument * @return memoryAddress Address in memory where the data is located */ function delegateGetData( address _target, bytes4 _selector, uint8 _numberOfArguments, bytes32 _argument1, bytes32 _argument2 ) internal returns (bytes32 memoryAddress) { assembly { memoryAddress := mload(0x40) mstore(memoryAddress, _selector) if gt(_numberOfArguments, 0) { mstore(add(memoryAddress, 0x04), _argument1) } if gt(_numberOfArguments, 1) { mstore(add(memoryAddress, 0x24), _argument2) } switch delegatecall(gas(), _target, memoryAddress, add(0x04, mul(0x20, _numberOfArguments)), 0, 0) case 0 { revert(memoryAddress, 0) } default { returndatacopy(memoryAddress, 0x0, returndatasize()) } } } /** * @dev Call "getter" without parameters. * Result should not exceed 32 bytes */ function delegateGet(address _target, bytes4 _selector) internal returns (uint256 result) { bytes32 memoryAddress = delegateGetData(_target, _selector, 0, 0, 0); assembly { result := mload(memoryAddress) } } /** * @dev Call "getter" with one parameter. * Result should not exceed 32 bytes */ function delegateGet(address _target, bytes4 _selector, bytes32 _argument) internal returns (uint256 result) { bytes32 memoryAddress = delegateGetData(_target, _selector, 1, _argument, 0); assembly { result := mload(memoryAddress) } } /** * @dev Call "getter" with two parameters. * Result should not exceed 32 bytes */ function delegateGet( address _target, bytes4 _selector, bytes32 _argument1, bytes32 _argument2 ) internal returns (uint256 result) { bytes32 memoryAddress = delegateGetData(_target, _selector, 2, _argument1, _argument2); assembly { result := mload(memoryAddress) } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"RolledBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"testTarget","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"StateVerified","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"sender","type":"address"}],"name":"UpgradeFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"finishUpgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUpgrade","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousTarget","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxyType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rollback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"target","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_testTarget","type":"address"}],"name":"verifyState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Deployed Bytecode
0x6080604052600436106100c65760003560e01c80638f32d59b1161007f578063d4b8399211610059578063d4b839921461031e578063e38a303b14610333578063e8dccd061461035e578063f2fde38b1461039157610145565b80638f32d59b146102ad5780639afd9d78146102d6578063b9626d21146102eb57610145565b80630900f010146101e15780634555d5c9146102165780634b2cd1181461023d5780635c60da1b1461026e578063715018a6146102835780638da5cb5b1461029857610145565b36610145576001546100e0906001600160a01b03166103c4565b6100e657fe5b6001546040516000916001600160a01b03169082818181855af49150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b505090508061014257600080fd5b50005b60015461015a906001600160a01b03166103c4565b61016057fe5b6001546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146101c3576040519150601f19603f3d011682016040523d82523d6000602084013e6101c8565b606091505b5050905080156101dc573d6000803e3d6000f35b600080fd5b3480156101ed57600080fd5b506102146004803603602081101561020457600080fd5b50356001600160a01b0316610400565b005b34801561022257600080fd5b5061022b610511565b60408051918252519081900360200190f35b34801561024957600080fd5b50610252610516565b604080516001600160a01b039092168252519081900360200190f35b34801561027a57600080fd5b50610252610525565b34801561028f57600080fd5b50610214610534565b3480156102a457600080fd5b5061025261058f565b3480156102b957600080fd5b506102c261059e565b604080519115158252519081900360200190f35b3480156102e257600080fd5b506102146105af565b3480156102f757600080fd5b506102146004803603602081101561030e57600080fd5b50356001600160a01b03166106c7565b34801561032a57600080fd5b506102526107a2565b34801561033f57600080fd5b506103486107b1565b6040805160ff9092168252519081900360200190f35b34801561036a57600080fd5b506102146004803603602081101561038157600080fd5b50356001600160a01b031661079f565b34801561039d57600080fd5b50610214600480360360208110156103b457600080fd5b50356001600160a01b03166107c1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103f857508115155b949350505050565b61040861059e565b61041157600080fd5b6002805460ff60a01b1916600160a11b1790556104366001600160a01b0382166103c4565b61043f57600080fd5b610448816106c7565b61045281826107db565b600154610467906001600160a01b03166103c4565b1561048257600154610482906001600160a01b0316826107db565b60018054600280546001600160a01b038084166001600160a01b0319928316179092559091169083161790556104b66108c7565b6002546040805133815290516001600160a01b038085169316917f354bd4b6eb65d64e6c79c53fa4f983a5e6bec4824ce4627c71be0b2722f4917e919081900360200190a3506002805460ff60a01b1916600160a01b179055565b600290565b6002546001600160a01b031681565b6001546001600160a01b031690565b61053c61059e565b61054557600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6105b761059e565b6105c057600080fd5b6002805460ff60a01b1916600160a11b17908190556105e7906001600160a01b03166103c4565b6105f057600080fd5b6002546001546040805133815290516001600160a01b039384169392909216917f86e04d1de380d22833cb4409f3ee7c6ad818a8d8387a83b6371f5ce018ddc1549181900360200190a360025461064f906001600160a01b03166106c7565b600154610664906001600160a01b03166103c4565b1561068557600254600154610685916001600160a01b0390811691166107db565b60028054600180546001600160a01b03199081166001600160a01b038416179091551690556106b26108c7565b6002805460ff60a01b1916600160a01b179055565b60028054600160a01b900460ff16146106df57600080fd5b6106e761058f565b6001600160a01b031661070182638da5cb5b60e01b6109ad565b6001600160a01b03161461071457600080fd5b6001546001600160a01b031661073182636a5c1cc960e11b6109ad565b6001600160a01b03161461074457600080fd5b6002546001600160a01b0316610761826309659a2360e31b6109ad565b6001600160a01b03161461077457600080fd5b600254600160a01b900460ff166107928263e38a303b60e01b6109ad565b60ff161461079f57600080fd5b50565b6001546001600160a01b031681565b600254600160a01b900460ff1681565b6107c961059e565b6107d257600080fd5b61079f816109c6565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663b9626d2160e01b17815292518251600094928716939282918083835b6020831061084f5780518252601f199092019160209182019101610830565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50509050806108c257600080fd5b505050565b600154604080516001600160a01b03909216602480840182905282518085039091018152604490930182526020830180516001600160e01b031663746e668360e11b17815291518351600094929382918083835b6020831061093a5780518252601f19909201916020918201910161091b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461099a576040519150601f19603f3d011682016040523d82523d6000602084013e61099f565b606091505b505090508061079f57600080fd5b6000806109bd8484838080610a34565b51949350505050565b6001600160a01b0381166109d957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040518481528315610a47578260048201525b6001841115610a57578160248201525b6000808560200260040183895af48015610a75573d6000833e610a7a565b600082fd5b509594505050505056fea264697066735822122062c1e84b5f1f3effe1c0e4adbbd785ad950c738ea87a7aaef091add4452a9cbd64736f6c63430007000033
Deployed Bytecode Sourcemap
442:5202:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4677:6;;:19;;-1:-1:-1;;;;;4677:6:1;:17;:19::i;:::-;4670:27;;;;4818:6;;:23;;4797:16;;-1:-1:-1;;;;;4818:6:1;;4797:16;4818:23;4797:16;4818:23;:6;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4796:45;;;4856:11;4851:51;;4883:8;;;4851:51;4633:275;442:5202;;5045:6;;:19;;-1:-1:-1;;;;;5045:6:1;:17;:19::i;:::-;5038:27;;;;5188:6;;:29;;5167:16;;-1:-1:-1;;;;;5188:6:1;;5167:16;;5208:8;;5188:29;5167:16;5208:8;;5167:16;5188:29;;;;;;;-1:-1:-1;5188:29:1;;-1:-1:-1;5188:29:1;;-1:-1:-1;;5188:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5166:51;;;5231:11;5227:408;;;5509:16;5504:3;;5484:42;5555:16;5504:3;5543:29;5466:120;5616:8;;;1991:569;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1991:569:1;-1:-1:-1;;;;;1991:569:1;;:::i;:::-;;1490:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1003:29:3;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;1003:29:3;;;;;;;;;;;;;;1696:97:1;;;;;;;;;;;;;:::i;1381:137:2:-;;;;;;;;;;;;;:::i;693:77::-;;;;;;;;;;;;;:::i;1013:90::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;2693:556:1;;;;;;;;;;;;;:::i;3817:553::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3817:553:1;-1:-1:-1;;;;;3817:553:1;;:::i;889:21:3:-;;;;;;;;;;;;;:::i;1162:22::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4491:50:1;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4491:50:1;-1:-1:-1;;;;;4491:50:1;;:::i;1689:107:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1689:107:2;-1:-1:-1;;;;;1689:107:2;;:::i;718:610:0:-;778:4;1239:20;;1084:66;1278:23;;;;;;:42;;-1:-1:-1;1305:15:0;;;1278:42;1270:51;718:610;-1:-1:-1;;;;718:610:0:o;1991:569:1:-;897:9:2;:7;:9::i;:::-;889:18;;;;;;1428:1:3::1;792:24:1::0;;-1:-1:-1;;;;792:24:1::1;-1:-1:-1::0;;;792:24:1::1;::::0;;2070:20:::2;-1:-1:-1::0;;;;;2070:18:1;::::2;;:20::i;:::-;2062:29;;;::::0;::::2;;2189:20;2201:7;2189:11;:20::i;:::-;2271:40;2294:7;2303;2271:22;:40::i;:::-;2325:6;::::0;:19:::2;::::0;-1:-1:-1;;;;;2325:6:1::2;:17;:19::i;:::-;2321:89;;;2383:6;::::0;2360:39:::2;::::0;-1:-1:-1;;;;;2383:6:1::2;2391:7:::0;2360:22:::2;:39::i;:::-;2436:6;::::0;;2419:14:::2;:23:::0;;-1:-1:-1;;;;;2436:6:1;;::::2;-1:-1:-1::0;;;;;;2419:23:1;;::::2;;::::0;;;2452:16;;::::2;::::0;;::::2;;::::0;;2478:15:::2;:13;:15::i;:::-;2517:14;::::0;2508:45:::2;::::0;;2542:10:::2;2508:45:::0;;;;-1:-1:-1;;;;;2508:45:1;;::::2;::::0;2517:14:::2;::::0;2508:45:::2;::::0;;;;;::::2;::::0;;::::2;-1:-1:-1::0;837:9:1::1;:25:::0;;-1:-1:-1;;;;837:25:1::1;-1:-1:-1::0;;;837:25:1::1;::::0;;1991:569::o;1490:87::-;1569:1;1490:87;:::o;1003:29:3:-;;;-1:-1:-1;;;;;1003:29:3;;:::o;1696:97:1:-;1780:6;;-1:-1:-1;;;;;1780:6:1;1696:97;:::o;1381:137:2:-;897:9;:7;:9::i;:::-;889:18;;;;;;1479:1:::1;1463:6:::0;;1442:40:::1;::::0;-1:-1:-1;;;;;1463:6:2;;::::1;::::0;1442:40:::1;::::0;1479:1;;1442:40:::1;1509:1;1492:19:::0;;-1:-1:-1;;;;;;1492:19:2::1;::::0;;1381:137::o;693:77::-;731:7;757:6;-1:-1:-1;;;;;757:6:2;693:77;:::o;1013:90::-;1053:4;1090:6;-1:-1:-1;;;;;1090:6:2;1076:10;:20;;1013:90::o;2693:556:1:-;897:9:2;:7;:9::i;:::-;889:18;;;;;;1428:1:3::1;792:24:1::0;;-1:-1:-1;;;;792:24:1::1;-1:-1:-1::0;;;792:24:1::1;::::0;;;;2758:27:::2;::::0;-1:-1:-1;;;;;2758:14:1::2;:25;:27::i;:::-;2750:36;;;::::0;::::2;;2820:14;::::0;;2812:6;2801:46:::2;::::0;;2836:10:::2;2801:46:::0;;;;-1:-1:-1;;;;;2820:14:1;;::::2;::::0;2812:6;;;::::2;::::0;2801:46:::2;::::0;;;;::::2;::::0;;::::2;3027:14;::::0;3015:27:::2;::::0;-1:-1:-1;;;;;3027:14:1::2;3015:11;:27::i;:::-;3056:6;::::0;:19:::2;::::0;-1:-1:-1;;;;;3056:6:1::2;:17;:19::i;:::-;3052:96;;;3114:14;::::0;;3130:6;3091:46:::2;::::0;-1:-1:-1;;;;;3114:14:1;;::::2;::::0;3130:6:::2;3091:22;:46::i;:::-;3166:14;::::0;;;3157:23;;-1:-1:-1;;;;;;3157:23:1;;::::2;-1:-1:-1::0;;;;;3166:14:1;::::2;3157:23;::::0;;;3190:27:::2;::::0;;3227:15:::2;:13;:15::i;:::-;837:9:::1;:25:::0;;-1:-1:-1;;;;837:25:1::1;-1:-1:-1::0;;;837:25:1::1;::::0;;2693:556::o;3817:553::-;1428:1:3;1630:9;;-1:-1:-1;;;1630:9:3;;:25;:9;:25;1622:34;;;;;;4065:7:1::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;3998:74:1::1;4014:45;4026:11:::0;-1:-1:-1;;;4014:11:1::1;:45::i;:::-;-1:-1:-1::0;;;;;3998:74:1::1;;3990:83;;;::::0;::::1;;4159:6;::::0;-1:-1:-1;;;;;4159:6:1::1;4107:46;4119:11:::0;-1:-1:-1;;;4107:11:1::1;:46::i;:::-;-1:-1:-1::0;;;;;4091:74:1::1;;4083:83;;;::::0;::::1;;4260:14;::::0;-1:-1:-1;;;;;4260:14:1::1;4200:54;4212:11:::0;-1:-1:-1;;;4200:11:1::1;:54::i;:::-;-1:-1:-1::0;;;;;4184:90:1::1;;4176:99;;;::::0;::::1;;4353:9;::::0;-1:-1:-1;;;4353:9:1;::::1;;;4299:49;4311:11:::0;-1:-1:-1;;;4299:11:1::1;:49::i;:::-;4293:69;;;4285:78;;;::::0;::::1;;3817:553:::0;:::o;889:21:3:-;;;-1:-1:-1;;;;;889:21:3;;:::o;1162:22::-;;;-1:-1:-1;;;1162:22:3;;;;;:::o;1689:107:2:-;897:9;:7;:9::i;:::-;889:18;;;;;;1761:28:::1;1780:8;1761:18;:28::i;3330:211:1:-:0;3449:54;;;-1:-1:-1;;;;;3449:54:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3449:54:1;-1:-1:-1;;;3449:54:1;;;3430:74;;;;3409:16;;3430:18;;;;3449:54;3430:74;;;;3449:54;3430:74;;;;;;;;;;-1:-1:-1;;3430:74:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3408:96;;;3522:11;3514:20;;;;;;3330:211;;;:::o;3629:182::-;3694:6;;3714:59;;;-1:-1:-1;;;;;3694:6:1;;;3714:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3714:59:1;-1:-1:-1;;;3714:59:1;;;3694:80;;;;3673:16;;3694:6;;:80;;;;3714:59;3694:80;;;;;;;;;;-1:-1:-1;;3694:80:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3672:102;;;3792:11;3784:20;;;;;3576:259:3;3658:14;;3712:44;3728:7;3737:9;3658:14;;;3712:15;:44::i;:::-;3799:20;;3775:54;-1:-1:-1;;;;3775:54:3:o;1940:183:2:-;-1:-1:-1;;;;;2013:22:2;;2005:31;;;;;;2072:6;;;2051:38;;-1:-1:-1;;;;;2051:38:2;;;;2072:6;;;2051:38;;;2099:6;:17;;-1:-1:-1;;;;;;2099:17:2;-1:-1:-1;;;;;2099:17:2;;;;;;;;;;1940:183::o;2571:899:3:-;2852:4;2846:11;2870:32;;;2918:25;;2915:2;;2995:10;2988:4;2973:13;2969:24;2962:44;2915:2;3059:1;3039:18;3036:25;3033:2;;;3113:10;3106:4;3091:13;3087:24;3080:44;3033:2;3247:1;3244;3222:18;3216:4;3212:29;3206:4;3202:40;3187:13;3178:7;3171:5;3158:91;3266:71;;;;3419:16;3414:3;3399:13;3384:52;3151:303;;3266:71;3317:1;3302:13;3295:24;3151:303;;2815:649;;;;;;;:::o
Swarm Source
ipfs://62c1e84b5f1f3effe1c0e4adbbd785ad950c738ea87a7aaef091add4452a9cbd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,925.47 | 0.0000085 | $0.024866 |
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.