Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 50 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Execute | 21825557 | 13 hrs ago | IN | 0 ETH | 0.00018963 | ||||
Execute | 21775855 | 7 days ago | IN | 0 ETH | 0.00034695 | ||||
Execute | 21767982 | 8 days ago | IN | 0 ETH | 0.00194083 | ||||
Execute | 21745118 | 11 days ago | IN | 0 ETH | 0.00143036 | ||||
Execute | 21723681 | 14 days ago | IN | 0 ETH | 0.00056433 | ||||
Execute | 21681436 | 20 days ago | IN | 0 ETH | 0.00201139 | ||||
Execute | 21674788 | 21 days ago | IN | 0 ETH | 0.00468762 | ||||
Execute | 21673777 | 21 days ago | IN | 0 ETH | 0.00098357 | ||||
Execute | 21589807 | 33 days ago | IN | 0 ETH | 0.00132855 | ||||
Execute | 21589802 | 33 days ago | IN | 0 ETH | 0.00112675 | ||||
Execute | 21566034 | 36 days ago | IN | 0 ETH | 0.00121276 | ||||
Execute | 21495101 | 46 days ago | IN | 0 ETH | 0.0006968 | ||||
Execute | 21415753 | 57 days ago | IN | 0 ETH | 0.00176034 | ||||
Execute | 21388493 | 61 days ago | IN | 0 ETH | 0.00190243 | ||||
Execute | 21376563 | 63 days ago | IN | 0 ETH | 0.00106339 | ||||
Execute | 21341021 | 68 days ago | IN | 0 ETH | 0.00123487 | ||||
Execute | 21293896 | 74 days ago | IN | 0 ETH | 0.00128228 | ||||
Execute | 21236901 | 82 days ago | IN | 0 ETH | 0.00242862 | ||||
Execute | 21193896 | 88 days ago | IN | 0 ETH | 0.00245171 | ||||
Execute | 21172771 | 91 days ago | IN | 0 ETH | 0.00286993 | ||||
Execute | 21086521 | 103 days ago | IN | 0 ETH | 0.00122316 | ||||
Execute | 21086321 | 103 days ago | IN | 0 ETH | 0.00160388 | ||||
Execute | 21080014 | 104 days ago | IN | 0 ETH | 0.00124507 | ||||
Execute | 21022850 | 112 days ago | IN | 0 ETH | 0.00107699 | ||||
Execute | 20937044 | 124 days ago | IN | 0 ETH | 0.00164818 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21825506 | 13 hrs ago | 0.00006698 ETH | ||||
21825506 | 13 hrs ago | 0.00006698 ETH | ||||
21767389 | 8 days ago | 0.00006698 ETH | ||||
21767389 | 8 days ago | 0.00006698 ETH | ||||
21725817 | 14 days ago | 0.00006698 ETH | ||||
21725817 | 14 days ago | 0.00006698 ETH | ||||
21725715 | 14 days ago | 0.00006698 ETH | ||||
21725715 | 14 days ago | 0.00006698 ETH | ||||
21725596 | 14 days ago | 0.00006698 ETH | ||||
21725596 | 14 days ago | 0.00006698 ETH | ||||
21725466 | 14 days ago | 0.00006698 ETH | ||||
21725466 | 14 days ago | 0.00006698 ETH | ||||
21725295 | 14 days ago | 0.00006698 ETH | ||||
21725295 | 14 days ago | 0.00006698 ETH | ||||
21723706 | 14 days ago | 0.00006698 ETH | ||||
21723706 | 14 days ago | 0.00006698 ETH | ||||
21674939 | 21 days ago | 0.00006698 ETH | ||||
21674939 | 21 days ago | 0.00006698 ETH | ||||
21674738 | 21 days ago | 0.00006698 ETH | ||||
21674738 | 21 days ago | 0.00006698 ETH | ||||
21673627 | 21 days ago | 0.00006698 ETH | ||||
21673627 | 21 days ago | 0.00006698 ETH | ||||
21589604 | 33 days ago | 0.00006698 ETH | ||||
21589604 | 33 days ago | 0.00006698 ETH | ||||
21587897 | 33 days ago | 0.00006698 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
AxelarAdapter
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 500 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.26; import { IAxelarAdapter, IAdapter, IAxelarGateway, IAxelarGasService } from "src/interfaces/gateway/adapters/IAxelarAdapter.sol"; import {IGateway} from "src/interfaces/gateway/IGateway.sol"; import {Auth} from "src/Auth.sol"; import {IGateway} from "src/interfaces/gateway/IGateway.sol"; /// @title Axelar Adapter /// @notice Routing contract that integrates with an Axelar Gateway contract AxelarAdapter is Auth, IAxelarAdapter { string public constant CENTRIFUGE_ID = "centrifuge"; string public constant CENTRIFUGE_AXELAR_EXECUTABLE = "0xc1757c6A0563E37048869A342dF0651b9F267e41"; IGateway public immutable gateway; bytes32 public immutable centrifugeIdHash; bytes32 public immutable centrifugeAddressHash; IAxelarGateway public immutable axelarGateway; IAxelarGasService public immutable axelarGasService; /// @inheritdoc IAxelarAdapter uint256 public axelarCost = 58_039_058_122_843; constructor(address gateway_, address axelarGateway_, address axelarGasService_) Auth(msg.sender) { gateway = IGateway(gateway_); axelarGateway = IAxelarGateway(axelarGateway_); axelarGasService = IAxelarGasService(axelarGasService_); centrifugeIdHash = keccak256(bytes(CENTRIFUGE_ID)); centrifugeAddressHash = keccak256(bytes("0x7369626CEF070000000000000000000000000000")); } // --- Administrative --- /// @inheritdoc IAxelarAdapter function file(bytes32 what, uint256 value) external auth { if (what == "axelarCost") axelarCost = value; else revert("AxelarAdapterfile-unrecognized-param"); emit File(what, value); } // --- Incoming --- /// @inheritdoc IAxelarAdapter function execute( bytes32 commandId, string calldata sourceChain, string calldata sourceAddress, bytes calldata payload ) public { require(keccak256(bytes(sourceChain)) == centrifugeIdHash, "AxelarAdapter/invalid-chain"); require(keccak256(bytes(sourceAddress)) == centrifugeAddressHash, "AxelarAdapter/invalid-address"); require( axelarGateway.validateContractCall(commandId, sourceChain, sourceAddress, keccak256(payload)), "AxelarAdapter/not-approved-by-axelar-gateway" ); gateway.handle(payload); } // --- Outgoing --- function send(bytes calldata payload) public { require(msg.sender == address(gateway), "AxelarAdapter/not-gateway"); axelarGateway.callContract(CENTRIFUGE_ID, CENTRIFUGE_AXELAR_EXECUTABLE, payload); } /// @inheritdoc IAdapter /// @dev Currently the payload (message) is not taken into consideration during cost estimation /// A predefined `axelarCost` value is used. function estimate(bytes calldata, uint256 baseCost) public view returns (uint256) { return baseCost + axelarCost; } /// @inheritdoc IAdapter function pay(bytes calldata payload, address refund) public payable { axelarGasService.payNativeGasForContractCall{value: msg.value}( address(this), CENTRIFUGE_ID, CENTRIFUGE_AXELAR_EXECUTABLE, payload, refund ); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.5.0; import {IAdapter} from "src/interfaces/gateway/IAdapter.sol"; interface IAxelarGateway { function callContract(string calldata destinationChain, string calldata contractAddress, bytes calldata payload) external; function validateContractCall( bytes32 commandId, string calldata sourceChain, string calldata sourceAddress, bytes32 payloadHash ) external returns (bool); } interface IAxelarGasService { function payNativeGasForContractCall( address sender, string calldata destinationChain, string calldata destinationAddress, bytes calldata payload, address refundAddress ) external payable; } interface IAxelarAdapter is IAdapter { event File(bytes32 indexed what, uint256 value); /// @dev This value is in Axelar fees in ETH (wei) function axelarCost() external view returns (uint256); /// @notice Updates a contract parameter /// @param what Accepts a bytes32 representation of 'axelarCost' function file(bytes32 what, uint256 value) external; // --- Incoming --- /// @notice Execute a message /// @dev Relies on Axelar to ensure messages cannot be executed more than once. function execute( bytes32 commandId, string calldata sourceChain, string calldata sourceAddress, bytes calldata payload ) external; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.26; uint8 constant MAX_ADAPTER_COUNT = 8; interface IGateway { /// @dev Each adapter struct is packed with the quorum to reduce SLOADs on handle struct Adapter { /// @notice Starts at 1 and maps to id - 1 as the index on the adapters array uint8 id; /// @notice Number of votes required for a message to be executed uint8 quorum; /// @notice Each time the quorum is decreased, a new session starts which invalidates old votes uint64 activeSessionId; } struct Message { /// @dev Counts are stored as integers (instead of boolean values) to accommodate duplicate /// messages (e.g. two investments from the same user with the same amount) being /// processed in parallel. The entire struct is packed in a single bytes32 slot. /// Max uint16 = 65,535 so at most 65,535 duplicate messages can be processed in parallel. uint16[MAX_ADAPTER_COUNT] votes; /// @notice Each time adapters are updated, a new session starts which invalidates old votes uint64 sessionId; bytes pendingMessage; } // --- Events --- event ProcessMessage(bytes message, address adapter); event ProcessProof(bytes32 messageHash, address adapter); event ExecuteMessage(bytes message, address adapter); event SendMessage(bytes message); event RecoverMessage(address adapter, bytes message); event RecoverProof(address adapter, bytes32 messageHash); event InitiateMessageRecovery(bytes32 messageHash, address adapter); event DisputeMessageRecovery(bytes32 messageHash, address adapter); event ExecuteMessageRecovery(bytes message, address adapter); event File(bytes32 indexed what, address[] adapters); event File(bytes32 indexed what, address instance); event File(bytes32 indexed what, uint8 messageId, address manager); event File(bytes32 indexed what, address caller, bool isAllowed); event ReceiveNativeTokens(address indexed sender, uint256 amount); /// @notice Returns the address of the adapter at the given id. function adapters(uint256 id) external view returns (address); /// @notice Returns the address of the contract that handles the given message id. function messageHandlers(uint8 messageId) external view returns (address); /// @notice Returns the timestamp when the given recovery can be executed. function recoveries(address adapter, bytes32 messageHash) external view returns (uint256 timestamp); // --- Administration --- /// @notice Used to update an array of addresses ( state variable ) on very rare occasions. /// @dev Currently it is used to update the supported adapters. /// @param what The name of the variable to be updated. /// @param value New addresses. function file(bytes32 what, address[] calldata value) external; /// @notice Used to update an address ( state variable ) on very rare occasions. /// @dev Currently used to update addresses of contract instances. /// @param what The name of the variable to be updated. /// @param data New address. function file(bytes32 what, address data) external; /// @notice Used to update a mapping ( state variables ) on very rare occasions. /// @dev Currently used to update any custom handlers for a specific message type. /// data1 is the message id from MessagesLib.Call and data2 could be any /// custom instance of a contract that will handle that call. /// @param what The name of the variable to be updated. /// @param data1 The key of the mapping. /// @param data2 The value of the mapping function file(bytes32 what, uint8 data1, address data2) external; /// @notice Used to update a mapping ( state variables ) on very rare occasions. /// @dev Manages who is allowed to call `this.topUp` /// /// @param what The name of the variable to be updated - `payers` /// @param caller Address of the payer allowed to top-up /// @param isAllower Whether the `caller` is allowed to top-up or not function file(bytes32 what, address caller, bool isAllower) external; // --- Incoming --- /// @notice Handles incoming messages, proofs, and recoveries. /// @dev Assumes adapters ensure messages cannot be confirmed more than once. /// @param payload Incoming message from the Centrifuge Chain passed through adapters. function handle(bytes calldata payload) external; /// @notice Governance on Centrifuge Chain can initiate message recovery. After the challenge period, /// the recovery can be executed. If a malign adapter initiates message recovery, governance on /// Centrifuge Chain can dispute and immediately cancel the recovery, using any other valid adapter. /// @param adapter Adapter that the recovery was targeting /// @param messageHash Hash of the message being disputed function disputeMessageRecovery(address adapter, bytes32 messageHash) external; /// @notice Governance on Centrifuge Chain can initiate message recovery. After the challenge period, /// the recovery can be executed. If a malign adapter initiates message recovery, governance on /// Centrifuge Chain can dispute and immediately cancel the recovery, using any other valid adapter. /// /// Only 1 recovery can be outstanding per message hash. If multiple adapters fail at the same time, /// these will need to be recovered serially (increasing the challenge period for each failed adapter). /// @param adapter Adapter's address that the recovery is targeting /// @param message Hash of the message to be recovered function executeMessageRecovery(address adapter, bytes calldata message) external; // --- Outgoing --- /// @notice Sends outgoing messages to the Centrifuge Chain. /// @dev Sends 1 message to the first adapter with the full message, /// and n-1 messages to the other adapters with proofs (hash of message). /// This ensures message uniqueness (can only be executed on the destination once). /// Source could be either Centrifuge router or EoA or any contract /// that calls the ERC7540Vault contract directly. /// @param message Message to be send. Either the message itself or a hash value of it ( proof ). /// @param source Entry point of the transaction. /// Used to determine whether it is eligible for TX cost payment. function send(bytes calldata message, address source) external payable; /// @notice Prepays for the TX cost for sending through the adapters /// and Centrifuge Chain /// @dev It can be called only through endorsed contracts. /// Currently being called from Centrifuge Router only. /// In order to prepay, the method MUST be called with `msg.value`. /// Called is assumed to have called IGateway.estimate before calling this. function topUp() external payable; // --- Helpers --- /// @notice A view method of the current quorum.abi /// @dev Quorum shows the amount of votes needed in order for a message to be dispatched further. /// The quorum is taken from the first adapter. /// Current quorum is the amount of all adapters. /// return Needed amount function quorum() external view returns (uint8); /// @notice Gets the current active routers session id. /// @dev When the adapters are updated with new ones, /// each new set of adapters has their own sessionId. /// Currently it uses sessionId of the previous set and /// increments it by 1. The idea of an activeSessionId is /// to invalidate any incoming messages from previously used adapters. function activeSessionId() external view returns (uint64); /// @notice Counts how many times each incoming messages has been received per adapter. /// @dev It supports parallel messages ( duplicates ). That means that the incoming messages could be /// the result of two or more independ request from the user of the same type. /// i.e. Same user would like to deposit same underlying asset with the same amount more then once. /// @param messageHash The hash value of the incoming message. function votes(bytes32 messageHash) external view returns (uint16[MAX_ADAPTER_COUNT] memory); /// @notice Used to calculate overall cost for bridging a payload on the first adapter and settling /// on the destination chain and bridging its payload proofs on n-1 adapter /// and settling on the destination chain. /// @param payload Used in gas cost calculations. /// @dev Currenly the payload is not taken into consideration. /// @return perAdapter An array of cost values per adapter. Each value is how much it's going to cost /// for a message / proof to be passed through one router and executed on Centrifuge Chain /// @return total Total cost for sending one message and corresponding proofs on through all adapters function estimate(bytes calldata payload) external view returns (uint256[] memory perAdapter, uint256 total); /// @notice Used to check current state of the `caller` and whether they are allowed to call /// `this.topUp` or not. /// @param caller Address to check /// @return isAllowed Whether the `caller` `isAllowed to call `this.topUp()` function payers(address caller) external view returns (bool isAllowed); } interface IMessageHandler { /// @notice Handling incoming messages from Centrifuge Chain. /// @param message Incoming message function handle(bytes memory message) external; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.8.26; import {IAuth} from "src/interfaces/IAuth.sol"; /// @title Auth /// @notice Simple authentication pattern /// @author Based on code from https://github.com/makerdao/dss abstract contract Auth is IAuth { /// @inheritdoc IAuth mapping(address => uint256) public wards; constructor(address initialWard) { wards[initialWard] = 1; emit Rely(initialWard); } /// @dev Check if the msg.sender has permissions modifier auth() { require(wards[msg.sender] == 1, "Auth/not-authorized"); _; } /// @inheritdoc IAuth function rely(address user) external auth { wards[user] = 1; emit Rely(user); } /// @inheritdoc IAuth function deny(address user) external auth { wards[user] = 0; emit Deny(user); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.5.0; interface IAdapter { // --- Outgoing --- /// @notice Send a payload to Centrifuge Chain function send(bytes calldata payload) external; /// @notice Estimate the total cost in native gas tokens function estimate(bytes calldata payload, uint256 baseCost) external view returns (uint256); /// @notice Pay the gas cost function pay(bytes calldata payload, address refund) external payable; }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.5.0; interface IAuth { event Rely(address indexed user); event Deny(address indexed user); /// @notice Returns whether the target is a ward (has admin access) function wards(address target) external view returns (uint256); /// @notice Make user a ward (give them admin access) function rely(address user) external; /// @notice Remove user as a ward (remove admin access) function deny(address user) external; }
{ "remappings": [ "forge-std/=lib/forge-std/src/", "@chimera/=lib/chimera/src/", "chimera/=lib/chimera/src/", "ds-test/=lib/chimera/lib/forge-std/lib/ds-test/src/" ], "optimizer": { "enabled": true, "runs": 500 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "cancun", "viaIR": false, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"gateway_","type":"address"},{"internalType":"address","name":"axelarGateway_","type":"address"},{"internalType":"address","name":"axelarGasService_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"what","type":"bytes32"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"File","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"Rely","type":"event"},{"inputs":[],"name":"CENTRIFUGE_AXELAR_EXECUTABLE","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CENTRIFUGE_ID","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"axelarCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"axelarGasService","outputs":[{"internalType":"contract IAxelarGasService","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"axelarGateway","outputs":[{"internalType":"contract IAxelarGateway","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"centrifugeAddressHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"centrifugeIdHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"baseCost","type":"uint256"}],"name":"estimate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"commandId","type":"bytes32"},{"internalType":"string","name":"sourceChain","type":"string"},{"internalType":"string","name":"sourceAddress","type":"string"},{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"what","type":"bytes32"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"file","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gateway","outputs":[{"internalType":"contract IGateway","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"},{"internalType":"address","name":"refund","type":"address"}],"name":"pay","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"rely","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"payload","type":"bytes"}],"name":"send","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6101206040526534c94571485b60015534801561001a575f80fd5b506040516110c33803806110c383398101604081905261003991610117565b335f81815260208190526040808220600190555182917fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a6091a2506001600160a01b0380841660805282811660e052811661010052604080518082018252600a81526963656e7472696675676560b01b6020918201527f60725fbe70c95e859120491e0e917eae7a53602d7c28ca502ed6dbcd335f5d9c60a052815160608101909252602a8083529061109990830139805160209091012060c05250610157915050565b80516001600160a01b0381168114610112575f80fd5b919050565b5f805f60608486031215610129575f80fd5b610132846100fc565b9250610140602085016100fc565b915061014e604085016100fc565b90509250925092565b60805160a05160c05160e05161010051610ed46101c55f395f818161025901526105d901525f81816101810152818161051c01526107a901525f81816102ab015261072301525f8181610226015261069d01525f8181610136015281816104ad01526108e60152610ed45ff3fe6080604052600436106100ef575f3560e01c8063545614cc116100875780637fadf28d116100575780637fadf28d146102e257806385b09852146103035780639c52a7f114610338578063bf353dbb14610357575f80fd5b8063545614cc1461024857806365fae35e1461027b578063745963dd1461029a5780637f1397d3146102cd575f80fd5b80632bb1ae7c116100c25780632bb1ae7c146101c45780632d0c7583146101e357806349160658146101f6578063494ffadd14610215575f80fd5b80630bfb963b146100f3578063116191b61461012557806314099c581461017057806329ae8114146101a3575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ae3565b610382565b6040519081526020015b60405180910390f35b348015610130575f80fd5b506101587f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161011c565b34801561017b575f80fd5b506101587f000000000000000000000000000000000000000000000000000000000000000081565b3480156101ae575f80fd5b506101c26101bd366004610b2b565b610399565b005b3480156101cf575f80fd5b506101c26101de366004610b4b565b6104a2565b6101c26101f1366004610ba5565b6105d7565b348015610201575f80fd5b506101c2610210366004610bf5565b61069b565b348015610220575f80fd5b506101127f000000000000000000000000000000000000000000000000000000000000000081565b348015610253575f80fd5b506101587f000000000000000000000000000000000000000000000000000000000000000081565b348015610286575f80fd5b506101c2610295366004610c9d565b610953565b3480156102a5575f80fd5b506101127f000000000000000000000000000000000000000000000000000000000000000081565b3480156102d8575f80fd5b5061011260015481565b3480156102ed575f80fd5b506102f66109eb565b60405161011c9190610ceb565b34801561030e575f80fd5b506102f66040518060400160405280600a81526020016963656e7472696675676560b01b81525081565b348015610343575f80fd5b506101c2610352366004610c9d565b610a07565b348015610362575f80fd5b50610112610371366004610c9d565b5f6020819052908152604090205481565b5f600154826103919190610cfd565b949350505050565b335f908152602081905260409020546001146103f25760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b8169185e195b185c90dbdcdd60b21b03610410576001819055610464565b60405162461bcd60e51b8152602060048201526024808201527f4178656c61724164617074657266696c652d756e7265636f676e697a65642d706044820152636172616d60e01b60648201526084016103e9565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c78260405161049691815260200190565b60405180910390a25050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461051a5760405162461bcd60e51b815260206004820152601960248201527f4178656c6172416461707465722f6e6f742d676174657761790000000000000060448201526064016103e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631c92115f6040518060400160405280600a81526020016963656e7472696675676560b01b8152506040518060600160405280602a8152602001610e75602a913985856040518563ffffffff1660e01b81526004016105a69493929190610d4a565b5f604051808303815f87803b1580156105bd575f80fd5b505af11580156105cf573d5f803e3d5ffd5b505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630c93e3bb34306040518060400160405280600a81526020016963656e7472696675676560b01b8152506040518060600160405280602a8152602001610e75602a91398888886040518863ffffffff1660e01b815260040161066896959493929190610d8e565b5f604051808303818588803b15801561067f575f80fd5b505af1158015610691573d5f803e3d5ffd5b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000086866040516106cc929190610df3565b6040518091039020146107215760405162461bcd60e51b815260206004820152601b60248201527f4178656c6172416461707465722f696e76616c69642d636861696e000000000060448201526064016103e9565b7f00000000000000000000000000000000000000000000000000000000000000008484604051610752929190610df3565b6040518091039020146107a75760405162461bcd60e51b815260206004820152601d60248201527f4178656c6172416461707465722f696e76616c69642d6164647265737300000060448201526064016103e9565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635f6970c3888888888888886040516107eb929190610df3565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16825261082e969594939291600401610e02565b6020604051808303815f875af115801561084a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086e9190610e42565b6108cf5760405162461bcd60e51b815260206004820152602c60248201527f4178656c6172416461707465722f6e6f742d617070726f7665642d62792d617860448201526b656c61722d6761746577617960a01b60648201526084016103e9565b604051635fa45e5b60e11b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bf48bcb69061091d9085908590600401610e61565b5f604051808303815f87803b158015610934575f80fd5b505af1158015610946573d5f803e3d5ffd5b5050505050505050505050565b335f908152602081905260409020546001146109a75760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016103e9565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040518060600160405280602a8152602001610e75602a913981565b335f90815260208190526040902054600114610a5b5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016103e9565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b5f8083601f840112610aae575f80fd5b50813567ffffffffffffffff811115610ac5575f80fd5b602083019150836020828501011115610adc575f80fd5b9250929050565b5f805f60408486031215610af5575f80fd5b833567ffffffffffffffff811115610b0b575f80fd5b610b1786828701610a9e565b909790965060209590950135949350505050565b5f8060408385031215610b3c575f80fd5b50508035926020909101359150565b5f8060208385031215610b5c575f80fd5b823567ffffffffffffffff811115610b72575f80fd5b610b7e85828601610a9e565b90969095509350505050565b80356001600160a01b0381168114610ba0575f80fd5b919050565b5f805f60408486031215610bb7575f80fd5b833567ffffffffffffffff811115610bcd575f80fd5b610bd986828701610a9e565b9094509250610bec905060208501610b8a565b90509250925092565b5f805f805f805f6080888a031215610c0b575f80fd5b87359650602088013567ffffffffffffffff811115610c28575f80fd5b610c348a828b01610a9e565b909750955050604088013567ffffffffffffffff811115610c53575f80fd5b610c5f8a828b01610a9e565b909550935050606088013567ffffffffffffffff811115610c7e575f80fd5b610c8a8a828b01610a9e565b989b979a50959850939692959293505050565b5f60208284031215610cad575f80fd5b610cb682610b8a565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cb66020830184610cbd565b80820180821115610d1c57634e487b7160e01b5f52601160045260245ffd5b92915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f610d5c6060830187610cbd565b8281036020840152610d6e8187610cbd565b90508281036040840152610d83818587610d22565b979650505050505050565b6001600160a01b038716815260a060208201525f610daf60a0830188610cbd565b8281036040840152610dc18188610cbd565b90508281036060840152610dd6818688610d22565b9150506001600160a01b0383166080830152979650505050505050565b818382375f9101908152919050565b868152608060208201525f610e1b608083018789610d22565b8281036040840152610e2e818688610d22565b915050826060830152979650505050505050565b5f60208284031215610e52575f80fd5b81518015158114610cb6575f80fd5b602081525f610391602083018486610d2256fe307863313735376336413035363345333730343838363941333432644630363531623946323637653431a2646970667358221220fdd0cf38803d26b1b995babae553caa03c650bc3667cc7806f6a1e883035e88964736f6c634300081a00333078373336393632364345463037303030303030303030303030303030303030303030303030303030300000000000000000000000007829e5ca4286df66e9f58160544097db517a3b8c0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a50000000000000000000000002d5d7d31f671f86c782533cc367f14109a082712
Deployed Bytecode
0x6080604052600436106100ef575f3560e01c8063545614cc116100875780637fadf28d116100575780637fadf28d146102e257806385b09852146103035780639c52a7f114610338578063bf353dbb14610357575f80fd5b8063545614cc1461024857806365fae35e1461027b578063745963dd1461029a5780637f1397d3146102cd575f80fd5b80632bb1ae7c116100c25780632bb1ae7c146101c45780632d0c7583146101e357806349160658146101f6578063494ffadd14610215575f80fd5b80630bfb963b146100f3578063116191b61461012557806314099c581461017057806329ae8114146101a3575b5f80fd5b3480156100fe575f80fd5b5061011261010d366004610ae3565b610382565b6040519081526020015b60405180910390f35b348015610130575f80fd5b506101587f0000000000000000000000007829e5ca4286df66e9f58160544097db517a3b8c81565b6040516001600160a01b03909116815260200161011c565b34801561017b575f80fd5b506101587f0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a581565b3480156101ae575f80fd5b506101c26101bd366004610b2b565b610399565b005b3480156101cf575f80fd5b506101c26101de366004610b4b565b6104a2565b6101c26101f1366004610ba5565b6105d7565b348015610201575f80fd5b506101c2610210366004610bf5565b61069b565b348015610220575f80fd5b506101127f60725fbe70c95e859120491e0e917eae7a53602d7c28ca502ed6dbcd335f5d9c81565b348015610253575f80fd5b506101587f0000000000000000000000002d5d7d31f671f86c782533cc367f14109a08271281565b348015610286575f80fd5b506101c2610295366004610c9d565b610953565b3480156102a5575f80fd5b506101127ffdedca3e459e0945c9db089231054c40476ec56eea89c63a83abc1195ba62f2881565b3480156102d8575f80fd5b5061011260015481565b3480156102ed575f80fd5b506102f66109eb565b60405161011c9190610ceb565b34801561030e575f80fd5b506102f66040518060400160405280600a81526020016963656e7472696675676560b01b81525081565b348015610343575f80fd5b506101c2610352366004610c9d565b610a07565b348015610362575f80fd5b50610112610371366004610c9d565b5f6020819052908152604090205481565b5f600154826103919190610cfd565b949350505050565b335f908152602081905260409020546001146103f25760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064015b60405180910390fd5b8169185e195b185c90dbdcdd60b21b03610410576001819055610464565b60405162461bcd60e51b8152602060048201526024808201527f4178656c61724164617074657266696c652d756e7265636f676e697a65642d706044820152636172616d60e01b60648201526084016103e9565b817fe986e40cc8c151830d4f61050f4fb2e4add8567caad2d5f5496f9158e91fe4c78260405161049691815260200190565b60405180910390a25050565b336001600160a01b037f0000000000000000000000007829e5ca4286df66e9f58160544097db517a3b8c161461051a5760405162461bcd60e51b815260206004820152601960248201527f4178656c6172416461707465722f6e6f742d676174657761790000000000000060448201526064016103e9565b7f0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a56001600160a01b0316631c92115f6040518060400160405280600a81526020016963656e7472696675676560b01b8152506040518060600160405280602a8152602001610e75602a913985856040518563ffffffff1660e01b81526004016105a69493929190610d4a565b5f604051808303815f87803b1580156105bd575f80fd5b505af11580156105cf573d5f803e3d5ffd5b505050505050565b7f0000000000000000000000002d5d7d31f671f86c782533cc367f14109a0827126001600160a01b0316630c93e3bb34306040518060400160405280600a81526020016963656e7472696675676560b01b8152506040518060600160405280602a8152602001610e75602a91398888886040518863ffffffff1660e01b815260040161066896959493929190610d8e565b5f604051808303818588803b15801561067f575f80fd5b505af1158015610691573d5f803e3d5ffd5b5050505050505050565b7f60725fbe70c95e859120491e0e917eae7a53602d7c28ca502ed6dbcd335f5d9c86866040516106cc929190610df3565b6040518091039020146107215760405162461bcd60e51b815260206004820152601b60248201527f4178656c6172416461707465722f696e76616c69642d636861696e000000000060448201526064016103e9565b7ffdedca3e459e0945c9db089231054c40476ec56eea89c63a83abc1195ba62f288484604051610752929190610df3565b6040518091039020146107a75760405162461bcd60e51b815260206004820152601d60248201527f4178656c6172416461707465722f696e76616c69642d6164647265737300000060448201526064016103e9565b7f0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a56001600160a01b0316635f6970c3888888888888886040516107eb929190610df3565b6040519081900381207fffffffff0000000000000000000000000000000000000000000000000000000060e089901b16825261082e969594939291600401610e02565b6020604051808303815f875af115801561084a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086e9190610e42565b6108cf5760405162461bcd60e51b815260206004820152602c60248201527f4178656c6172416461707465722f6e6f742d617070726f7665642d62792d617860448201526b656c61722d6761746577617960a01b60648201526084016103e9565b604051635fa45e5b60e11b81526001600160a01b037f0000000000000000000000007829e5ca4286df66e9f58160544097db517a3b8c169063bf48bcb69061091d9085908590600401610e61565b5f604051808303815f87803b158015610934575f80fd5b505af1158015610946573d5f803e3d5ffd5b5050505050505050505050565b335f908152602081905260409020546001146109a75760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016103e9565b6001600160a01b0381165f8181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b6040518060600160405280602a8152602001610e75602a913981565b335f90815260208190526040902054600114610a5b5760405162461bcd60e51b8152602060048201526013602482015272105d5d1a0bdb9bdd0b585d5d1a1bdc9a5e9959606a1b60448201526064016103e9565b6001600160a01b0381165f81815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b5f8083601f840112610aae575f80fd5b50813567ffffffffffffffff811115610ac5575f80fd5b602083019150836020828501011115610adc575f80fd5b9250929050565b5f805f60408486031215610af5575f80fd5b833567ffffffffffffffff811115610b0b575f80fd5b610b1786828701610a9e565b909790965060209590950135949350505050565b5f8060408385031215610b3c575f80fd5b50508035926020909101359150565b5f8060208385031215610b5c575f80fd5b823567ffffffffffffffff811115610b72575f80fd5b610b7e85828601610a9e565b90969095509350505050565b80356001600160a01b0381168114610ba0575f80fd5b919050565b5f805f60408486031215610bb7575f80fd5b833567ffffffffffffffff811115610bcd575f80fd5b610bd986828701610a9e565b9094509250610bec905060208501610b8a565b90509250925092565b5f805f805f805f6080888a031215610c0b575f80fd5b87359650602088013567ffffffffffffffff811115610c28575f80fd5b610c348a828b01610a9e565b909750955050604088013567ffffffffffffffff811115610c53575f80fd5b610c5f8a828b01610a9e565b909550935050606088013567ffffffffffffffff811115610c7e575f80fd5b610c8a8a828b01610a9e565b989b979a50959850939692959293505050565b5f60208284031215610cad575f80fd5b610cb682610b8a565b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610cb66020830184610cbd565b80820180821115610d1c57634e487b7160e01b5f52601160045260245ffd5b92915050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f610d5c6060830187610cbd565b8281036020840152610d6e8187610cbd565b90508281036040840152610d83818587610d22565b979650505050505050565b6001600160a01b038716815260a060208201525f610daf60a0830188610cbd565b8281036040840152610dc18188610cbd565b90508281036060840152610dd6818688610d22565b9150506001600160a01b0383166080830152979650505050505050565b818382375f9101908152919050565b868152608060208201525f610e1b608083018789610d22565b8281036040840152610e2e818688610d22565b915050826060830152979650505050505050565b5f60208284031215610e52575f80fd5b81518015158114610cb6575f80fd5b602081525f610391602083018486610d2256fe307863313735376336413035363345333730343838363941333432644630363531623946323637653431a2646970667358221220fdd0cf38803d26b1b995babae553caa03c650bc3667cc7806f6a1e883035e88964736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007829e5ca4286df66e9f58160544097db517a3b8c0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a50000000000000000000000002d5d7d31f671f86c782533cc367f14109a082712
-----Decoded View---------------
Arg [0] : gateway_ (address): 0x7829E5ca4286Df66e9F58160544097dB517a3B8c
Arg [1] : axelarGateway_ (address): 0x4F4495243837681061C4743b74B3eEdf548D56A5
Arg [2] : axelarGasService_ (address): 0x2d5d7d31F671F86C782533cc367F14109a082712
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007829e5ca4286df66e9f58160544097db517a3b8c
Arg [1] : 0000000000000000000000004f4495243837681061c4743b74b3eedf548d56a5
Arg [2] : 0000000000000000000000002d5d7d31f671f86c782533cc367f14109a082712
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.