Source Code
Overview
xDAI Balance
225.168346563392703329 xDAI
xDAI Value
$225.17 (@ $1.00/xDAI)Token Holdings
Could not find any matches!
- ERC-20 Tokens (10)1 Allocate debridg.xyzERC-20: Allocate ... (Alloca...)1 Blast Box https://blast-box.xyzERC-20: Blast Box... (Blast ...)1 Blast Box https://blastupbox.comERC-20: Blast Box... (Blast ...)1 Blast Box https://box-blast.xyzERC-20: Blast Box... (Blast ...)1 deBridge Airdrop https://t.ly/ethersERC-20: deBridge ... (deBrid...)5,800 TokenERC-20 TOKEN*[Spam]125,000 TokenERC-20 TOKEN*[Spam]110,000 TokenERC-20 TOKEN*[Spam]57,000 TokenERC-20 TOKEN*[Spam]873 TokenERC-20 TOKEN*[Spam]NFT Tokens (67)ERC-1155ERC-1155TN1­ERC-721ERC-1155ERC-1155You are eligible for $12,000 USDC'ERC-1155You are eligible for $12,000 USDC'ERC-1155Reward at usdtevent.net'ERC-1155You are eligible for $10,000 USDC'ERC-1155Reward at usdtevent.net'ERC-1155exchange this NFT voucher on usdc2.com# usdc2.comERC-721exchange this NFT voucher on usdc2.com# usdc2.comERC-721deBridge Airdrop https://t.ly/ethersdeBridge AirdropERC-721AirdropLiquid-ether.com NFTERC-1155AirdropLiquid-ether.com NFTERC-1155rare-token.orgLooksRare Airdrop VoucherERC-1155d2usdt.comVoucher #T65237-24ERC-1155ERC-721 TOKEN*[Suspicious]ERC-721 TOKEN*[Suspicious]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-1155 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x3 [Spam]ERC-721 TOKEN*x4 [Spam]ERC-721 TOKEN*x5 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x2 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x2 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x3 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x2 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x2 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*x4 [Spam]ERC-721 TOKEN*x2 [Spam]ERC-721 TOKEN*x2 [Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]ERC-721 TOKEN*[Spam]View All HoldingsERC-1155 TOKEN*[Spam]
More Info
Private Name Tags
ContractCreator
Multichain Info
17 addresses found via- Transactions
- Internal Transactions
- Token Transfers (ERC-20)
- NFT Transfers
- Contract
- Events
- Analytics
- Multichain Portfolio
Latest 25 from a total of 1,519 transactions
Transaction Hash MethodBlockFromToGas Transfer 36758812 2024-10-29 23:38:45 43 days ago 1730245125 IN 2.82714805 xDAI$2.83 0.00039758 1.7 Gas Transfer 36587231 2024-10-19 17:12:55 53 days ago 1729357975 IN 21.03361992 xDAI$21.03 0.00032942 1.455 Gas Transfer 36569015 2024-10-18 15:02:10 54 days ago 1729263730 IN 1.0404669 xDAI$1.04 0.00045284 2 Gas Transfer 36524686 2024-10-15 22:49:50 57 days ago 1729032590 IN 2.60791242 xDAI$2.61 0.00039947 1.7641875 Gas Transfer 36488030 2024-10-13 18:00:55 59 days ago 1728842455 IN 0.79523873 xDAI$0.80 0.00049813 2.2 Gas Transfer 36477158 2024-10-13 2:33:25 60 days ago 1728786805 IN 1.01710113 xDAI$1.02 0.00063398 2.8 Gas Transfer 36405421 2024-10-08 20:04:10 64 days ago 1728417850 IN 1.60130248 xDAI$1.60 0.00030069 1.32793921 Gas Transfer 36238793 2024-09-28 22:02:45 74 days ago 1727560965 IN 16.74229759 xDAI$16.74 0.00047551 2.1 Gas Transfer 36229060 2024-09-28 8:07:30 75 days ago 1727510850 IN 0.95739684 xDAI$0.96 0.00033961 1.5 Gas Transfer 36214809 2024-09-27 11:43:20 75 days ago 1727437400 IN 0.89857964 xDAI$0.90 0.00045284 2 Gas Transfer 36178795 2024-09-25 8:01:20 78 days ago 1727251280 IN 0.91319136 xDAI$0.91 0.00038491 1.7 Gas Transfer 36166228 2024-09-24 14:09:10 78 days ago 1727186950 IN 2.33345126 xDAI$2.33 0.00037711 1.7 Gas Transfer 36165681 2024-09-24 13:22:05 78 days ago 1727184125 IN 0.64456885 xDAI$0.64 0.00037707 1.7 Gas Transfer 36165320 2024-09-24 12:51:00 78 days ago 1727182260 IN 0.92420298 xDAI$0.92 0.00037709 1.7 Gas Transfer 36131620 2024-09-22 12:49:10 80 days ago 1727009350 IN 2.6092148 xDAI$2.61 0.00025723 1.1 Gas Transfer 35895234 2024-09-08 12:00:50 94 days ago 1725796850 IN 0.99335602 xDAI$0.99 0.00047548 2.1 Gas Transfer 35244598 2024-07-31 11:00:50 133 days ago 1722423650 IN 8.27591513 xDAI$8.28 0.0003792 1.455 Gas Transfer 33979467 2024-05-16 20:09:35 209 days ago 1715890175 IN 0.25292065 xDAI$0.25 0.00044626 1.97095027 Gas Transfer 33710904 2024-04-30 19:25:40 225 days ago 1714505140 IN 0.20556435 xDAI$0.21 0.00047551 2.14901187 Gas Transfer 33710856 2024-04-30 19:21:35 225 days ago 1714504895 IN 0.20024041 xDAI$0.20 0.00044922 2.03018178 Gas Transfer 33702829 2024-04-30 7:47:55 226 days ago 1714463275 IN 0.22515579 xDAI$0.23 0.00050892 2.3 Gas Transfer 33684158 2024-04-29 4:55:05 227 days ago 1714366505 IN 0.48508953 xDAI$0.49 0.00097081 4.2874 Gas Transfer 33672931 2024-04-28 12:47:50 227 days ago 1714308470 IN 0.76473484 xDAI$0.76 0.00036229 1.6 Gas Transfer 33672534 2024-04-28 12:14:00 227 days ago 1714306440 IN 0.2741128 xDAI$0.27 0.00033963 1.5 Gas Transfer 33671355 2024-04-28 10:32:20 227 days ago 1714300340 IN 0.27400726 xDAI$0.27 0.00040758 1.8 Latest 25 internal transactions (View All)
Parent Transaction Hash Block From To 37272895 2024-11-29 17:30:05 12 days ago 1732901405 15.47551259 xDAI$15.48 37272895 2024-11-29 17:30:05 12 days ago 1732901405 15.62555851 xDAI$15.63 37272895 2024-11-29 17:30:05 12 days ago 1732901405 15.23666909 xDAI$15.24 37272895 2024-11-29 17:30:05 12 days ago 1732901405 15.386715 xDAI$15.39 36758812 2024-10-29 23:38:45 43 days ago 1730245125 2.67744745 xDAI$2.68 36587231 2024-10-19 17:12:55 53 days ago 1729357975 20.88353632 xDAI$20.88 36569015 2024-10-18 15:02:10 54 days ago 1729263730 0.89045835 xDAI$0.89 36524686 2024-10-15 22:49:50 57 days ago 1729032590 2.45733012 xDAI$2.46 36488030 2024-10-13 18:00:55 59 days ago 1728842455 0.64475206 xDAI$0.64 36477158 2024-10-13 2:33:25 60 days ago 1728786805 0.86693504 xDAI$0.87 36405421 2024-10-08 20:04:10 64 days ago 1728417850 1.45160188 xDAI$1.45 36238793 2024-09-28 22:02:45 74 days ago 1727560965 16.59225692 xDAI$16.59 36229060 2024-09-28 8:07:30 75 days ago 1727510850 0.80814311 xDAI$0.81 36214809 2024-09-27 11:43:20 75 days ago 1727437400 0.74856014 xDAI$0.75 36178795 2024-09-25 8:01:20 78 days ago 1727251280 0.76334121 xDAI$0.76 36166228 2024-09-24 14:09:10 78 days ago 1727186950 2.18336556 xDAI$2.18 36165681 2024-09-24 13:22:05 78 days ago 1727184125 0.49561155 xDAI$0.50 36165320 2024-09-24 12:51:00 78 days ago 1727182260 0.77509761 xDAI$0.78 36131620 2024-09-22 12:49:10 80 days ago 1727009350 2.45996107 xDAI$2.46 35895234 2024-09-08 12:00:50 94 days ago 1725796850 0.84243404 xDAI$0.84 35244598 2024-07-31 11:00:50 133 days ago 1722423650 8.12621453 xDAI$8.13 33979467 2024-05-16 20:09:35 209 days ago 1715890175 0.1027466 xDAI$0.10 33710904 2024-04-30 19:25:40 225 days ago 1714505140 0.056013 xDAI$0.06 33710856 2024-04-30 19:21:35 225 days ago 1714504895 0.05039026 xDAI$0.05 33702829 2024-04-30 7:47:55 226 days ago 1714463275 0.07484841 xDAI$0.07 Loading...LoadingContract Name:InterportLZGasTransfer
Compiler Versionv0.8.19+commit.7dd6d404
Optimization Enabled:Yes with 200 runs
Other Settings:default evmVersionContract 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 onlyOwner whenNotPaused { _pause(); } /** * @notice Exit pause state */ function unpause() external 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
Contract ABI
[{"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
60806040523480156200001157600080fd5b50604051620019f2380380620019f283398101604081905262000034916200023c565b6200003f3362000082565b6000805460ff60a01b191690556200005784620000d2565b620000628362000127565b6200006d826200017c565b62000078816200019b565b505050506200036e565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620000dd81620001d1565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6200013281620001d1565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b8080602001905181019062000192919062000349565b60045560035550565b6001600160a01b0381163314801590620001bd57506001600160a01b03811615155b15620001ce57620001ce8162000082565b50565b6001600160a01b0381163b620001ce57604051638c50d7cd60e01b81526001600160a01b038216600482015260240160405180910390fd5b80516001600160a01b03811681146200022157600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156200025357600080fd5b6200025e8562000209565b935060206200026f81870162000209565b60408701519094506001600160401b03808211156200028d57600080fd5b818801915088601f830112620002a257600080fd5b815181811115620002b757620002b762000226565b604051601f8201601f19908116603f01168101908382118183101715620002e257620002e262000226565b816040528281528b86848701011115620002fb57600080fd5b600093505b828410156200031f578484018601518185018701529285019262000300565b60008684830101528097505050505050506200033e6060860162000209565b905092959194509250565b600080604083850312156200035d57600080fd5b505080516020909101519092909150565b611674806200037e6000396000f3fe6080604052600436106101175760003560e01c80637110e34d116100a0578063dbbb415511610064578063dbbb415514610317578063dfed8bd714610337578063efb7388014610357578063f2fde38b1461036a578063fbacefce1461038a57600080fd5b80637110e34d1461027b578063715018a61461029b5780638456cb59146102b05780638da5cb5b146102c5578063b353aaa7146102f757600080fd5b80633132bb31116100e75780633132bb31146101cf5780633f4ba83a146101ef5780635c975abb146102045780636548e9bc1461022e5780636a0b3ad41461024e57600080fd5b80621d356714610123578063093f0e2714610148578063286d05d21461018f5780632c16f926146101af57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014661013e366004610fbd565b505050505050565b005b34801561015457600080fd5b5061017c7f22ad9585a395edc8067b50da4778cafbb7fa2c4bbd7619fad6aeba403857fd7481565b6040519081526020015b60405180910390f35b34801561019b57600080fd5b5061017c6101aa366004611054565b6103aa565b3480156101bb57600080fd5b506101466101ca3660046110ab565b6103c0565b3480156101db57600080fd5b506101466101ea3660046110ed565b610406565b3480156101fb57600080fd5b5061014661041a565b34801561021057600080fd5b50600054600160a01b900460ff166040519015158152602001610186565b34801561023a57600080fd5b5061014661024936600461119e565b610434565b34801561025a57600080fd5b5061026e6102693660046111bb565b610445565b6040516101869190611230565b34801561028757600080fd5b5061014661029636600461127d565b61067b565b3480156102a757600080fd5b5061014661070c565b3480156102bc57600080fd5b5061014661071e565b3480156102d157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561030357600080fd5b506001546102df906001600160a01b031681565b34801561032357600080fd5b5061014661033236600461119e565b610736565b34801561034357600080fd5b506002546102df906001600160a01b031681565b610146610365366004611054565b610747565b34801561037657600080fd5b5061014661038536600461119e565b610820565b34801561039657600080fd5b506101466103a536600461119e565b61089b565b60006103b7826000610947565b50909392505050565b6103c8610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016103fb576103f73382610a97565b5050565b6103f7823383610b2a565b61040e610a3d565b61041781610c14565b50565b610422610a3d565b61042a610c31565b610432610c81565b565b61043c610a3d565b61041781610cd6565b606060008267ffffffffffffffff811115610462576104626110d7565b60405190808252806020026020018201604052801561048b578160200160208202803683370190505b50600154604051639c729da160e01b81523060048201529192506000918291829182916001600160a01b031690639c729da190602401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050291906112b6565b905060005b8781101561066c57888882818110610521576105216112d3565b905060200201602081019061053691906112e9565b604051635233111160e11b815261ffff821660048201523060248201529095506001600160a01b0383169063a46622229060440160c060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611306565b60600151600254604051630462c3ff60e31b815261ffff8089166004830152831660248201529195506001600160a01b0316906323161ff890604401606060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906113b1565b9050508093505082868281518110610642576106426112d3565b6001600160801b03909216602092830291909101909101528061066481611420565b915050610507565b50939450505050505b92915050565b600154604080516001600160601b0319606085811b8216602084015230901b1660348201528151808203602801815260488201928390526342d65a8d60e01b9092526001600160a01b03909216916342d65a8d916106de91869190604c01611489565b600060405180830381600087803b1580156106f857600080fd5b505af115801561013e573d6000803e3d6000fd5b610714610a3d565b6104326000610d29565b610726610a3d565b61072e610d79565b610432610dc6565b61073e610a3d565b61041781610e09565b61074f610d79565b600080600061075f846001610947565b60015492955090935091506001600160a01b031663c58031008461078660208801886112e9565b6040516001600160601b0319606088811b8216602084015230901b16603482015260480160408051601f19818403018152602083018252600080845291516001600160e01b031960e088901b1681526107e89493919230918a906004016114ae565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b505050505050505050565b610828610a3d565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61041781610d29565b6108a3610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108d2576104173347610a97565b6040516370a0823160e01b815230600482015261041790829033906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109429190611515565b610b2a565b6000806060600061095786610e5c565b600154929550935091506001600160a01b03166340a7bb1061097c60208901896112e9565b60408051602081018252600080825291516001600160e01b031960e086901b1681526109b09392309291899060040161152e565b6040805180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190611582565b509350848015610a175750600354811080610a1757503460045485610a1591906115a6565b115b15610a355760405163ae64f5e560e01b815260040160405180910390fd5b509250925092565b6000546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610889565b604080516000808252602082019092526001600160a01b038416908390604051610ac191906115b9565b60006040518083038185875af1925050503d8060008114610afe576040519150601f19603f3d011682016040523d82523d6000602084013e610b03565b606091505b5050905080610b2557604051632e05b05360e21b815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610b8691906115b9565b6000604051808303816000865af19150503d8060008114610bc3576040519150601f19603f3d011682016040523d82523d6000602084013e610bc8565b606091505b50915091506000828015610bf4575081511580610bf4575081806020019051810190610bf491906115d5565b90508061013e57604051632fdb1b7f60e11b815260040160405180910390fd5b80806020019051810190610c289190611582565b60045560035550565b600054600160a01b900460ff166104325760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610889565b610c89610c31565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610cdf81610f1b565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156104325760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610889565b610dce610d79565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cb93390565b610e1281610f1b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6000806060610e6d848201856115f7565b810190610e7a91906110ab565b909350915060028260408601803590600090610e999060208a0161119e565b6001600160a01b031614610ebc57610eb7604088016020890161119e565b610ebe565b335b604051602001610f03949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6001600160601b031916604282015260560190565b60405160208183030381529060405290509193909250565b6001600160a01b0381163b61041757604051638c50d7cd60e01b81526001600160a01b0382166004820152602401610889565b61ffff8116811461041757600080fd5b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610fa057600080fd5b9250929050565b67ffffffffffffffff8116811461041757600080fd5b60008060008060008060808789031215610fd657600080fd5b8635610fe181610f4e565b9550602087013567ffffffffffffffff80821115610ffe57600080fd5b61100a8a838b01610f5e565b90975095506040890135915061101f82610fa7565b9093506060880135908082111561103557600080fd5b5061104289828a01610f5e565b979a9699509497509295939492505050565b60006020828403121561106657600080fd5b813567ffffffffffffffff81111561107d57600080fd5b82016080818503121561108f57600080fd5b9392505050565b6001600160a01b038116811461041757600080fd5b600080604083850312156110be57600080fd5b82356110c981611096565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ff57600080fd5b813567ffffffffffffffff8082111561111757600080fd5b818401915084601f83011261112b57600080fd5b81358181111561113d5761113d6110d7565b604051601f8201601f19908116603f01168101908382118183101715611165576111656110d7565b8160405282815287602084870101111561117e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156111b057600080fd5b813561108f81611096565b600080602083850312156111ce57600080fd5b823567ffffffffffffffff808211156111e657600080fd5b818501915085601f8301126111fa57600080fd5b81358181111561120957600080fd5b8660208260051b850101111561121e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156112715783516001600160801b03168352928401929184019160010161124c565b50909695505050505050565b6000806040838503121561129057600080fd5b823561129b81610f4e565b915060208301356112ab81611096565b809150509250929050565b6000602082840312156112c857600080fd5b815161108f81611096565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112fb57600080fd5b813561108f81610f4e565b600060c0828403121561131857600080fd5b60405160c0810181811067ffffffffffffffff8211171561133b5761133b6110d7565b604052825161134981610f4e565b8152602083015161135981610fa7565b6020820152604083015161136c81611096565b6040820152606083015161137f81610f4e565b6060820152608083015161139281610fa7565b608082015260a08301516113a581611096565b60a08201529392505050565b6000806000606084860312156113c657600080fd5b83516001600160801b03811681146113dd57600080fd5b60208501519093506113ee81610fa7565b60408501519092506113ff81610fa7565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000600182016114325761143261140a565b5060010190565b60005b8381101561145457818101518382015260200161143c565b50506000910152565b60008151808452611475816020860160208601611439565b601f01601f19169290920160200192915050565b61ffff831681526040602082015260006114a6604083018461145d565b949350505050565b61ffff8716815260c0602082015260006114cb60c083018861145d565b82810360408401526114dd818861145d565b6001600160a01b0387811660608601528616608085015283810360a08501529050611508818561145d565b9998505050505050505050565b60006020828403121561152757600080fd5b5051919050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061155c9083018661145d565b84151560608401528281036080840152611576818561145d565b98975050505050505050565b6000806040838503121561159557600080fd5b505080516020909101519092909150565b808201808211156106755761067561140a565b600082516115cb818460208701611439565b9190910192915050565b6000602082840312156115e757600080fd5b8151801515811461108f57600080fd5b6000808335601e1984360301811261160e57600080fd5b83018035915067ffffffffffffffff82111561162957600080fd5b602001915036819003821315610fa057600080fdfea26469706673582212203f689c94c63cff58d7c38caa963bdedcae9248112bdb776f056085adf7d8bf3764736f6c634300081300330000000000000000000000009740ff91f1985d8d2b71494ae1a2f723bb3ed9e40000000000000000000000005b19bd330a84c049b62d5b0fc2ba120217a18c1c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000072e28c7f34100afefc399fcc0ae041b8fe5841ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000006986b1b1816700Deployed Bytecode
0x6080604052600436106101175760003560e01c80637110e34d116100a0578063dbbb415511610064578063dbbb415514610317578063dfed8bd714610337578063efb7388014610357578063f2fde38b1461036a578063fbacefce1461038a57600080fd5b80637110e34d1461027b578063715018a61461029b5780638456cb59146102b05780638da5cb5b146102c5578063b353aaa7146102f757600080fd5b80633132bb31116100e75780633132bb31146101cf5780633f4ba83a146101ef5780635c975abb146102045780636548e9bc1461022e5780636a0b3ad41461024e57600080fd5b80621d356714610123578063093f0e2714610148578063286d05d21461018f5780632c16f926146101af57600080fd5b3661011e57005b600080fd5b34801561012f57600080fd5b5061014661013e366004610fbd565b505050505050565b005b34801561015457600080fd5b5061017c7f22ad9585a395edc8067b50da4778cafbb7fa2c4bbd7619fad6aeba403857fd7481565b6040519081526020015b60405180910390f35b34801561019b57600080fd5b5061017c6101aa366004611054565b6103aa565b3480156101bb57600080fd5b506101466101ca3660046110ab565b6103c0565b3480156101db57600080fd5b506101466101ea3660046110ed565b610406565b3480156101fb57600080fd5b5061014661041a565b34801561021057600080fd5b50600054600160a01b900460ff166040519015158152602001610186565b34801561023a57600080fd5b5061014661024936600461119e565b610434565b34801561025a57600080fd5b5061026e6102693660046111bb565b610445565b6040516101869190611230565b34801561028757600080fd5b5061014661029636600461127d565b61067b565b3480156102a757600080fd5b5061014661070c565b3480156102bc57600080fd5b5061014661071e565b3480156102d157600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610186565b34801561030357600080fd5b506001546102df906001600160a01b031681565b34801561032357600080fd5b5061014661033236600461119e565b610736565b34801561034357600080fd5b506002546102df906001600160a01b031681565b610146610365366004611054565b610747565b34801561037657600080fd5b5061014661038536600461119e565b610820565b34801561039657600080fd5b506101466103a536600461119e565b61089b565b60006103b7826000610947565b50909392505050565b6103c8610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038316016103fb576103f73382610a97565b5050565b6103f7823383610b2a565b61040e610a3d565b61041781610c14565b50565b610422610a3d565b61042a610c31565b610432610c81565b565b61043c610a3d565b61041781610cd6565b606060008267ffffffffffffffff811115610462576104626110d7565b60405190808252806020026020018201604052801561048b578160200160208202803683370190505b50600154604051639c729da160e01b81523060048201529192506000918291829182916001600160a01b031690639c729da190602401602060405180830381865afa1580156104de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050291906112b6565b905060005b8781101561066c57888882818110610521576105216112d3565b905060200201602081019061053691906112e9565b604051635233111160e11b815261ffff821660048201523060248201529095506001600160a01b0383169063a46622229060440160c060405180830381865afa158015610587573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ab9190611306565b60600151600254604051630462c3ff60e31b815261ffff8089166004830152831660248201529195506001600160a01b0316906323161ff890604401606060405180830381865afa158015610604573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062891906113b1565b9050508093505082868281518110610642576106426112d3565b6001600160801b03909216602092830291909101909101528061066481611420565b915050610507565b50939450505050505b92915050565b600154604080516001600160601b0319606085811b8216602084015230901b1660348201528151808203602801815260488201928390526342d65a8d60e01b9092526001600160a01b03909216916342d65a8d916106de91869190604c01611489565b600060405180830381600087803b1580156106f857600080fd5b505af115801561013e573d6000803e3d6000fd5b610714610a3d565b6104326000610d29565b610726610a3d565b61072e610d79565b610432610dc6565b61073e610a3d565b61041781610e09565b61074f610d79565b600080600061075f846001610947565b60015492955090935091506001600160a01b031663c58031008461078660208801886112e9565b6040516001600160601b0319606088811b8216602084015230901b16603482015260480160408051601f19818403018152602083018252600080845291516001600160e01b031960e088901b1681526107e89493919230918a906004016114ae565b6000604051808303818588803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b505050505050505050565b610828610a3d565b6001600160a01b0381166108925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61041781610d29565b6108a3610a3d565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeed196001600160a01b038216016108d2576104173347610a97565b6040516370a0823160e01b815230600482015261041790829033906001600160a01b038316906370a0823190602401602060405180830381865afa15801561091e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109429190611515565b610b2a565b6000806060600061095786610e5c565b600154929550935091506001600160a01b03166340a7bb1061097c60208901896112e9565b60408051602081018252600080825291516001600160e01b031960e086901b1681526109b09392309291899060040161152e565b6040805180830381865afa1580156109cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f09190611582565b509350848015610a175750600354811080610a1757503460045485610a1591906115a6565b115b15610a355760405163ae64f5e560e01b815260040160405180910390fd5b509250925092565b6000546001600160a01b031633146104325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610889565b604080516000808252602082019092526001600160a01b038416908390604051610ac191906115b9565b60006040518083038185875af1925050503d8060008114610afe576040519150601f19603f3d011682016040523d82523d6000602084013e610b03565b606091505b5050905080610b2557604051632e05b05360e21b815260040160405180910390fd5b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b1790529151600092839290871691610b8691906115b9565b6000604051808303816000865af19150503d8060008114610bc3576040519150601f19603f3d011682016040523d82523d6000602084013e610bc8565b606091505b50915091506000828015610bf4575081511580610bf4575081806020019051810190610bf491906115d5565b90508061013e57604051632fdb1b7f60e11b815260040160405180910390fd5b80806020019051810190610c289190611582565b60045560035550565b600054600160a01b900460ff166104325760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610889565b610c89610c31565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b610cdf81610f1b565b600280546001600160a01b0319166001600160a01b0383169081179091556040517fedb217d6a3bb873e0066d9872f47ec52905562e46c8f025fa4d5044a344aa5fc90600090a250565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600054600160a01b900460ff16156104325760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610889565b610dce610d79565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610cb93390565b610e1281610f1b565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fc8e81a4efc849969069ec6aae575cf7a6bc5f9d3abac59f4ed190a6f7e05fc6f90600090a250565b6000806060610e6d848201856115f7565b810190610e7a91906110ab565b909350915060028260408601803590600090610e999060208a0161119e565b6001600160a01b031614610ebc57610eb7604088016020890161119e565b610ebe565b335b604051602001610f03949392919060f09490941b6001600160f01b03191684526002840192909252602283015260601b6001600160601b031916604282015260560190565b60405160208183030381529060405290509193909250565b6001600160a01b0381163b61041757604051638c50d7cd60e01b81526001600160a01b0382166004820152602401610889565b61ffff8116811461041757600080fd5b60008083601f840112610f7057600080fd5b50813567ffffffffffffffff811115610f8857600080fd5b602083019150836020828501011115610fa057600080fd5b9250929050565b67ffffffffffffffff8116811461041757600080fd5b60008060008060008060808789031215610fd657600080fd5b8635610fe181610f4e565b9550602087013567ffffffffffffffff80821115610ffe57600080fd5b61100a8a838b01610f5e565b90975095506040890135915061101f82610fa7565b9093506060880135908082111561103557600080fd5b5061104289828a01610f5e565b979a9699509497509295939492505050565b60006020828403121561106657600080fd5b813567ffffffffffffffff81111561107d57600080fd5b82016080818503121561108f57600080fd5b9392505050565b6001600160a01b038116811461041757600080fd5b600080604083850312156110be57600080fd5b82356110c981611096565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156110ff57600080fd5b813567ffffffffffffffff8082111561111757600080fd5b818401915084601f83011261112b57600080fd5b81358181111561113d5761113d6110d7565b604051601f8201601f19908116603f01168101908382118183101715611165576111656110d7565b8160405282815287602084870101111561117e57600080fd5b826020860160208301376000928101602001929092525095945050505050565b6000602082840312156111b057600080fd5b813561108f81611096565b600080602083850312156111ce57600080fd5b823567ffffffffffffffff808211156111e657600080fd5b818501915085601f8301126111fa57600080fd5b81358181111561120957600080fd5b8660208260051b850101111561121e57600080fd5b60209290920196919550909350505050565b6020808252825182820181905260009190848201906040850190845b818110156112715783516001600160801b03168352928401929184019160010161124c565b50909695505050505050565b6000806040838503121561129057600080fd5b823561129b81610f4e565b915060208301356112ab81611096565b809150509250929050565b6000602082840312156112c857600080fd5b815161108f81611096565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156112fb57600080fd5b813561108f81610f4e565b600060c0828403121561131857600080fd5b60405160c0810181811067ffffffffffffffff8211171561133b5761133b6110d7565b604052825161134981610f4e565b8152602083015161135981610fa7565b6020820152604083015161136c81611096565b6040820152606083015161137f81610f4e565b6060820152608083015161139281610fa7565b608082015260a08301516113a581611096565b60a08201529392505050565b6000806000606084860312156113c657600080fd5b83516001600160801b03811681146113dd57600080fd5b60208501519093506113ee81610fa7565b60408501519092506113ff81610fa7565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b6000600182016114325761143261140a565b5060010190565b60005b8381101561145457818101518382015260200161143c565b50506000910152565b60008151808452611475816020860160208601611439565b601f01601f19169290920160200192915050565b61ffff831681526040602082015260006114a6604083018461145d565b949350505050565b61ffff8716815260c0602082015260006114cb60c083018861145d565b82810360408401526114dd818861145d565b6001600160a01b0387811660608601528616608085015283810360a08501529050611508818561145d565b9998505050505050505050565b60006020828403121561152757600080fd5b5051919050565b61ffff861681526001600160a01b038516602082015260a06040820181905260009061155c9083018661145d565b84151560608401528281036080840152611576818561145d565b98975050505050505050565b6000806040838503121561159557600080fd5b505080516020909101519092909150565b808201808211156106755761067561140a565b600082516115cb818460208701611439565b9190910192915050565b6000602082840312156115e757600080fd5b8151801515811461108f57600080fd5b6000808335601e1984360301811261160e57600080fd5b83018035915067ffffffffffffffff82111561162957600080fd5b602001915036819003821315610fa057600080fdfea26469706673582212203f689c94c63cff58d7c38caa963bdedcae9248112bdb776f056085adf7d8bf3764736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009740ff91f1985d8d2b71494ae1a2f723bb3ed9e40000000000000000000000005b19bd330a84c049b62d5b0fc2ba120217a18c1c000000000000000000000000000000000000000000000000000000000000008000000000000000000000000072e28c7f34100afefc399fcc0ae041b8fe5841ae00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000006986b1b1816700
-----Decoded View---------------
Arg [0] : _lzEndpoint (address): 0x9740FF91F1985D8d2B71494aE1A2f723bb3Ed9E4
Arg [1] : _lzRelayer (address): 0x5B19bd330A84c049b62D5B0FC2bA120217a18C1C
Arg [2] : _validation (bytes): 0x0000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000006986b1b1816700
Arg [3] : _owner (address): 0x72E28c7F34100AfefC399fcc0AE041B8fe5841AE
-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000009740ff91f1985d8d2b71494ae1a2f723bb3ed9e4
Arg [1] : 0000000000000000000000005b19bd330a84c049b62d5b0fc2ba120217a18c1c
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000072e28c7f34100afefc399fcc0ae041b8fe5841ae
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [5] : 0000000000000000000000000000000000000000000000000000000000001b58
Arg [6] : 000000000000000000000000000000000000000000000000006986b1b1816700Loading...LoadingLoading...Loading
Loading...Loading
Loading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingLoading...LoadingMultichain Portfolio | 30 Chains
Chain Token Portfolio % Price Amount Value ARB 23.86% $3,919.23 0.4838 $1,896.27 BASE 16.61% $3,919.23 0.3369 $1,320.31 LINEA 14.41% $3,922 0.292 $1,145.3 POL 11.41% $0.649369 1,396.3369 $906.74 SCROLL 8.73% $3,920.1 0.177 $693.99 OP 7.62% $3,920.17 0.1544 $605.38 BSC 4.93% $721.86 0.5424 $391.56 FTM 3.33% $1.3 204.2652 $264.8 GNO xDai (XDAI)2.83% $1 225.1683 $225.17 AVAX 2.33% $50.93 3.6381 $185.28 CELO 1.17% $0.912653 101.8729 $92.97 ETH 0.88% $3,920.1 0.0178 $69.8 MANTLE 0.47% $1.32 28.0375 $37.03 ARBNOVA 0.44% $3,919.93 0.008899 $34.88 GLMR 0.35% $0.339225 82.045 $27.83 OPBNB 0.33% $722.25 0.0363 $26.23 MOVR 0.25% $17.4 1.1216 $19.52 BLAST 0.05% $3,919.66 0.00096859 $3.8 [ 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.
Address QR Code
My Address - Private Name Tag or Note
My Name Tag:
Private Name Tags (up to 35 characters) can be used for easy identification of addressesPrivate Note:
A private note (up to 500 characters) can be attached to this address.
Please DO NOT store any passwords or private keys here.Compiler specific version warnings:
The compiled contract might be susceptible to VerbatimInvalidDeduplication (low-severity), FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity), MissingSideEffectsOnSelectorAccess (low-severity) Solidity Compiler Bugs.
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node.Before You Copy
Transaction Private Note
This website uses cookies to improve your experience. By continuing to use this website, you agree to its Terms and Privacy Policy.