More Info
Private Name Tags
ContractCreator
Latest 21 from a total of 21 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Gas Transfer | 501639 | 282 days ago | IN | 0.00129322 ETH | 0.00000024 | ||||
Gas Transfer | 490097 | 282 days ago | IN | 0.00007299 ETH | 0.00028688 | ||||
Gas Transfer | 478844 | 282 days ago | IN | 0.00080444 ETH | 0.00038964 | ||||
Gas Transfer | 452634 | 283 days ago | IN | 0.00087423 ETH | 0.00000029 | ||||
Gas Transfer | 428794 | 283 days ago | IN | 0.02481912 ETH | 0.00038967 | ||||
Gas Transfer | 396365 | 284 days ago | IN | 0.00858348 ETH | 0.00038271 | ||||
Gas Transfer | 394848 | 284 days ago | IN | 0.00737807 ETH | 0.00044454 | ||||
Gas Transfer | 335922 | 285 days ago | IN | 0.00303464 ETH | 0.00003922 | ||||
Gas Transfer | 334063 | 285 days ago | IN | 0.03624223 ETH | 0.00000031 | ||||
Gas Transfer | 320325 | 286 days ago | IN | 0.00008957 ETH | 0.00000028 | ||||
Gas Transfer | 310878 | 286 days ago | IN | 0.00152197 ETH | 0.0004343 | ||||
Gas Transfer | 308405 | 286 days ago | IN | 0.00039421 ETH | 0.0004302 | ||||
Gas Transfer | 287702 | 287 days ago | IN | 0.00044089 ETH | 0.00003852 | ||||
Gas Transfer | 287261 | 287 days ago | IN | 0.00048603 ETH | 0.00043399 | ||||
Gas Transfer | 281098 | 287 days ago | IN | 0.0362274 ETH | 0.0003786 | ||||
Gas Transfer | 274483 | 287 days ago | IN | 0.0062275 ETH | 0.00000038 | ||||
Gas Transfer | 266885 | 287 days ago | IN | 0.00143045 ETH | 0.00000025 | ||||
Gas Transfer | 266841 | 287 days ago | IN | 0.00318094 ETH | 0.00000028 | ||||
Gas Transfer | 260818 | 287 days ago | IN | 0.00595044 ETH | 0.00000028 | ||||
Gas Transfer | 250733 | 287 days ago | IN | 0.00034789 ETH | 0.0002866 | ||||
Gas Transfer | 236754 | 288 days ago | IN | 0.00072934 ETH | 0.00044092 |
Latest 21 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
501639 | 282 days ago | 0.00125357 ETH | ||||
490097 | 282 days ago | 0.00003327 ETH | ||||
478844 | 282 days ago | 0.0007652 ETH | ||||
452634 | 283 days ago | 0.00083501 ETH | ||||
428794 | 283 days ago | 0.02477682 ETH | ||||
396365 | 284 days ago | 0.00854221 ETH | ||||
394848 | 284 days ago | 0.00723291 ETH | ||||
335922 | 285 days ago | 0.00299089 ETH | ||||
334063 | 285 days ago | 0.0361984 ETH | ||||
320325 | 286 days ago | 0.00004566 ETH | ||||
310878 | 286 days ago | 0.00147829 ETH | ||||
308405 | 286 days ago | 0.00035037 ETH | ||||
287702 | 287 days ago | 0.00039707 ETH | ||||
287261 | 287 days ago | 0.00044221 ETH | ||||
281098 | 287 days ago | 0.03618358 ETH | ||||
274483 | 287 days ago | 0.00618358 ETH | ||||
266885 | 287 days ago | 0.00138682 ETH | ||||
266841 | 287 days ago | 0.00313732 ETH | ||||
260818 | 287 days ago | 0.0059067 ETH | ||||
250733 | 287 days ago | 0.00030358 ETH | ||||
236754 | 288 days ago | 0.00071699 ETH |
Loading...
Loading
Contract Name:
InterportLZGasTransfer
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; import { ILayerZeroEndpoint } from '../crosschain/layerzero/interfaces/ILayerZeroEndpoint.sol'; import { ILayerZeroRelayer } from '../crosschain/layerzero/interfaces/ILayerZeroRelayer.sol'; import { ILayerZeroResumeReceive } from '../crosschain/layerzero/interfaces/ILayerZeroResumeReceive.sol'; import { OwnerManageable } from '../access/OwnerManageable.sol'; import { SystemVersionId } from '../SystemVersionId.sol'; import '../helpers/AddressHelper.sol' as AddressHelper; /** * @title InterportLZGasTransfer * @notice Gas transfer contract */ contract InterportLZGasTransfer is SystemVersionId, OwnerManageable { /** * @notice Gas transfer parameter data structure * @param lzChainId LayerZero-specific chain identifier * @param recipient The address of the gas transfer recipient * @param amount Gas transfer amount * @param settings Gas transfer settings */ struct GasTransferParameters { uint16 lzChainId; address recipient; uint256 amount; bytes settings; } /** * @dev The address of the cross-chain endpoint */ address public lzEndpoint; /** * @dev The address of the cross-chain relayer */ address public lzRelayer; uint16 private constant LZ_ADAPTER_PARAMETERS_VERSION = 2; bytes private constant LZ_PAYLOAD_NONE = ''; uint256 private minDstGas; uint256 private minReserve; /** * @notice Emitted when the cross-chain endpoint contract reference is set * @param endpoint The cross-chain endpoint contract address */ event SetEndpoint(address indexed endpoint); /** * @notice Emitted when the cross-chain relayer contract reference is set * @param relayer The cross-chain relayer contract address */ event SetRelayer(address indexed relayer); /** * @notice Emitted when the parameter validation results in an error */ error ValidationError(); /** * @notice Initializes the InterportLZGasTransfer contract * @param _lzEndpoint The cross-chain endpoint contract address * @param _lzRelayer The cross-chain relayer contract address * @param _validation The initial validation data * @param _owner The address of the initial owner of the contract */ constructor(address _lzEndpoint, address _lzRelayer, bytes memory _validation, address _owner) { _setEndpoint(_lzEndpoint); _setRelayer(_lzRelayer); _setValidation(_validation); _initOwner(_owner); } /** * @notice The standard "receive" function */ receive() external payable {} /** * @notice Performs a gas transfer action * @param _parameters Gas transfer parameters */ function gasTransfer( GasTransferParameters calldata _parameters ) external payable whenNotPaused { (uint256 lzValue, address dstApp, bytes memory lzAdapterParameters) = _getEndpointData( _parameters, true ); ILayerZeroEndpoint(lzEndpoint).send{ value: lzValue }( _parameters.lzChainId, abi.encodePacked(dstApp, address(this)), LZ_PAYLOAD_NONE, payable(this), address(0), lzAdapterParameters ); } /** * @notice Receives cross-chain messages * @dev The function is called by the cross-chain endpoint */ function lzReceive(uint16, bytes calldata, uint64, bytes calldata) external {} /** * @notice Unblocks the cross-chain message queue * @param _lzSourceChainId The source chain identifier (LayerZero-specific) * @param _sourceApp The source chain app address */ function resumeReceive(uint16 _lzSourceChainId, address _sourceApp) external { ILayerZeroResumeReceive(lzEndpoint).forceResumeReceive( _lzSourceChainId, abi.encodePacked(_sourceApp, address(this)) ); } /** * @notice Sets the cross-chain endpoint contract reference * @param _lzEndpoint The cross-chain endpoint contract address */ function setEndpoint(address _lzEndpoint) external onlyOwner { _setEndpoint(_lzEndpoint); } /** * @notice Sets the cross-chain relayer contract reference * @param _lzRelayer The cross-chain relayer contract address */ function setRelayer(address _lzRelayer) external onlyOwner { _setRelayer(_lzRelayer); } /** * @notice Sets the validation data * @param _validation The validation data */ function setValidation(bytes memory _validation) external onlyOwner { _setValidation(_validation); } /** * @notice Source chain tx value estimation * @param _parameters Gas transfer parameters * @return lzValue The source chain tx value */ function estimateSourceValue( GasTransferParameters calldata _parameters ) external view returns (uint256 lzValue) { (lzValue, , ) = _getEndpointData(_parameters, false); } /** * @notice The native token amount cap on the destination chains * @param _lzChainIds The destination chain identifier array (LayerZero-specific) * @return The native token amount cap on the destination chains */ function destinationAmountCap( uint16[] calldata _lzChainIds ) external view returns (uint128[] memory) { uint128[] memory result = new uint128[](_lzChainIds.length); uint16 lzChainId; uint16 outboundProofType; uint128 cap; address sendLibrary = SendLibraryProvider(lzEndpoint).getSendLibraryAddress(address(this)); for (uint256 index; index < _lzChainIds.length; index++) { lzChainId = _lzChainIds[index]; outboundProofType = AppConfigProvider(sendLibrary) .getAppConfig(lzChainId, address(this)) .outboundProofType; (cap, , ) = ILayerZeroRelayer(lzRelayer).dstConfigLookup(lzChainId, outboundProofType); result[index] = cap; } return result; } function _setEndpoint(address _lzEndpoint) private { AddressHelper.requireContract(_lzEndpoint); lzEndpoint = _lzEndpoint; emit SetEndpoint(_lzEndpoint); } function _setRelayer(address _lzRelayer) private { AddressHelper.requireContract(_lzRelayer); lzRelayer = _lzRelayer; emit SetRelayer(_lzRelayer); } function _setValidation(bytes memory _validation) private { (minDstGas, minReserve) = abi.decode(_validation, (uint256, uint256)); } function _getEndpointData( GasTransferParameters calldata _parameters, bool _validate ) private view returns (uint256 lzValue, address dstApp, bytes memory lzAdapterParameters) { uint256 dstGas; (dstApp, dstGas, lzAdapterParameters) = _decodeParameters(_parameters); (lzValue, ) = ILayerZeroEndpoint(lzEndpoint).estimateFees( _parameters.lzChainId, address(this), LZ_PAYLOAD_NONE, false, lzAdapterParameters ); if (_validate && (dstGas < minDstGas || lzValue + minReserve > msg.value)) { revert ValidationError(); } } function _decodeParameters( GasTransferParameters calldata _parameters ) private view returns (address dstApp, uint256 dstGas, bytes memory lzAdapterParameters) { (dstApp, dstGas) = abi.decode(_parameters.settings, (address, uint256)); lzAdapterParameters = abi.encodePacked( LZ_ADAPTER_PARAMETERS_VERSION, dstGas, _parameters.amount, _parameters.recipient == address(0) ? msg.sender : _parameters.recipient ); } } interface SendLibraryProvider { function getSendLibraryAddress( address _userApplication ) external view returns (address sendLibraryAddress); } interface AppConfigProvider { struct ApplicationConfiguration { uint16 inboundProofLibraryVersion; uint64 inboundBlockConfirmations; address relayer; uint16 outboundProofType; uint64 outboundBlockConfirmations; address oracle; } function getAppConfig( uint16 _remoteChainId, address _userApplicationAddress ) external view returns (ApplicationConfiguration memory); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../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. * * By default, the owner account will be the one that deploys the contract. 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; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @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 { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing 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 { require(newOwner != address(0), "Ownable: new owner is the zero address"); _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 // OpenZeppelin Contracts (last updated v4.7.0) (security/Pausable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which allows children to implement an emergency stop * mechanism that can be triggered by an authorized account. * * This module is used through inheritance. It will make available the * modifiers `whenNotPaused` and `whenPaused`, which can be applied to * the functions of your contract. Note that they will not be pausable by * simply including this module, only once the modifiers are put in place. */ abstract contract Pausable is Context { /** * @dev Emitted when the pause is triggered by `account`. */ event Paused(address account); /** * @dev Emitted when the pause is lifted by `account`. */ event Unpaused(address account); bool private _paused; /** * @dev Initializes the contract in unpaused state. */ constructor() { _paused = false; } /** * @dev Modifier to make a function callable only when the contract is not paused. * * Requirements: * * - The contract must not be paused. */ modifier whenNotPaused() { _requireNotPaused(); _; } /** * @dev Modifier to make a function callable only when the contract is paused. * * Requirements: * * - The contract must be paused. */ modifier whenPaused() { _requirePaused(); _; } /** * @dev Returns true if the contract is paused, and false otherwise. */ function paused() public view virtual returns (bool) { return _paused; } /** * @dev Throws if the contract is paused. */ function _requireNotPaused() internal view virtual { require(!paused(), "Pausable: paused"); } /** * @dev Throws if the contract is not paused. */ function _requirePaused() internal view virtual { require(paused(), "Pausable: not paused"); } /** * @dev Triggers stopped state. * * Requirements: * * - The contract must not be paused. */ function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } /** * @dev Returns to normal state. * * Requirements: * * - The contract must be paused. */ function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; import { Ownable } from '@openzeppelin/contracts/access/Ownable.sol'; import { Pausable } from '@openzeppelin/contracts/security/Pausable.sol'; import { ITokenBalance } from '../interfaces/ITokenBalance.sol'; import '../helpers/TransferHelper.sol' as TransferHelper; import '../Constants.sol' as Constants; /** * @title OwnerManageable * @notice OwnerManageable contract */ contract OwnerManageable is Ownable, Pausable { /** * @notice Enter pause state */ function pause() external virtual onlyOwner whenNotPaused { _pause(); } /** * @notice Exit pause state */ function unpause() external virtual onlyOwner whenPaused { _unpause(); } /** * @notice Performs the token cleanup * @dev Use the "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" address for the native token * @param _tokenAddress The address of the token */ function cleanup(address _tokenAddress) external onlyOwner { if (_tokenAddress == Constants.NATIVE_TOKEN_ADDRESS) { TransferHelper.safeTransferNative(msg.sender, address(this).balance); } else { TransferHelper.safeTransfer( _tokenAddress, msg.sender, ITokenBalance(_tokenAddress).balanceOf(address(this)) ); } } /** * @notice Performs the token cleanup using the provided amount * @dev Use the "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" address for the native token * @param _tokenAddress The address of the token * @param _tokenAmount The amount of the token */ function cleanupWithAmount(address _tokenAddress, uint256 _tokenAmount) external onlyOwner { if (_tokenAddress == Constants.NATIVE_TOKEN_ADDRESS) { TransferHelper.safeTransferNative(msg.sender, _tokenAmount); } else { TransferHelper.safeTransfer(_tokenAddress, msg.sender, _tokenAmount); } } function _initOwner(address _owner) internal { if (_owner != _msgSender() && _owner != address(0)) { _transferOwnership(_owner); } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @dev The default token decimals value */ uint256 constant DECIMALS_DEFAULT = 18; /** * @dev The maximum uint256 value for swap amount limit settings */ uint256 constant INFINITY = type(uint256).max; /** * @dev The default limit of account list size */ uint256 constant LIST_SIZE_LIMIT_DEFAULT = 100; /** * @dev The limit of swap router list size */ uint256 constant LIST_SIZE_LIMIT_ROUTERS = 200; /** * @dev The factor for percentage settings. Example: 100 is 0.1% */ uint256 constant MILLIPERCENT_FACTOR = 100_000; /** * @dev The de facto standard address to denote the native token */ address constant NATIVE_TOKEN_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ILayerZeroEndpoint * @notice LayerZero endpoint interface */ interface ILayerZeroEndpoint { /** * @notice Send a cross-chain message * @param _dstChainId The destination chain identifier * @param _destination Remote address concatenated with local address packed into 40 bytes * @param _payload The message content * @param _refundAddress Refund the additional amount to this address * @param _zroPaymentAddress The address of the ZRO token holder who would pay for the transaction * @param _adapterParam Parameters for the adapter service */ function send( uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParam ) external payable; /** * @notice Cross-chain message fee estimation * @param _dstChainId The destination chain identifier * @param _userApplication The application address on the source chain * @param _payload The message content * @param _payInZRO If false, the user application pays the protocol fee in the native token * @param _adapterParam Parameters for the adapter service * @return nativeFee The native token fee for the message * @return zroFee The ZRO token fee for the message */ function estimateFees( uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam ) external view returns (uint256 nativeFee, uint256 zroFee); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ILayerZeroRelayer * @notice LayerZero relayer interface */ interface ILayerZeroRelayer { /** * @notice Destination config lookup * @param _chainId The chain identifier * @param _outboundProofType The type of the outbound proof * @return dstNativeAmtCap The native token amount cap on the destination chain * @return baseGas The base gas value * @return gasPerByte The gas value per byte */ function dstConfigLookup( uint16 _chainId, uint16 _outboundProofType ) external view returns (uint128 dstNativeAmtCap, uint64 baseGas, uint64 gasPerByte); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ILayerZeroResumeReceive * @notice LayerZero queue unblocking interface */ interface ILayerZeroResumeReceive { /** * @notice Unblocks the LayerZero message queue * @param _srcChainId The source chain identifier * @param _srcAddress Remote address concatenated with local address packed into 40 bytes */ function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @notice Emitted when the account is not a contract * @param account The account address */ error NonContractAddressError(address account); /** * @notice Function to check if the account is a contract * @return The account contract status flag */ function isContract(address _account) view returns (bool) { return _account.code.length > 0; } /** * @notice Function to require an account to be a contract */ function requireContract(address _account) view { if (!isContract(_account)) { revert NonContractAddressError(_account); } } /** * @notice Function to require an account to be a contract or a zero address */ function requireContractOrZeroAddress(address _account) view { if (_account != address(0)) { requireContract(_account); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @notice Emitted when an approval action fails */ error SafeApproveError(); /** * @notice Emitted when a transfer action fails */ error SafeTransferError(); /** * @notice Emitted when a transferFrom action fails */ error SafeTransferFromError(); /** * @notice Emitted when a transfer of the native token fails */ error SafeTransferNativeError(); /** * @notice Safely approve the token to the account * @param _token The token address * @param _to The token approval recipient address * @param _value The token approval amount */ function safeApprove(address _token, address _to, uint256 _value) { // 0x095ea7b3 is the selector for "approve(address,uint256)" (bool success, bytes memory data) = _token.call( abi.encodeWithSelector(0x095ea7b3, _to, _value) ); bool condition = success && (data.length == 0 || abi.decode(data, (bool))); if (!condition) { revert SafeApproveError(); } } /** * @notice Safely transfer the token to the account * @param _token The token address * @param _to The token transfer recipient address * @param _value The token transfer amount */ function safeTransfer(address _token, address _to, uint256 _value) { // 0xa9059cbb is the selector for "transfer(address,uint256)" (bool success, bytes memory data) = _token.call( abi.encodeWithSelector(0xa9059cbb, _to, _value) ); bool condition = success && (data.length == 0 || abi.decode(data, (bool))); if (!condition) { revert SafeTransferError(); } } /** * @notice Safely transfer the token between the accounts * @param _token The token address * @param _from The token transfer source address * @param _to The token transfer recipient address * @param _value The token transfer amount */ function safeTransferFrom(address _token, address _from, address _to, uint256 _value) { // 0x23b872dd is the selector for "transferFrom(address,address,uint256)" (bool success, bytes memory data) = _token.call( abi.encodeWithSelector(0x23b872dd, _from, _to, _value) ); bool condition = success && (data.length == 0 || abi.decode(data, (bool))); if (!condition) { revert SafeTransferFromError(); } } /** * @notice Safely transfer the native token to the account * @param _to The native token transfer recipient address * @param _value The native token transfer amount */ function safeTransferNative(address _to, uint256 _value) { (bool success, ) = _to.call{ value: _value }(new bytes(0)); if (!success) { revert SafeTransferNativeError(); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title ITokenBalance * @notice Token balance interface */ interface ITokenBalance { /** * @notice Getter of the token balance by the account * @param _account The account address * @return Token balance */ function balanceOf(address _account) external view returns (uint256); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.19; /** * @title SystemVersionId * @notice Base contract providing the system version identifier */ abstract contract SystemVersionId { /** * @dev The system version identifier */ uint256 public constant SYSTEM_VERSION_ID = uint256(keccak256('Initial')); }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_lzEndpoint","type":"address"},{"internalType":"address","name":"_lzRelayer","type":"address"},{"internalType":"bytes","name":"_validation","type":"bytes"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"NonContractAddressError","type":"error"},{"inputs":[],"name":"SafeTransferError","type":"error"},{"inputs":[],"name":"SafeTransferNativeError","type":"error"},{"inputs":[],"name":"ValidationError","type":"error"},{"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"endpoint","type":"address"}],"name":"SetEndpoint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"relayer","type":"address"}],"name":"SetRelayer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"SYSTEM_VERSION_ID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"cleanup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenAmount","type":"uint256"}],"name":"cleanupWithAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_lzChainIds","type":"uint16[]"}],"name":"destinationAmountCap","outputs":[{"internalType":"uint128[]","name":"","type":"uint128[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"lzChainId","type":"uint16"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"settings","type":"bytes"}],"internalType":"struct InterportLZGasTransfer.GasTransferParameters","name":"_parameters","type":"tuple"}],"name":"estimateSourceValue","outputs":[{"internalType":"uint256","name":"lzValue","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"lzChainId","type":"uint16"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"settings","type":"bytes"}],"internalType":"struct InterportLZGasTransfer.GasTransferParameters","name":"_parameters","type":"tuple"}],"name":"gasTransfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"lzEndpoint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint64","name":"","type":"uint64"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lzRelayer","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_lzSourceChainId","type":"uint16"},{"internalType":"address","name":"_sourceApp","type":"address"}],"name":"resumeReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzEndpoint","type":"address"}],"name":"setEndpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lzRelayer","type":"address"}],"name":"setRelayer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_validation","type":"bytes"}],"name":"setValidation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620019f2380380620019f283398101604081905262000034916200023c565b6200003f3362000082565b6000805460ff60a01b191690556200005784620000d2565b620000628362000127565b6200006d826200017c565b62000078816200019b565b505050506200036e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000dd81620001d1565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6200013281620001d1565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b8080602001905181019062000192919062000349565b60045560035550565b6001600160a01b0381163314801590620001bd57506001600160a01b03811615155b15620001ce57620001ce8162000082565b50565b6001600160a01b0381163b620001ce57604051638c50d7cd60e01b81526001600160a01b038216600482015260240160405180910390fd5b80516001600160a01b03811681146200022157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200025357600080fd5b6200025e8562000209565b935060206200026f81870162000209565b60408701519094506001600160401b03808211156200028d57600080fd5b818801915088601f830112620002a257600080fd5b815181811115620002b757620002b762000226565b604051601f8201601f19908116603f01168101908382118183101715620002e257620002e262000226565b816040528281528b86848701011115620002fb57600080fd5b600093505b828410156200031f578484018601518185018701529285019262000300565b60008684830101528097505050505050506200033e6060860162000209565b905092959194509250565b600080604083850312156200035d57600080fd5b505080516020909101519092909150565b611674806200037e6000396000f3fe6080604052600436106101175760003560e01c80637110e34d116100a0578063dbbb415511610064578063dbbb415514610317578063dfed8bd714610337578063efb7388014610357578063f2fde38b1461036a578063fbacefce1461038a57600080fd5b80637110e34d1461027b578063715018a61461029b5780638456cb59146102b05780638da5cb5b146102c5578063b353aaa7146102f757600080fd5b80633132bb31116100e75780633132bb31146101cf5780633f4ba83a146101ef5780635c975abb146102045780636548e9bc1461022e5780636a0b3ad41461024e57600080fd5b80621d356714610123578063093f0e2714610148578063286d05d21461018f5780632c16f926146101af57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014661013e366004610fbd565b505050505050565b005b34801561015457600080fd5b5061017c7f22ad9585a395edc8067b50da4778cafbb7fa2c4bbd7619fad6aeba403857fd7481565b6040519081526020015b60405180910390f35b34801561019b57600080fd5b5061017c6101aa366004611054565b6103aa565b3480156101bb57600080fd5b506101466101ca3660046110ab565b6103c0565b3480156101db57600080fd5b506101466101ea3660046110ed565b610406565b3480156101fb57600080fd5b5061014661041a565b34801561021057600080fd5b50600054600160a01b900460ff166040519015158152602001610186565b34801561023a57600080fd5b5061014661024936600461119e565b610434565b34801561025a57600080fd5b5061026e6102693660046111bb565b610445565b6040516101869190611230565b34801561028757600080fd5b5061014661029636600461127d565b61067b565b3480156102a757600080fd5b5061014661070c565b3480156102bc57600080fd5b5061014661071e565b3480156102d157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561030357600080fd5b506001546102df906001600160a01b031681565b34801561032357600080fd5b5061014661033236600461119e565b610736565b34801561034357600080fd5b506002546102df906001600160a01b031681565b610146610365366004611054565b610747565b34801561037657600080fd5b5061014661038536600461119e565b610820565b34801561039657600080fd5b506101466103a536600461119e565b61089b565b60006103b7826000610947565b50909392505050565b6103c8610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016103fb576103f73382610a97565b5050565b6103f7823383610b2a565b61040e610a3d565b61041781610c14565b50565b610422610a3d565b61042a610c31565b610432610c81565b565b61043c610a3d565b61041781610cd6565b606060008267ffffffffffffffff811115610462576104626110d7565b60405190808252806020026020018201604052801561048b578160200160208202803683370190505b50600154604051639c729da160e01b81523060048201529192506000918291829182916001600160a01b031690639c729da190602401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050291906112b6565b905060005b8781101561066c57888882818110610521576105216112d3565b905060200201602081019061053691906112e9565b604051635233111160e11b815261ffff821660048201523060248201529095506001600160a01b0383169063a46622229060440160c060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611306565b60600151600254604051630462c3ff60e31b815261ffff8089166004830152831660248201529195506001600160a01b0316906323161ff890604401606060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906113b1565b9050508093505082868281518110610642576106426112d3565b6001600160801b03909216602092830291909101909101528061066481611420565b915050610507565b50939450505050505b92915050565b600154604080516001600160601b0319606085811b8216602084015230901b1660348201528151808203602801815260488201928390526342d65a8d60e01b9092526001600160a01b03909216916342d65a8d916106de91869190604c01611489565b600060405180830381600087803b1580156106f857600080fd5b505af115801561013e573d6000803e3d6000fd5b610714610a3d565b6104326000610d29565b610726610a3d565b61072e610d79565b610432610dc6565b61073e610a3d565b61041781610e09565b61074f610d79565b600080600061075f846001610947565b60015492955090935091506001600160a01b031663c58031008461078660208801886112e9565b6040516001600160601b0319606088811b8216602084015230901b16603482015260480160408051601f19818403018152602083018252600080845291516001600160e01b031960e088901b1681526107e89493919230918a906004016114ae565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b505050505050505050565b610828610a3d565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61041781610d29565b6108a3610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108d2576104173347610a97565b6040516370a0823160e01b815230600482015261041790829033906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109429190611515565b610b2a565b6000806060600061095786610e5c565b600154929550935091506001600160a01b03166340a7bb1061097c60208901896112e9565b60408051602081018252600080825291516001600160e01b031960e086901b1681526109b09392309291899060040161152e565b6040805180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190611582565b509350848015610a175750600354811080610a1757503460045485610a1591906115a6565b115b15610a355760405163ae64f5e560e01b815260040160405180910390fd5b509250925092565b6000546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610889565b604080516000808252602082019092526001600160a01b038416908390604051610ac191906115b9565b60006040518083038185875af1925050503d8060008114610afe576040519150601f19603f3d011682016040523d82523d6000602084013e610b03565b606091505b5050905080610b2557604051632e05b05360e21b815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610b8691906115b9565b6000604051808303816000865af19150503d8060008114610bc3576040519150601f19603f3d011682016040523d82523d6000602084013e610bc8565b606091505b50915091506000828015610bf4575081511580610bf4575081806020019051810190610bf491906115d5565b90508061013e57604051632fdb1b7f60e11b815260040160405180910390fd5b80806020019051810190610c289190611582565b60045560035550565b600054600160a01b900460ff166104325760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610889565b610c89610c31565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610cdf81610f1b565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156104325760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610889565b610dce610d79565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cb93390565b610e1281610f1b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6000806060610e6d848201856115f7565b810190610e7a91906110ab565b909350915060028260408601803590600090610e999060208a0161119e565b6001600160a01b031614610ebc57610eb7604088016020890161119e565b610ebe565b335b604051602001610f03949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6001600160601b031916604282015260560190565b60405160208183030381529060405290509193909250565b6001600160a01b0381163b61041757604051638c50d7cd60e01b81526001600160a01b0382166004820152602401610889565b61ffff8116811461041757600080fd5b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610fa057600080fd5b9250929050565b67ffffffffffffffff8116811461041757600080fd5b60008060008060008060808789031215610fd657600080fd5b8635610fe181610f4e565b9550602087013567ffffffffffffffff80821115610ffe57600080fd5b61100a8a838b01610f5e565b90975095506040890135915061101f82610fa7565b9093506060880135908082111561103557600080fd5b5061104289828a01610f5e565b979a9699509497509295939492505050565b60006020828403121561106657600080fd5b813567ffffffffffffffff81111561107d57600080fd5b82016080818503121561108f57600080fd5b9392505050565b6001600160a01b038116811461041757600080fd5b600080604083850312156110be57600080fd5b82356110c981611096565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ff57600080fd5b813567ffffffffffffffff8082111561111757600080fd5b818401915084601f83011261112b57600080fd5b81358181111561113d5761113d6110d7565b604051601f8201601f19908116603f01168101908382118183101715611165576111656110d7565b8160405282815287602084870101111561117e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156111b057600080fd5b813561108f81611096565b600080602083850312156111ce57600080fd5b823567ffffffffffffffff808211156111e657600080fd5b818501915085601f8301126111fa57600080fd5b81358181111561120957600080fd5b8660208260051b850101111561121e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156112715783516001600160801b03168352928401929184019160010161124c565b50909695505050505050565b6000806040838503121561129057600080fd5b823561129b81610f4e565b915060208301356112ab81611096565b809150509250929050565b6000602082840312156112c857600080fd5b815161108f81611096565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112fb57600080fd5b813561108f81610f4e565b600060c0828403121561131857600080fd5b60405160c0810181811067ffffffffffffffff8211171561133b5761133b6110d7565b604052825161134981610f4e565b8152602083015161135981610fa7565b6020820152604083015161136c81611096565b6040820152606083015161137f81610f4e565b6060820152608083015161139281610fa7565b608082015260a08301516113a581611096565b60a08201529392505050565b6000806000606084860312156113c657600080fd5b83516001600160801b03811681146113dd57600080fd5b60208501519093506113ee81610fa7565b60408501519092506113ff81610fa7565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000600182016114325761143261140a565b5060010190565b60005b8381101561145457818101518382015260200161143c565b50506000910152565b60008151808452611475816020860160208601611439565b601f01601f19169290920160200192915050565b61ffff831681526040602082015260006114a6604083018461145d565b949350505050565b61ffff8716815260c0602082015260006114cb60c083018861145d565b82810360408401526114dd818861145d565b6001600160a01b0387811660608601528616608085015283810360a08501529050611508818561145d565b9998505050505050505050565b60006020828403121561152757600080fd5b5051919050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061155c9083018661145d565b84151560608401528281036080840152611576818561145d565b98975050505050505050565b6000806040838503121561159557600080fd5b505080516020909101519092909150565b808201808211156106755761067561140a565b600082516115cb818460208701611439565b9190910192915050565b6000602082840312156115e757600080fd5b8151801515811461108f57600080fd5b6000808335601e1984360301811261160e57600080fd5b83018035915067ffffffffffffffff82111561162957600080fd5b602001915036819003821315610fa057600080fdfea26469706673582212203dd5c251ce76165f218bbc77e61e8efecda5c1508cf0a9a5e84f2f29c0d7372f64736f6c63430008130033000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7000000000000000000000000a658742d33ebd2ce2f0bdff73515aa797fd161d90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000894634481e0d40f55dbae68b4340d2c051db585e00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000b3a73cfd8d0
Deployed Bytecode
0x6080604052600436106101175760003560e01c80637110e34d116100a0578063dbbb415511610064578063dbbb415514610317578063dfed8bd714610337578063efb7388014610357578063f2fde38b1461036a578063fbacefce1461038a57600080fd5b80637110e34d1461027b578063715018a61461029b5780638456cb59146102b05780638da5cb5b146102c5578063b353aaa7146102f757600080fd5b80633132bb31116100e75780633132bb31146101cf5780633f4ba83a146101ef5780635c975abb146102045780636548e9bc1461022e5780636a0b3ad41461024e57600080fd5b80621d356714610123578063093f0e2714610148578063286d05d21461018f5780632c16f926146101af57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014661013e366004610fbd565b505050505050565b005b34801561015457600080fd5b5061017c7f22ad9585a395edc8067b50da4778cafbb7fa2c4bbd7619fad6aeba403857fd7481565b6040519081526020015b60405180910390f35b34801561019b57600080fd5b5061017c6101aa366004611054565b6103aa565b3480156101bb57600080fd5b506101466101ca3660046110ab565b6103c0565b3480156101db57600080fd5b506101466101ea3660046110ed565b610406565b3480156101fb57600080fd5b5061014661041a565b34801561021057600080fd5b50600054600160a01b900460ff166040519015158152602001610186565b34801561023a57600080fd5b5061014661024936600461119e565b610434565b34801561025a57600080fd5b5061026e6102693660046111bb565b610445565b6040516101869190611230565b34801561028757600080fd5b5061014661029636600461127d565b61067b565b3480156102a757600080fd5b5061014661070c565b3480156102bc57600080fd5b5061014661071e565b3480156102d157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561030357600080fd5b506001546102df906001600160a01b031681565b34801561032357600080fd5b5061014661033236600461119e565b610736565b34801561034357600080fd5b506002546102df906001600160a01b031681565b610146610365366004611054565b610747565b34801561037657600080fd5b5061014661038536600461119e565b610820565b34801561039657600080fd5b506101466103a536600461119e565b61089b565b60006103b7826000610947565b50909392505050565b6103c8610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016103fb576103f73382610a97565b5050565b6103f7823383610b2a565b61040e610a3d565b61041781610c14565b50565b610422610a3d565b61042a610c31565b610432610c81565b565b61043c610a3d565b61041781610cd6565b606060008267ffffffffffffffff811115610462576104626110d7565b60405190808252806020026020018201604052801561048b578160200160208202803683370190505b50600154604051639c729da160e01b81523060048201529192506000918291829182916001600160a01b031690639c729da190602401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050291906112b6565b905060005b8781101561066c57888882818110610521576105216112d3565b905060200201602081019061053691906112e9565b604051635233111160e11b815261ffff821660048201523060248201529095506001600160a01b0383169063a46622229060440160c060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611306565b60600151600254604051630462c3ff60e31b815261ffff8089166004830152831660248201529195506001600160a01b0316906323161ff890604401606060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906113b1565b9050508093505082868281518110610642576106426112d3565b6001600160801b03909216602092830291909101909101528061066481611420565b915050610507565b50939450505050505b92915050565b600154604080516001600160601b0319606085811b8216602084015230901b1660348201528151808203602801815260488201928390526342d65a8d60e01b9092526001600160a01b03909216916342d65a8d916106de91869190604c01611489565b600060405180830381600087803b1580156106f857600080fd5b505af115801561013e573d6000803e3d6000fd5b610714610a3d565b6104326000610d29565b610726610a3d565b61072e610d79565b610432610dc6565b61073e610a3d565b61041781610e09565b61074f610d79565b600080600061075f846001610947565b60015492955090935091506001600160a01b031663c58031008461078660208801886112e9565b6040516001600160601b0319606088811b8216602084015230901b16603482015260480160408051601f19818403018152602083018252600080845291516001600160e01b031960e088901b1681526107e89493919230918a906004016114ae565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b505050505050505050565b610828610a3d565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61041781610d29565b6108a3610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108d2576104173347610a97565b6040516370a0823160e01b815230600482015261041790829033906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109429190611515565b610b2a565b6000806060600061095786610e5c565b600154929550935091506001600160a01b03166340a7bb1061097c60208901896112e9565b60408051602081018252600080825291516001600160e01b031960e086901b1681526109b09392309291899060040161152e565b6040805180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190611582565b509350848015610a175750600354811080610a1757503460045485610a1591906115a6565b115b15610a355760405163ae64f5e560e01b815260040160405180910390fd5b509250925092565b6000546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610889565b604080516000808252602082019092526001600160a01b038416908390604051610ac191906115b9565b60006040518083038185875af1925050503d8060008114610afe576040519150601f19603f3d011682016040523d82523d6000602084013e610b03565b606091505b5050905080610b2557604051632e05b05360e21b815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610b8691906115b9565b6000604051808303816000865af19150503d8060008114610bc3576040519150601f19603f3d011682016040523d82523d6000602084013e610bc8565b606091505b50915091506000828015610bf4575081511580610bf4575081806020019051810190610bf491906115d5565b90508061013e57604051632fdb1b7f60e11b815260040160405180910390fd5b80806020019051810190610c289190611582565b60045560035550565b600054600160a01b900460ff166104325760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610889565b610c89610c31565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610cdf81610f1b565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156104325760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610889565b610dce610d79565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cb93390565b610e1281610f1b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6000806060610e6d848201856115f7565b810190610e7a91906110ab565b909350915060028260408601803590600090610e999060208a0161119e565b6001600160a01b031614610ebc57610eb7604088016020890161119e565b610ebe565b335b604051602001610f03949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6001600160601b031916604282015260560190565b60405160208183030381529060405290509193909250565b6001600160a01b0381163b61041757604051638c50d7cd60e01b81526001600160a01b0382166004820152602401610889565b61ffff8116811461041757600080fd5b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610fa057600080fd5b9250929050565b67ffffffffffffffff8116811461041757600080fd5b60008060008060008060808789031215610fd657600080fd5b8635610fe181610f4e565b9550602087013567ffffffffffffffff80821115610ffe57600080fd5b61100a8a838b01610f5e565b90975095506040890135915061101f82610fa7565b9093506060880135908082111561103557600080fd5b5061104289828a01610f5e565b979a9699509497509295939492505050565b60006020828403121561106657600080fd5b813567ffffffffffffffff81111561107d57600080fd5b82016080818503121561108f57600080fd5b9392505050565b6001600160a01b038116811461041757600080fd5b600080604083850312156110be57600080fd5b82356110c981611096565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ff57600080fd5b813567ffffffffffffffff8082111561111757600080fd5b818401915084601f83011261112b57600080fd5b81358181111561113d5761113d6110d7565b604051601f8201601f19908116603f01168101908382118183101715611165576111656110d7565b8160405282815287602084870101111561117e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156111b057600080fd5b813561108f81611096565b600080602083850312156111ce57600080fd5b823567ffffffffffffffff808211156111e657600080fd5b818501915085601f8301126111fa57600080fd5b81358181111561120957600080fd5b8660208260051b850101111561121e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156112715783516001600160801b03168352928401929184019160010161124c565b50909695505050505050565b6000806040838503121561129057600080fd5b823561129b81610f4e565b915060208301356112ab81611096565b809150509250929050565b6000602082840312156112c857600080fd5b815161108f81611096565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112fb57600080fd5b813561108f81610f4e565b600060c0828403121561131857600080fd5b60405160c0810181811067ffffffffffffffff8211171561133b5761133b6110d7565b604052825161134981610f4e565b8152602083015161135981610fa7565b6020820152604083015161136c81611096565b6040820152606083015161137f81610f4e565b6060820152608083015161139281610fa7565b608082015260a08301516113a581611096565b60a08201529392505050565b6000806000606084860312156113c657600080fd5b83516001600160801b03811681146113dd57600080fd5b60208501519093506113ee81610fa7565b60408501519092506113ff81610fa7565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000600182016114325761143261140a565b5060010190565b60005b8381101561145457818101518382015260200161143c565b50506000910152565b60008151808452611475816020860160208601611439565b601f01601f19169290920160200192915050565b61ffff831681526040602082015260006114a6604083018461145d565b949350505050565b61ffff8716815260c0602082015260006114cb60c083018861145d565b82810360408401526114dd818861145d565b6001600160a01b0387811660608601528616608085015283810360a08501529050611508818561145d565b9998505050505050505050565b60006020828403121561152757600080fd5b5051919050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061155c9083018661145d565b84151560608401528281036080840152611576818561145d565b98975050505050505050565b6000806040838503121561159557600080fd5b505080516020909101519092909150565b808201808211156106755761067561140a565b600082516115cb818460208701611439565b9190910192915050565b6000602082840312156115e757600080fd5b8151801515811461108f57600080fd5b6000808335601e1984360301811261160e57600080fd5b83018035915067ffffffffffffffff82111561162957600080fd5b602001915036819003821315610fa057600080fdfea26469706673582212203dd5c251ce76165f218bbc77e61e8efecda5c1508cf0a9a5e84f2f29c0d7372f64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7000000000000000000000000a658742d33ebd2ce2f0bdff73515aa797fd161d90000000000000000000000000000000000000000000000000000000000000080000000000000000000000000894634481e0d40f55dbae68b4340d2c051db585e00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000b3a73cfd8d0
-----Decoded View---------------
Arg [0] : _lzEndpoint (address): 0xb6319cC6c8c27A8F5dAF0dD3DF91EA35C4720dd7
Arg [1] : _lzRelayer (address): 0xA658742d33ebd2ce2F0bdFf73515Aa797Fd161D9
Arg [2] : _validation (bytes): 0x0000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000b3a73cfd8d0
Arg [3] : _owner (address): 0x894634481E0d40f55dBAe68b4340D2c051Db585E
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000b6319cc6c8c27a8f5daf0dd3df91ea35c4720dd7
Arg [1] : 000000000000000000000000a658742d33ebd2ce2f0bdff73515aa797fd161d9
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 000000000000000000000000894634481e0d40f55dbae68b4340d2c051db585e
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [5] : 0000000000000000000000000000000000000000000000000000000000001b58
Arg [6] : 00000000000000000000000000000000000000000000000000000b3a73cfd8d0
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ARB | 24.10% | $3,873.87 | 0.4838 | $1,874.32 | |
BASE | 16.78% | $3,872.06 | 0.337 | $1,305.02 | |
LINEA | 14.55% | $3,873.72 | 0.2921 | $1,131.34 | |
POL | 10.78% | $0.600251 | 1,396.3369 | $838.15 | |
SCROLL | 8.81% | $3,866.56 | 0.1771 | $684.81 | |
OP | 7.70% | $3,873.45 | 0.1545 | $598.46 | |
BSC | 4.97% | $712.75 | 0.5424 | $386.62 | |
FTM | 3.23% | $1.23 | 204.2652 | $251.23 | |
GNO | 2.90% | $0.999898 | 225.1683 | $225.15 | |
AVAX | 2.41% | $51.5 | 3.6409 | $187.52 | |
CELO | 1.07% | $0.820164 | 101.8729 | $83.55 | |
ETH | 0.89% | $3,873.72 | 0.0178 | $69.12 | |
ARBNOVA | 0.44% | $3,871.71 | 0.008899 | $34.45 | |
MANTLE | 0.43% | $1.2 | 28.0375 | $33.6 | |
OPBNB | 0.33% | $712.96 | 0.0365 | $26.04 | |
GLMR | 0.32% | $0.305595 | 82.045 | $25.07 | |
MOVR | 0.23% | $16.2 | 1.1216 | $18.16 | |
BLAST | Ether (ETH) | 0.05% | $3,871.49 | 0.00096859 | $3.75 |
[ 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.