Source Code
Latest 25 from a total of 10,622 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Request L2Transa... | 23877775 | 4 hrs ago | IN | 0.48 ETH | 0.00004944 | ||||
| Request L2Transa... | 23870767 | 27 hrs ago | IN | 0 ETH | 0.00014284 | ||||
| Request L2Transa... | 23862864 | 2 days ago | IN | 0 ETH | 0.00003672 | ||||
| Request L2Transa... | 23860347 | 2 days ago | IN | 0 ETH | 0.00003852 | ||||
| Request L2Transa... | 23854396 | 3 days ago | IN | 0 ETH | 0.00003942 | ||||
| Request L2Transa... | 23854227 | 3 days ago | IN | 0.0005 ETH | 0.00003993 | ||||
| Request L2Transa... | 23853259 | 3 days ago | IN | 0 ETH | 0.00004285 | ||||
| Request L2Transa... | 23849894 | 4 days ago | IN | 0 ETH | 0.00043838 | ||||
| Request L2Transa... | 23847730 | 4 days ago | IN | 50 ETH | 0.0006144 | ||||
| Request L2Transa... | 23846742 | 4 days ago | IN | 0 ETH | 0.00142969 | ||||
| Request L2Transa... | 23846451 | 4 days ago | IN | 0 ETH | 0.00045045 | ||||
| Request L2Transa... | 23846347 | 4 days ago | IN | 0 ETH | 0.00065047 | ||||
| Request L2Transa... | 23844696 | 4 days ago | IN | 0 ETH | 0.00020301 | ||||
| Request L2Transa... | 23844481 | 4 days ago | IN | 0 ETH | 0.00017554 | ||||
| Request L2Transa... | 23841881 | 5 days ago | IN | 0 ETH | 0.00143968 | ||||
| Request L2Transa... | 23840784 | 5 days ago | IN | 0 ETH | 0.00073006 | ||||
| Request L2Transa... | 23840669 | 5 days ago | IN | 0 ETH | 0.00022911 | ||||
| Request L2Transa... | 23839824 | 5 days ago | IN | 0 ETH | 0.00004113 | ||||
| Request L2Transa... | 23835924 | 6 days ago | IN | 0 ETH | 0.00013753 | ||||
| Request L2Transa... | 23835779 | 6 days ago | IN | 0 ETH | 0.00045386 | ||||
| Request L2Transa... | 23835591 | 6 days ago | IN | 0.005 ETH | 0.00019288 | ||||
| Request L2Transa... | 23834996 | 6 days ago | IN | 0 ETH | 0.00039746 | ||||
| Request L2Transa... | 23834280 | 6 days ago | IN | 0 ETH | 0.00155867 | ||||
| Request L2Transa... | 23834260 | 6 days ago | IN | 0 ETH | 0.00193202 | ||||
| Request L2Transa... | 23834088 | 6 days ago | IN | 0 ETH | 0.00097776 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Request L2Transa... | 23877775 | 4 hrs ago | 0.48 ETH | ||||
| Request L2Transa... | 23854227 | 3 days ago | 0.0005 ETH | ||||
| Request L2Transa... | 23847730 | 4 days ago | 50 ETH | ||||
| Request L2Transa... | 23835591 | 6 days ago | 0.005 ETH | ||||
| Request L2Transa... | 23828919 | 7 days ago | 0.001 ETH | ||||
| Request L2Transa... | 23822976 | 7 days ago | 7 ETH | ||||
| Request L2Transa... | 23819044 | 8 days ago | 0.0011 ETH | ||||
| Request L2Transa... | 23805918 | 10 days ago | 0.001 ETH | ||||
| Request L2Transa... | 23805878 | 10 days ago | 0.001 ETH | ||||
| Request L2Transa... | 23804240 | 10 days ago | 5 ETH | ||||
| Request L2Transa... | 23792430 | 12 days ago | 36 ETH | ||||
| Request L2Transa... | 23789009 | 12 days ago | 0.001 ETH | ||||
| Request L2Transa... | 23760461 | 16 days ago | 0.05 ETH | ||||
| Request L2Transa... | 23725337 | 21 days ago | 0.014 ETH | ||||
| Request L2Transa... | 23718609 | 22 days ago | 3.5 ETH | ||||
| Request L2Transa... | 23716679 | 22 days ago | 0.0005 ETH | ||||
| Request L2Transa... | 23699632 | 25 days ago | 0.001 ETH | ||||
| Request L2Transa... | 23696395 | 25 days ago | 0.03 ETH | ||||
| Request L2Transa... | 23684505 | 27 days ago | 5 ETH | ||||
| Request L2Transa... | 23668573 | 29 days ago | 0.001 ETH | ||||
| Request L2Transa... | 23663581 | 30 days ago | 0.03259188 ETH | ||||
| Request L2Transa... | 23663448 | 30 days ago | 0.0052 ETH | ||||
| Request L2Transa... | 23637215 | 33 days ago | 0.0004 ETH | ||||
| Request L2Transa... | 23634360 | 34 days ago | 5 ETH | ||||
| Request L2Transa... | 23607766 | 37 days ago | 0.105 ETH |
Loading...
Loading
Cross-Chain Transactions
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 | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| OP | 100.00% | $2,964.42 | 0.001 | $2.96 |
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.