Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 214 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Update Rate | 21273932 | 3 hrs ago | IN | 0.01 ETH | 0.00320145 | ||||
Update Rate | 21266570 | 28 hrs ago | IN | 0.01 ETH | 0.0032899 | ||||
Update Rate | 21259201 | 2 days ago | IN | 0.01 ETH | 0.00271719 | ||||
Update Rate | 21251990 | 3 days ago | IN | 0.01 ETH | 0.00475421 | ||||
Update Rate | 21244614 | 4 days ago | IN | 0.01 ETH | 0.00397176 | ||||
Update Rate | 21237399 | 5 days ago | IN | 0.01 ETH | 0.00495384 | ||||
Update Rate | 21229588 | 6 days ago | IN | 0.01 ETH | 0.00461641 | ||||
Update Rate | 21222369 | 7 days ago | IN | 0.01 ETH | 0.0048253 | ||||
Update Rate | 21214690 | 8 days ago | IN | 0.01 ETH | 0.00326732 | ||||
Update Rate | 21207463 | 9 days ago | IN | 0.01 ETH | 0.00306499 | ||||
Update Rate | 21200245 | 10 days ago | IN | 0.01 ETH | 0.00323209 | ||||
Update Rate | 21193034 | 11 days ago | IN | 0.01 ETH | 0.00451105 | ||||
Update Rate | 21185674 | 12 days ago | IN | 0.01 ETH | 0.0072371 | ||||
Update Rate | 21176661 | 13 days ago | IN | 0.01 ETH | 0.00558604 | ||||
Update Rate | 21168401 | 14 days ago | IN | 0.01 ETH | 0.00635232 | ||||
Update Rate | 21159832 | 16 days ago | IN | 0.01 ETH | 0.00596948 | ||||
Update Rate | 21151407 | 17 days ago | IN | 0.01 ETH | 0.00281385 | ||||
Update Rate | 21144185 | 18 days ago | IN | 0.01 ETH | 0.00531508 | ||||
Update Rate | 21136234 | 19 days ago | IN | 0.01 ETH | 0.00380673 | ||||
Update Rate | 21129017 | 20 days ago | IN | 0.01 ETH | 0.00427591 | ||||
Update Rate | 21121808 | 21 days ago | IN | 0.01 ETH | 0.00166514 | ||||
Update Rate | 21114595 | 22 days ago | IN | 0.01 ETH | 0.00185755 | ||||
Update Rate | 21107376 | 23 days ago | IN | 0.01 ETH | 0.00308154 | ||||
Update Rate | 21100168 | 24 days ago | IN | 0.01 ETH | 0.00124444 | ||||
Update Rate | 21092959 | 25 days ago | IN | 0.01 ETH | 0.00238296 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
21273932 | 3 hrs ago | 0.01 ETH | ||||
21266570 | 28 hrs ago | 0.01 ETH | ||||
21259201 | 2 days ago | 0.01 ETH | ||||
21251990 | 3 days ago | 0.01 ETH | ||||
21244614 | 4 days ago | 0.01 ETH | ||||
21237399 | 5 days ago | 0.01 ETH | ||||
21229588 | 6 days ago | 0.01 ETH | ||||
21222369 | 7 days ago | 0.01 ETH | ||||
21214690 | 8 days ago | 0.01 ETH | ||||
21207463 | 9 days ago | 0.01 ETH | ||||
21200245 | 10 days ago | 0.01 ETH | ||||
21193034 | 11 days ago | 0.01 ETH | ||||
21185674 | 12 days ago | 0.01 ETH | ||||
21176661 | 13 days ago | 0.01 ETH | ||||
21168401 | 14 days ago | 0.01 ETH | ||||
21159832 | 16 days ago | 0.01 ETH | ||||
21151407 | 17 days ago | 0.01 ETH | ||||
21144185 | 18 days ago | 0.01 ETH | ||||
21136234 | 19 days ago | 0.01 ETH | ||||
21129017 | 20 days ago | 0.01 ETH | ||||
21121808 | 21 days ago | 0.01 ETH | ||||
21114595 | 22 days ago | 0.01 ETH | ||||
21107376 | 23 days ago | 0.01 ETH | ||||
21100168 | 24 days ago | 0.01 ETH | ||||
21092959 | 25 days ago | 0.01 ETH |
Loading...
Loading
Contract Name:
REthRateProvider
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // Contracts import {CrossChainRateProvider} from "./core/CrossChainRateProvider.sol"; // Interfaces import {IRocketTokenRETH} from "./interfaces/IRocketTokenRETH.sol"; /// @title rETH cross chain rate provider /// @author witherblock /// @notice Provides the current exchange rate of rETH to a receiver contract on a different chain than the one this contract is deployed on contract REthRateProvider is CrossChainRateProvider { constructor(uint16 _dstChainId, address _layerZeroEndpoint) { rateInfo = RateInfo({ tokenSymbol: "rETH", tokenAddress: 0xae78736Cd615f374D3085123A210448E74Fc6393, baseTokenSymbol: "ETH", baseTokenAddress: address(0) // Address 0 for native tokens }); dstChainId = _dstChainId; layerZeroEndpoint = _layerZeroEndpoint; } /// @notice Returns the latest rate from the rETH contract function getLatestRate() public view override returns (uint256) { return IRocketTokenRETH(0xae78736Cd615f374D3085123A210448E74Fc6393) .getExchangeRate(); } }
// 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.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// 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: MIT pragma solidity ^0.8.0; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import {ILayerZeroEndpoint} from "../interfaces/ILayerZeroEndpoint.sol"; /// @title Cross chain rate provider /// @author witherblock /// @notice Provides a rate to a receiver contract on a different chain than the one this contract is deployed on /// @dev Powered using LayerZero abstract contract CrossChainRateProvider is Ownable, ReentrancyGuard { /// @notice Last rate updated on the provider uint256 public rate; /// @notice Last time rate was updated uint256 public lastUpdated; /// @notice Destination chainId uint16 public dstChainId; /// @notice LayerZero endpoint address address public layerZeroEndpoint; /// @notice Rate Reciever address address address public rateReceiver; /// @notice Information of which token and base token rate is being provided RateInfo public rateInfo; struct RateInfo { string tokenSymbol; address tokenAddress; string baseTokenSymbol; address baseTokenAddress; } /// @notice Emitted when rate is updated /// @param newRate the rate that was updated event RateUpdated(uint256 newRate); /// @notice Emitted when LayerZero Endpoint is updated /// @param newLayerZeroEndpoint the LayerZero Endpoint address that was updated event LayerZeroEndpointUpdated(address newLayerZeroEndpoint); /// @notice Emitted when RateReceiver is updated /// @param newRateReceiver the RateReceiver address that was updated event RateReceiverUpdated(address newRateReceiver); /// @notice Emitted when the destination chainId is updated /// @param newDstChainId the destination chainId that was updated event DstChainIdUpdated(uint16 newDstChainId); /// @notice Updates the LayerZero Endpoint address /// @dev Can only be called by owner /// @param _layerZeroEndpoint the new layer zero endpoint address function updateLayerZeroEndpoint( address _layerZeroEndpoint ) external onlyOwner { layerZeroEndpoint = _layerZeroEndpoint; emit LayerZeroEndpointUpdated(_layerZeroEndpoint); } /// @notice Updates the RateReceiver address /// @dev Can only be called by owner /// @param _rateReceiver the new rate receiver address function updateRateReceiver(address _rateReceiver) external onlyOwner { rateReceiver = _rateReceiver; emit RateReceiverUpdated(_rateReceiver); } /// @notice Updates the destination chainId /// @dev Can only be called by owner /// @param _dstChainId the destination chainId function updateDstChainId(uint16 _dstChainId) external onlyOwner { dstChainId = _dstChainId; emit DstChainIdUpdated(_dstChainId); } /// @notice Updates rate in this contract and on the receiver /// @dev This function is set to payable to pay for gas on execute lzReceive (on the receiver contract) /// on the destination chain. To compute the correct value to send check here - https://layerzero.gitbook.io/docs/evm-guides/code-examples/estimating-message-fees function updateRate() external payable nonReentrant { uint256 latestRate = getLatestRate(); bytes memory remoteAndLocalAddresses = abi.encodePacked( rateReceiver, address(this) ); rate = latestRate; lastUpdated = block.timestamp; bytes memory _payload = abi.encode(latestRate); ILayerZeroEndpoint(layerZeroEndpoint).send{value: msg.value}( dstChainId, remoteAndLocalAddresses, _payload, payable(msg.sender), address(0x0), bytes("") ); emit RateUpdated(rate); } /// @notice Returns the latest rate function getLatestRate() public view virtual returns (uint256) {} }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; import "./ILayerZeroUserApplicationConfig.sol"; interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig { // @notice send a LayerZero message to the specified address at a LayerZero endpoint. // @param _dstChainId - the destination chain identifier // @param _destination - the address on destination chain (in bytes). address length/format may vary by chains // @param _payload - a custom bytes payload to send to the destination contract // @param _refundAddress - if the source transaction is cheaper than the amount of value passed, refund the additional amount to this address // @param _zroPaymentAddress - the address of the ZRO token holder who would pay for the transaction // @param _adapterParams - parameters for custom functionality. e.g. receive airdropped native gas from the relayer on destination function send( uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams ) external payable; // @notice used by the messaging library to publish verified payload // @param _srcChainId - the source chain identifier // @param _srcAddress - the source contract (as bytes) at the source chain // @param _dstAddress - the address on destination chain // @param _nonce - the unbound message ordering nonce // @param _gasLimit - the gas limit for external contract execution // @param _payload - verified payload to send to the destination contract function receivePayload( uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload ) external; // @notice get the inboundNonce of a lzApp from a source chain which could be EVM or non-EVM chain // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address function getInboundNonce( uint16 _srcChainId, bytes calldata _srcAddress ) external view returns (uint64); // @notice get the outboundNonce from this source chain which, consequently, is always an EVM // @param _srcAddress - the source chain contract address function getOutboundNonce( uint16 _dstChainId, address _srcAddress ) external view returns (uint64); // @notice gets a quote in source native gas, for the amount that send() requires to pay for message delivery // @param _dstChainId - the destination chain identifier // @param _userApplication - the user app address on this EVM chain // @param _payload - the custom message to send over LayerZero // @param _payInZRO - if false, user app pays the protocol fee in native token // @param _adapterParam - parameters for the adapter service, e.g. send some dust native token to dstChain function estimateFees( uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam ) external view returns (uint nativeFee, uint zroFee); // @notice get this Endpoint's immutable source identifier function getChainId() external view returns (uint16); // @notice the interface to retry failed message on this Endpoint destination // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address // @param _payload - the payload to be retried function retryPayload( uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload ) external; // @notice query if any STORED payload (message blocking) at the endpoint. // @param _srcChainId - the source chain identifier // @param _srcAddress - the source chain contract address function hasStoredPayload( uint16 _srcChainId, bytes calldata _srcAddress ) external view returns (bool); // @notice query if the _libraryAddress is valid for sending msgs. // @param _userApplication - the user app address on this EVM chain function getSendLibraryAddress( address _userApplication ) external view returns (address); // @notice query if the _libraryAddress is valid for receiving msgs. // @param _userApplication - the user app address on this EVM chain function getReceiveLibraryAddress( address _userApplication ) external view returns (address); // @notice query if the non-reentrancy guard for send() is on // @return true if the guard is on. false otherwise function isSendingPayload() external view returns (bool); // @notice query if the non-reentrancy guard for receive() is on // @return true if the guard is on. false otherwise function isReceivingPayload() external view returns (bool); // @notice get the configuration of the LayerZero messaging library of the specified version // @param _version - messaging library version // @param _chainId - the chainId for the pending config change // @param _userApplication - the contract address of the user application // @param _configType - type of configuration. every messaging library has its own convention. function getConfig( uint16 _version, uint16 _chainId, address _userApplication, uint _configType ) external view returns (bytes memory); // @notice get the send() LayerZero messaging library version // @param _userApplication - the contract address of the user application function getSendVersion( address _userApplication ) external view returns (uint16); // @notice get the lzReceive() LayerZero messaging library version // @param _userApplication - the contract address of the user application function getReceiveVersion( address _userApplication ) external view returns (uint16); }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; interface ILayerZeroUserApplicationConfig { // @notice set the configuration of the LayerZero messaging library of the specified version // @param _version - messaging library version // @param _chainId - the chainId for the pending config change // @param _configType - type of configuration. every messaging library has its own convention. // @param _config - configuration in the bytes. can encode arbitrary content. function setConfig( uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config ) external; // @notice set the send() LayerZero messaging library version to _version // @param _version - new messaging library version function setSendVersion(uint16 _version) external; // @notice set the lzReceive() LayerZero messaging library version to _version // @param _version - new messaging library version function setReceiveVersion(uint16 _version) external; // @notice Only when the UA needs to resume the message flow in blocking mode and clear the stored payload // @param _srcChainId - the chainId of the source chain // @param _srcAddress - the contract address of the source contract at the source chain function forceResumeReceive( uint16 _srcChainId, bytes calldata _srcAddress ) external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IRocketTokenRETH { function getExchangeRate() external view returns (uint); }
{ "evmVersion": "paris", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": false, "runs": 200 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"},{"internalType":"address","name":"_layerZeroEndpoint","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"newDstChainId","type":"uint16"}],"name":"DstChainIdUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLayerZeroEndpoint","type":"address"}],"name":"LayerZeroEndpointUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newRateReceiver","type":"address"}],"name":"RateReceiverUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newRate","type":"uint256"}],"name":"RateUpdated","type":"event"},{"inputs":[],"name":"dstChainId","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLatestRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastUpdated","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"layerZeroEndpoint","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":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateInfo","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"string","name":"baseTokenSymbol","type":"string"},{"internalType":"address","name":"baseTokenAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rateReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_dstChainId","type":"uint16"}],"name":"updateDstChainId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_layerZeroEndpoint","type":"address"}],"name":"updateLayerZeroEndpoint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updateRate","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_rateReceiver","type":"address"}],"name":"updateRateReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60806040523480156200001157600080fd5b5060405162001854380380620018548339818101604052810190620000379190620003c8565b620000576200004b6200025360201b60201c565b6200025b60201b60201c565b6001808190555060405180608001604052806040518060400160405280600481526020017f7245544800000000000000000000000000000000000000000000000000000000815250815260200173ae78736cd615f374d3085123a210448e74fc639373ffffffffffffffffffffffffffffffffffffffff1681526020016040518060400160405280600381526020017f45544800000000000000000000000000000000000000000000000000000000008152508152602001600073ffffffffffffffffffffffffffffffffffffffff168152506006600082015181600001908162000143919062000689565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040820151816002019081620001a2919062000689565b5060608201518160030160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555090505081600460006101000a81548161ffff021916908361ffff16021790555080600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000770565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600061ffff82169050919050565b6200033d8162000324565b81146200034957600080fd5b50565b6000815190506200035d8162000332565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620003908262000363565b9050919050565b620003a28162000383565b8114620003ae57600080fd5b50565b600081519050620003c28162000397565b92915050565b60008060408385031215620003e257620003e16200031f565b5b6000620003f2858286016200034c565b92505060206200040585828601620003b1565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200049157607f821691505b602082108103620004a757620004a662000449565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620004d2565b6200051d8683620004d2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200056a620005646200055e8462000535565b6200053f565b62000535565b9050919050565b6000819050919050565b620005868362000549565b6200059e620005958262000571565b848454620004df565b825550505050565b600090565b620005b5620005a6565b620005c28184846200057b565b505050565b5b81811015620005ea57620005de600082620005ab565b600181019050620005c8565b5050565b601f82111562000639576200060381620004ad565b6200060e84620004c2565b810160208510156200061e578190505b620006366200062d85620004c2565b830182620005c7565b50505b505050565b600082821c905092915050565b60006200065e600019846008026200063e565b1980831691505092915050565b60006200067983836200064b565b9150826002028217905092915050565b62000694826200040f565b67ffffffffffffffff811115620006b057620006af6200041a565b5b620006bc825462000478565b620006c9828285620005ee565b600060209050601f831160018114620007015760008415620006ec578287015190505b620006f885826200066b565b86555062000768565b601f1984166200071186620004ad565b60005b828110156200073b5784890151825560018201915060208501945060208101905062000714565b868310156200075b578489015162000757601f8916826200064b565b8355505b6001600288020188555050505b505050505050565b6110d480620007806000396000f3fe6080604052600436106100dd5760003560e01c8063715018a61161007f578063c7fee63e11610059578063c7fee63e14610279578063d0b06f5d14610283578063e1e7ff77146102ae578063f2fde38b146102d9576100dd565b8063715018a61461020c5780638409c02d146102235780638da5cb5b1461024e576100dd565b806343b09696116100bb57806343b09696146101635780634a7f931e1461018c578063690adb53146101b55780636d5074f3146101e3576100dd565b806307968db1146100e25780632c4e722e1461010d57806330c593f714610138575b600080fd5b3480156100ee57600080fd5b506100f7610302565b6040516101049190610afa565b60405180910390f35b34801561011957600080fd5b50610122610328565b60405161012f9190610b2e565b60405180910390f35b34801561014457600080fd5b5061014d61032e565b60405161015a9190610b66565b60405180910390f35b34801561016f57600080fd5b5061018a60048036038101906101859190610bb2565b610342565b005b34801561019857600080fd5b506101b360048036038101906101ae9190610c0b565b6103a1565b005b3480156101c157600080fd5b506101ca610424565b6040516101da9493929190610cc8565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190610c0b565b610592565b005b34801561021857600080fd5b50610221610615565b005b34801561022f57600080fd5b50610238610629565b6040516102459190610afa565b60405180910390f35b34801561025a57600080fd5b5061026361064f565b6040516102709190610afa565b60405180910390f35b610281610678565b005b34801561028f57600080fd5b50610298610804565b6040516102a59190610b2e565b60405180910390f35b3480156102ba57600080fd5b506102c361080a565b6040516102d09190610b2e565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190610c0b565b610894565b005b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b600460009054906101000a900461ffff1681565b61034a610917565b80600460006101000a81548161ffff021916908361ffff1602179055507f02d97213a69adb7e990b3889ee1e5a35a5311c573b5edff7195f666f29fcbc14816040516103969190610b66565b60405180910390a150565b6103a9610917565b80600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f07ac75b380fe4c5e41ea9b7030179bb21229b84ab9f9ba2fabebccd430ae2f6d816040516104199190610afa565b60405180910390a150565b600680600001805461043590610d4a565b80601f016020809104026020016040519081016040528092919081815260200182805461046190610d4a565b80156104ae5780601f10610483576101008083540402835291602001916104ae565b820191906000526020600020905b81548152906001019060200180831161049157829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546104e990610d4a565b80601f016020809104026020016040519081016040528092919081815260200182805461051590610d4a565b80156105625780601f1061053757610100808354040283529160200191610562565b820191906000526020600020905b81548152906001019060200180831161054557829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b61059a610917565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f68465609e5e89ba7ff8a874559f044ca413aba0312e4534e1b43d1e51887d8d38160405161060a9190610afa565b60405180910390a150565b61061d610917565b6106276000610995565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610680610a59565b600061068a61080a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040516020016106c3929190610dc3565b604051602081830303815290604052905081600281905550426003819055506000826040516020016106f59190610b2e565b6040516020818303038152906040529050600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c580310034600460009054906101000a900461ffff168585336000604051806020016040528060008152506040518863ffffffff1660e01b815260040161078c96959493929190610e65565b6000604051808303818588803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b50505050507fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b6002546040516107ef9190610b2e565b60405180910390a1505050610802610aa8565b565b60035481565b600073ae78736cd615f374d3085123a210448e74fc639373ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f9190610f07565b905090565b61089c610917565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290610fa6565b60405180910390fd5b61091481610995565b50565b61091f610ab1565b73ffffffffffffffffffffffffffffffffffffffff1661093d61064f565b73ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90611012565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a959061107e565b60405180910390fd5b6002600181905550565b60018081905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ae482610ab9565b9050919050565b610af481610ad9565b82525050565b6000602082019050610b0f6000830184610aeb565b92915050565b6000819050919050565b610b2881610b15565b82525050565b6000602082019050610b436000830184610b1f565b92915050565b600061ffff82169050919050565b610b6081610b49565b82525050565b6000602082019050610b7b6000830184610b57565b92915050565b600080fd5b610b8f81610b49565b8114610b9a57600080fd5b50565b600081359050610bac81610b86565b92915050565b600060208284031215610bc857610bc7610b81565b5b6000610bd684828501610b9d565b91505092915050565b610be881610ad9565b8114610bf357600080fd5b50565b600081359050610c0581610bdf565b92915050565b600060208284031215610c2157610c20610b81565b5b6000610c2f84828501610bf6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c72578082015181840152602081019050610c57565b60008484015250505050565b6000601f19601f8301169050919050565b6000610c9a82610c38565b610ca48185610c43565b9350610cb4818560208601610c54565b610cbd81610c7e565b840191505092915050565b60006080820190508181036000830152610ce28187610c8f565b9050610cf16020830186610aeb565b8181036040830152610d038185610c8f565b9050610d126060830184610aeb565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d6257607f821691505b602082108103610d7557610d74610d1b565b5b50919050565b60008160601b9050919050565b6000610d9382610d7b565b9050919050565b6000610da582610d88565b9050919050565b610dbd610db882610ad9565b610d9a565b82525050565b6000610dcf8285610dac565b601482019150610ddf8284610dac565b6014820191508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000610e1682610def565b610e208185610dfa565b9350610e30818560208601610c54565b610e3981610c7e565b840191505092915050565b6000610e4f82610ab9565b9050919050565b610e5f81610e44565b82525050565b600060c082019050610e7a6000830189610b57565b8181036020830152610e8c8188610e0b565b90508181036040830152610ea08187610e0b565b9050610eaf6060830186610e56565b610ebc6080830185610aeb565b81810360a0830152610ece8184610e0b565b9050979650505050505050565b610ee481610b15565b8114610eef57600080fd5b50565b600081519050610f0181610edb565b92915050565b600060208284031215610f1d57610f1c610b81565b5b6000610f2b84828501610ef2565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610f90602683610c43565b9150610f9b82610f34565b604082019050919050565b60006020820190508181036000830152610fbf81610f83565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610ffc602083610c43565b915061100782610fc6565b602082019050919050565b6000602082019050818103600083015261102b81610fef565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611068601f83610c43565b915061107382611032565b602082019050919050565b600060208201905081810360008301526110978161105b565b905091905056fea2646970667358221220cf91be2f3e3a5067c9beca37a9f560117ced8bd27fab08e80a58f2ca6c009f5264736f6c63430008120033000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675
Deployed Bytecode
0x6080604052600436106100dd5760003560e01c8063715018a61161007f578063c7fee63e11610059578063c7fee63e14610279578063d0b06f5d14610283578063e1e7ff77146102ae578063f2fde38b146102d9576100dd565b8063715018a61461020c5780638409c02d146102235780638da5cb5b1461024e576100dd565b806343b09696116100bb57806343b09696146101635780634a7f931e1461018c578063690adb53146101b55780636d5074f3146101e3576100dd565b806307968db1146100e25780632c4e722e1461010d57806330c593f714610138575b600080fd5b3480156100ee57600080fd5b506100f7610302565b6040516101049190610afa565b60405180910390f35b34801561011957600080fd5b50610122610328565b60405161012f9190610b2e565b60405180910390f35b34801561014457600080fd5b5061014d61032e565b60405161015a9190610b66565b60405180910390f35b34801561016f57600080fd5b5061018a60048036038101906101859190610bb2565b610342565b005b34801561019857600080fd5b506101b360048036038101906101ae9190610c0b565b6103a1565b005b3480156101c157600080fd5b506101ca610424565b6040516101da9493929190610cc8565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190610c0b565b610592565b005b34801561021857600080fd5b50610221610615565b005b34801561022f57600080fd5b50610238610629565b6040516102459190610afa565b60405180910390f35b34801561025a57600080fd5b5061026361064f565b6040516102709190610afa565b60405180910390f35b610281610678565b005b34801561028f57600080fd5b50610298610804565b6040516102a59190610b2e565b60405180910390f35b3480156102ba57600080fd5b506102c361080a565b6040516102d09190610b2e565b60405180910390f35b3480156102e557600080fd5b5061030060048036038101906102fb9190610c0b565b610894565b005b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b600460009054906101000a900461ffff1681565b61034a610917565b80600460006101000a81548161ffff021916908361ffff1602179055507f02d97213a69adb7e990b3889ee1e5a35a5311c573b5edff7195f666f29fcbc14816040516103969190610b66565b60405180910390a150565b6103a9610917565b80600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f07ac75b380fe4c5e41ea9b7030179bb21229b84ab9f9ba2fabebccd430ae2f6d816040516104199190610afa565b60405180910390a150565b600680600001805461043590610d4a565b80601f016020809104026020016040519081016040528092919081815260200182805461046190610d4a565b80156104ae5780601f10610483576101008083540402835291602001916104ae565b820191906000526020600020905b81548152906001019060200180831161049157829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546104e990610d4a565b80601f016020809104026020016040519081016040528092919081815260200182805461051590610d4a565b80156105625780601f1061053757610100808354040283529160200191610562565b820191906000526020600020905b81548152906001019060200180831161054557829003601f168201915b5050505050908060030160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905084565b61059a610917565b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f68465609e5e89ba7ff8a874559f044ca413aba0312e4534e1b43d1e51887d8d38160405161060a9190610afa565b60405180910390a150565b61061d610917565b6106276000610995565b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610680610a59565b600061068a61080a565b90506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040516020016106c3929190610dc3565b604051602081830303815290604052905081600281905550426003819055506000826040516020016106f59190610b2e565b6040516020818303038152906040529050600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c580310034600460009054906101000a900461ffff168585336000604051806020016040528060008152506040518863ffffffff1660e01b815260040161078c96959493929190610e65565b6000604051808303818588803b1580156107a557600080fd5b505af11580156107b9573d6000803e3d6000fd5b50505050507fe65c987b2e4668e09ba867026921588005b2b2063607a1e7e7d91683c8f91b7b6002546040516107ef9190610b2e565b60405180910390a1505050610802610aa8565b565b60035481565b600073ae78736cd615f374d3085123a210448e74fc639373ffffffffffffffffffffffffffffffffffffffff1663e6aa216c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061088f9190610f07565b905090565b61089c610917565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361090b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090290610fa6565b60405180910390fd5b61091481610995565b50565b61091f610ab1565b73ffffffffffffffffffffffffffffffffffffffff1661093d61064f565b73ffffffffffffffffffffffffffffffffffffffff1614610993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098a90611012565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600260015403610a9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a959061107e565b60405180910390fd5b6002600181905550565b60018081905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ae482610ab9565b9050919050565b610af481610ad9565b82525050565b6000602082019050610b0f6000830184610aeb565b92915050565b6000819050919050565b610b2881610b15565b82525050565b6000602082019050610b436000830184610b1f565b92915050565b600061ffff82169050919050565b610b6081610b49565b82525050565b6000602082019050610b7b6000830184610b57565b92915050565b600080fd5b610b8f81610b49565b8114610b9a57600080fd5b50565b600081359050610bac81610b86565b92915050565b600060208284031215610bc857610bc7610b81565b5b6000610bd684828501610b9d565b91505092915050565b610be881610ad9565b8114610bf357600080fd5b50565b600081359050610c0581610bdf565b92915050565b600060208284031215610c2157610c20610b81565b5b6000610c2f84828501610bf6565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610c72578082015181840152602081019050610c57565b60008484015250505050565b6000601f19601f8301169050919050565b6000610c9a82610c38565b610ca48185610c43565b9350610cb4818560208601610c54565b610cbd81610c7e565b840191505092915050565b60006080820190508181036000830152610ce28187610c8f565b9050610cf16020830186610aeb565b8181036040830152610d038185610c8f565b9050610d126060830184610aeb565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610d6257607f821691505b602082108103610d7557610d74610d1b565b5b50919050565b60008160601b9050919050565b6000610d9382610d7b565b9050919050565b6000610da582610d88565b9050919050565b610dbd610db882610ad9565b610d9a565b82525050565b6000610dcf8285610dac565b601482019150610ddf8284610dac565b6014820191508190509392505050565b600081519050919050565b600082825260208201905092915050565b6000610e1682610def565b610e208185610dfa565b9350610e30818560208601610c54565b610e3981610c7e565b840191505092915050565b6000610e4f82610ab9565b9050919050565b610e5f81610e44565b82525050565b600060c082019050610e7a6000830189610b57565b8181036020830152610e8c8188610e0b565b90508181036040830152610ea08187610e0b565b9050610eaf6060830186610e56565b610ebc6080830185610aeb565b81810360a0830152610ece8184610e0b565b9050979650505050505050565b610ee481610b15565b8114610eef57600080fd5b50565b600081519050610f0181610edb565b92915050565b600060208284031215610f1d57610f1c610b81565b5b6000610f2b84828501610ef2565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000610f90602683610c43565b9150610f9b82610f34565b604082019050919050565b60006020820190508181036000830152610fbf81610f83565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000610ffc602083610c43565b915061100782610fc6565b602082019050919050565b6000602082019050818103600083015261102b81610fef565b9050919050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b6000611068601f83610c43565b915061107382611032565b602082019050919050565b600060208201905081810360008301526110978161105b565b905091905056fea2646970667358221220cf91be2f3e3a5067c9beca37a9f560117ced8bd27fab08e80a58f2ca6c009f5264736f6c63430008120033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000009e00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675
-----Decoded View---------------
Arg [0] : _dstChainId (uint16): 158
Arg [1] : _layerZeroEndpoint (address): 0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000000009e
Arg [1] : 00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.