Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 5,728 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Request L2Transa... | 22273606 | 25 mins ago | IN | 0.001 ETH | 0.00018139 | ||||
Request L2Transa... | 22273579 | 31 mins ago | IN | 0.005 ETH | 0.00015826 | ||||
Request L2Transa... | 22273345 | 1 hr ago | IN | 0.002 ETH | 0.0010618 | ||||
Request L2Transa... | 22273345 | 1 hr ago | IN | 0 ETH | 0.00183839 | ||||
Request L2Transa... | 22273286 | 1 hr ago | IN | 0 ETH | 0.00053336 | ||||
Request L2Transa... | 22273164 | 1 hr ago | IN | 0.09836105 ETH | 0.00017529 | ||||
Request L2Transa... | 22273050 | 2 hrs ago | IN | 0.05 ETH | 0.00025039 | ||||
Request L2Transa... | 22272852 | 2 hrs ago | IN | 0 ETH | 0.00021907 | ||||
Request L2Transa... | 22272680 | 3 hrs ago | IN | 0.0035 ETH | 0.00016747 | ||||
Request L2Transa... | 22272652 | 3 hrs ago | IN | 0.002 ETH | 0.00017291 | ||||
Request L2Transa... | 22272543 | 4 hrs ago | IN | 0.001 ETH | 0.00016031 | ||||
Request L2Transa... | 22272510 | 4 hrs ago | IN | 0 ETH | 0.0001584 | ||||
Request L2Transa... | 22272328 | 4 hrs ago | IN | 0.0002 ETH | 0.00018277 | ||||
Request L2Transa... | 22272199 | 5 hrs ago | IN | 0 ETH | 0.00035364 | ||||
Request L2Transa... | 22272192 | 5 hrs ago | IN | 0.00045501 ETH | 0.00018725 | ||||
Request L2Transa... | 22272180 | 5 hrs ago | IN | 0.055 ETH | 0.00026147 | ||||
Request L2Transa... | 22272163 | 5 hrs ago | IN | 0.109 ETH | 0.00025425 | ||||
Request L2Transa... | 22272163 | 5 hrs ago | IN | 0.099 ETH | 0.0002816 | ||||
Request L2Transa... | 22272163 | 5 hrs ago | IN | 0.098 ETH | 0.00034019 | ||||
Request L2Transa... | 22272155 | 5 hrs ago | IN | 0.1 ETH | 0.00026722 | ||||
Request L2Transa... | 22272152 | 5 hrs ago | IN | 0.101 ETH | 0.00037795 | ||||
Request L2Transa... | 22272143 | 5 hrs ago | IN | 0.105 ETH | 0.0003183 | ||||
Request L2Transa... | 22272143 | 5 hrs ago | IN | 0.108 ETH | 0.00040364 | ||||
Request L2Transa... | 22272128 | 5 hrs ago | IN | 0.118 ETH | 0.00027182 | ||||
Request L2Transa... | 22272127 | 5 hrs ago | IN | 0.102 ETH | 0.00027283 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Method | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|---|
Request L2Transa... | 22273606 | 25 mins ago | 0.001 ETH | ||||
Request L2Transa... | 22273579 | 31 mins ago | 0.005 ETH | ||||
Request L2Transa... | 22273345 | 1 hr ago | 0.002 ETH | ||||
Request L2Transa... | 22273164 | 1 hr ago | 0.09836105 ETH | ||||
Request L2Transa... | 22273050 | 2 hrs ago | 0.05 ETH | ||||
Request L2Transa... | 22272680 | 3 hrs ago | 0.0035 ETH | ||||
Request L2Transa... | 22272652 | 3 hrs ago | 0.002 ETH | ||||
Request L2Transa... | 22272543 | 4 hrs ago | 0.001 ETH | ||||
Request L2Transa... | 22272328 | 4 hrs ago | 0.0002 ETH | ||||
Request L2Transa... | 22272192 | 5 hrs ago | 0.00045501 ETH | ||||
Request L2Transa... | 22272180 | 5 hrs ago | 0.055 ETH | ||||
Request L2Transa... | 22272163 | 5 hrs ago | 0.109 ETH | ||||
Request L2Transa... | 22272163 | 5 hrs ago | 0.099 ETH | ||||
Request L2Transa... | 22272163 | 5 hrs ago | 0.098 ETH | ||||
Request L2Transa... | 22272155 | 5 hrs ago | 0.1 ETH | ||||
Request L2Transa... | 22272152 | 5 hrs ago | 0.101 ETH | ||||
Request L2Transa... | 22272143 | 5 hrs ago | 0.105 ETH | ||||
Request L2Transa... | 22272143 | 5 hrs ago | 0.108 ETH | ||||
Request L2Transa... | 22272128 | 5 hrs ago | 0.118 ETH | ||||
Request L2Transa... | 22272127 | 5 hrs ago | 0.102 ETH | ||||
Request L2Transa... | 22272121 | 5 hrs ago | 0.106 ETH | ||||
Request L2Transa... | 22271958 | 5 hrs ago | 0.00082734 ETH | ||||
Request L2Transa... | 22271958 | 5 hrs ago | 0.01 ETH | ||||
Request L2Transa... | 22271826 | 6 hrs ago | 0.001 ETH | ||||
Request L2Transa... | 22271818 | 6 hrs ago | 0.002 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BridgeHubWrapperProxy
Compiler Version
v0.8.26+commit.8a97fa7a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-10-31 */ // SPDX-License-Identifier: GPL-3.0-only pragma solidity 0.8.26; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ constructor(address initialOwner) { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Contract module which provides access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is specified at deployment time in the constructor for `Ownable`. This * can later be changed with {transferOwnership} and {acceptOwnership}. * * This module is used through inheritance. It will make available all functions * from parent (Ownable). */ abstract contract Ownable2Step is Ownable { address private _pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); /** * @dev Returns the address of the pending owner. */ function pendingOwner() public view virtual returns (address) { return _pendingOwner; } /** * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual override onlyOwner { _pendingOwner = newOwner; emit OwnershipTransferStarted(owner(), newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner. * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual override { delete _pendingOwner; super._transferOwnership(newOwner); } /** * @dev The new owner accepts the ownership transfer. */ function acceptOwnership() public virtual { address sender = _msgSender(); if (pendingOwner() != sender) { revert OwnableUnauthorizedAccount(sender); } _transferOwnership(sender); } } event ReplaceImplementationStarted(address indexed previousImplementation, address indexed newImplementation); event ReplaceImplementation(address indexed previousImplementation, address indexed newImplementation); error Unauthorized(); /** * @title Upgradeable2Step * @notice This contract implements a two-step process for upgrading the implementation address. It provides security by allowing the owner to propose a new implementation and the implementation to accept itself. * @dev Inherits from `Ownable2Step`, allowing the contract owner to initiate the upgrade process, which must then be accepted by the proposed implementation. */ contract Upgradeable2Step is Ownable2Step { /// @notice The slot containing the address of the pending implementation contract. bytes32 public constant PENDING_IMPLEMENTATION_SLOT = keccak256("PENDING_IMPLEMENTATION_SLOT"); /// @notice The slot containing the address of the current implementation contract. bytes32 public constant IMPLEMENTATION_SLOT = keccak256("IMPLEMENTATION_SLOT"); /** * @dev Emitted when a new implementation is proposed. * @param previousImplementation The address of the previous implementation. * @param newImplementation The address of the new implementation proposed. */ event ReplaceImplementationStarted(address indexed previousImplementation, address indexed newImplementation); /** * @dev Emitted when a new implementation is accepted and becomes active. * @param previousImplementation The address of the previous implementation. * @param newImplementation The address of the new active implementation. */ event ReplaceImplementation(address indexed previousImplementation, address indexed newImplementation); /** * @dev Thrown when an unauthorized account attempts to execute a restricted function. */ error Unauthorized(); /** * @notice Initializes the contract and sets the deployer as the initial owner. * @dev Passes the deployer address to the `Ownable2Step` constructor. */ constructor() Ownable(msg.sender) {} /** * @notice Starts the implementation replacement process by setting a new pending implementation address. * @dev Can only be called by the owner. Emits the `ReplaceImplementationStarted` event. * @param impl_ The address of the new implementation contract to be set as pending. */ function replaceImplementation(address impl_) public onlyOwner { bytes32 slot_pending = PENDING_IMPLEMENTATION_SLOT; assembly { sstore(slot_pending, impl_) } emit ReplaceImplementationStarted(implementation(), impl_); } /** * @notice Completes the implementation replacement process by accepting the pending implementation. * @dev Can only be called by the pending implementation itself. Emits the `ReplaceImplementation` event and updates the `implementation` state. * Deletes the `pendingImplementation` address upon successful acceptance. */ function acceptImplementation() public { if (msg.sender != pendingImplementation()) { revert OwnableUnauthorizedAccount(msg.sender); } emit ReplaceImplementation(implementation(), msg.sender); bytes32 slot_pending = PENDING_IMPLEMENTATION_SLOT; bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot_pending, 0) sstore(slot, caller()) } } /** * @notice Allows a new implementation to become the active implementation in a proxy contract. * @dev Can only be called by the owner of the specified proxy contract. Calls `acceptImplementation` on the proxy contract. * @param proxy The proxy contract where the new implementation should be accepted. */ function becomeImplementation(Upgradeable2Step proxy) public { if (msg.sender != proxy.owner()) { revert Unauthorized(); } proxy.acceptImplementation(); } /** * @notice Returns the pending implementation address * @return The pending implementation address */ function pendingImplementation() public view returns (address) { address pendingImplementation_; bytes32 slot_pending = PENDING_IMPLEMENTATION_SLOT; assembly { pendingImplementation_ := sload(slot_pending) } return pendingImplementation_; } /** * @notice Returns the current implementation address * @return The current implementation address */ function implementation() public view returns (address) { address implementation_; bytes32 slot = IMPLEMENTATION_SLOT; assembly { implementation_ := sload(slot) } return implementation_; } } /** * @title Proxy2Step * @notice This contract serves as a proxy that delegates all calls to an implementation address, supporting a two-step upgradeable pattern. * @dev Inherits from `Upgradeable2Step` and allows implementation updates through a two-step process. */ contract Proxy2Step is Upgradeable2Step { /** * @notice Initializes the Proxy2Step contract with the initial implementation address. * @param impl_ The address of the initial implementation contract. */ constructor(address impl_) { require(impl_ != address(0), "impl_ is zero address"); bytes32 slot = IMPLEMENTATION_SLOT; assembly { sstore(slot, impl_) } } /** * @notice Fallback function that delegates all calls to the current implementation. * @dev Forwards all calldata to the implementation address and returns the result. * @dev Uses `delegatecall` to execute functions in the context of the implementation. */ fallback() external virtual payable { bytes32 slot = IMPLEMENTATION_SLOT; assembly { calldatacopy(0, 0, calldatasize()) let result := delegatecall(gas(), sload(slot), 0, calldatasize(), 0, 0) returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @notice Receives Ether sent to the contract. * @dev This function is used to handle direct ETH transfers without data. */ receive() external virtual payable { (bool result,) = implementation().delegatecall(""); assembly { returndatacopy(0, 0, returndatasize()) switch result case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } } /** * @title BridgeHubWrapperProxy * @notice This contract acts as a proxy for the BridgeHubWrapper, allowing for upgradeability and initialization with optional data. * @dev Inherits from Proxy2Step to manage implementation address changes in two steps. */ contract BridgeHubWrapperProxy is Proxy2Step { /** * @notice Constructs the BridgeHubWrapperProxy contract and initializes the implementation. * @dev If `initData_` is provided, it delegates a call to the implementation contract with that data. * @param impl_ The address of the initial implementation contract. * @param initData_ Optional initialization data to delegatecall to the implementation. */ constructor(address impl_, bytes memory initData_) payable Proxy2Step(impl_) { require(impl_ != address(0), "Invalid impl address"); if (initData_.length != 0) { (bool success,) = impl_.delegatecall(initData_); require(success, "init failed"); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"impl_","type":"address"},{"internalType":"bytes","name":"initData_","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousImplementation","type":"address"},{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"ReplaceImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousImplementation","type":"address"},{"indexed":true,"internalType":"address","name":"newImplementation","type":"address"}],"name":"ReplaceImplementationStarted","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"IMPLEMENTATION_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PENDING_IMPLEMENTATION_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract Upgradeable2Step","name":"proxy","type":"address"}],"name":"becomeImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"impl_","type":"address"}],"name":"replaceImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052604051610a49380380610a4983398101604081905261002291610267565b81338061004957604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610052816101c6565b506001600160a01b0381166100a95760405162461bcd60e51b815260206004820152601560248201527f696d706c5f206973207a65726f206164647265737300000000000000000000006044820152606401610040565b7ff603533e14e17222e047634a2b3457fe346d27e294cedf9d21d74e5feea4a046556001600160a01b0382166101215760405162461bcd60e51b815260206004820152601460248201527f496e76616c696420696d706c20616464726573730000000000000000000000006044820152606401610040565b8051156101bf575f826001600160a01b0316826040516101419190610335565b5f60405180830381855af49150503d805f8114610179576040519150601f19603f3d011682016040523d82523d5f602084013e61017e565b606091505b50509050806101bd5760405162461bcd60e51b815260206004820152600b60248201526a1a5b9a5d0819985a5b195960aa1b6044820152606401610040565b505b5050610350565b600180546001600160a01b03191690556101df816101e2565b50565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561025f578181015183820152602001610247565b50505f910152565b5f8060408385031215610278575f80fd5b82516001600160a01b038116811461028e575f80fd5b60208401519092506001600160401b038111156102a9575f80fd5b8301601f810185136102b9575f80fd5b80516001600160401b038111156102d2576102d2610231565b604051601f8201601f19908116603f011681016001600160401b038111828210171561030057610300610231565b604052818152828201602001871015610317575f80fd5b610328826020830160208601610245565b8093505050509250929050565b5f8251610346818460208701610245565b9190910192915050565b6106ec8061035d5f395ff3fe6080604052600436106100aa575f3560e01c806379ba50971161006357806379ba50971461021f5780638da5cb5b14610233578063d69efdc51461024f578063e30c39781461026e578063eaac8c321461028b578063f2fde38b146102aa57610127565b8063086fc0c71461015057806315ba56e514610183578063348ce7be14610197578063396f7b23146101b75780635c60da1b146101eb578063715018a61461020b57610127565b36610127575f6100c55f805160206106978339815191525490565b6001600160a01b03166040515f60405180830381855af49150503d805f8114610109576040519150601f19603f3d011682016040523d82523d5f602084013e61010e565b606091505b505090503d5f803e808015610121573d5ff35b3d5ffd5b005b5f80516020610697833981519152365f80375f80365f84545af43d5f803e808015610121573d5ff35b34801561015b575f80fd5b506101705f8051602061069783398151915281565b6040519081526020015b60405180910390f35b34801561018e575f80fd5b506101256102c9565b3480156101a2575f80fd5b506101705f8051602061067783398151915281565b3480156101c2575f80fd5b505f80516020610677833981519152545b6040516001600160a01b03909116815260200161017a565b3480156101f6575f80fd5b505f80516020610697833981519152546101d3565b348015610216575f80fd5b5061012561037d565b34801561022a575f80fd5b50610125610390565b34801561023e575f80fd5b505f546001600160a01b03166101d3565b34801561025a575f80fd5b50610125610269366004610639565b6103d4565b348015610279575f80fd5b506001546001600160a01b03166101d3565b348015610296575f80fd5b506101256102a5366004610639565b610445565b3480156102b5575f80fd5b506101256102c4366004610639565b610526565b5f80516020610677833981519152546001600160a01b0316336001600160a01b0316146103105760405163118cdaa760e01b81523360048201526024015b60405180910390fd5b336103265f805160206106978339815191525490565b6001600160a01b03167feb7a7d62743daf8cf4055aea544d0a89e2011279ed4105567d010759e6fa4de260405160405180910390a35f5f8051602061067783398151915255335f8051602061069783398151915255565b610385610596565b61038e5f6105c2565b565b60015433906001600160a01b031681146103c85760405163118cdaa760e01b81526001600160a01b0382166004820152602401610307565b6103d1816105c2565b50565b6103dc610596565b5f805160206106778339815191528181556001600160a01b03821661040c5f805160206106978339815191525490565b6001600160a01b03167f67f679e13fe9dca16f3079221965ec41838cb8881cbc0f440bc13507c6b214c260405160405180910390a35050565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a5919061065b565b6001600160a01b0316336001600160a01b0316146104d5576040516282b42960e81b815260040160405180910390fd5b806001600160a01b03166315ba56e56040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561050d575f80fd5b505af115801561051f573d5f803e3d5ffd5b5050505050565b61052e610596565b600180546001600160a01b0383166001600160a01b0319909116811790915561055e5f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b0316331461038e5760405163118cdaa760e01b8152336004820152602401610307565b600180546001600160a01b03191690556103d1815f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103d1575f80fd5b5f60208284031215610649575f80fd5b813561065481610625565b9392505050565b5f6020828403121561066b575f80fd5b81516106548161062556feed121f2bd960c6029b39fec5a771d28b9d0fe6caa150c9e459a5c08adc3eb682f603533e14e17222e047634a2b3457fe346d27e294cedf9d21d74e5feea4a046a264697066735822122099cee00d8350ddd2d5a7ab9945dfcf014594ce7d9921eb463edbe5b261b818de64736f6c634300081a003300000000000000000000000015e3eb8f6cd787b7053af0500e5bc0ee38a4c60a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044da35a26f0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000050b238788747b26c408681283d148659f9da7cf900000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106100aa575f3560e01c806379ba50971161006357806379ba50971461021f5780638da5cb5b14610233578063d69efdc51461024f578063e30c39781461026e578063eaac8c321461028b578063f2fde38b146102aa57610127565b8063086fc0c71461015057806315ba56e514610183578063348ce7be14610197578063396f7b23146101b75780635c60da1b146101eb578063715018a61461020b57610127565b36610127575f6100c55f805160206106978339815191525490565b6001600160a01b03166040515f60405180830381855af49150503d805f8114610109576040519150601f19603f3d011682016040523d82523d5f602084013e61010e565b606091505b505090503d5f803e808015610121573d5ff35b3d5ffd5b005b5f80516020610697833981519152365f80375f80365f84545af43d5f803e808015610121573d5ff35b34801561015b575f80fd5b506101705f8051602061069783398151915281565b6040519081526020015b60405180910390f35b34801561018e575f80fd5b506101256102c9565b3480156101a2575f80fd5b506101705f8051602061067783398151915281565b3480156101c2575f80fd5b505f80516020610677833981519152545b6040516001600160a01b03909116815260200161017a565b3480156101f6575f80fd5b505f80516020610697833981519152546101d3565b348015610216575f80fd5b5061012561037d565b34801561022a575f80fd5b50610125610390565b34801561023e575f80fd5b505f546001600160a01b03166101d3565b34801561025a575f80fd5b50610125610269366004610639565b6103d4565b348015610279575f80fd5b506001546001600160a01b03166101d3565b348015610296575f80fd5b506101256102a5366004610639565b610445565b3480156102b5575f80fd5b506101256102c4366004610639565b610526565b5f80516020610677833981519152546001600160a01b0316336001600160a01b0316146103105760405163118cdaa760e01b81523360048201526024015b60405180910390fd5b336103265f805160206106978339815191525490565b6001600160a01b03167feb7a7d62743daf8cf4055aea544d0a89e2011279ed4105567d010759e6fa4de260405160405180910390a35f5f8051602061067783398151915255335f8051602061069783398151915255565b610385610596565b61038e5f6105c2565b565b60015433906001600160a01b031681146103c85760405163118cdaa760e01b81526001600160a01b0382166004820152602401610307565b6103d1816105c2565b50565b6103dc610596565b5f805160206106778339815191528181556001600160a01b03821661040c5f805160206106978339815191525490565b6001600160a01b03167f67f679e13fe9dca16f3079221965ec41838cb8881cbc0f440bc13507c6b214c260405160405180910390a35050565b806001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610481573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a5919061065b565b6001600160a01b0316336001600160a01b0316146104d5576040516282b42960e81b815260040160405180910390fd5b806001600160a01b03166315ba56e56040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561050d575f80fd5b505af115801561051f573d5f803e3d5ffd5b5050505050565b61052e610596565b600180546001600160a01b0383166001600160a01b0319909116811790915561055e5f546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f546001600160a01b0316331461038e5760405163118cdaa760e01b8152336004820152602401610307565b600180546001600160a01b03191690556103d1815f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103d1575f80fd5b5f60208284031215610649575f80fd5b813561065481610625565b9392505050565b5f6020828403121561066b575f80fd5b81516106548161062556feed121f2bd960c6029b39fec5a771d28b9d0fe6caa150c9e459a5c08adc3eb682f603533e14e17222e047634a2b3457fe346d27e294cedf9d21d74e5feea4a046a264697066735822122099cee00d8350ddd2d5a7ab9945dfcf014594ce7d9921eb463edbe5b261b818de64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000015e3eb8f6cd787b7053af0500e5bc0ee38a4c60a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044da35a26f0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000050b238788747b26c408681283d148659f9da7cf900000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : impl_ (address): 0x15E3EB8F6cD787B7053af0500e5bc0Ee38A4C60a
Arg [1] : initData_ (bytes): 0xda35a26f0000000000000000000000000000000000000000000000056bc75e2d6310000000000000000000000000000050b238788747b26c408681283d148659f9da7cf9
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 00000000000000000000000015e3eb8f6cd787b7053af0500e5bc0ee38a4c60a
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000044
Arg [3] : da35a26f0000000000000000000000000000000000000000000000056bc75e2d
Arg [4] : 6310000000000000000000000000000050b238788747b26c408681283d148659
Arg [5] : f9da7cf900000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
12984:750:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12438:11;12454:16;-1:-1:-1;;;;;;;;;;;10710:11:0;;10521:251;12454:16;-1:-1:-1;;;;;12454:29:0;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12437:50;;;12543:16;12540:1;12537;12522:38;12581:6;12601:38;;;;12673:16;12670:1;12663:27;12601:38;12620:16;12617:1;12610:27;12574:118;;12984:750;-1:-1:-1;;;;;;;;;;;11930:14:0;11842:12;;11911:34;12028:1;12025;12009:14;12006:1;11999:4;11993:11;11986:5;11973:57;12065:16;12062:1;12059;12044:38;12103:6;12123:38;;;;12195:16;12192:1;12185:27;6814:78;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6814:78:0;;;;;370:25:1;;;358:2;343:18;6814:78:0;;;;;;;;8950:451;;;;;;;;;;;;;:::i;6622:94::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;6622:94:0;;10082:303;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;10308:19:0;10082:303;;;-1:-1:-1;;;;;570:32:1;;;552:51;;540:2;525:18;10082:303:0;406:203:1;10521:251:0;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;10710:11:0;10521:251;;3118:103;;;;;;;;;;;;;:::i;5586:235::-;;;;;;;;;;;;;:::i;2443:87::-;;;;;;;;;;-1:-1:-1;2489:7:0;2516:6;-1:-1:-1;;;;;2516:6:0;2443:87;;8310:273;;;;;;;;;;-1:-1:-1;8310:273:0;;;;;:::i;:::-;;:::i;4674:101::-;;;;;;;;;;-1:-1:-1;4754:13:0;;-1:-1:-1;;;;;4754:13:0;4674:101;;9747:199;;;;;;;;;;-1:-1:-1;9747:199:0;;;;;:::i;:::-;;:::i;4974:181::-;;;;;;;;;;-1:-1:-1;4974:181:0;;;;;:::i;:::-;;:::i;8950:451::-;-1:-1:-1;;;;;;;;;;;10308:19:0;-1:-1:-1;;;;;9004:37:0;:10;-1:-1:-1;;;;;9004:37:0;;9000:115;;9065:38;;-1:-1:-1;;;9065:38:0;;9092:10;9065:38;;;552:51:1;525:18;;9065:38:0;;;;;;;;9000:115;9170:10;9152:16;-1:-1:-1;;;;;;;;;;;10710:11:0;;10521:251;9152:16;-1:-1:-1;;;;;9130:51:0;;;;;;;;;;;9194:20;-1:-1:-1;;;;;;;;;;;9324:23:0;9374:8;-1:-1:-1;;;;;;;;;;;9361:22:0;8950:451::o;3118:103::-;2329:13;:11;:13::i;:::-;3183:30:::1;3210:1;3183:18;:30::i;:::-;3118:103::o:0;5586:235::-;4754:13;;691:10;;-1:-1:-1;;;;;4754:13:0;5683:24;;5679:98;;5731:34;;-1:-1:-1;;;5731:34:0;;-1:-1:-1;;;;;570:32:1;;5731:34:0;;;552:51:1;525:18;;5731:34:0;406:203:1;5679:98:0;5787:26;5806:6;5787:18;:26::i;:::-;5628:193;5586:235::o;8310:273::-;2329:13;:11;:13::i;:::-;-1:-1:-1;;;;;;;;;;;8469:27:0;;;-1:-1:-1;;;;;8522:53:0;::::1;8551:16;-1:-1:-1::0;;;;;;;;;;;10710:11:0;;10521:251;8551:16:::1;-1:-1:-1::0;;;;;8522:53:0::1;;;;;;;;;;;8373:210;8310:273:::0;:::o;9747:199::-;9837:5;-1:-1:-1;;;;;9837:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;9823:27:0;:10;-1:-1:-1;;;;;9823:27:0;;9819:81;;9874:14;;-1:-1:-1;;;9874:14:0;;;;;;;;;;;9819:81;9910:5;-1:-1:-1;;;;;9910:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9747:199;:::o;4974:181::-;2329:13;:11;:13::i;:::-;5064::::1;:24:::0;;-1:-1:-1;;;;;5064:24:0;::::1;-1:-1:-1::0;;;;;;5064:24:0;;::::1;::::0;::::1;::::0;;;5129:7:::1;2489::::0;2516:6;-1:-1:-1;;;;;2516:6:0;;2443:87;5129:7:::1;-1:-1:-1::0;;;;;5104:43:0::1;;;;;;;;;;;4974:181:::0;:::o;2608:166::-;2489:7;2516:6;-1:-1:-1;;;;;2516:6:0;691:10;2668:23;2664:103;;2715:40;;-1:-1:-1;;;2715:40:0;;691:10;2715:40;;;552:51:1;525:18;;2715:40:0;406:203:1;5345:156:0;5435:13;5428:20;;-1:-1:-1;;;;;;5428:20:0;;;5459:34;5484:8;3830:16;3849:6;;-1:-1:-1;;;;;3866:17:0;;;-1:-1:-1;;;;;;3866:17:0;;;;;;3899:40;;3849:6;;;;;;;3899:40;;3830:16;3899:40;3819:128;3756:191;:::o;614:131:1:-;-1:-1:-1;;;;;689:31:1;;679:42;;669:70;;735:1;732;725:12;750:247;809:6;862:2;850:9;841:7;837:23;833:32;830:52;;;878:1;875;868:12;830:52;917:9;904:23;936:31;961:5;936:31;:::i;:::-;986:5;750:247;-1:-1:-1;;;750:247:1:o;1278:251::-;1348:6;1401:2;1389:9;1380:7;1376:23;1372:32;1369:52;;;1417:1;1414;1407:12;1369:52;1449:9;1443:16;1468:31;1493:5;1468:31;:::i
Swarm Source
ipfs://99cee00d8350ddd2d5a7ab9945dfcf014594ce7d9921eb463edbe5b261b818de
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
OP | 100.00% | $1,641.46 | 0.001 | $1.64 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.