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 | 42 days ago | IN | 0 ETH | 0.00002676 | ||||
Commit To Next P... | 20452988 | 42 days ago | IN | 0 ETH | 0.00002676 | ||||
Withdraw | 19157777 | 223 days ago | IN | 0 ETH | 0.00079805 | ||||
Withdraw | 19120028 | 228 days ago | IN | 0 ETH | 0.00261399 | ||||
Withdraw | 19119971 | 228 days ago | IN | 0 ETH | 0.00168109 | ||||
Wrap And Top Up | 19063384 | 236 days ago | IN | 0 ETH | 0.00512008 | ||||
Withdraw | 19036643 | 240 days ago | IN | 0 ETH | 0.00161251 | ||||
Withdraw | 18980018 | 248 days ago | IN | 0 ETH | 0.00243689 | ||||
Withdraw | 18964470 | 250 days ago | IN | 0 ETH | 0.00208691 | ||||
Wrap And Top Up | 18904743 | 259 days ago | IN | 0 ETH | 0.00253979 | ||||
Withdraw | 18891191 | 260 days ago | IN | 0 ETH | 0.00133611 | ||||
Withdraw | 18891182 | 260 days ago | IN | 0 ETH | 0.00123852 | ||||
Withdraw | 18737059 | 282 days ago | IN | 0 ETH | 0.00270706 | ||||
Withdraw | 18727602 | 283 days ago | IN | 0 ETH | 0.00367954 | ||||
Wrap And Top Up | 18722434 | 284 days ago | IN | 0 ETH | 0.0125732 | ||||
Wrap And Top Up | 18720840 | 284 days ago | IN | 0 ETH | 0.01788211 | ||||
Withdraw | 18716021 | 285 days ago | IN | 0 ETH | 0.00360774 | ||||
Withdraw | 18713983 | 285 days ago | IN | 0 ETH | 0.00394958 | ||||
Withdraw | 18683527 | 290 days ago | IN | 0 ETH | 0.00187021 | ||||
Withdraw | 18680597 | 290 days ago | IN | 0 ETH | 0.00300864 | ||||
Withdraw | 18680522 | 290 days ago | IN | 0 ETH | 0.00308858 | ||||
Withdraw | 18661413 | 293 days ago | IN | 0 ETH | 0.00175284 | ||||
Withdraw | 18637332 | 296 days ago | IN | 0 ETH | 0.00152824 | ||||
Withdraw | 18572904 | 305 days ago | IN | 0 ETH | 0.00189962 | ||||
Withdraw | 18479477 | 318 days ago | IN | 0 ETH | 0.00259831 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
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 | 27 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.069974 | 2,534,030,769.7303 | $177,316,269.08 |
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.