Overview
XAI Balance
XAI Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
UNIMTokenImplementation
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 999999 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import {CutERC20Diamond} from '../../lib/@cu-tokens/src/implementation/CutERC20Diamond.sol'; /// @title Dummy "implementation" contract for LG Diamond interface for ERC-1967 compatibility /// @dev adapted from https://github.com/zdenham/diamond-etherscan?tab=readme-ov-file /// @dev This interface is used internally to call endpoints on a deployed diamond cluster. contract UNIMTokenImplementation is CutERC20Diamond { function initLZOFTV2(uint8 _sharedDecimals, address _lzEndpoint) external {} function setMinDstGas(uint16 _dstChainId, uint16 _packetType, uint _minGas) external {} function getTrustedRemoteAddress(uint16 _remoteChainId) external view returns (bytes memory) {} function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) public {} function setTrustedRemoteAddress(uint16 _remoteChainId, bytes calldata _remoteAddress) external {} function retryMessage( uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload ) public payable {} function nonblockingLzReceive( uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload ) public {} function burnFrom(address account, uint256 amount) external {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import {CutDiamond} from '../../lib/@lagunagames/lg-diamond-template/src/diamond/CutDiamond.sol'; // import '@openzeppelin-contracts/contracts/token/ERC20/IERC20.sol'; /// @title Dummy "implementation" contract for LG Diamond interface for ERC-1967 compatibility /// @dev adapted from https://github.com/zdenham/diamond-etherscan?tab=readme-ov-file /// @dev This interface is used internally to call endpoints on a deployed diamond cluster. contract CutERC20Diamond is CutDiamond { /** * @dev Returns the name of the token. */ function name() external view returns (string memory) {} /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() external view returns (string memory) {} /** * @dev Returns the address of the contract that is the controller of this token. */ function contractController() external view returns (address) {} /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) external view returns (uint256) {} /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) external returns (bool) {} /** * @dev See {IERC20-totalSupply}. */ function totalSupply() external view returns (uint256) {} /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) external view returns (uint256) {} /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() external pure returns (uint8) {} /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {} /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) external returns (bool) {} /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {} /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; import {IDiamondCut} from '../interfaces/IDiamondCut.sol'; import {IDiamondLoupe} from '../interfaces/IDiamondLoupe.sol'; import {IERC165} from '../interfaces/IERC165.sol'; import {LibSupportsInterface} from '../libraries/LibSupportsInterface.sol'; /// @title Dummy "implementation" contract for LG Diamond interface for ERC-1967 compatibility /// @dev adapted from https://github.com/zdenham/diamond-etherscan?tab=readme-ov-file /// @dev This interface is used internally to call endpoints on a deployed diamond cluster. contract CutDiamond is IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external pure returns (bool) { return (interfaceID == type(IERC165).interfaceId); } /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _diamondCut Contains the facet addresses and function selectors /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init function diamondCut( IDiamondCut.FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external {} /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @dev This is a convenience implementation of the above /// @param _diamondCut Contains the facet addresses and function selectors function diamondCut(IDiamondCut.FacetCut[] calldata _diamondCut) external {} /// @notice Removes one selector from the Diamond, using DiamondCut /// @param selector - The byte4 signature for a method selector to remove /// @custom:emits FacetCutAction function cutSelector(bytes4 selector) external {} /// @notice Removes one selector from the Diamond, using removeFunction() /// @param selector - The byte4 signature for a method selector to remove function deleteSelector(bytes4 selector) external {} /// @notice Removes many selectors from the Diamond, using DiamondCut /// @param selectors - Array of byte4 signatures for method selectors to remove /// @custom:emits FacetCutAction function cutSelectors(bytes4[] memory selectors) external {} /// @notice Removes many selectors from the Diamond, using removeFunctions() /// @param selectors - Array of byte4 signatures for method selectors to remove function deleteSelectors(bytes4[] memory selectors) external {} /// @notice Removes any selectors from the Diamond that come from a target /// @notice contract address, using DiamondCut. /// @param facet - The address of the Facet smart contract to remove /// @custom:emits FacetCutAction function cutFacet(address facet) external {} /// @notice Gets all facets and their selectors. /// @return facets_ Facet function facets() external view returns (IDiamondLoupe.Facet[] memory facets_) {} /// @notice Gets all the function selectors provided by a facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_) {} /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external view returns (address[] memory facetAddresses_) {} /// @notice Gets the facet that supports the given selector. /// @dev If facet is not found return address(0). /// @param _functionSelector The function selector. /// @return facetAddress_ The facet address. function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_) {} /// @notice Get the address of the owner /// @return The address of the owner. function owner() external view returns (address) {} /// @notice Set the address of the new owner of the contract /// @dev Set _newOwner to address(0) to renounce any ownership. /// @param _newOwner The address of the new owner of the contract function transferOwnership(address _newOwner) external {} /// @notice Set the dummy "implementation" contract address /// @custom:emits Upgraded function setImplementation(address _implementation) external {} /// @notice Get the dummy "implementation" contract address /// @return The dummy "implementation" contract address function implementation() external view returns (address) {} /// @notice Set whether an interface is implemented /// @dev Only the contract owner can call this function /// @param interfaceID The interface identifier, as specified in ERC-165 /// @param implemented `true` if the contract implements `interfaceID` function setSupportsInterface(bytes4 interfaceID, bool implemented) external {} /// @notice Set a list of interfaces as implemented or not /// @dev Only the contract owner can call this function /// @param interfaceIDs The interface identifiers, as specified in ERC-165 /// @param allImplemented `true` if the contract implements all interfaces function setSupportsInterfaces(bytes4[] calldata interfaceIDs, bool allImplemented) external {} /// @notice Returns a list of interfaces that have (ever) been supported /// @return The list of interfaces function interfaces() external view returns (LibSupportsInterface.KnownInterface[] memory) {} }
//SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.19; /******************************************************************************\ * Author: Nick Mudge <[email protected]> (https://twitter.com/mudgen) * EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 /******************************************************************************/ interface IDiamondCut { enum FacetCutAction { Add, Replace, Remove } // Add=0, Replace=1, Remove=2 struct FacetCut { address facetAddress; FacetCutAction action; bytes4[] functionSelectors; } /// @notice Add/replace/remove any number of functions and optionally execute /// a function with delegatecall /// @param _diamondCut Contains the facet addresses and function selectors /// @param _init The address of the contract or facet to execute _calldata /// @param _calldata A function call, including function selector and arguments /// _calldata is executed with delegatecall on _init function diamondCut(FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata) external; event DiamondCut(FacetCut[] _diamondCut, address _init, bytes _calldata); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; // Adapted from the Diamond 3 reference implementation by Nick Mudge: // https://github.com/mudgen/diamond-3-hardhat // A loupe is a small magnifying glass used to look at diamonds. // These functions look at diamonds interface IDiamondLoupe { /// These functions are expected to be called frequently /// by tools. struct Facet { address facetAddress; bytes4[] functionSelectors; } /// @notice Gets all facet addresses and their four byte function selectors. /// @return facets_ Facet function facets() external view returns (Facet[] memory facets_); /// @notice Gets all the function selectors supported by a specific facet. /// @param _facet The facet address. /// @return facetFunctionSelectors_ function facetFunctionSelectors(address _facet) external view returns (bytes4[] memory facetFunctionSelectors_); /// @notice Get all the facet addresses used by a diamond. /// @return facetAddresses_ function facetAddresses() external view returns (address[] memory facetAddresses_); /// @notice Gets the facet that supports the given selector. /// @dev If facet is not found return address(0). /// @param _functionSelector The function selector. /// @return facetAddress_ The facet address. function facetAddress(bytes4 _functionSelector) external view returns (address facetAddress_); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /// @title ERC-165 Standard Interface Detection /// @dev https://eips.ethereum.org/EIPS/eip-165 interface IERC165 { /// @notice Query if a contract implements an interface /// @param interfaceID The interface identifier, as specified in ERC-165 /// @dev Interface identification is specified in ERC-165. This function /// uses less than 30,000 gas. /// @return `true` if the contract implements `interfaceID` and /// `interfaceID` is not 0xffffffff, `false` otherwise function supportsInterface(bytes4 interfaceID) external view returns (bool); }
// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.19; import {LibContractOwner} from '../libraries/LibContractOwner.sol'; /// @title Library for the common LG implementation of ERC-165 /// @author [email protected] /// @custom:storage-location erc7201:games.laguna.LibSupportsInterface library LibSupportsInterface { bytes32 public constant SUPPORTS_INTERFACE_STORAGE_POSITION = keccak256(abi.encode(uint256(keccak256('games.laguna.LibSupportsInterface')) - 1)) & ~bytes32(uint256(0xff)); struct KnownInterface { bytes4 selector; bool supported; } struct SupportsInterfaceStorage { mapping(bytes4 selector => bool supported) supportedInterfaces; bytes4[] interfaces; } /// @notice Storage slot for SupportsInterface state data function supportsInterfaceStorage() internal pure returns (SupportsInterfaceStorage storage storageSlot) { bytes32 position = SUPPORTS_INTERFACE_STORAGE_POSITION; // solhint-disable-next-line no-inline-assembly assembly { storageSlot.slot := position } } /// @notice Checks if a contract implements an interface /// @param _interfaceId Interface ID to check /// @return true if the contract implements the interface function supportsInterface(bytes4 _interfaceId) internal view returns (bool) { return supportsInterfaceStorage().supportedInterfaces[_interfaceId]; } /// @notice Sets whether a contract implements an interface /// @param _interfaceId Interface ID to set /// @param _implemented true if the contract implements the interface function setSupportsInterface(bytes4 _interfaceId, bool _implemented) internal { SupportsInterfaceStorage storage s = supportsInterfaceStorage(); if (_implemented && !s.supportedInterfaces[_interfaceId]) { s.interfaces.push(_interfaceId); } s.supportedInterfaces[_interfaceId] = _implemented; } /// @notice Returns the list of interfaces this contract has supported, and whether they are supported currently. /// @return The list of interfaces function getKnownInterfaces() internal view returns (KnownInterface[] memory) { SupportsInterfaceStorage storage s = supportsInterfaceStorage(); KnownInterface[] memory interfaces = new KnownInterface[](s.interfaces.length); for (uint i = 0; i < s.interfaces.length; ++i) { interfaces[i] = KnownInterface({ selector: s.interfaces[i], supported: s.supportedInterfaces[s.interfaces[i]] }); } return interfaces; } /// @notice Calculate the interface ID for a list of function selectors /// @dev Per ERC-165: "We define the interface identifier as the XOR of all function selectors in the interface" /// @param functionSelectors The list of function selectors in the interface /// @return interfaceId The ERC-165 interface ID function calculateInterfaceId(bytes4[] memory functionSelectors) internal pure returns (bytes4 interfaceId) { for (uint256 i = 0; i < functionSelectors.length; ++i) { interfaceId ^= functionSelectors[i]; } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /// @title Library for the common LG implementation of ERC-173 Contract Ownership Standard /// @author [email protected] /// @custom:storage-location erc1967:eip1967.proxy.admin library LibContractOwner { error CallerIsNotContractOwner(); /// @notice This emits when ownership of a contract changes. /// @dev ERC-173 event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @notice Emitted when the admin account has changed. /// @dev ERC-1967 event AdminChanged(address previousAdmin, address newAdmin); // @dev Standard storage slot for the ERC-1967 admin address // @dev bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1) bytes32 private constant ADMIN_SLOT_POSITION = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103; struct LibOwnerStorage { address contractOwner; } /// @notice Storage slot for Contract Owner state data function ownerStorage() internal pure returns (LibOwnerStorage storage storageSlot) { bytes32 position = ADMIN_SLOT_POSITION; // solhint-disable-next-line no-inline-assembly assembly { storageSlot.slot := position } } /// @notice Sets the contract owner /// @param newOwner The new owner /// @custom:emits OwnershipTransferred function setContractOwner(address newOwner) internal { LibOwnerStorage storage ls = ownerStorage(); address previousOwner = ls.contractOwner; ls.contractOwner = newOwner; emit OwnershipTransferred(previousOwner, newOwner); emit AdminChanged(previousOwner, newOwner); } /// @notice Gets the contract owner wallet /// @return owner The contract owner function contractOwner() internal view returns (address owner) { owner = ownerStorage().contractOwner; } /// @notice Ensures that the caller is the contract owner, or throws an error. /// @custom:throws LibAccess: Must be contract owner function enforceIsContractOwner() internal view { if (msg.sender != ownerStorage().contractOwner) revert CallerIsNotContractOwner(); } }
{ "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "@openzeppelin-contracts/=lib/@cu-tokens/lib/openzeppelin-contracts/", "@layerzerolabs/=lib/@layerzerolabs/", "@lg-diamond-template/=lib/@lagunagames/lg-diamond-template/", "@lg-layerzero/=lib/@lg-layerzero/src/", "openzeppelin/=lib/@openzeppelin/contracts/", "@openzeppelin/=lib/@openzeppelin/" ], "optimizer": { "enabled": true, "runs": 999999, "details": { "peephole": true, "inliner": true, "deduplicate": true, "cse": true, "yul": true, "yulDetails": { "stackAllocation": true, "optimizerSteps": "dhfoDgvulfnTUtnIf" } } }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"facet","type":"address"}],"name":"cutFacet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"cutSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"name":"cutSelectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"selector","type":"bytes4"}],"name":"deleteSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4[]","name":"selectors","type":"bytes4[]"}],"name":"deleteSelectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"},{"internalType":"address","name":"_init","type":"address"},{"internalType":"bytes","name":"_calldata","type":"bytes"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"enum IDiamondCut.FacetCutAction","name":"action","type":"uint8"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondCut.FacetCut[]","name":"_diamondCut","type":"tuple[]"}],"name":"diamondCut","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_functionSelector","type":"bytes4"}],"name":"facetAddress","outputs":[{"internalType":"address","name":"facetAddress_","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facetAddresses","outputs":[{"internalType":"address[]","name":"facetAddresses_","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_facet","type":"address"}],"name":"facetFunctionSelectors","outputs":[{"internalType":"bytes4[]","name":"facetFunctionSelectors_","type":"bytes4[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"facets","outputs":[{"components":[{"internalType":"address","name":"facetAddress","type":"address"},{"internalType":"bytes4[]","name":"functionSelectors","type":"bytes4[]"}],"internalType":"struct IDiamondLoupe.Facet[]","name":"facets_","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_remoteChainId","type":"uint16"}],"name":"getTrustedRemoteAddress","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_sharedDecimals","type":"uint8"},{"internalType":"address","name":"_lzEndpoint","type":"address"}],"name":"initLZOFTV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"interfaces","outputs":[{"components":[{"internalType":"bytes4","name":"selector","type":"bytes4"},{"internalType":"bool","name":"supported","type":"bool"}],"internalType":"struct LibSupportsInterface.KnownInterface[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"nonblockingLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"retryMessage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_implementation","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"uint16","name":"_packetType","type":"uint16"},{"internalType":"uint256","name":"_minGas","type":"uint256"}],"name":"setMinDstGas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"},{"internalType":"bool","name":"implemented","type":"bool"}],"name":"setSupportsInterface","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4[]","name":"interfaceIDs","type":"bytes4[]"},{"internalType":"bool","name":"allImplemented","type":"bool"}],"name":"setSupportsInterfaces","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_remoteChainId","type":"uint16"},{"internalType":"bytes","name":"_remoteAddress","type":"bytes"}],"name":"setTrustedRemoteAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523461001a57604051610d656100208239610d6590f35b600080fdfe6080604052600436101561001257600080fd5b60003560e01c80621d35671461022857806301ffc9a71461024b57806306fdde031461020a578063095ea7b3146101fb57806318160ddd146102465780631939dddb1461020f5780631f931c1c1461024157806323b872dd1461023c578063313ce5671461023757806339509351146101fb57806352ef6b2c1461023257806354e7796f1461022d5780635c60da1b1461020f5780636463e3a0146101c457806366ad5c8a1461022857806366e5722b1461022357806370a082311461021e57806379cc6790146102195780637a0ed627146102145780638da5cb5b1461020f57806395d89b411461020a5780639f38369a14610205578063a457c2d7146101fb578063a6638c0e146101c9578063a6c3d16514610200578063a9059cbb146101fb578063adfca15e146101f6578063cdffacc6146101f1578063d1deba1f146101ec578063d784d426146101c9578063dd62ed3e146101e7578063debb3856146101dd578063df2a5b3b146101e2578063e0435c0b146101dd578063e57e69c6146101d8578063f1c2fee7146101d3578063f2709f21146101ce578063f2fde38b146101c95763ff6f3e0b03610250575b6108c9565b610adc565b610cfb565b610c6c565b610c2c565b610bbf565b610bf6565b610ba9565b610b7b565b610b65565b610b43565b61051e565b610b22565b610ac0565b61049d565b610560565b610a8d565b610961565b610945565b610915565b610328565b61077f565b610728565b61068f565b610673565b610625565b61053a565b610399565b600080fd5b61ffff81165b0361025057565b9050359061026f82610255565b565b909182601f830112156102505781359167ffffffffffffffff831161025057602001926001830284011161025057565b67ffffffffffffffff811661025b565b9050359061026f826102a1565b9091608082840312610250576102d48383610262565b92602083013567ffffffffffffffff811161025057816102f5918501610271565b92909361030583604083016102b1565b92606082013567ffffffffffffffff8111610250576103249201610271565b9091565b34610250576103383660046102be565b50505050505061034760405190565b005b0390f35b7fffffffff00000000000000000000000000000000000000000000000000000000811661025b565b9050359061026f8261034d565b906020828203126102505761039691610375565b90565b34610250576103496103f66103af366004610382565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405191829182901515815260200190565b600091031261025057565b60005b8381106104265750506000910152565b8181015183820152602001610416565b6104576104606020936104889361044b815190565b80835293849260200190565b95869101610413565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b0190565b602080825261039692910190610436565b34610250576104ad366004610408565b61034960605b6040519182918261048c565b73ffffffffffffffffffffffffffffffffffffffff811661025b565b9050359061026f826104bf565b8061025b565b9050359061026f826104e8565b9190604083820312610250576103969061051581856104db565b936020016104ee565b34610250576103496103f66105343660046104fb565b90610d1a565b346102505761054a366004610408565b61034960005b6040519182918290815260200190565b3461025057610570366004610408565b61034960005b6040519182918273ffffffffffffffffffffffffffffffffffffffff909116815260200190565b909182601f830112156102505781359167ffffffffffffffff831161025057602001926020830284011161025057565b919060608382031261025057823567ffffffffffffffff811161025057816105f691850161059d565b92909361060683602083016104db565b92604082013567ffffffffffffffff8111610250576103249201610271565b34610250576106353660046105cd565b505050505061034760405190565b90916060828403126102505761039661065c84846104db565b9361066a81602086016104db565b936040016104ee565b34610250576103496103f6610689366004610643565b91610d24565b346102505761069f366004610408565b60405160008152602090f35b906106cb6106c46106ba845190565b8084529260200190565b9260200190565b9060005b8181106106dc5750505090565b90919261070f610708600192865173ffffffffffffffffffffffffffffffffffffffff16815260200190565b9460200190565b9291016106cf565b6020808252610396929101906106ab565b3461025057610738366004610408565b60405180610349606082610717565b80151561025b565b9050359061026f82610747565b919060408382031261025057610396906107768185610375565b9360200161074f565b346102505761078f36600461075c565b5050604051005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810190811067ffffffffffffffff82111761080557604052565b610796565b9061026f61081760405190565b92836107c5565b67ffffffffffffffff81116108055760208091020190565b9092919261084b6108468261081e565b61080a565b938185526020808601920283019281841161025057915b83831061086f5750505050565b6020809161087d8486610375565b815201920191610862565b9080601f830112156102505781602061039693359101610836565b9060208282031261025057813567ffffffffffffffff8111610250576103969201610888565b34610250576108d93660046108a3565b50604051005b9160408383031261025057823567ffffffffffffffff81116102505761090a8361039692860161059d565b93909460200161074f565b34610250576109253660046108df565b50505061034760405190565b9060208282031261025057610396916104db565b346102505761034961055061095b366004610931565b50600090565b346102505761078f3660046104fb565b906109806106c46106ba845190565b9060005b8181106109915750505090565b9091926109c961070860019286517fffffffff0000000000000000000000000000000000000000000000000000000016815260200190565b929101610984565b805173ffffffffffffffffffffffffffffffffffffffff16825261039691604081019160200151906020818403910152610971565b90610396916109d1565b90610a26610a1c835190565b8083529160200190565b9081610a386020830284019460200190565b926000915b838310610a4c57505050505090565b90919293946020610a6f610a6883856001950387528951610a06565b9760200190565b9301930191939290610a3d565b602080825261039692910190610a10565b3461025057610a9d366004610408565b60405180610349606082610a7c565b906020828203126102505761039691610262565b34610250576103496104b3610ad6366004610aac565b50606090565b34610250576108d9366004610931565b91909160408184031261025057610b038382610262565b92602082013567ffffffffffffffff8111610250576103249201610271565b3461025057610925366004610aec565b602080825261039692910190610971565b3461025057610349610b59610ad6366004610931565b60405191829182610b32565b346102505761034961057661095b366004610382565b6103383660046102be565b91906040838203126102505761039690610ba081856104db565b936020016104db565b3461025057610349610550610534366004610b86565b34610250576108d9366004610382565b909160608284031261025057610396610be88484610262565b9361066a8160208601610262565b3461025057610925366004610bcf565b9060208282031261025057813567ffffffffffffffff811161025057610324920161059d565b346102505761078f366004610c06565b60ff811661025b565b9050359061026f82610c3c565b91906040838203126102505761039690610ba08185610c45565b346102505761078f366004610c52565b90610c8b6106c46106ba845190565b9060005b818110610c9c5750505090565b909192610ce2610708600192865180517fffffffff0000000000000000000000000000000000000000000000000000000016825260209081015115159082015260400190565b929101610c8f565b602080825261039692910190610c7c565b3461025057610d0b366004610408565b60405180610349606082610cea565b5050610396600090565b50505061039660009056fea2646970667358221220a63c2998eb2db37894a526c00f92c5a56b739bdf24f302a10a1c9878aa614c4f64736f6c63430008130033
Deployed Bytecode
0x6080604052600436101561001257600080fd5b60003560e01c80621d35671461022857806301ffc9a71461024b57806306fdde031461020a578063095ea7b3146101fb57806318160ddd146102465780631939dddb1461020f5780631f931c1c1461024157806323b872dd1461023c578063313ce5671461023757806339509351146101fb57806352ef6b2c1461023257806354e7796f1461022d5780635c60da1b1461020f5780636463e3a0146101c457806366ad5c8a1461022857806366e5722b1461022357806370a082311461021e57806379cc6790146102195780637a0ed627146102145780638da5cb5b1461020f57806395d89b411461020a5780639f38369a14610205578063a457c2d7146101fb578063a6638c0e146101c9578063a6c3d16514610200578063a9059cbb146101fb578063adfca15e146101f6578063cdffacc6146101f1578063d1deba1f146101ec578063d784d426146101c9578063dd62ed3e146101e7578063debb3856146101dd578063df2a5b3b146101e2578063e0435c0b146101dd578063e57e69c6146101d8578063f1c2fee7146101d3578063f2709f21146101ce578063f2fde38b146101c95763ff6f3e0b03610250575b6108c9565b610adc565b610cfb565b610c6c565b610c2c565b610bbf565b610bf6565b610ba9565b610b7b565b610b65565b610b43565b61051e565b610b22565b610ac0565b61049d565b610560565b610a8d565b610961565b610945565b610915565b610328565b61077f565b610728565b61068f565b610673565b610625565b61053a565b610399565b600080fd5b61ffff81165b0361025057565b9050359061026f82610255565b565b909182601f830112156102505781359167ffffffffffffffff831161025057602001926001830284011161025057565b67ffffffffffffffff811661025b565b9050359061026f826102a1565b9091608082840312610250576102d48383610262565b92602083013567ffffffffffffffff811161025057816102f5918501610271565b92909361030583604083016102b1565b92606082013567ffffffffffffffff8111610250576103249201610271565b9091565b34610250576103383660046102be565b50505050505061034760405190565b005b0390f35b7fffffffff00000000000000000000000000000000000000000000000000000000811661025b565b9050359061026f8261034d565b906020828203126102505761039691610375565b90565b34610250576103496103f66103af366004610382565b7fffffffff00000000000000000000000000000000000000000000000000000000167f01ffc9a7000000000000000000000000000000000000000000000000000000001490565b60405191829182901515815260200190565b600091031261025057565b60005b8381106104265750506000910152565b8181015183820152602001610416565b6104576104606020936104889361044b815190565b80835293849260200190565b95869101610413565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690565b0190565b602080825261039692910190610436565b34610250576104ad366004610408565b61034960605b6040519182918261048c565b73ffffffffffffffffffffffffffffffffffffffff811661025b565b9050359061026f826104bf565b8061025b565b9050359061026f826104e8565b9190604083820312610250576103969061051581856104db565b936020016104ee565b34610250576103496103f66105343660046104fb565b90610d1a565b346102505761054a366004610408565b61034960005b6040519182918290815260200190565b3461025057610570366004610408565b61034960005b6040519182918273ffffffffffffffffffffffffffffffffffffffff909116815260200190565b909182601f830112156102505781359167ffffffffffffffff831161025057602001926020830284011161025057565b919060608382031261025057823567ffffffffffffffff811161025057816105f691850161059d565b92909361060683602083016104db565b92604082013567ffffffffffffffff8111610250576103249201610271565b34610250576106353660046105cd565b505050505061034760405190565b90916060828403126102505761039661065c84846104db565b9361066a81602086016104db565b936040016104ee565b34610250576103496103f6610689366004610643565b91610d24565b346102505761069f366004610408565b60405160008152602090f35b906106cb6106c46106ba845190565b8084529260200190565b9260200190565b9060005b8181106106dc5750505090565b90919261070f610708600192865173ffffffffffffffffffffffffffffffffffffffff16815260200190565b9460200190565b9291016106cf565b6020808252610396929101906106ab565b3461025057610738366004610408565b60405180610349606082610717565b80151561025b565b9050359061026f82610747565b919060408382031261025057610396906107768185610375565b9360200161074f565b346102505761078f36600461075c565b5050604051005b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810190811067ffffffffffffffff82111761080557604052565b610796565b9061026f61081760405190565b92836107c5565b67ffffffffffffffff81116108055760208091020190565b9092919261084b6108468261081e565b61080a565b938185526020808601920283019281841161025057915b83831061086f5750505050565b6020809161087d8486610375565b815201920191610862565b9080601f830112156102505781602061039693359101610836565b9060208282031261025057813567ffffffffffffffff8111610250576103969201610888565b34610250576108d93660046108a3565b50604051005b9160408383031261025057823567ffffffffffffffff81116102505761090a8361039692860161059d565b93909460200161074f565b34610250576109253660046108df565b50505061034760405190565b9060208282031261025057610396916104db565b346102505761034961055061095b366004610931565b50600090565b346102505761078f3660046104fb565b906109806106c46106ba845190565b9060005b8181106109915750505090565b9091926109c961070860019286517fffffffff0000000000000000000000000000000000000000000000000000000016815260200190565b929101610984565b805173ffffffffffffffffffffffffffffffffffffffff16825261039691604081019160200151906020818403910152610971565b90610396916109d1565b90610a26610a1c835190565b8083529160200190565b9081610a386020830284019460200190565b926000915b838310610a4c57505050505090565b90919293946020610a6f610a6883856001950387528951610a06565b9760200190565b9301930191939290610a3d565b602080825261039692910190610a10565b3461025057610a9d366004610408565b60405180610349606082610a7c565b906020828203126102505761039691610262565b34610250576103496104b3610ad6366004610aac565b50606090565b34610250576108d9366004610931565b91909160408184031261025057610b038382610262565b92602082013567ffffffffffffffff8111610250576103249201610271565b3461025057610925366004610aec565b602080825261039692910190610971565b3461025057610349610b59610ad6366004610931565b60405191829182610b32565b346102505761034961057661095b366004610382565b6103383660046102be565b91906040838203126102505761039690610ba081856104db565b936020016104db565b3461025057610349610550610534366004610b86565b34610250576108d9366004610382565b909160608284031261025057610396610be88484610262565b9361066a8160208601610262565b3461025057610925366004610bcf565b9060208282031261025057813567ffffffffffffffff811161025057610324920161059d565b346102505761078f366004610c06565b60ff811661025b565b9050359061026f82610c3c565b91906040838203126102505761039690610ba08185610c45565b346102505761078f366004610c52565b90610c8b6106c46106ba845190565b9060005b818110610c9c5750505090565b909192610ce2610708600192865180517fffffffff0000000000000000000000000000000000000000000000000000000016825260209081015115159082015260400190565b929101610c8f565b602080825261039692910190610c7c565b3461025057610d0b366004610408565b60405180610349606082610cea565b5050610396600090565b50505061039660009056fea2646970667358221220a63c2998eb2db37894a526c00f92c5a56b739bdf24f302a10a1c9878aa614c4f64736f6c63430008130033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.