More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 297,402 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Commit To Next P... | 20453213 | 122 days ago | IN | 0 ETH | 0.00002676 | ||||
Commit To Next P... | 20452988 | 122 days ago | IN | 0 ETH | 0.00002676 | ||||
Withdraw | 19157777 | 304 days ago | IN | 0 ETH | 0.00079805 | ||||
Withdraw | 19120028 | 309 days ago | IN | 0 ETH | 0.00261399 | ||||
Withdraw | 19119971 | 309 days ago | IN | 0 ETH | 0.00168109 | ||||
Wrap And Top Up | 19063384 | 317 days ago | IN | 0 ETH | 0.00512008 | ||||
Withdraw | 19036643 | 321 days ago | IN | 0 ETH | 0.00161251 | ||||
Withdraw | 18980018 | 329 days ago | IN | 0 ETH | 0.00243689 | ||||
Withdraw | 18964470 | 331 days ago | IN | 0 ETH | 0.00208691 | ||||
Wrap And Top Up | 18904743 | 339 days ago | IN | 0 ETH | 0.00253979 | ||||
Withdraw | 18891191 | 341 days ago | IN | 0 ETH | 0.00133611 | ||||
Withdraw | 18891182 | 341 days ago | IN | 0 ETH | 0.00123852 | ||||
Withdraw | 18737059 | 363 days ago | IN | 0 ETH | 0.00270706 | ||||
Withdraw | 18727602 | 364 days ago | IN | 0 ETH | 0.00367954 | ||||
Wrap And Top Up | 18722434 | 365 days ago | IN | 0 ETH | 0.0125732 | ||||
Wrap And Top Up | 18720840 | 365 days ago | IN | 0 ETH | 0.01788211 | ||||
Withdraw | 18716021 | 366 days ago | IN | 0 ETH | 0.00360774 | ||||
Withdraw | 18713983 | 366 days ago | IN | 0 ETH | 0.00394958 | ||||
Withdraw | 18683527 | 370 days ago | IN | 0 ETH | 0.00187021 | ||||
Withdraw | 18680597 | 371 days ago | IN | 0 ETH | 0.00300864 | ||||
Withdraw | 18680522 | 371 days ago | IN | 0 ETH | 0.00308858 | ||||
Withdraw | 18661413 | 373 days ago | IN | 0 ETH | 0.00175284 | ||||
Withdraw | 18637332 | 377 days ago | IN | 0 ETH | 0.00152824 | ||||
Withdraw | 18572904 | 386 days ago | IN | 0 ETH | 0.00189962 | ||||
Withdraw | 18479477 | 399 days ago | IN | 0 ETH | 0.00259831 |
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 | ||||
---|---|---|---|---|---|---|---|
20453213 | 122 days ago | 0 ETH | |||||
20452988 | 122 days ago | 0 ETH | |||||
19473597 | 259 days ago | 0 ETH | |||||
19473597 | 259 days ago | 0 ETH | |||||
19473597 | 259 days ago | 0 ETH | |||||
19473597 | 259 days ago | 0 ETH | |||||
19473597 | 259 days ago | 0 ETH | |||||
19394244 | 270 days ago | 0 ETH | |||||
19394244 | 270 days ago | 0 ETH | |||||
19394244 | 270 days ago | 0 ETH | |||||
19394244 | 270 days ago | 0 ETH | |||||
19394244 | 270 days ago | 0 ETH | |||||
19394236 | 270 days ago | 0 ETH | |||||
19394236 | 270 days ago | 0 ETH | |||||
19394236 | 270 days ago | 0 ETH | |||||
19394236 | 270 days ago | 0 ETH | |||||
19394236 | 270 days ago | 0 ETH | |||||
19157777 | 304 days ago | 0 ETH | |||||
19157777 | 304 days ago | 0 ETH | |||||
19120028 | 309 days ago | 0 ETH | |||||
19120028 | 309 days ago | 0 ETH | |||||
19119971 | 309 days ago | 0 ETH | |||||
19119971 | 309 days ago | 0 ETH | |||||
19063384 | 317 days ago | 0 ETH | |||||
19063384 | 317 days ago | 0 ETH |
Loading...
Loading
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"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162000fa138038062000fa1833981810160405260208110156200003757600080fd5b5051600080546001600160a01b03191633178082556040516001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36002805460ff60a01b1916600160a11b179055620000b56001600160a01b03821662000156602090811b620003c417901c565b620000bf57600080fd5b620000ca8162000193565b620000d681806200027d565b600180546001600160a01b0319166001600160a01b038316179055620000fb6200036e565b6040805133815290516001600160a01b038316916000917f354bd4b6eb65d64e6c79c53fa4f983a5e6bec4824ce4627c71be0b2722f4917e9181900360200190a3506002805460ff60a01b1916600160a01b179055620004d7565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906200018b57508115155b949350505050565b60028054600160a01b900460ff1614620001ac57600080fd5b620001b662000459565b6001600160a01b0316620001d282638da5cb5b60e01b62000468565b6001600160a01b031614620001e657600080fd5b6001546001600160a01b03166200020582636a5c1cc960e11b62000468565b6001600160a01b0316146200021957600080fd5b6002546001600160a01b031662000238826309659a2360e31b62000468565b6001600160a01b0316146200024c57600080fd5b600254600160a01b900460ff166200026c8263e38a303b60e01b62000468565b60ff16146200027a57600080fd5b50565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663b9626d2160e01b17815292518251600094928716939282918083835b60208310620002f35780518252601f199092019160209182019101620002d2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811462000355576040519150601f19603f3d011682016040523d82523d6000602084013e6200035a565b606091505b50509050806200036957600080fd5b505050565b600154604080516001600160a01b03909216602480840182905282518085039091018152604490930182526020830180516001600160e01b031663746e668360e11b17815291518351600094929382918083835b60208310620003e35780518252601f199092019160209182019101620003c2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811462000445576040519150601f19603f3d011682016040523d82523d6000602084013e6200044a565b606091505b50509050806200027a57600080fd5b6000546001600160a01b031690565b6000806200047a848483808062000483565b51949350505050565b604051848152831562000497578260048201525b6001841115620004a8578160248201525b6000808560200260040183895af48015620004c8573d6000833e620004cd565b600082fd5b5095945050505050565b610aba80620004e76000396000f3fe6080604052600436106100c65760003560e01c80638f32d59b1161007f578063d4b8399211610059578063d4b839921461031e578063e38a303b14610333578063e8dccd061461035e578063f2fde38b1461039157610145565b80638f32d59b146102ad5780639afd9d78146102d6578063b9626d21146102eb57610145565b80630900f010146101e15780634555d5c9146102165780634b2cd1181461023d5780635c60da1b1461026e578063715018a6146102835780638da5cb5b1461029857610145565b36610145576001546100e0906001600160a01b03166103c4565b6100e657fe5b6001546040516000916001600160a01b03169082818181855af49150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b505090508061014257600080fd5b50005b60015461015a906001600160a01b03166103c4565b61016057fe5b6001546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146101c3576040519150601f19603f3d011682016040523d82523d6000602084013e6101c8565b606091505b5050905080156101dc573d6000803e3d6000f35b600080fd5b3480156101ed57600080fd5b506102146004803603602081101561020457600080fd5b50356001600160a01b0316610400565b005b34801561022257600080fd5b5061022b610511565b60408051918252519081900360200190f35b34801561024957600080fd5b50610252610516565b604080516001600160a01b039092168252519081900360200190f35b34801561027a57600080fd5b50610252610525565b34801561028f57600080fd5b50610214610534565b3480156102a457600080fd5b5061025261058f565b3480156102b957600080fd5b506102c261059e565b604080519115158252519081900360200190f35b3480156102e257600080fd5b506102146105af565b3480156102f757600080fd5b506102146004803603602081101561030e57600080fd5b50356001600160a01b03166106c7565b34801561032a57600080fd5b506102526107a2565b34801561033f57600080fd5b506103486107b1565b6040805160ff9092168252519081900360200190f35b34801561036a57600080fd5b506102146004803603602081101561038157600080fd5b50356001600160a01b031661079f565b34801561039d57600080fd5b50610214600480360360208110156103b457600080fd5b50356001600160a01b03166107c1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103f857508115155b949350505050565b61040861059e565b61041157600080fd5b6002805460ff60a01b1916600160a11b1790556104366001600160a01b0382166103c4565b61043f57600080fd5b610448816106c7565b61045281826107db565b600154610467906001600160a01b03166103c4565b1561048257600154610482906001600160a01b0316826107db565b60018054600280546001600160a01b038084166001600160a01b0319928316179092559091169083161790556104b66108c7565b6002546040805133815290516001600160a01b038085169316917f354bd4b6eb65d64e6c79c53fa4f983a5e6bec4824ce4627c71be0b2722f4917e919081900360200190a3506002805460ff60a01b1916600160a01b179055565b600290565b6002546001600160a01b031681565b6001546001600160a01b031690565b61053c61059e565b61054557600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6105b761059e565b6105c057600080fd5b6002805460ff60a01b1916600160a11b17908190556105e7906001600160a01b03166103c4565b6105f057600080fd5b6002546001546040805133815290516001600160a01b039384169392909216917f86e04d1de380d22833cb4409f3ee7c6ad818a8d8387a83b6371f5ce018ddc1549181900360200190a360025461064f906001600160a01b03166106c7565b600154610664906001600160a01b03166103c4565b1561068557600254600154610685916001600160a01b0390811691166107db565b60028054600180546001600160a01b03199081166001600160a01b038416179091551690556106b26108c7565b6002805460ff60a01b1916600160a01b179055565b60028054600160a01b900460ff16146106df57600080fd5b6106e761058f565b6001600160a01b031661070182638da5cb5b60e01b6109ad565b6001600160a01b03161461071457600080fd5b6001546001600160a01b031661073182636a5c1cc960e11b6109ad565b6001600160a01b03161461074457600080fd5b6002546001600160a01b0316610761826309659a2360e31b6109ad565b6001600160a01b03161461077457600080fd5b600254600160a01b900460ff166107928263e38a303b60e01b6109ad565b60ff161461079f57600080fd5b50565b6001546001600160a01b031681565b600254600160a01b900460ff1681565b6107c961059e565b6107d257600080fd5b61079f816109c6565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663b9626d2160e01b17815292518251600094928716939282918083835b6020831061084f5780518252601f199092019160209182019101610830565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50509050806108c257600080fd5b505050565b600154604080516001600160a01b03909216602480840182905282518085039091018152604490930182526020830180516001600160e01b031663746e668360e11b17815291518351600094929382918083835b6020831061093a5780518252601f19909201916020918201910161091b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461099a576040519150601f19603f3d011682016040523d82523d6000602084013e61099f565b606091505b505090508061079f57600080fd5b6000806109bd8484838080610a34565b51949350505050565b6001600160a01b0381166109d957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040518481528315610a47578260048201525b6001841115610a57578160248201525b6000808560200260040183895af48015610a75573d6000833e610a7a565b600082fd5b509594505050505056fea264697066735822122062c1e84b5f1f3effe1c0e4adbbd785ad950c738ea87a7aaef091add4452a9cbd64736f6c6343000700003300000000000000000000000033d28fcb3204b146ea8d5f059ebef8679f992deb
Deployed Bytecode
0x6080604052600436106100c65760003560e01c80638f32d59b1161007f578063d4b8399211610059578063d4b839921461031e578063e38a303b14610333578063e8dccd061461035e578063f2fde38b1461039157610145565b80638f32d59b146102ad5780639afd9d78146102d6578063b9626d21146102eb57610145565b80630900f010146101e15780634555d5c9146102165780634b2cd1181461023d5780635c60da1b1461026e578063715018a6146102835780638da5cb5b1461029857610145565b36610145576001546100e0906001600160a01b03166103c4565b6100e657fe5b6001546040516000916001600160a01b03169082818181855af49150503d806000811461012f576040519150601f19603f3d011682016040523d82523d6000602084013e610134565b606091505b505090508061014257600080fd5b50005b60015461015a906001600160a01b03166103c4565b61016057fe5b6001546040516000916001600160a01b031690829036908083838082843760405192019450600093509091505080830381855af49150503d80600081146101c3576040519150601f19603f3d011682016040523d82523d6000602084013e6101c8565b606091505b5050905080156101dc573d6000803e3d6000f35b600080fd5b3480156101ed57600080fd5b506102146004803603602081101561020457600080fd5b50356001600160a01b0316610400565b005b34801561022257600080fd5b5061022b610511565b60408051918252519081900360200190f35b34801561024957600080fd5b50610252610516565b604080516001600160a01b039092168252519081900360200190f35b34801561027a57600080fd5b50610252610525565b34801561028f57600080fd5b50610214610534565b3480156102a457600080fd5b5061025261058f565b3480156102b957600080fd5b506102c261059e565b604080519115158252519081900360200190f35b3480156102e257600080fd5b506102146105af565b3480156102f757600080fd5b506102146004803603602081101561030e57600080fd5b50356001600160a01b03166106c7565b34801561032a57600080fd5b506102526107a2565b34801561033f57600080fd5b506103486107b1565b6040805160ff9092168252519081900360200190f35b34801561036a57600080fd5b506102146004803603602081101561038157600080fd5b50356001600160a01b031661079f565b34801561039d57600080fd5b50610214600480360360208110156103b457600080fd5b50356001600160a01b03166107c1565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708181148015906103f857508115155b949350505050565b61040861059e565b61041157600080fd5b6002805460ff60a01b1916600160a11b1790556104366001600160a01b0382166103c4565b61043f57600080fd5b610448816106c7565b61045281826107db565b600154610467906001600160a01b03166103c4565b1561048257600154610482906001600160a01b0316826107db565b60018054600280546001600160a01b038084166001600160a01b0319928316179092559091169083161790556104b66108c7565b6002546040805133815290516001600160a01b038085169316917f354bd4b6eb65d64e6c79c53fa4f983a5e6bec4824ce4627c71be0b2722f4917e919081900360200190a3506002805460ff60a01b1916600160a01b179055565b600290565b6002546001600160a01b031681565b6001546001600160a01b031690565b61053c61059e565b61054557600080fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6105b761059e565b6105c057600080fd5b6002805460ff60a01b1916600160a11b17908190556105e7906001600160a01b03166103c4565b6105f057600080fd5b6002546001546040805133815290516001600160a01b039384169392909216917f86e04d1de380d22833cb4409f3ee7c6ad818a8d8387a83b6371f5ce018ddc1549181900360200190a360025461064f906001600160a01b03166106c7565b600154610664906001600160a01b03166103c4565b1561068557600254600154610685916001600160a01b0390811691166107db565b60028054600180546001600160a01b03199081166001600160a01b038416179091551690556106b26108c7565b6002805460ff60a01b1916600160a01b179055565b60028054600160a01b900460ff16146106df57600080fd5b6106e761058f565b6001600160a01b031661070182638da5cb5b60e01b6109ad565b6001600160a01b03161461071457600080fd5b6001546001600160a01b031661073182636a5c1cc960e11b6109ad565b6001600160a01b03161461074457600080fd5b6002546001600160a01b0316610761826309659a2360e31b6109ad565b6001600160a01b03161461077457600080fd5b600254600160a01b900460ff166107928263e38a303b60e01b6109ad565b60ff161461079f57600080fd5b50565b6001546001600160a01b031681565b600254600160a01b900460ff1681565b6107c961059e565b6107d257600080fd5b61079f816109c6565b604080516001600160a01b0383811660248084019190915283518084039091018152604490920183526020820180516001600160e01b031663b9626d2160e01b17815292518251600094928716939282918083835b6020831061084f5780518252601f199092019160209182019101610830565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146108af576040519150601f19603f3d011682016040523d82523d6000602084013e6108b4565b606091505b50509050806108c257600080fd5b505050565b600154604080516001600160a01b03909216602480840182905282518085039091018152604490930182526020830180516001600160e01b031663746e668360e11b17815291518351600094929382918083835b6020831061093a5780518252601f19909201916020918201910161091b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461099a576040519150601f19603f3d011682016040523d82523d6000602084013e61099f565b606091505b505090508061079f57600080fd5b6000806109bd8484838080610a34565b51949350505050565b6001600160a01b0381166109d957600080fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040518481528315610a47578260048201525b6001841115610a57578160248201525b6000808560200260040183895af48015610a75573d6000833e610a7a565b600082fd5b509594505050505056fea264697066735822122062c1e84b5f1f3effe1c0e4adbbd785ad950c738ea87a7aaef091add4452a9cbd64736f6c63430007000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000033d28fcb3204b146ea8d5f059ebef8679f992deb
-----Decoded View---------------
Arg [0] : _target (address): 0x33D28FCB3204b146eA8D5f059Ebef8679F992DEb
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000033d28fcb3204b146ea8d5f059ebef8679f992deb
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
OVERVIEW
Smart contract that holds staked NU as well as future inflation emissions.Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.121871 | 2,534,030,769.7303 | $308,824,863.94 |
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.