More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 7,811 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Arbitrary Calls | 21439779 | 10 mins ago | IN | 0 ETH | 0.00313458 | ||||
Arbitrary Calls | 21439774 | 11 mins ago | IN | 0 ETH | 0.00092058 | ||||
Arbitrary Calls | 21439774 | 11 mins ago | IN | 0 ETH | 0.00106052 | ||||
0xca218276 | 21439764 | 13 mins ago | IN | 0 ETH | 0.00324937 | ||||
Arbitrary Calls ... | 21439741 | 17 mins ago | IN | 0 ETH | 0.00239097 | ||||
0xca218276 | 21439718 | 22 mins ago | IN | 0 ETH | 0.00324506 | ||||
0xca218276 | 21439717 | 22 mins ago | IN | 0 ETH | 0.00392841 | ||||
Arbitrary Calls | 21439707 | 24 mins ago | IN | 0 ETH | 0.00090879 | ||||
Arbitrary Calls | 21439705 | 24 mins ago | IN | 0 ETH | 0.00090489 | ||||
Arbitrary Calls | 21439704 | 25 mins ago | IN | 0 ETH | 0.0008821 | ||||
0xca218276 | 21439695 | 26 mins ago | IN | 0 ETH | 0.00271391 | ||||
0xca218276 | 21439695 | 26 mins ago | IN | 0 ETH | 0.00285933 | ||||
0xca218276 | 21439693 | 27 mins ago | IN | 0 ETH | 0.00384559 | ||||
Arbitrary Calls | 21439677 | 30 mins ago | IN | 0 ETH | 0.0017865 | ||||
Arbitrary Calls | 21439670 | 32 mins ago | IN | 0 ETH | 0.0010032 | ||||
Arbitrary Calls | 21439669 | 32 mins ago | IN | 0 ETH | 0.00098128 | ||||
Arbitrary Calls ... | 21439666 | 32 mins ago | IN | 0 ETH | 0.00195724 | ||||
Arbitrary Calls ... | 21439665 | 33 mins ago | IN | 0 ETH | 0.00318097 | ||||
0xca218276 | 21439660 | 34 mins ago | IN | 0 ETH | 0.00327764 | ||||
0xca218276 | 21439659 | 34 mins ago | IN | 0 ETH | 0.00484107 | ||||
Arbitrary Calls | 21439631 | 39 mins ago | IN | 0 ETH | 0.00111311 | ||||
Arbitrary Calls | 21439625 | 41 mins ago | IN | 0 ETH | 0.00191511 | ||||
Arbitrary Calls | 21439592 | 47 mins ago | IN | 0 ETH | 0.00080444 | ||||
Arbitrary Calls | 21439582 | 49 mins ago | IN | 0 ETH | 0.00118282 | ||||
Arbitrary Calls | 21439466 | 1 hr ago | IN | 0 ETH | 0.00117701 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21439779 | 10 mins ago | 0.001 ETH | ||||
21439774 | 11 mins ago | 0.16263375 ETH | ||||
21439774 | 11 mins ago | 0.00323206 ETH | ||||
21439774 | 11 mins ago | 0.00267728 ETH | ||||
21439764 | 13 mins ago | 0.00323206 ETH | ||||
21439741 | 17 mins ago | 0.00267728 ETH | ||||
21439718 | 22 mins ago | 0.00267728 ETH | ||||
21439717 | 22 mins ago | 0.00267728 ETH | ||||
21439707 | 24 mins ago | 0.00293761 ETH | ||||
21439705 | 24 mins ago | 6.87483128 ETH | ||||
21439705 | 24 mins ago | 0.00310167 ETH | ||||
21439704 | 25 mins ago | 14.48900735 ETH | ||||
21439704 | 25 mins ago | 0.00310167 ETH | ||||
21439695 | 26 mins ago | 0.00310167 ETH | ||||
21439695 | 26 mins ago | 0.00293761 ETH | ||||
21439693 | 27 mins ago | 0.00310167 ETH | ||||
21439670 | 32 mins ago | 0.00307611 ETH | ||||
21439669 | 32 mins ago | 0.00307611 ETH | ||||
21439665 | 33 mins ago | 5.93546422 ETH | ||||
21439660 | 34 mins ago | 0.00307611 ETH | ||||
21439659 | 34 mins ago | 0.00307611 ETH | ||||
21439631 | 39 mins ago | 0.00290284 ETH | ||||
21439625 | 41 mins ago | 0.00290284 ETH | ||||
21439592 | 47 mins ago | 0.00309093 ETH | ||||
21439582 | 49 mins ago | 4.78994193 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
TransparentUpgradeableProxy
Compiler Version
v0.8.23+commit.f704f362
Optimization Enabled:
Yes with 1000000 runs
Other Settings:
shanghai EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/transparent/TransparentUpgradeableProxy.sol) pragma solidity ^0.8.20; import {ERC1967Utils} from "../ERC1967/ERC1967Utils.sol"; import {ERC1967Proxy} from "../ERC1967/ERC1967Proxy.sol"; import {IERC1967} from "../../interfaces/IERC1967.sol"; import {ProxyAdmin} from "./ProxyAdmin.sol"; /** * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy} * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not * include them in the ABI so this interface must be used to interact with it. */ interface ITransparentUpgradeableProxy is IERC1967 { function upgradeToAndCall(address, bytes calldata) external payable; } /** * @dev This contract implements a proxy that is upgradeable through an associated {ProxyAdmin} instance. * * To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector * clashing], which can potentially be used in an attack, this contract uses the * https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two * things that go hand in hand: * * 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if * that call matches the {ITransparentUpgradeableProxy-upgradeToAndCall} function exposed by the proxy itself. * 2. If the admin calls the proxy, it can call the `upgradeToAndCall` function but any other call won't be forwarded to * the implementation. If the admin tries to call a function on the implementation it will fail with an error indicating * the proxy admin cannot fallback to the target implementation. * * These properties mean that the admin account can only be used for upgrading the proxy, so it's best if it's a * dedicated account that is not used for anything else. This will avoid headaches due to sudden errors when trying to * call a function from the proxy implementation. For this reason, the proxy deploys an instance of {ProxyAdmin} and * allows upgrades only if they come through it. You should think of the `ProxyAdmin` instance as the administrative * interface of the proxy, including the ability to change who can trigger upgrades by transferring ownership. * * NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not * inherit from that interface, and instead `upgradeToAndCall` is implicitly implemented using a custom dispatch * mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to * fully implement transparency without decoding reverts caused by selector clashes between the proxy and the * implementation. * * NOTE: This proxy does not inherit from {Context} deliberately. The {ProxyAdmin} of this contract won't send a * meta-transaction in any way, and any other meta-transaction setup should be made in the implementation contract. * * IMPORTANT: This contract avoids unnecessary storage reads by setting the admin only during construction as an * immutable variable, preventing any changes thereafter. However, the admin slot defined in ERC-1967 can still be * overwritten by the implementation logic pointed to by this proxy. In such cases, the contract may end up in an * undesirable state where the admin slot is different from the actual admin. Relying on the value of the admin slot * is generally fine if the implementation is trusted. * * WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the * compiler will not check that there are no selector conflicts, due to the note above. A selector clash between any new * function and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This * could render the `upgradeToAndCall` function inaccessible, preventing upgradeability and compromising transparency. */ contract TransparentUpgradeableProxy is ERC1967Proxy { // An immutable address for the admin to avoid unnecessary SLOADs before each call // at the expense of removing the ability to change the admin once it's set. // This is acceptable if the admin is always a ProxyAdmin instance or similar contract // with its own ability to transfer the permissions to another account. address private immutable _admin; /** * @dev The proxy caller is the current admin, and can't fallback to the proxy target. */ error ProxyDeniedAdminAccess(); /** * @dev Initializes an upgradeable proxy managed by an instance of a {ProxyAdmin} with an `initialOwner`, * backed by the implementation at `_logic`, and optionally initialized with `_data` as explained in * {ERC1967Proxy-constructor}. */ constructor(address _logic, address initialOwner, bytes memory _data) payable ERC1967Proxy(_logic, _data) { _admin = address(new ProxyAdmin(initialOwner)); // Set the storage value and emit an event for ERC-1967 compatibility ERC1967Utils.changeAdmin(_proxyAdmin()); } /** * @dev Returns the admin of this proxy. */ function _proxyAdmin() internal view virtual returns (address) { return _admin; } /** * @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior. */ function _fallback() internal virtual override { if (msg.sender == _proxyAdmin()) { if (msg.sig != ITransparentUpgradeableProxy.upgradeToAndCall.selector) { revert ProxyDeniedAdminAccess(); } else { _dispatchUpgradeToAndCall(); } } else { super._fallback(); } } /** * @dev Upgrade the implementation of the proxy. See {ERC1967Utils-upgradeToAndCall}. * * Requirements: * * - If `data` is empty, `msg.value` must be zero. */ function _dispatchUpgradeToAndCall() private { (address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes)); ERC1967Utils.upgradeToAndCall(newImplementation, data); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Utils.sol) pragma solidity ^0.8.20; import {IBeacon} from "../beacon/IBeacon.sol"; import {Address} from "../../utils/Address.sol"; import {StorageSlot} from "../../utils/StorageSlot.sol"; /** * @dev This abstract contract provides getters and event emitting update functions for * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots. */ library ERC1967Utils { /** * @dev Emitted when the implementation is upgraded. */ event Upgraded(address indexed implementation); /** * @dev Emitted when the admin account has changed. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @dev Emitted when the beacon is changed. */ event BeaconUpgraded(address indexed beacon); /** * @dev Storage slot with the address of the current implementation. * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1. */ // solhint-disable-next-line private-vars-leading-underscore bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; /** * @dev The `implementation` of the proxy is invalid. */ error ERC1967InvalidImplementation(address implementation); /** * @dev The `admin` of the proxy is invalid. */ error ERC1967InvalidAdmin(address admin); /** * @dev The `beacon` of the proxy is invalid. */ error ERC1967InvalidBeacon(address beacon); /** * @dev An upgrade function sees `msg.value > 0` that may be lost. */ error ERC1967NonPayable(); /** * @dev Returns the current implementation address. */ function getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value; } /** * @dev Stores a new address in the ERC-1967 implementation slot. */ function _setImplementation(address newImplementation) private { if (newImplementation.code.length == 0) { revert ERC1967InvalidImplementation(newImplementation); } StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation; } /** * @dev Performs implementation upgrade with additional setup call if data is nonempty. * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected * to avoid stuck value in the contract. * * Emits an {IERC1967-Upgraded} event. */ function upgradeToAndCall(address newImplementation, bytes memory data) internal { _setImplementation(newImplementation); emit Upgraded(newImplementation); if (data.length > 0) { Address.functionDelegateCall(newImplementation, data); } else { _checkNonPayable(); } } /** * @dev Storage slot with the admin of the contract. * This is the keccak-256 hash of "eip1967.proxy.admin" subtracted by 1. */ // solhint-disable-next-line private-vars-leading-underscore bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; /** * @dev Returns the current admin. * * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103` */ function getAdmin() internal view returns (address) { return StorageSlot.getAddressSlot(ADMIN_SLOT).value; } /** * @dev Stores a new address in the ERC-1967 admin slot. */ function _setAdmin(address newAdmin) private { if (newAdmin == address(0)) { revert ERC1967InvalidAdmin(address(0)); } StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin; } /** * @dev Changes the admin of the proxy. * * Emits an {IERC1967-AdminChanged} event. */ function changeAdmin(address newAdmin) internal { emit AdminChanged(getAdmin(), newAdmin); _setAdmin(newAdmin); } /** * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. * This is the keccak-256 hash of "eip1967.proxy.beacon" subtracted by 1. */ // solhint-disable-next-line private-vars-leading-underscore bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50; /** * @dev Returns the current beacon. */ function getBeacon() internal view returns (address) { return StorageSlot.getAddressSlot(BEACON_SLOT).value; } /** * @dev Stores a new beacon in the ERC-1967 beacon slot. */ function _setBeacon(address newBeacon) private { if (newBeacon.code.length == 0) { revert ERC1967InvalidBeacon(newBeacon); } StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon; address beaconImplementation = IBeacon(newBeacon).implementation(); if (beaconImplementation.code.length == 0) { revert ERC1967InvalidImplementation(beaconImplementation); } } /** * @dev Change the beacon and trigger a setup call if data is nonempty. * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected * to avoid stuck value in the contract. * * Emits an {IERC1967-BeaconUpgraded} event. * * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for * efficiency. */ function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal { _setBeacon(newBeacon); emit BeaconUpgraded(newBeacon); if (data.length > 0) { Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data); } else { _checkNonPayable(); } } /** * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract * if an upgrade doesn't perform an initialization call. */ function _checkNonPayable() private { if (msg.value > 0) { revert ERC1967NonPayable(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/ERC1967/ERC1967Proxy.sol) pragma solidity ^0.8.20; import {Proxy} from "../Proxy.sol"; import {ERC1967Utils} from "./ERC1967Utils.sol"; /** * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an * implementation address that can be changed. This address is stored in storage in the location specified by * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the * implementation behind the proxy. */ contract ERC1967Proxy is Proxy { /** * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`. * * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. * * Requirements: * * - If `data` is empty, `msg.value` must be zero. */ constructor(address implementation, bytes memory _data) payable { ERC1967Utils.upgradeToAndCall(implementation, _data); } /** * @dev Returns the current implementation address. * * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call. * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc` */ function _implementation() internal view virtual override returns (address) { return ERC1967Utils.getImplementation(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol) pragma solidity ^0.8.20; /** * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC. */ interface IERC1967 { /** * @dev Emitted when the implementation is upgraded. */ event Upgraded(address indexed implementation); /** * @dev Emitted when the admin account has changed. */ event AdminChanged(address previousAdmin, address newAdmin); /** * @dev Emitted when the beacon is changed. */ event BeaconUpgraded(address indexed beacon); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/transparent/ProxyAdmin.sol) pragma solidity ^0.8.20; import {ITransparentUpgradeableProxy} from "./TransparentUpgradeableProxy.sol"; import {Ownable} from "../../access/Ownable.sol"; /** * @dev This is an auxiliary contract meant to be assigned as the admin of a {TransparentUpgradeableProxy}. For an * explanation of why you would want to use this see the documentation for {TransparentUpgradeableProxy}. */ contract ProxyAdmin is Ownable { /** * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgrade(address)` * and `upgradeAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, * while `upgradeAndCall` will invoke the `receive` function if the second argument is the empty byte string. * If the getter returns `"5.0.0"`, only `upgradeAndCall(address,bytes)` is present, and the second argument must * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function * during an upgrade. */ string public constant UPGRADE_INTERFACE_VERSION = "5.0.0"; /** * @dev Sets the initial owner who can perform upgrades. */ constructor(address initialOwner) Ownable(initialOwner) {} /** * @dev Upgrades `proxy` to `implementation` and calls a function on the new implementation. * See {TransparentUpgradeableProxy-_dispatchUpgradeToAndCall}. * * Requirements: * * - This contract must be the admin of `proxy`. * - If `data` is empty, `msg.value` must be zero. */ function upgradeAndCall( ITransparentUpgradeableProxy proxy, address implementation, bytes memory data ) public payable virtual onlyOwner { proxy.upgradeToAndCall{value: msg.value}(implementation, data); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol) pragma solidity ^0.8.20; /** * @dev This is the interface that {BeaconProxy} expects of its beacon. */ interface IBeacon { /** * @dev Must return an address that can be used as a delegate call target. * * {UpgradeableBeacon} will check that this address is a contract. */ function implementation() external view returns (address); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; import {Errors} from "./Errors.sol"; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @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://consensys.net/diligence/blog/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.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert Errors.InsufficientBalance(address(this).balance, amount); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert Errors.FailedCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {Errors.FailedCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert Errors.InsufficientBalance(address(this).balance, value); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case * of an unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {Errors.FailedCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert Errors.FailedCall(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol) // This file was procedurally generated from scripts/generate/templates/StorageSlot.js. pragma solidity ^0.8.20; /** * @dev Library for reading and writing primitive types to specific storage slots. * * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. * This library helps with reading and writing to such slots without the need for inline assembly. * * The functions in this library return Slot structs that contain a `value` member that can be used to read or write. * * Example usage to set ERC-1967 implementation slot: * ```solidity * contract ERC1967 { * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; * * function _getImplementation() internal view returns (address) { * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; * } * * function _setImplementation(address newImplementation) internal { * require(newImplementation.code.length > 0); * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; * } * } * ``` * * TIP: Consider using this library along with {SlotDerivation}. */ library StorageSlot { struct AddressSlot { address value; } struct BooleanSlot { bool value; } struct Bytes32Slot { bytes32 value; } struct Uint256Slot { uint256 value; } struct Int256Slot { int256 value; } struct StringSlot { string value; } struct BytesSlot { bytes value; } /** * @dev Returns an `AddressSlot` with member `value` located at `slot`. */ function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BooleanSlot` with member `value` located at `slot`. */ function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Bytes32Slot` with member `value` located at `slot`. */ function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Uint256Slot` with member `value` located at `slot`. */ function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `Int256Slot` with member `value` located at `slot`. */ function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` with member `value` located at `slot`. */ function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `StringSlot` representation of the string storage pointer `store`. */ function getStringSlot(string storage store) internal pure returns (StringSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := store.slot } } /** * @dev Returns an `BytesSlot` with member `value` located at `slot`. */ function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := slot } } /** * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`. */ function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) { /// @solidity memory-safe-assembly assembly { r.slot := store.slot } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol) pragma solidity ^0.8.20; /** * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to * be specified by overriding the virtual {_implementation} function. * * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a * different contract through the {_delegate} function. * * The success and return data of the delegated call will be returned back to the caller of the proxy. */ abstract contract Proxy { /** * @dev Delegates the current call to `implementation`. * * This function does not return to its internal call site, it will return directly to the external caller. */ function _delegate(address implementation) internal virtual { assembly { // Copy msg.data. We take full control of memory in this inline assembly // block because it will not return to Solidity code. We overwrite the // Solidity scratch pad at memory position 0. calldatacopy(0, 0, calldatasize()) // Call the implementation. // out and outsize are 0 because we don't know the size yet. let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) // Copy the returned data. returndatacopy(0, 0, returndatasize()) switch result // delegatecall returns 0 on error. case 0 { revert(0, returndatasize()) } default { return(0, returndatasize()) } } } /** * @dev This is a virtual function that should be overridden so it returns the address to which the fallback * function and {_fallback} should delegate. */ function _implementation() internal view virtual returns (address); /** * @dev Delegates the current call to the address returned by `_implementation()`. * * This function does not return to its internal call site, it will return directly to the external caller. */ function _fallback() internal virtual { _delegate(_implementation()); } /** * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other * function in the contract matches the call data. */ fallback() external payable virtual { _fallback(); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {Context} from "../utils/Context.sol"; /** * @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); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @dev Collection of common custom errors used in multiple contracts * * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. * It is recommended to avoid relying on the error API for critical functionality. */ library Errors { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error InsufficientBalance(uint256 balance, uint256 needed); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedCall(); /** * @dev The deployment failed. */ error FailedDeployment(); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } }
{ "remappings": [ "cross-chain-swap/=lib/cross-chain-swap/", "evm-helpers/=lib/evm-helpers/", "@1inch/limit-order-protocol-contract/=lib/limit-order-protocol/", "limit-order-protocol/=lib/limit-order-protocol/", "solidity-utils/=lib/solidity-utils/", "@1inch/solidity-utils/=lib/solidity-utils/", "limit-order-settlement/=lib/cross-chain-swap/lib/limit-order-settlement/", "@1inch/limit-order-settlement/=lib/cross-chain-swap/lib/limit-order-settlement/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "ds-test/=lib/cross-chain-swap/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "murky/=lib/cross-chain-swap/lib/murky/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 1000000 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "shanghai", "viaIR": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"payable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"ERC1967InvalidAdmin","type":"error"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"ERC1967InvalidImplementation","type":"error"},{"inputs":[],"name":"ERC1967NonPayable","type":"error"},{"inputs":[],"name":"FailedCall","type":"error"},{"inputs":[],"name":"ProxyDeniedAdminAccess","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"}]
Contract Creation Code
604060a08152610e418038038061001581610278565b9283398101906060818303126102745761002e8161029d565b60209161003c83820161029d565b8582015190916001600160401b039190828211610274570185601f820112156102745780519061007361006e836102b1565b610278565b968288528683830101116102745785905f5b8381106102605750505f9187010152823b15610240577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b038581166001600160a01b0319928316811790935588519097919591927fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511561022357505f80838861013e95519101845af43d1561021b573d9161013061006e846102b1565b9283523d5f8985013e6102cc565b505b85519161068291828401908111848210176102075786849287946107bf85391681520301905ff080156101fd57831691826080527f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f857fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103958587549483519286168352820152a182156101e657161790555161048f9081610330823960805181601c0152f35b8451633173bdd160e11b81525f6004820152602490fd5b84513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b6060916102cc565b915050346102315750610140565b63b398979f60e01b8152600490fd5b8551634c9c8ce360e01b81526001600160a01b0384166004820152602490fd5b818101830151898201840152879201610085565b5f80fd5b6040519190601f01601f191682016001600160401b0381118382101761020757604052565b51906001600160a01b038216820361027457565b6001600160401b03811161020757601f01601f191660200190565b906102f357508051156102e157805190602001fd5b60405163d6bda27560e01b8152600490fd5b81511580610326575b610304575090565b604051639996b31560e01b81526001600160a01b039091166004820152602490fd5b50803b156102fc56fe608060405273ffffffffffffffffffffffffffffffffffffffff337f00000000000000000000000000000000000000000000000000000000000000008216036100c0575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100b65760046040517fd2b576ec000000000000000000000000000000000000000000000000000000008152fd5b6100be6101b0565b005b5f80917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156100fc573d5ff35b3d5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761017157604052565b610100565b67ffffffffffffffff811161017157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b366004116102635760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102635760043573ffffffffffffffffffffffffffffffffffffffff8116809103610263576024359067ffffffffffffffff821161026357366023830112156102635781600401359061023861023383610176565b61012d565b918083523660248286010111610263576020815f92602461026197018387013784010152610267565b565b5f80fd5b90813b156103395773ffffffffffffffffffffffffffffffffffffffff82167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156103065761030391610380565b50565b50503461030f57565b60046040517fb398979f000000000000000000000000000000000000000000000000000000008152fd5b60248273ffffffffffffffffffffffffffffffffffffffff604051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352166004820152fd5b5f806103b293602081519101845af43d156103b5573d916103a361023384610176565b9283523d5f602085013e6103b9565b90565b6060915b906103f857508051156103ce57805190602001fd5b60046040517fd6bda275000000000000000000000000000000000000000000000000000000008152fd5b81511580610450575b610409575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b1561040156fea26469706673582212209c7d45ec6c53b7895c5e3dcc5295a5e33ca50a3b90b82d24ac2010263cd36c0864736f6c634300081700336080346100b957601f61068238819003918201601f19168301916001600160401b038311848410176100bd578084926020946040528339810103126100b957516001600160a01b0390818116908190036100b95780156100a1575f80546001600160a01b03198116831782556040519316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a36105b090816100d28239f35b604051631e4fbdf760e01b81525f6004820152602490fd5b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe604060808152600480361015610013575f80fd5b5f915f3560e01c8063715018a6146104345780638da5cb5b146103e35780639623609d146101fe578063ad3cb1cc1461013e5763f2fde38b14610054575f80fd5b3461013a5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261013a5781359173ffffffffffffffffffffffffffffffffffffffff91828416809403610136576100ae61052a565b83156101075750505f54827fffffffffffffffffffffffff00000000000000000000000000000000000000008216175f55167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a380f35b908460249251917f1e4fbdf7000000000000000000000000000000000000000000000000000000008352820152fd5b5f80fd5b8280fd5b5082346101fb57807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101fb575080519080820182811067ffffffffffffffff8211176101cf576101cb93508152600582527f352e302e300000000000000000000000000000000000000000000000000000006020830152519182916020835260208301906104ce565b0390f35b6041847f4e487b71000000000000000000000000000000000000000000000000000000005f525260245ffd5b80fd5b5060607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365781359173ffffffffffffffffffffffffffffffffffffffff908184168094036101365760249182359081168091036101365767ffffffffffffffff90604435828111610136573660238201121561013657808401358381116103b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe091875192603f81601f850116011683018381108682111761038d5788528183523687838301011161013657815f92886020930183860137830101526102e961052a565b863b1561013657610334965f9287518099819482937f4f1ef286000000000000000000000000000000000000000000000000000000008452898401528a8a84015260448301906104ce565b039134905af1801561038357610348578580f35b909192938095501161035957505052005b6041907f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b84513d5f823e3d90fd5b876041887f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b856041867f4e487b71000000000000000000000000000000000000000000000000000000005f52525ffd5b5034610136575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365760209073ffffffffffffffffffffffffffffffffffffffff5f54169051908152f35b34610136575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101365761046a61052a565b5f73ffffffffffffffffffffffffffffffffffffffff81547fffffffffffffffffffffffff000000000000000000000000000000000000000081168355167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b91908251928382525f5b8481106105165750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f845f6020809697860101520116010190565b6020818301810151848301820152016104d8565b73ffffffffffffffffffffffffffffffffffffffff5f5416330361054a57565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fdfea2646970667358221220f6ac857d26b247634500bc7ac7ff5a5f181e9e86f85f598a85d5b52ff9366fd064736f6c634300081700330000000000000000000000001d68da0290df4b77a7aafbda6729351dbe4d6fa700000000000000000000000011799622f4d98a24514011e8527b969f7488ef4700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405273ffffffffffffffffffffffffffffffffffffffff337f0000000000000000000000003305184a01049d7c1e850c6be565bc447212e9768216036100c0575f357fffffffff00000000000000000000000000000000000000000000000000000000167f4f1ef28600000000000000000000000000000000000000000000000000000000146100b65760046040517fd2b576ec000000000000000000000000000000000000000000000000000000008152fd5b6100be6101b0565b005b5f80917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e156100fc573d5ff35b3d5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051930116820182811067ffffffffffffffff82111761017157604052565b610100565b67ffffffffffffffff811161017157601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b366004116102635760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126102635760043573ffffffffffffffffffffffffffffffffffffffff8116809103610263576024359067ffffffffffffffff821161026357366023830112156102635781600401359061023861023383610176565b61012d565b918083523660248286010111610263576020815f92602461026197018387013784010152610267565b565b5f80fd5b90813b156103395773ffffffffffffffffffffffffffffffffffffffff82167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc817fffffffffffffffffffffffff00000000000000000000000000000000000000008254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28051156103065761030391610380565b50565b50503461030f57565b60046040517fb398979f000000000000000000000000000000000000000000000000000000008152fd5b60248273ffffffffffffffffffffffffffffffffffffffff604051917f4c9c8ce3000000000000000000000000000000000000000000000000000000008352166004820152fd5b5f806103b293602081519101845af43d156103b5573d916103a361023384610176565b9283523d5f602085013e6103b9565b90565b6060915b906103f857508051156103ce57805190602001fd5b60046040517fd6bda275000000000000000000000000000000000000000000000000000000008152fd5b81511580610450575b610409575090565b60249073ffffffffffffffffffffffffffffffffffffffff604051917f9996b315000000000000000000000000000000000000000000000000000000008352166004820152fd5b50803b1561040156fea26469706673582212209c7d45ec6c53b7895c5e3dcc5295a5e33ca50a3b90b82d24ac2010263cd36c0864736f6c63430008170033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001d68da0290df4b77a7aafbda6729351dbe4d6fa700000000000000000000000011799622f4d98a24514011e8527b969f7488ef4700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _logic (address): 0x1D68dA0290dF4b77a7AafbDa6729351DBe4D6FA7
Arg [1] : initialOwner (address): 0x11799622F4D98A24514011E8527B969f7488eF47
Arg [2] : _data (bytes): 0x
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000001d68da0290df4b77a7aafbda6729351dbe4d6fa7
Arg [1] : 00000000000000000000000011799622f4d98a24514011e8527b969f7488ef47
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 15.60% | $0.999448 | 310,985.8023 | $310,814.14 | |
ETH | Ether (ETH) | 9.59% | $3,422.3 | 55.8331 | $191,077.92 |
ETH | 5.97% | $0.998002 | 119,211.4316 | $118,973.25 | |
ETH | 0.06% | $0.324564 | 3,540.0382 | $1,148.97 | |
ETH | 0.02% | $0.999155 | 426.4114 | $426.05 | |
ETH | 0.01% | $69.11 | 4.3054 | $297.55 | |
ETH | <0.01% | $97,559 | 0.00200847 | $195.94 | |
ETH | <0.01% | $22.97 | 7.6631 | $176.02 | |
ETH | <0.01% | $1.32 | 95.5457 | $126.12 | |
ETH | <0.01% | $0.965419 | 124.6691 | $120.36 | |
ETH | <0.01% | $3,422.3 | 0.0278 | $95.03 | |
ETH | <0.01% | $97,530 | 0.00084725 | $82.63 | |
ETH | <0.01% | $0.000022 | 2,367,486.3622 | $51.73 | |
ETH | <0.01% | $1.78 | 23.689 | $42.17 | |
ETH | <0.01% | $7.5 | 5.1063 | $38.3 | |
ETH | <0.01% | $1.32 | 25.4757 | $33.63 | |
ETH | <0.01% | $0.165565 | 191.7171 | $31.74 | |
ETH | <0.01% | $12.97 | 2.343 | $30.39 | |
ETH | <0.01% | $3,622.68 | 0.0077883 | $28.21 | |
ETH | <0.01% | $1.13 | 24.6069 | $27.81 | |
ETH | <0.01% | $1.42 | 19.4087 | $27.56 | |
ETH | <0.01% | $0.434944 | 58.1747 | $25.3 | |
ETH | <0.01% | $2.98 | 8.345 | $24.83 | |
ETH | <0.01% | $671.43 | 0.0324 | $21.78 | |
ETH | <0.01% | $4,074.19 | 0.00443602 | $18.07 | |
ETH | <0.01% | $0.035676 | 382.3682 | $13.64 | |
ETH | <0.01% | $1.62 | 7.4515 | $12.07 | |
ETH | <0.01% | $1.72 | 6.5453 | $11.27 | |
ETH | <0.01% | $2,607.97 | 0.00387407 | $10.1 | |
ETH | <0.01% | $0.729701 | 13.15 | $9.6 | |
ETH | <0.01% | $8,579.36 | 0.00104238 | $8.94 | |
ETH | <0.01% | $0.386249 | 22.1394 | $8.55 | |
ETH | <0.01% | $97,609 | 0.00008667 | $8.46 | |
ETH | <0.01% | $1.52 | 5.0608 | $7.69 | |
ETH | <0.01% | $0.995412 | 7.2774 | $7.24 | |
ETH | <0.01% | $0.034224 | 208.9522 | $7.15 | |
ETH | <0.01% | $81.47 | 0.087 | $7.09 | |
ETH | <0.01% | $196.14 | 0.0325 | $6.38 | |
ETH | <0.01% | $0.00448 | 1,201.0391 | $5.38 | |
ETH | <0.01% | $0.994379 | 4.9766 | $4.95 | |
ETH | <0.01% | $0.013997 | 343.0621 | $4.8 | |
ETH | <0.01% | $22.06 | 0.2128 | $4.7 | |
ETH | <0.01% | $0.491178 | 9.4152 | $4.62 | |
ETH | <0.01% | $0.000017 | 257,237.0032 | $4.46 | |
ETH | <0.01% | $7.31 | 0.5602 | $4.1 | |
ETH | <0.01% | $0.854535 | 4.6252 | $3.95 | |
ETH | <0.01% | $0.392842 | 8.7784 | $3.45 | |
ETH | <0.01% | $16.59 | 0.2038 | $3.38 | |
ETH | <0.01% | $0.021784 | 138.9585 | $3.03 | |
ETH | <0.01% | $1.04 | 2.4025 | $2.49 | |
ETH | <0.01% | $0.077135 | 30.0498 | $2.32 | |
ETH | <0.01% | $0.027038 | 70.4778 | $1.91 | |
ETH | <0.01% | $0.494044 | 3.8418 | $1.9 | |
ETH | <0.01% | $0.2731 | 6.1749 | $1.69 | |
ETH | <0.01% | $0.963523 | 1.6839 | $1.62 | |
ETH | <0.01% | $1,652.3 | 0.00096956 | $1.6 | |
ETH | <0.01% | $1.18 | 1.0816 | $1.28 | |
ETH | <0.01% | $0.22406 | 5.4357 | $1.22 | |
ETH | <0.01% | $1.09 | 0.9534 | $1.04 | |
ETH | <0.01% | $4.89 | 0.1996 | $0.9759 | |
ETH | <0.01% | $0.020332 | 45.2884 | $0.9208 | |
ETH | <0.01% | $0.274522 | 3.2893 | $0.9029 | |
ETH | <0.01% | $0.998158 | 0.8811 | $0.8794 | |
ETH | <0.01% | $0.002381 | 295.8258 | $0.7042 | |
ETH | <0.01% | $0.070879 | 8.37 | $0.5932 | |
ETH | <0.01% | $2.65 | 0.2178 | $0.5773 | |
ETH | <0.01% | $0.788507 | 0.7185 | $0.5665 | |
ETH | <0.01% | $2.68 | 0.1975 | $0.5294 | |
ETH | <0.01% | $0.460792 | 1.0574 | $0.4872 | |
ETH | <0.01% | $316.35 | 0.00152498 | $0.4824 | |
ETH | <0.01% | $0.267345 | 1.7711 | $0.4735 | |
ETH | <0.01% | $40.82 | 0.011 | $0.4504 | |
ETH | <0.01% | $1.01 | 0.3877 | $0.3907 | |
ETH | <0.01% | $1.56 | 0.2368 | $0.3694 | |
ETH | <0.01% | $0.089357 | 4.0865 | $0.3651 | |
ETH | <0.01% | $0.851797 | 0.4279 | $0.3644 | |
ETH | <0.01% | $453.47 | 0.00074616 | $0.3383 | |
ETH | <0.01% | $0.004844 | 69.2901 | $0.3356 | |
ETH | <0.01% | $0.99638 | 0.3344 | $0.3331 | |
ETH | <0.01% | $0.005288 | 60.0415 | $0.3174 | |
ETH | <0.01% | $0.700577 | 0.4507 | $0.3157 | |
ETH | <0.01% | $0.368406 | 0.8165 | $0.3007 | |
ETH | <0.01% | $1.53 | 0.167 | $0.2551 | |
ETH | <0.01% | $1.19 | 0.2057 | $0.2448 | |
ETH | <0.01% | $17.76 | 0.0125 | $0.2224 | |
ETH | <0.01% | $0.026014 | 8.3738 | $0.2178 | |
ETH | <0.01% | $5.45 | 0.0397 | $0.2166 | |
ETH | <0.01% | $5.21 | 0.04 | $0.2083 | |
ETH | <0.01% | $0.013209 | 14.8338 | $0.1959 | |
ETH | <0.01% | $0.322014 | 0.5962 | $0.1919 | |
ETH | <0.01% | $5.27 | 0.0299 | $0.1573 | |
ETH | <0.01% | $141.06 | 0.00109447 | $0.1543 | |
ETH | <0.01% | $0.501082 | 0.3071 | $0.1538 | |
ETH | <0.01% | $3,841.64 | 0.0000376 | $0.1444 | |
ETH | <0.01% | $0.048904 | 2.8108 | $0.1374 | |
ETH | <0.01% | $0.479391 | 0.265 | $0.127 | |
ETH | <0.01% | $42.21 | 0.00249355 | $0.1052 | |
ETH | <0.01% | $0.092263 | 1.1289 | $0.1041 | |
OP | 6.93% | $0.999558 | 138,180.9644 | $138,119.89 | |
OP | 5.80% | $3,422.9 | 33.7748 | $115,607.64 | |
OP | 3.90% | $0.998702 | 77,813.2822 | $77,712.28 | |
OP | <0.01% | $97,418 | 0.00078977 | $76.94 | |
OP | <0.01% | $0.993269 | 47.8672 | $47.54 | |
OP | <0.01% | $22.97 | 0.6985 | $16.05 | |
OP | <0.01% | $0.221721 | 64.8104 | $14.37 | |
OP | <0.01% | $1.93 | 4.7927 | $9.24 | |
OP | <0.01% | $4,075.94 | 0.00213317 | $8.69 | |
OP | <0.01% | $316.11 | 0.0204 | $6.43 | |
OP | <0.01% | $0.999558 | 4.4791 | $4.48 | |
OP | <0.01% | $0.99932 | 3.2774 | $3.28 | |
OP | <0.01% | $2.21 | 0.758 | $1.67 | |
OP | <0.01% | $0.198298 | 5.4261 | $1.08 | |
OP | <0.01% | $0.999688 | 1.0135 | $1.01 | |
OP | <0.01% | $2.16 | 0.3552 | $0.7671 | |
OP | <0.01% | $343.02 | 0.00211579 | $0.7257 | |
OP | <0.01% | $3,435.87 | 0.0001666 | $0.5724 | |
OP | <0.01% | $3,391.46 | 0.00014403 | $0.4884 | |
OP | <0.01% | $0.987248 | 0.249 | $0.2458 | |
BASE | 7.36% | $0.999558 | 146,781.011 | $146,716.13 | |
BASE | 6.12% | $3,422.85 | 35.6289 | $121,952.21 | |
BASE | <0.01% | $4,075.94 | 0.0296 | $120.54 | |
BASE | <0.01% | $3,714.37 | 0.0186 | $68.99 | |
BASE | <0.01% | $97,741 | 0.00038906 | $38.03 | |
BASE | <0.01% | $3,435.87 | 0.00980414 | $33.69 | |
BASE | <0.01% | $0.999901 | 15.3675 | $15.37 | |
BASE | <0.01% | $2.3 | 6.4614 | $14.86 | |
BASE | <0.01% | $1.56 | 7.3819 | $11.52 | |
BASE | <0.01% | $0.022182 | 265.9535 | $5.9 | |
BASE | <0.01% | $3,441.84 | 0.00113959 | $3.92 | |
BASE | <0.01% | $4 | 0.9 | $3.6 | |
BASE | <0.01% | $3,842.54 | 0.00078795 | $3.03 | |
BASE | <0.01% | $5.46 | 0.2659 | $1.45 | |
BASE | <0.01% | $0.997729 | 1.3895 | $1.39 | |
BASE | <0.01% | $0.022248 | 58.3392 | $1.3 | |
BASE | <0.01% | $0.386167 | 2.9199 | $1.13 | |
BASE | <0.01% | $0.269517 | 1.7006 | $0.4583 | |
BASE | <0.01% | $0.018452 | 24.5868 | $0.4536 | |
BASE | <0.01% | $0.997986 | 0.334 | $0.3333 | |
BASE | <0.01% | $11 | 0.0252 | $0.2767 | |
POL | 4.87% | $0.999558 | 97,025.0176 | $96,982.13 | |
POL | 4.35% | $0.998702 | 86,799.7697 | $86,687.1 | |
POL | 3.25% | $0.478097 | 135,518.8881 | $64,791.22 | |
POL | 0.01% | $97,418 | 0.002069 | $201.56 | |
POL | <0.01% | $1.62 | 26.6458 | $43.17 | |
POL | <0.01% | $3,445.96 | 0.00824856 | $28.42 | |
POL | <0.01% | $195.31 | 0.0866 | $16.91 | |
POL | <0.01% | $7.32 | 1.4903 | $10.91 | |
POL | <0.01% | $0.999558 | 5.7951 | $5.79 | |
POL | <0.01% | $22.97 | 0.2279 | $5.23 | |
POL | <0.01% | $0.99932 | 4.2882 | $4.29 | |
POL | <0.01% | $0.480271 | 5.3091 | $2.55 | |
POL | <0.01% | $0.043396 | 50.0436 | $2.17 | |
POL | <0.01% | $316.11 | 0.00634767 | $2.01 | |
POL | <0.01% | $4,075.94 | 0.00043556 | $1.78 | |
POL | <0.01% | $0.558202 | 1.9203 | $1.07 | |
POL | <0.01% | $0.004863 | 198.008 | $0.9629 | |
POL | <0.01% | $1,652.8 | 0.0004946 | $0.8174 | |
POL | <0.01% | $12.96 | 0.0514 | $0.666 | |
POL | <0.01% | $0.486964 | 1.3144 | $0.64 | |
POL | <0.01% | <$0.000001 | 47,799,876.9304 | $0.5879 | |
POL | <0.01% | $0.732056 | 0.7439 | $0.5446 | |
POL | <0.01% | $7.51 | 0.072 | $0.5405 | |
POL | <0.01% | $0.035917 | 13.5553 | $0.4868 | |
POL | <0.01% | $39.22 | 0.0113 | $0.4433 | |
POL | <0.01% | $1.32 | 0.319 | $0.421 | |
POL | <0.01% | $0.852183 | 0.4738 | $0.4037 | |
POL | <0.01% | $2.97 | 0.117 | $0.3475 | |
POL | <0.01% | $0.181426 | 1.7657 | $0.3203 | |
POL | <0.01% | $0.999688 | 0.1724 | $0.1723 | |
POL | <0.01% | $2.65 | 0.0628 | $0.1664 | |
POL | <0.01% | $0.972326 | 0.1605 | $0.156 | |
POL | <0.01% | $0.00555 | 21.51 | $0.1193 | |
POL | <0.01% | $1.52 | 0.0664 | $0.1009 | |
ARB | 6.25% | $0.999597 | 124,567.8998 | $124,517.7 | |
ARB | 2.64% | $3,423.46 | 15.3896 | $52,685.62 | |
ARB | 1.73% | $0.998384 | 34,619.6499 | $34,563.7 | |
ARB | 0.01% | $3,435.19 | 0.0815 | $280.08 | |
ARB | <0.01% | $97,548 | 0.0008299 | $80.96 | |
ARB | <0.01% | $4,075.12 | 0.00503616 | $20.52 | |
ARB | <0.01% | $28.1 | 0.4104 | $11.53 | |
ARB | <0.01% | $22.98 | 0.3754 | $8.63 | |
ARB | <0.01% | $0.999597 | 8.2474 | $8.24 | |
ARB | <0.01% | $0.999063 | 7.8187 | $7.81 | |
ARB | <0.01% | $12.97 | 0.4403 | $5.71 | |
ARB | <0.01% | $0.996558 | 5.6682 | $5.65 | |
ARB | <0.01% | $0.852822 | 5.2507 | $4.48 | |
ARB | <0.01% | $3,433.39 | 0.00112066 | $3.85 | |
ARB | <0.01% | $4.89 | 0.6354 | $3.11 | |
ARB | <0.01% | $0.788858 | 3.4972 | $2.76 | |
ARB | <0.01% | $0.04476 | 56.2309 | $2.52 | |
ARB | <0.01% | $1.62 | 1.1644 | $1.89 | |
ARB | <0.01% | $3,842.38 | 0.000451 | $1.73 | |
ARB | <0.01% | $0.998645 | 1.2897 | $1.29 | |
ARB | <0.01% | $0.428982 | 1.7427 | $0.7476 | |
ARB | <0.01% | $0.999141 | 0.5233 | $0.5228 | |
ARB | <0.01% | $2.53 | 0.1888 | $0.4775 | |
ARB | <0.01% | $0.213848 | 1.8885 | $0.4038 | |
ARB | <0.01% | $0.097178 | 3.5406 | $0.344 | |
ARB | <0.01% | $0.269481 | 1.1814 | $0.3183 | |
ARB | <0.01% | $3,534.05 | 0.00006971 | $0.2463 | |
ARB | <0.01% | $0.070856 | 3.1758 | $0.225 | |
ARB | <0.01% | $1.52 | 0.1418 | $0.2154 | |
ARB | <0.01% | $97,403 | 0.00000147 | $0.1431 | |
ARB | <0.01% | $12.02 | 0.0109 | $0.1304 | |
ARB | <0.01% | $0.294765 | 0.3721 | $0.1096 | |
ARB | <0.01% | $0.238997 | 0.4551 | $0.1087 | |
AVAX | 3.61% | $0.999997 | 72,026.6904 | $72,026.46 | |
AVAX | 1.94% | $38.95 | 993.3073 | $38,687.62 | |
AVAX | <0.01% | $0.998955 | 125.7601 | $125.63 | |
AVAX | <0.01% | $3,434.85 | 0.0133 | $45.82 | |
AVAX | <0.01% | $0.998955 | 40.0458 | $40 | |
AVAX | <0.01% | $97,856 | 0.00038721 | $37.89 | |
AVAX | <0.01% | $97,662.22 | 0.00030044 | $29.34 | |
AVAX | <0.01% | $0.411529 | 45.6654 | $18.79 | |
AVAX | <0.01% | $39.23 | 0.3172 | $12.44 | |
AVAX | <0.01% | $46.27 | 0.1824 | $8.44 | |
AVAX | <0.01% | $316.35 | 0.0223 | $7.07 | |
AVAX | <0.01% | $0.999924 | 1.4457 | $1.45 | |
AVAX | <0.01% | $0.999997 | 0.7448 | $0.7447 | |
AVAX | <0.01% | $2.68 | 0.1644 | $0.4412 | |
AVAX | <0.01% | $0.383101 | 1.0882 | $0.4169 | |
AVAX | <0.01% | $5.45 | 0.0515 | $0.2804 | |
AVAX | <0.01% | $1.04 | 0.2703 | $0.2799 | |
AVAX | <0.01% | <$0.000001 | 7,373,473.2595 | $0.2175 | |
AVAX | <0.01% | $0.547272 | 0.3535 | $0.1934 | |
AVAX | <0.01% | $22.97 | 0.00518344 | $0.119 | |
AVAX | <0.01% | $0.294659 | 0.3445 | $0.1015 | |
BSC | 2.41% | $1 | 48,089.0756 | $48,089.63 | |
BSC | 1.31% | $668.9 | 39.054 | $26,123.26 | |
BSC | 1.26% | $0.998471 | 25,191.0938 | $25,152.58 | |
BSC | <0.01% | $0.005153 | 20,674.1537 | $106.53 | |
BSC | <0.01% | $670.97 | 0.0479 | $32.15 | |
BSC | <0.01% | $97,854.13 | 0.00031879 | $31.19 | |
BSC | <0.01% | $0.0197 | 1,242.6652 | $24.48 | |
BSC | <0.01% | $2.26 | 9.3265 | $21.11 | |
BSC | <0.01% | $0.892824 | 22.7324 | $20.3 | |
BSC | <0.01% | $1.19 | 11.15 | $13.27 | |
BSC | <0.01% | $100.42 | 0.0829 | $8.32 | |
BSC | <0.01% | $3,431.07 | 0.00237801 | $8.16 | |
BSC | <0.01% | $0.999901 | 7.127 | $7.13 | |
BSC | <0.01% | $1.01 | 5.625 | $5.67 | |
BSC | <0.01% | $0.318003 | 16.0947 | $5.12 | |
BSC | <0.01% | $0.09507 | 53.4164 | $5.08 | |
BSC | <0.01% | $5.26 | 0.7811 | $4.11 | |
BSC | <0.01% | $7.04 | 0.57 | $4.01 | |
BSC | <0.01% | $5.15 | 0.6354 | $3.27 | |
BSC | <0.01% | $195.98 | 0.016 | $3.13 | |
BSC | <0.01% | $5.21 | 0.5655 | $2.95 | |
BSC | <0.01% | $3.97 | 0.7086 | $2.81 | |
BSC | <0.01% | $1 | 2.2934 | $2.29 | |
BSC | <0.01% | $0.479945 | 4.0274 | $1.93 | |
BSC | <0.01% | $0.386012 | 4.9934 | $1.93 | |
BSC | <0.01% | $317.37 | 0.00433964 | $1.38 | |
BSC | <0.01% | $0.742098 | 1.8503 | $1.37 | |
BSC | <0.01% | $0.035567 | 28.7288 | $1.02 | |
BSC | <0.01% | $1.3 | 0.7766 | $1.01 | |
BSC | <0.01% | $2.53 | 0.302 | $0.764 | |
BSC | <0.01% | $22.07 | 0.0136 | $0.2994 | |
BSC | <0.01% | $5.46 | 0.0533 | $0.2912 | |
BSC | <0.01% | $0.346627 | 0.7658 | $0.2654 | |
BSC | <0.01% | $6.9 | 0.0381 | $0.2626 | |
BSC | <0.01% | $0.149497 | 1.6613 | $0.2483 | |
BSC | <0.01% | $0.833298 | 0.2482 | $0.2068 | |
BSC | <0.01% | $1.46 | 0.1256 | $0.1833 | |
BSC | <0.01% | $0.629013 | 0.272 | $0.1711 | |
BSC | <0.01% | $442.74 | 0.00036381 | $0.161 | |
BSC | <0.01% | $0.004851 | 30.4328 | $0.1476 | |
BSC | <0.01% | $22.94 | 0.00623022 | $0.1429 | |
BSC | <0.01% | $0.008336 | 16.3808 | $0.1365 | |
BSC | <0.01% | $0.048594 | 2.6859 | $0.1305 | |
BSC | <0.01% | $0.226594 | 0.5627 | $0.1275 | |
BSC | <0.01% | $1.46 | 0.0869 | $0.1268 | |
BSC | <0.01% | $0.199736 | 0.6166 | $0.1231 | |
BSC | <0.01% | $12.98 | 0.00884446 | $0.1148 | |
BSC | <0.01% | $0.00037 | 308.3021 | $0.1139 | |
GNO | 3.14% | $0.999366 | 62,703.2578 | $62,663.5 | |
GNO | 1.70% | $0.999735 | 33,812.3892 | $33,803.44 | |
GNO | <0.01% | $1.04 | 9.1987 | $9.53 | |
GNO | <0.01% | $0.997744 | 4.6272 | $4.62 | |
GNO | <0.01% | $0.658886 | 6.6089 | $4.35 | |
GNO | <0.01% | $0.998948 | 1.5469 | $1.55 | |
GNO | <0.01% | $1.13 | 0.7895 | $0.8921 | |
GNO | <0.01% | $0.999735 | 0.6295 | $0.6293 | |
GNO | <0.01% | $251.43 | 0.00236907 | $0.5956 | |
GNO | <0.01% | $3,436.91 | 0.00014697 | $0.5051 | |
GNO | <0.01% | $97,447 | 0.00000205 | $0.1997 |
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.