Overview
S Balance
S Value
$0.00More Info
Private Name Tags
ContractCreator
Loading...
Loading
Contract Name:
SgInfoV2
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 100000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* ░██╗░░░░░░░██╗░█████╗░░█████╗░░░░░░░███████╗██╗ ░██║░░██╗░░██║██╔══██╗██╔══██╗░░░░░░██╔════╝██║ ░╚██╗████╗██╔╝██║░░██║██║░░██║█████╗█████╗░░██║ ░░████╔═████║░██║░░██║██║░░██║╚════╝██╔══╝░░██║ ░░╚██╔╝░╚██╔╝░╚█████╔╝╚█████╔╝░░░░░░██║░░░░░██║ ░░░╚═╝░░░╚═╝░░░╚════╝░░╚════╝░░░░░░░╚═╝░░░░░╚═╝ * MIT License * =========== * * Copyright (c) 2024 WOOFi * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import {ISgInfoV2} from "../interfaces/cross_chain/ISgInfoV2.sol"; /// @title SgInfoV2 for CrossChainRouterV5. /// @notice Router for stateless execution of cross chain swap against Stargate V2. /// @custom:stargate-contracts https://stargateprotocol.gitbook.io/stargate/v2-developer-docs/technical-reference/v2-supported-networks-and-assets contract SgInfoV2 is ISgInfoV2, OwnableUpgradeable { /* ----- Variables ----- */ // Stargate eid on local chain uint32 public sgEidLocal; // eid => LayerZero Endpoint address mapping(uint32 => address) public endpoints; // eid => stargate address mapping(uint32 => mapping(address => address)) public stargates; /* ----- Constructor ----- */ /// @custom:oz-upgrades-unsafe-allow constructor constructor() { _disableInitializers(); } /* ----- Functions ----- */ function initialize( address _owner, uint32 _sgEidLocal ) external initializer { __Ownable_init(_owner); sgEidLocal = _sgEidLocal; _initEndpoints(); _initStargates(); } function _initEndpoints() internal { // Ethereum endpoints[30101] = 0x1a44076050125825900e736c501f859c50fE728c; // BNB Chain endpoints[30102] = 0x1a44076050125825900e736c501f859c50fE728c; // Avalanche endpoints[30106] = 0x1a44076050125825900e736c501f859c50fE728c; // Polygon endpoints[30109] = 0x1a44076050125825900e736c501f859c50fE728c; // Arbitrum endpoints[30110] = 0x1a44076050125825900e736c501f859c50fE728c; // Optimism endpoints[30111] = 0x1a44076050125825900e736c501f859c50fE728c; // Linea endpoints[30183] = 0x1a44076050125825900e736c501f859c50fE728c; // Base endpoints[30184] = 0x1a44076050125825900e736c501f859c50fE728c; // Mantle endpoints[30181] = 0x1a44076050125825900e736c501f859c50fE728c; } function _initStargates() internal { // Ethereum stargates[30101][0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE] = 0x77b2043768d28E9C9aB44E1aBfC95944bcE57931; // Native ETH stargates[30101][0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48] = 0xc026395860Db2d07ee33e05fE50ed7bD583189C7; // USDC stargates[30101][0xdAC17F958D2ee523a2206206994597C13D831ec7] = 0x933597a323Eb81cAe705C5bC29985172fd5A3973; // USDT stargates[30101][0xd5F7838F5C461fefF7FE49ea5ebaF7728bB0ADfa] = 0x268Ca24DAefF1FaC2ed883c598200CcbB79E931D; // mETH // BNB Chain stargates[30102][0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d] = 0x962Bd449E630b0d928f308Ce63f1A21F02576057; // USDC stargates[30102][0x55d398326f99059fF775485246999027B3197955] = 0x138EB30f73BC423c6455C53df6D89CB01d9eBc63; // USDT // Avalanche stargates[30106][0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E] = 0x5634c4a5FEd09819E3c46D86A965Dd9447d86e47; // USDC stargates[30106][0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7] = 0x12dC9256Acc9895B076f6638D628382881e62CeE; // USDT // Polygon stargates[30109][0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359] = 0x9Aa02D4Fae7F58b8E8f34c66E756cC734DAc7fe4; // USDC stargates[30109][0xc2132D05D31c914a87C6611C10748AEb04B58e8F] = 0xd47b03ee6d86Cf251ee7860FB2ACf9f91B9fD4d7; // USDT // Arbitrum stargates[30110][0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE] = 0xA45B5130f36CDcA45667738e2a258AB09f4A5f7F; // Native ETH stargates[30110][0xaf88d065e77c8cC2239327C5EDb3A432268e5831] = 0xe8CDF27AcD73a434D661C84887215F7598e7d0d3; // USDC stargates[30110][0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9] = 0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0; // USDT // Optimism stargates[30111][0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE] = 0xe8CDF27AcD73a434D661C84887215F7598e7d0d3; // Native ETH stargates[30111][0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85] = 0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0; // USDC stargates[30111][0x94b008aA00579c1307B0EF2c499aD98a8ce58e58] = 0x19cFCE47eD54a88614648DC3f19A5980097007dD; // USDT // Linea stargates[30183][0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE] = 0x81F6138153d473E8c5EcebD3DC8Cd4903506B075; // Native ETH // Base stargates[30184][0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE] = 0xdc181Bd607330aeeBEF6ea62e03e5e1Fb4B6F7C7; // Native ETH stargates[30184][0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913] = 0x27a16dc786820B16E5c9028b75B99F6f604b5d26; // USDC // Mantle stargates[30181][0xdEAddEaDdeadDEadDEADDEAddEADDEAddead1111] = 0x4c1d3Fc3fC3c177c3b633427c2F769276c547463; // WETH stargates[30181][0x09Bc4E0D864854c6aFB6eB9A9cdF58aC190D0dF9] = 0xAc290Ad4e0c891FDc295ca4F0a6214cf6dC6acDC; // USDC stargates[30181][0x201EBa5CC46D216Ce6DC03F6a759e8E766e956aE] = 0xB715B85682B731dB9D5063187C450095c91C57FC; // USDT stargates[30181][0xcDA86A272531e8640cD7F1a92c01839911B90bb0] = 0xF7628d84a2BbD9bb9c8E686AC95BB5d55169F3F1; // mETH } function setSgEidLocal(uint32 _eid) external onlyOwner { sgEidLocal = _eid; } function setEndpoint( uint32 _eid, address _endpoint ) external onlyOwner { endpoints[_eid] = _endpoint; } function setStargate( uint32 _eid, address _token, address _stargate ) external onlyOwner { stargates[_eid][_token] = _stargate; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol) pragma solidity ^0.8.20; import {ContextUpgradeable} from "../utils/ContextUpgradeable.sol"; import {Initializable} from "../proxy/utils/Initializable.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * The initial owner is set to the address provided by the deployer. This can * later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract OwnableUpgradeable is Initializable, ContextUpgradeable { /// @custom:storage-location erc7201:openzeppelin.storage.Ownable struct OwnableStorage { address _owner; } // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Ownable")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant OwnableStorageLocation = 0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300; function _getOwnableStorage() private pure returns (OwnableStorage storage $) { assembly { $.slot := OwnableStorageLocation } } /** * @dev The caller account is not authorized to perform an operation. */ error OwnableUnauthorizedAccount(address account); /** * @dev The owner is not a valid owner account. (eg. `address(0)`) */ error OwnableInvalidOwner(address owner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the address provided by the deployer as the initial owner. */ function __Ownable_init(address initialOwner) internal onlyInitializing { __Ownable_init_unchained(initialOwner); } function __Ownable_init_unchained(address initialOwner) internal onlyInitializing { if (initialOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(initialOwner); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { OwnableStorage storage $ = _getOwnableStorage(); return $._owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { if (owner() != _msgSender()) { revert OwnableUnauthorizedAccount(_msgSender()); } } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { if (newOwner == address(0)) { revert OwnableInvalidOwner(address(0)); } _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { OwnableStorage storage $ = _getOwnableStorage(); address oldOwner = $._owner; $._owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol) pragma solidity ^0.8.20; /** * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. * * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be * reused. This mechanism prevents re-execution of each "step" but allows the creation of new initialization steps in * case an upgrade adds a module that needs to be initialized. * * For example: * * [.hljs-theme-light.nopadding] * ```solidity * contract MyToken is ERC20Upgradeable { * function initialize() initializer public { * __ERC20_init("MyToken", "MTK"); * } * } * * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { * function initializeV2() reinitializer(2) public { * __ERC20Permit_init("MyToken"); * } * } * ``` * * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. * * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. * * [CAUTION] * ==== * Avoid leaving a contract uninitialized. * * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: * * [.hljs-theme-light.nopadding] * ``` * /// @custom:oz-upgrades-unsafe-allow constructor * constructor() { * _disableInitializers(); * } * ``` * ==== */ abstract contract Initializable { /** * @dev Storage of the initializable contract. * * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions * when using with upgradeable contracts. * * @custom:storage-location erc7201:openzeppelin.storage.Initializable */ struct InitializableStorage { /** * @dev Indicates that the contract has been initialized. */ uint64 _initialized; /** * @dev Indicates that the contract is in the process of being initialized. */ bool _initializing; } // keccak256(abi.encode(uint256(keccak256("openzeppelin.storage.Initializable")) - 1)) & ~bytes32(uint256(0xff)) bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00; /** * @dev The contract is already initialized. */ error InvalidInitialization(); /** * @dev The contract is not initializing. */ error NotInitializing(); /** * @dev Triggered when the contract has been initialized or reinitialized. */ event Initialized(uint64 version); /** * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope, * `onlyInitializing` functions can be used to initialize parent contracts. * * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in * production. * * Emits an {Initialized} event. */ modifier initializer() { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); // Cache values to avoid duplicated sloads bool isTopLevelCall = !$._initializing; uint64 initialized = $._initialized; // Allowed calls: // - initialSetup: the contract is not in the initializing state and no previous version was // initialized // - construction: the contract is initialized at version 1 (no reininitialization) and the // current contract is just being deployed bool initialSetup = initialized == 0 && isTopLevelCall; bool construction = initialized == 1 && address(this).code.length == 0; if (!initialSetup && !construction) { revert InvalidInitialization(); } $._initialized = 1; if (isTopLevelCall) { $._initializing = true; } _; if (isTopLevelCall) { $._initializing = false; emit Initialized(1); } } /** * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be * used to initialize parent contracts. * * A reinitializer may be used after the original initialization step. This is essential to configure modules that * are added through upgrades and that require initialization. * * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer` * cannot be nested. If one is invoked in the context of another, execution will revert. * * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in * a contract, executing them in the right order is up to the developer or operator. * * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization. * * Emits an {Initialized} event. */ modifier reinitializer(uint64 version) { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); if ($._initializing || $._initialized >= version) { revert InvalidInitialization(); } $._initialized = version; $._initializing = true; _; $._initializing = false; emit Initialized(version); } /** * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the * {initializer} and {reinitializer} modifiers, directly or indirectly. */ modifier onlyInitializing() { _checkInitializing(); _; } /** * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}. */ function _checkInitializing() internal view virtual { if (!_isInitializing()) { revert NotInitializing(); } } /** * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call. * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized * to any version. It is recommended to use this to lock implementation contracts that are designed to be called * through proxies. * * Emits an {Initialized} event the first time it is successfully executed. */ function _disableInitializers() internal virtual { // solhint-disable-next-line var-name-mixedcase InitializableStorage storage $ = _getInitializableStorage(); if ($._initializing) { revert InvalidInitialization(); } if ($._initialized != type(uint64).max) { $._initialized = type(uint64).max; emit Initialized(type(uint64).max); } } /** * @dev Returns the highest version that has been initialized. See {reinitializer}. */ function _getInitializedVersion() internal view returns (uint64) { return _getInitializableStorage()._initialized; } /** * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}. */ function _isInitializing() internal view returns (bool) { return _getInitializableStorage()._initializing; } /** * @dev Returns a pointer to the storage namespace. */ // solhint-disable-next-line var-name-mixedcase function _getInitializableStorage() private pure returns (InitializableStorage storage $) { assembly { $.slot := INITIALIZABLE_STORAGE } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; import {Initializable} from "../proxy/utils/Initializable.sol"; /** * @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 ContextUpgradeable is Initializable { function __Context_init() internal onlyInitializing { } function __Context_init_unchained() internal onlyInitializing { } function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /* ░██╗░░░░░░░██╗░█████╗░░█████╗░░░░░░░███████╗██╗ ░██║░░██╗░░██║██╔══██╗██╔══██╗░░░░░░██╔════╝██║ ░╚██╗████╗██╔╝██║░░██║██║░░██║█████╗█████╗░░██║ ░░████╔═████║░██║░░██║██║░░██║╚════╝██╔══╝░░██║ ░░╚██╔╝░╚██╔╝░╚█████╔╝╚█████╔╝░░░░░░██║░░░░░██║ ░░░╚═╝░░░╚═╝░░░╚════╝░░╚════╝░░░░░░░╚═╝░░░░░╚═╝ * MIT License * =========== * * Copyright (c) 2024 WOOFi * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ /// @title WOOFi cross router config of StargateV2. interface ISgInfoV2 { /* ----- State Variables ----- */ function sgEidLocal() external view returns (uint32 sgEidLocal); function stargates(uint32 _eid, address _token) external view returns (address stargateAddr); function endpoints(uint32 _eid) external view returns (address endpoint); }
{ "optimizer": { "enabled": true, "runs": 100000 }, "viaIR": true, "debug": { "revertStrings": "strip" }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"}],"name":"endpoints","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint32","name":"_sgEidLocal","type":"uint32"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_endpoint","type":"address"}],"name":"setEndpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"}],"name":"setSgEidLocal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"_eid","type":"uint32"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_stargate","type":"address"}],"name":"setStargate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sgEidLocal","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"","type":"uint32"},{"internalType":"address","name":"","type":"address"}],"name":"stargates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608080604052346100b8577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009081549060ff8260401c166100a957506001600160401b036002600160401b031982821601610064575b604051610f3f90816100be8239f35b6001600160401b031990911681179091556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d290602090a1388080610055565b63f92ee8a960e01b8152600490fd5b600080fdfe604060808152600436101561001357600080fd5b600090813560e01c908163381abc9014610c8557816342407dc414610c44578163715018a614610b8657816373f0c8f514610b1e5781638da5cb5b14610aac578163a3b68c9014610a3c578163bb0d15fe146109c1578163c5e4c9f914610197578163c6824569146100dc575063f2fde38b1461008f57600080fd5b346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576100d66100c9610d5a565b6100d1610e40565b610d7d565b80f35b80fd5b9050346101935760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019357610115610d1f565b9061011e610d37565b6044359273ffffffffffffffffffffffffffffffffffffffff9081851680950361018f5763ffffffff90610150610e40565b1685526002602052828520911684526020528220907fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b8580fd5b5080fd5b90503461019357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610193576101cf610d5a565b6024359163ffffffff83168093036109bd577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549260ff84841c16159367ffffffffffffffff8116801590816109b5575b60011490816109ab575b1590816109a2575b506109795790818560017fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000061027d9516178855610944575b50610275610eb0565b6100d1610eb0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000855416178455617595918285526020926001845282862090731a44076050125825900e736c501f859c50fe728c7fffffffffffffffffffffffff0000000000000000000000000000000000000000928184825416179055617596808952858920828582541617905561759a92838a52868a2083868254161790558761759d92838c52888c208588825416179055868c8a61759e91828152818120898582541617905561759f948582528282208a868254161790556175e7968783528383208b878254161790556175e8998a84528484208c888254161790556175e59b8c8552858520908882541617905589845260029c8d938484528686209b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9c8d885285528787207377b2043768d28e9c9ab44e1abfc95944bce579318b82541617905580875285855287872073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488852855287872073c026395860db2d07ee33e05fe50ed7bd583189c78b82541617905580875285855287872073dac17f958d2ee523a2206206994597c13d831ec78852855287872073933597a323eb81cae705c5bc29985172fd5a39738b825416179055865284845286862073d5f7838f5c461feff7fe49ea5ebaf7728bb0adfa8752845286862073268ca24daeff1fac2ed883c598200ccbb79e931d8a825416179055808652848452868620738ac76a51cc950d9822d68b83fe1ad97b32cd580d8752845286862073962bd449e630b0d928f308ce63f1a21f025760578a82541617905585528383528585207355d398326f99059ff775485246999027b31979558652835285852073138eb30f73bc423c6455c53df6d89cb01d9ebc638982541617905580855283835285852073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e86528352858520735634c4a5fed09819e3c46d86a965dd9447d86e47898254161790558452828252848420739702230a8ea53601f5cd2dc00fdbc13d4df4a8c7855282528484207312dc9256acc9895b076f6638d628382881e62cee88825416179055808452828252848420733c499c542cef5e3811e1192ce70d8cc03d5c335985528252848420739aa02d4fae7f58b8e8f34c66e756cc734dac7fe488825416179055835281815283832073c2132d05d31c914a87c6611c10748aeb04b58e8f8452815283832073d47b03ee6d86cf251ee7860fb2acf9f91b9fd4d787825416179055848352818152838320898452815283832073a45b5130f36cdca45667738e2a258ab09f4a5f7f8782541617905584835281815283832073af88d065e77c8cc2239327c5edb3a432268e5831845281528383209473e8cdf27acd73a434d661c84887215f7598e7d0d3958688825416179055835281815283832073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb98452815283832073ce8cca271ebc0533920c83d39f417ed6a0abb7d08097825416179055868352528d8282209088835252209089825416179055818d52868b528c730b2c639c533813f4aa9d7837caf62653d097ff858b822091528b52898d2090888254161790558b52848952878b207394b008aa00579c1307b0ef2c499ad98a8ce58e588c528952878b207319cfce47ed54a88614648dc3f19a5980097007dd878254161790558a52838852868a20818b528852868a207381f6138153d473e8c5ecebd3dc8cd4903506b07586825416179055818a52838852868a20908a52875285892073dc181bd607330aeebef6ea62e03e5e1fb4b6f7c785825416179055885281865284882073833589fcd6edb6e08f4c7c32d4f71b54bda02913895286528488207327a16dc786820b16e5c9028b75b99f6f604b5d268482541617905580885281865284882073deaddeaddeaddeaddeaddeaddeaddeaddead111189528652848820734c1d3fc3fc3c177c3b633427c2f769276c547463848254161790558088528186528488207309bc4e0d864854c6afb6eb9a9cdf58ac190d0df98952865284882073ac290ad4e0c891fdc295ca4f0a6214cf6dc6acdc8482541617905580885281865284882073201eba5cc46d216ce6dc03f6a759e8e766e956ae8952865284882073b715b85682b731db9d5063187c450095c91c57fc848254161790558752845282862073cda86a272531e8640cd7f1a92c01839911b90bb08752845273f7628d84a2bbd9bb9c8e686ac95bb5d55169f3f1838720918254161790556108ef578380f35b827fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d294541690555160018152a13880808380f35b7fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016680100000000000000011786553861026c565b600484517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610234565b303b15915061022c565b869150610222565b8380fd5b90503461019357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019357602091816109fd610d1f565b9163ffffffff610a0b610d37565b931681526002855281812073ffffffffffffffffffffffffffffffffffffffff809416825285522054169051908152f35b82346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d95763ffffffff610a79610d1f565b610a81610e40565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082541617815580f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b9050346101935760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935773ffffffffffffffffffffffffffffffffffffffff8160209363ffffffff610b75610d1f565b168152600185522054169051908152f35b82346100d957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d957610bbd610e40565b8073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008054907fffffffffffffffffffffffff000000000000000000000000000000000000000082169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935763ffffffff60209254169051908152f35b90503461019357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935773ffffffffffffffffffffffffffffffffffffffff610cd2610d1f565b9163ffffffff610ce0610d37565b93610ce9610e40565b1684526001602052832091167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b6004359063ffffffff82168203610d3257565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610d3257565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610d3257565b73ffffffffffffffffffffffffffffffffffffffff809116908115610e0f577f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805490837fffffffffffffffffffffffff00000000000000000000000000000000000000008316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303610e8057565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615610edf57565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212206ba7de16dced5d77d1eaa905adc87083c3d2b35df62de895e9c52c4271afd87064736f6c63430008160033
Deployed Bytecode
0x604060808152600436101561001357600080fd5b600090813560e01c908163381abc9014610c8557816342407dc414610c44578163715018a614610b8657816373f0c8f514610b1e5781638da5cb5b14610aac578163a3b68c9014610a3c578163bb0d15fe146109c1578163c5e4c9f914610197578163c6824569146100dc575063f2fde38b1461008f57600080fd5b346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d9576100d66100c9610d5a565b6100d1610e40565b610d7d565b80f35b80fd5b9050346101935760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019357610115610d1f565b9061011e610d37565b6044359273ffffffffffffffffffffffffffffffffffffffff9081851680950361018f5763ffffffff90610150610e40565b1685526002602052828520911684526020528220907fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b8580fd5b5080fd5b90503461019357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610193576101cf610d5a565b6024359163ffffffff83168093036109bd577ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a009283549260ff84841c16159367ffffffffffffffff8116801590816109b5575b60011490816109ab575b1590816109a2575b506109795790818560017fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000061027d9516178855610944575b50610275610eb0565b6100d1610eb0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000855416178455617595918285526020926001845282862090731a44076050125825900e736c501f859c50fe728c7fffffffffffffffffffffffff0000000000000000000000000000000000000000928184825416179055617596808952858920828582541617905561759a92838a52868a2083868254161790558761759d92838c52888c208588825416179055868c8a61759e91828152818120898582541617905561759f948582528282208a868254161790556175e7968783528383208b878254161790556175e8998a84528484208c888254161790556175e59b8c8552858520908882541617905589845260029c8d938484528686209b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee9c8d885285528787207377b2043768d28e9c9ab44e1abfc95944bce579318b82541617905580875285855287872073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb488852855287872073c026395860db2d07ee33e05fe50ed7bd583189c78b82541617905580875285855287872073dac17f958d2ee523a2206206994597c13d831ec78852855287872073933597a323eb81cae705c5bc29985172fd5a39738b825416179055865284845286862073d5f7838f5c461feff7fe49ea5ebaf7728bb0adfa8752845286862073268ca24daeff1fac2ed883c598200ccbb79e931d8a825416179055808652848452868620738ac76a51cc950d9822d68b83fe1ad97b32cd580d8752845286862073962bd449e630b0d928f308ce63f1a21f025760578a82541617905585528383528585207355d398326f99059ff775485246999027b31979558652835285852073138eb30f73bc423c6455c53df6d89cb01d9ebc638982541617905580855283835285852073b97ef9ef8734c71904d8002f8b6bc66dd9c48a6e86528352858520735634c4a5fed09819e3c46d86a965dd9447d86e47898254161790558452828252848420739702230a8ea53601f5cd2dc00fdbc13d4df4a8c7855282528484207312dc9256acc9895b076f6638d628382881e62cee88825416179055808452828252848420733c499c542cef5e3811e1192ce70d8cc03d5c335985528252848420739aa02d4fae7f58b8e8f34c66e756cc734dac7fe488825416179055835281815283832073c2132d05d31c914a87c6611c10748aeb04b58e8f8452815283832073d47b03ee6d86cf251ee7860fb2acf9f91b9fd4d787825416179055848352818152838320898452815283832073a45b5130f36cdca45667738e2a258ab09f4a5f7f8782541617905584835281815283832073af88d065e77c8cc2239327c5edb3a432268e5831845281528383209473e8cdf27acd73a434d661c84887215f7598e7d0d3958688825416179055835281815283832073fd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb98452815283832073ce8cca271ebc0533920c83d39f417ed6a0abb7d08097825416179055868352528d8282209088835252209089825416179055818d52868b528c730b2c639c533813f4aa9d7837caf62653d097ff858b822091528b52898d2090888254161790558b52848952878b207394b008aa00579c1307b0ef2c499ad98a8ce58e588c528952878b207319cfce47ed54a88614648dc3f19a5980097007dd878254161790558a52838852868a20818b528852868a207381f6138153d473e8c5ecebd3dc8cd4903506b07586825416179055818a52838852868a20908a52875285892073dc181bd607330aeebef6ea62e03e5e1fb4b6f7c785825416179055885281865284882073833589fcd6edb6e08f4c7c32d4f71b54bda02913895286528488207327a16dc786820b16e5c9028b75b99f6f604b5d268482541617905580885281865284882073deaddeaddeaddeaddeaddeaddeaddeaddead111189528652848820734c1d3fc3fc3c177c3b633427c2f769276c547463848254161790558088528186528488207309bc4e0d864854c6afb6eb9a9cdf58ac190d0df98952865284882073ac290ad4e0c891fdc295ca4f0a6214cf6dc6acdc8482541617905580885281865284882073201eba5cc46d216ce6dc03f6a759e8e766e956ae8952865284882073b715b85682b731db9d5063187c450095c91c57fc848254161790558752845282862073cda86a272531e8640cd7f1a92c01839911b90bb08752845273f7628d84a2bbd9bb9c8e686ac95bb5d55169f3f1838720918254161790556108ef578380f35b827fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff7fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d294541690555160018152a13880808380f35b7fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000016680100000000000000011786553861026c565b600484517ff92ee8a9000000000000000000000000000000000000000000000000000000008152fd5b90501538610234565b303b15915061022c565b869150610222565b8380fd5b90503461019357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261019357602091816109fd610d1f565b9163ffffffff610a0b610d37565b931681526002855281812073ffffffffffffffffffffffffffffffffffffffff809416825285522054169051908152f35b82346100d95760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d95763ffffffff610a79610d1f565b610a81610e40565b167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000082541617815580f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935760209073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054169051908152f35b9050346101935760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935773ffffffffffffffffffffffffffffffffffffffff8160209363ffffffff610b75610d1f565b168152600185522054169051908152f35b82346100d957807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126100d957610bbd610e40565b8073ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993008054907fffffffffffffffffffffffff000000000000000000000000000000000000000082169055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b90503461019357817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935763ffffffff60209254169051908152f35b90503461019357807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101935773ffffffffffffffffffffffffffffffffffffffff610cd2610d1f565b9163ffffffff610ce0610d37565b93610ce9610e40565b1684526001602052832091167fffffffffffffffffffffffff000000000000000000000000000000000000000082541617905580f35b6004359063ffffffff82168203610d3257565b600080fd5b6024359073ffffffffffffffffffffffffffffffffffffffff82168203610d3257565b6004359073ffffffffffffffffffffffffffffffffffffffff82168203610d3257565b73ffffffffffffffffffffffffffffffffffffffff809116908115610e0f577f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805490837fffffffffffffffffffffffff00000000000000000000000000000000000000008316179055167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3565b60246040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152fd5b73ffffffffffffffffffffffffffffffffffffffff7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930054163303610e8057565b60246040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152fd5b60ff7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005460401c1615610edf57565b60046040517fd7e6bcf8000000000000000000000000000000000000000000000000000000008152fdfea26469706673582212206ba7de16dced5d77d1eaa905adc87083c3d2b35df62de895e9c52c4271afd87064736f6c63430008160033
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.