OP Sepolia Testnet

Contract

0x5a6c5A46082D029FDD7c5cF8265047E0c4BB2089
Source Code Source Code

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Quote Update423159892026-04-17 14:01:5858 mins ago1776434518IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000625110.00100025
Quote Update423142132026-04-17 13:02:461 hr ago1776430966IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000622030.00100025
Quote Update423124232026-04-17 12:03:062 hrs ago1776427386IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000621410.00100025
Quote Update423105942026-04-17 11:02:083 hrs ago1776423728IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000645280.00100025
Quote Update423088042026-04-17 10:02:284 hrs ago1776420148IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000001096660.00100025
Quote Update423070032026-04-17 9:02:265 hrs ago1776416546IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000002304980.00100025
Quote Update423052082026-04-17 8:02:366 hrs ago1776412956IN
0x5a6c5A46...0c4BB2089
0 ETH0.000000810990.00100025
Quote Update423033952026-04-17 7:02:107 hrs ago1776409330IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000002412740.00100025
Quote Update423015872026-04-17 6:01:548 hrs ago1776405714IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000001201490.00100025
Quote Update422998022026-04-17 5:02:249 hrs ago1776402144IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000687320.00100025
Quote Update422980002026-04-17 4:02:2010 hrs ago1776398540IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000943850.00100025
Quote Update422961992026-04-17 3:02:1811 hrs ago1776394938IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000663490.00100025
Quote Update422943902026-04-17 2:02:0012 hrs ago1776391320IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000644050.00100025
Quote Update422925902026-04-17 1:02:0013 hrs ago1776387720IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000615240.00100025
Quote Update422908132026-04-17 0:02:4614 hrs ago1776384166IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000609870.00100025
Quote Update422890312026-04-16 23:03:2215 hrs ago1776380602IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000609750.00100025
Quote Update422872142026-04-16 22:02:4816 hrs ago1776376968IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000610490.00100025
Quote Update422854032026-04-16 21:02:2617 hrs ago1776373346IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000611540.00100025
Quote Update422836052026-04-16 20:02:3018 hrs ago1776369750IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000614520.00100025
Quote Update422818122026-04-16 19:02:4419 hrs ago1776366164IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000612670.00100025
Quote Update422800152026-04-16 18:02:5020 hrs ago1776362570IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000625080.00100025
Quote Update422782202026-04-16 17:03:0021 hrs ago1776358980IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000628930.00100025
Quote Update422763802026-04-16 16:01:4022 hrs ago1776355300IN
0x5a6c5A46...0c4BB2089
0 ETH0.000000078340.00100025
Quote Update422746042026-04-16 15:02:2823 hrs ago1776351748IN
0x5a6c5A46...0c4BB2089
0 ETH0.000000065010.00100025
Quote Update422727832026-04-16 14:01:4624 hrs ago1776348106IN
0x5a6c5A46...0c4BB2089
0 ETH0.0000000635720.00100025
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To Amount
365351582025-12-04 18:27:36133 days ago1764872856  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ExecutorQuoter

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.13;

import "./interfaces/IExecutorQuoter.sol";

string constant EXECUTOR_QUOTER_VERSION_STR = "Executor-Quoter-0.0.1";

contract ExecutorQuoter is IExecutorQuoter {
    string public constant EXECUTOR_QUOTER_VERSION = EXECUTOR_QUOTER_VERSION_STR;
    uint8 private constant QUOTE_DECIMALS = 10;
    uint8 private constant DECIMAL_RESOLUTION = 18;

    address public immutable QUOTER_ADDRESS;
    address public immutable UPDATER_ADDRESS;
    uint8 public immutable SRC_TOKEN_DECIMALS;
    bytes32 public immutable PAYEE_ADDRESS;

    /// This is the same as an EQ01 quote body
    /// It fits into a single bytes32 storage slot
    /// It is listed in reverse order so that it is stored in the correct order (EVM stores right to left)
    struct OnChainQuoteBody {
        /// The USD price, in 10^10, of the destinationChain native currency
        uint64 dstPrice;
        /// The USD price, in 10^10, of the sourceChain native currency
        uint64 srcPrice;
        /// The current gas price on the destination chain
        uint64 dstGasPrice;
        /// The base fee, in sourceChain native currency, required by the quoter to perform an execution on the destination chain
        uint64 baseFee;
    }

    struct ChainInfo {
        bool enabled;
        uint8 gasPriceDecimals;
        uint8 nativeDecimals;
    }

    struct Update {
        uint16 chainId;
        bytes32 update;
    }

    mapping(uint16 => OnChainQuoteBody) public quoteByDstChain;
    mapping(uint16 => ChainInfo) public chainInfos;

    /// @dev Selector 0x40788bb5.
    error InvalidUpdater(address sender, address expected);
    /// @dev Selector 0x4dc2c273.
    error ChainDisabled(uint16 chainId);
    /// @dev Selector 0x0d2e6713.
    error UnsupportedInstruction(uint8 ixType);
    /// @dev Selector 0x3a5a1720.
    error MoreThanOneDropOff();

    modifier onlyUpdater() {
        if (msg.sender != UPDATER_ADDRESS) {
            revert InvalidUpdater(msg.sender, UPDATER_ADDRESS);
        }
        _;
    }

    constructor(address _quoterAddress, address _updaterAddress, uint8 _srcTokenDecimals, bytes32 _payeeAddress) {
        QUOTER_ADDRESS = _quoterAddress;
        UPDATER_ADDRESS = _updaterAddress;
        SRC_TOKEN_DECIMALS = _srcTokenDecimals;
        PAYEE_ADDRESS = _payeeAddress;
    }

    function _batchUpdate(Update[] calldata updates, uint256 mappingSlot) private {
        assembly {
            let len := updates.length
            let baseOffset := updates.offset

            for { let i := 0 } lt(i, len) { i := add(i, 1) } {
                // Load update directly from calldata
                let updatePtr := add(baseOffset, mul(i, 0x40))
                let chainId := calldataload(updatePtr)
                let newValue := calldataload(add(updatePtr, 0x20))

                // Calculate storage slot for mapping[chainId]
                mstore(0x00, chainId)
                mstore(0x20, mappingSlot)
                let slot := keccak256(0x00, 0x40)
                sstore(slot, newValue)
            }
        }
    }

    function chainInfoUpdate(Update[] calldata updates) external onlyUpdater {
        uint256 slot;
        assembly {
            slot := chainInfos.slot
        }
        _batchUpdate(updates, slot);
    }

    function quoteUpdate(Update[] calldata updates) external onlyUpdater {
        uint256 slot;
        assembly {
            slot := quoteByDstChain.slot
        }
        _batchUpdate(updates, slot);
    }

    function normalize(uint256 amount, uint8 from, uint8 to) private pure returns (uint256) {
        if (from > to) {
            return amount / 10 ** uint256(from - to);
        } else if (from < to) {
            return amount * 10 ** uint256(to - from);
        }
        return amount;
    }

    function mul(uint256 a, uint256 b, uint8 decimals) private pure returns (uint256) {
        return (a * b) / 10 ** uint256(decimals);
    }

    function div(uint256 a, uint256 b, uint8 decimals) private pure returns (uint256) {
        return (a * 10 ** uint256(decimals)) / b;
    }

    /// Calculates the total gas limit and total message value from a set of relay instructions.
    /// Each relay instruction can be either a `GasInstruction` or a `GasDropOffInstruction`.
    /// - `GasInstruction` contributes to both `gasLimit` and `msgValue`.
    /// - `GasDropOffInstruction` contributes only to `msgValue`.
    /// Throws If an unsupported instruction type is encountered.
    function totalGasLimitAndMsgValue(bytes calldata relayInstructions)
        private
        pure
        returns (uint256 gasLimit, uint256 msgValue)
    {
        uint256 offset = 0;
        uint8 ixType;
        uint128 ixGasLimit;
        uint128 ixMsgValue;
        bool hasDropOff = false;
        uint256 relayInstructionsLength = relayInstructions.length;
        while (offset < relayInstructionsLength) {
            assembly {
                ixType := shr(248, calldataload(add(relayInstructions.offset, offset)))
                offset := add(offset, 1)
            }
            if (ixType == 1) {
                assembly {
                    ixGasLimit := shr(128, calldataload(add(relayInstructions.offset, offset)))
                    offset := add(offset, 16)
                    ixMsgValue := shr(128, calldataload(add(relayInstructions.offset, offset)))
                    offset := add(offset, 16)
                }
                gasLimit = gasLimit + ixGasLimit;
                msgValue = msgValue + ixMsgValue;
            } else if (ixType == 2) {
                if (hasDropOff) {
                    revert MoreThanOneDropOff();
                }
                hasDropOff = true;
                assembly {
                    ixMsgValue := shr(128, calldataload(add(relayInstructions.offset, offset)))
                    offset := add(offset, 48)
                }
                msgValue = msgValue + ixMsgValue;
            } else {
                revert UnsupportedInstruction(ixType);
            }
        }
    }

    function estimateQuote(
        OnChainQuoteBody storage quote,
        ChainInfo storage dstChainInfo,
        uint256 gasLimit,
        uint256 msgValue
    ) private view returns (uint256) {
        uint256 srcChainValueForBaseFee = normalize(quote.baseFee, QUOTE_DECIMALS, SRC_TOKEN_DECIMALS);

        uint256 nSrcPrice = normalize(quote.srcPrice, QUOTE_DECIMALS, DECIMAL_RESOLUTION);
        uint256 nDstPrice = normalize(quote.dstPrice, QUOTE_DECIMALS, DECIMAL_RESOLUTION);
        uint256 scaledConversion = div(nDstPrice, nSrcPrice, DECIMAL_RESOLUTION);

        uint256 nGasLimitCost =
            normalize(gasLimit * quote.dstGasPrice, dstChainInfo.gasPriceDecimals, DECIMAL_RESOLUTION);
        uint256 srcChainValueForGasLimit =
            normalize(mul(nGasLimitCost, scaledConversion, DECIMAL_RESOLUTION), DECIMAL_RESOLUTION, SRC_TOKEN_DECIMALS);

        uint256 nMsgValue = normalize(msgValue, dstChainInfo.nativeDecimals, DECIMAL_RESOLUTION);
        uint256 srcChainValueForMsgValue =
            normalize(mul(nMsgValue, scaledConversion, DECIMAL_RESOLUTION), DECIMAL_RESOLUTION, SRC_TOKEN_DECIMALS);
        return srcChainValueForBaseFee + srcChainValueForGasLimit + srcChainValueForMsgValue;
    }

    function requestQuote(
        uint16 dstChain,
        bytes32, //dstAddr,
        address, //refundAddr,
        bytes calldata, //requestBytes,
        bytes calldata relayInstructions
    ) external view returns (uint256 requiredPayment) {
        ChainInfo storage dstChainInfo = chainInfos[dstChain];
        if (!dstChainInfo.enabled) {
            revert ChainDisabled(dstChain);
        }
        (uint256 gasLimit, uint256 msgValue) = totalGasLimitAndMsgValue(relayInstructions);
        // NOTE: this does not include any maxGasLimit or maxMsgValue checks
        requiredPayment = estimateQuote(quoteByDstChain[dstChain], dstChainInfo, gasLimit, msgValue);

        return requiredPayment;
    }

    function requestExecutionQuote(
        uint16 dstChain,
        bytes32, //dstAddr,
        address, //refundAddr,
        bytes calldata, //requestBytes,
        bytes calldata relayInstructions
    ) external view returns (uint256 requiredPayment, bytes32, bytes32 quoteBody) {
        ChainInfo storage dstChainInfo = chainInfos[dstChain];
        if (!dstChainInfo.enabled) {
            revert ChainDisabled(dstChain);
        }
        OnChainQuoteBody storage quote = quoteByDstChain[dstChain];
        assembly {
            quoteBody := sload(quote.slot)
        }
        (uint256 gasLimit, uint256 msgValue) = totalGasLimitAndMsgValue(relayInstructions);
        // NOTE: this does not include any maxGasLimit or maxMsgValue checks
        requiredPayment = estimateQuote(quote, dstChainInfo, gasLimit, msgValue);

        return (requiredPayment, PAYEE_ADDRESS, quoteBody);
    }
}

// SPDX-License-Identifier: Apache-2.0
pragma solidity ^0.8.19;

interface IExecutorQuoter {
    /// This method is used by on- or off-chain services which need to determine the cost of a relay
    /// It only returns the required cost (msg.value)
    /// It is explicitly marked view
    function requestQuote(
        uint16 dstChain,
        bytes32 dstAddr,
        address refundAddr,
        bytes calldata requestBytes,
        bytes calldata relayInstructions
    ) external view returns (uint256);

    /// This method is used by an ExecutorQuoterRouter during the execution flow
    /// It returns the required cost (msg.value) in addition to the payee and EQ02 quote body
    /// It is explicitly NOT marked view in order to allow the quoter the flexibility to emit events or update state
    function requestExecutionQuote(
        uint16 dstChain,
        bytes32 dstAddr,
        address refundAddr,
        bytes calldata requestBytes,
        bytes calldata relayInstructions
    ) external returns (uint256, bytes32, bytes32);
}

Settings
{
  "remappings": [
    "forge-std/=lib/forge-std/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "london",
  "viaIR": true
}

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_quoterAddress","type":"address"},{"internalType":"address","name":"_updaterAddress","type":"address"},{"internalType":"uint8","name":"_srcTokenDecimals","type":"uint8"},{"internalType":"bytes32","name":"_payeeAddress","type":"bytes32"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint16","name":"chainId","type":"uint16"}],"name":"ChainDisabled","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"expected","type":"address"}],"name":"InvalidUpdater","type":"error"},{"inputs":[],"name":"MoreThanOneDropOff","type":"error"},{"inputs":[{"internalType":"uint8","name":"ixType","type":"uint8"}],"name":"UnsupportedInstruction","type":"error"},{"inputs":[],"name":"EXECUTOR_QUOTER_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PAYEE_ADDRESS","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"QUOTER_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SRC_TOKEN_DECIMALS","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UPDATER_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"bytes32","name":"update","type":"bytes32"}],"internalType":"struct ExecutorQuoter.Update[]","name":"updates","type":"tuple[]"}],"name":"chainInfoUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"chainInfos","outputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint8","name":"gasPriceDecimals","type":"uint8"},{"internalType":"uint8","name":"nativeDecimals","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"quoteByDstChain","outputs":[{"internalType":"uint64","name":"dstPrice","type":"uint64"},{"internalType":"uint64","name":"srcPrice","type":"uint64"},{"internalType":"uint64","name":"dstGasPrice","type":"uint64"},{"internalType":"uint64","name":"baseFee","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"uint16","name":"chainId","type":"uint16"},{"internalType":"bytes32","name":"update","type":"bytes32"}],"internalType":"struct ExecutorQuoter.Update[]","name":"updates","type":"tuple[]"}],"name":"quoteUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"dstChain","type":"uint16"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"relayInstructions","type":"bytes"}],"name":"requestExecutionQuote","outputs":[{"internalType":"uint256","name":"requiredPayment","type":"uint256"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"bytes32","name":"quoteBody","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"dstChain","type":"uint16"},{"internalType":"bytes32","name":"","type":"bytes32"},{"internalType":"address","name":"","type":"address"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"bytes","name":"relayInstructions","type":"bytes"}],"name":"requestQuote","outputs":[{"internalType":"uint256","name":"requiredPayment","type":"uint256"}],"stateMutability":"view","type":"function"}]

610100346100c557601f610ac438819003918201601f19168301916001600160401b038311848410176100ca578084926080946040528339810103126100c557610048816100e0565b90610055602082016100e0565b60408201519160ff831683036100c557606001519260805260a05260c05260e0526040516109cf90816100f58239608051816101fa015260a0518181816101b5015281816102cb0152610471015260c051818181610243015261074f015260e0518181816105e7015261062e0152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036100c55756fe6080604052600436101561001257600080fd5b60003560e01c806331522e8f146100c75780634750c2fd146100c257806351435be7146100bd5780635880c7eb146100b85780636afe1b4a146100b35780636ea5d58f146100ae578063a578ae13146100a9578063ad17ceea146100a4578063b0c5177f1461009f578063bddddedd1461009a5763c1315aec1461009557600080fd5b610616565b610584565b6104cf565b610461565b6103ea565b6102bb565b610229565b6101e4565b61019f565b61014f565b6100e2565b6004359061ffff821682036100dd57565b600080fd5b346100dd5760203660031901126100dd5761ffff6100fe6100cc565b16600052600060205260806040600020546040519067ffffffffffffffff8116825267ffffffffffffffff8160401c16602083015267ffffffffffffffff81841c16604083015260c01c6060820152f35b346100dd5760203660031901126100dd5761ffff61016b6100cc565b166000526001602052606060406000205460ff6040519181811615158352818160081c16602084015260101c166040820152f35b346100dd5760003660031901126100dd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100dd5760003660031901126100dd576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346100dd5760003660031901126100dd57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b9060206003198301126100dd5760043567ffffffffffffffff81116100dd57826023820112156100dd5780600401359267ffffffffffffffff84116100dd5760248460061b830101116100dd576024019190565b346100dd576102c936610267565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163381900361032a575060005b81811061030857005b80602060019260061b85018035600052600082520135604060002055016102ff565b6340788bb560e01b6000523360045260245260446000fd5b9181601f840112156100dd5782359167ffffffffffffffff83116100dd57602083818601950101116100dd57565b9060a06003198301126100dd5760043561ffff811681036100dd5791602435916044356001600160a01b03811681036100dd579160643567ffffffffffffffff81116100dd57816103c391600401610342565b929092916084359067ffffffffffffffff82116100dd576103e691600401610342565b9091565b346100dd5761ffff6103fb36610370565b9694509492505050169182600052600160205260406000209160ff8354161561044c57610441939161042c91610679565b9290916000526000602052604060002061074b565b604051908152602090f35b83634dc2c27360e01b60005260045260246000fd5b346100dd5761046f36610267565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163381900361032a575060005b8181106104ae57005b80602060019260061b850180356000528382520135604060002055016104a5565b346100dd5760003660031901126100dd576040516040810181811067ffffffffffffffff82111761056e5760405260158152744578656375746f722d51756f7465722d302e302e3160581b602082015260405180916020825280519081602084015260005b8281106105565750508060006040809385010152601f80199101168201010390f35b60208282018101516040878401015285945001610534565b634e487b7160e01b600052604160045260246000fd5b346100dd5761ffff61059536610370565b9694509492505050169182600052600160205260406000209060ff8254161561044c576105de929360005260006020526105d6604060002091825495610679565b92909161074b565b604080519182527f00000000000000000000000000000000000000000000000000000000000000006020830152810191909152606090f35b346100dd5760003660031901126100dd5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b634e487b7160e01b600052601160045260246000fd5b9190820180921161067457565b610651565b916000916000906000805b808382101561072f57600182019188013560f81c60001981016106d4575050806106c46106ca92890160206010823560801c92013560801c930198610667565b94610667565b935b939294610684565b9496949092915060028103610718575061070757610701600191603183828a01013560801c910196610667565b936106cc565b6301d2d0b960e51b60005260046000fd5b630d2e671360e01b60005260ff1660045260246000fd5b50505050919250565b8181029291811591840414171561067457565b54927f000000000000000000000000000000000000000000000000000000000000000092909161077f8460c087901c610872565b9361079667ffffffffffffffff8760401c166108d0565b926107aa67ffffffffffffffff88166108d0565b90670de0b6b3a7640000918281029281840414901517156106745761082261083c9661081c61082c866108276108419d6108226108369b61080e67ffffffffffffffff9a61081c9f6108008d916108279f610852565b9c8d9660801c161690610738565b90549d8e60ff9060081c1690565b906108df565b610981565b61092f565b9760101c60ff1690565b92610667565b610667565b90565b604d811161067457600a0a90565b811561085c570490565b634e487b7160e01b600052601260045260246000fd5b9060ff1680600a116000146108a257600a039060ff82116106745761089c60ff6108419316610844565b90610852565b80600a106108ae575090565b600919019060ff8211610674576108ca60ff6108419316610844565b90610738565b610841906305f5e10090610738565b9060ff16601281111561090857601119019060ff82116106745761089c60ff6108419316610844565b60128110610914575090565b6012039060ff8211610674576108ca60ff6108419316610844565b9060ff1680601211600014610959576012039060ff82116106745761089c60ff6108419316610844565b80601210610965575090565b601119019060ff8211610674576108ca60ff6108419316610844565b9061098b91610738565b670de0b6b3a764000090049056fea264697066735822122072378b9f984521e1dac118cee90fc0218f67f3f64a8786c2300cb354080092b264736f6c634300081c00330000000000000000000000005241c9276698439fef2780dbab76fec90b633fbd0000000000000000000000001cfec7e6883222c2db520a2b3ed04da154b59b8200000000000000000000000000000000000000000000000000000000000000120000000000000000000000004842781be7ba414c29029e6d7a70f6092e9d8beb

Deployed Bytecode

0x6080604052600436101561001257600080fd5b60003560e01c806331522e8f146100c75780634750c2fd146100c257806351435be7146100bd5780635880c7eb146100b85780636afe1b4a146100b35780636ea5d58f146100ae578063a578ae13146100a9578063ad17ceea146100a4578063b0c5177f1461009f578063bddddedd1461009a5763c1315aec1461009557600080fd5b610616565b610584565b6104cf565b610461565b6103ea565b6102bb565b610229565b6101e4565b61019f565b61014f565b6100e2565b6004359061ffff821682036100dd57565b600080fd5b346100dd5760203660031901126100dd5761ffff6100fe6100cc565b16600052600060205260806040600020546040519067ffffffffffffffff8116825267ffffffffffffffff8160401c16602083015267ffffffffffffffff81841c16604083015260c01c6060820152f35b346100dd5760203660031901126100dd5761ffff61016b6100cc565b166000526001602052606060406000205460ff6040519181811615158352818160081c16602084015260101c166040820152f35b346100dd5760003660031901126100dd576040517f0000000000000000000000001cfec7e6883222c2db520a2b3ed04da154b59b826001600160a01b03168152602090f35b346100dd5760003660031901126100dd576040517f0000000000000000000000005241c9276698439fef2780dbab76fec90b633fbd6001600160a01b03168152602090f35b346100dd5760003660031901126100dd57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000012168152f35b9060206003198301126100dd5760043567ffffffffffffffff81116100dd57826023820112156100dd5780600401359267ffffffffffffffff84116100dd5760248460061b830101116100dd576024019190565b346100dd576102c936610267565b7f0000000000000000000000001cfec7e6883222c2db520a2b3ed04da154b59b826001600160a01b03163381900361032a575060005b81811061030857005b80602060019260061b85018035600052600082520135604060002055016102ff565b6340788bb560e01b6000523360045260245260446000fd5b9181601f840112156100dd5782359167ffffffffffffffff83116100dd57602083818601950101116100dd57565b9060a06003198301126100dd5760043561ffff811681036100dd5791602435916044356001600160a01b03811681036100dd579160643567ffffffffffffffff81116100dd57816103c391600401610342565b929092916084359067ffffffffffffffff82116100dd576103e691600401610342565b9091565b346100dd5761ffff6103fb36610370565b9694509492505050169182600052600160205260406000209160ff8354161561044c57610441939161042c91610679565b9290916000526000602052604060002061074b565b604051908152602090f35b83634dc2c27360e01b60005260045260246000fd5b346100dd5761046f36610267565b7f0000000000000000000000001cfec7e6883222c2db520a2b3ed04da154b59b826001600160a01b03163381900361032a575060005b8181106104ae57005b80602060019260061b850180356000528382520135604060002055016104a5565b346100dd5760003660031901126100dd576040516040810181811067ffffffffffffffff82111761056e5760405260158152744578656375746f722d51756f7465722d302e302e3160581b602082015260405180916020825280519081602084015260005b8281106105565750508060006040809385010152601f80199101168201010390f35b60208282018101516040878401015285945001610534565b634e487b7160e01b600052604160045260246000fd5b346100dd5761ffff61059536610370565b9694509492505050169182600052600160205260406000209060ff8254161561044c576105de929360005260006020526105d6604060002091825495610679565b92909161074b565b604080519182527f0000000000000000000000004842781be7ba414c29029e6d7a70f6092e9d8beb6020830152810191909152606090f35b346100dd5760003660031901126100dd5760206040517f0000000000000000000000004842781be7ba414c29029e6d7a70f6092e9d8beb8152f35b634e487b7160e01b600052601160045260246000fd5b9190820180921161067457565b610651565b916000916000906000805b808382101561072f57600182019188013560f81c60001981016106d4575050806106c46106ca92890160206010823560801c92013560801c930198610667565b94610667565b935b939294610684565b9496949092915060028103610718575061070757610701600191603183828a01013560801c910196610667565b936106cc565b6301d2d0b960e51b60005260046000fd5b630d2e671360e01b60005260ff1660045260246000fd5b50505050919250565b8181029291811591840414171561067457565b54927f000000000000000000000000000000000000000000000000000000000000001292909161077f8460c087901c610872565b9361079667ffffffffffffffff8760401c166108d0565b926107aa67ffffffffffffffff88166108d0565b90670de0b6b3a7640000918281029281840414901517156106745761082261083c9661081c61082c866108276108419d6108226108369b61080e67ffffffffffffffff9a61081c9f6108008d916108279f610852565b9c8d9660801c161690610738565b90549d8e60ff9060081c1690565b906108df565b610981565b61092f565b9760101c60ff1690565b92610667565b610667565b90565b604d811161067457600a0a90565b811561085c570490565b634e487b7160e01b600052601260045260246000fd5b9060ff1680600a116000146108a257600a039060ff82116106745761089c60ff6108419316610844565b90610852565b80600a106108ae575090565b600919019060ff8211610674576108ca60ff6108419316610844565b90610738565b610841906305f5e10090610738565b9060ff16601281111561090857601119019060ff82116106745761089c60ff6108419316610844565b60128110610914575090565b6012039060ff8211610674576108ca60ff6108419316610844565b9060ff1680601211600014610959576012039060ff82116106745761089c60ff6108419316610844565b80601210610965575090565b601119019060ff8211610674576108ca60ff6108419316610844565b9061098b91610738565b670de0b6b3a764000090049056fea264697066735822122072378b9f984521e1dac118cee90fc0218f67f3f64a8786c2300cb354080092b264736f6c634300081c0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000005241c9276698439fef2780dbab76fec90b633fbd0000000000000000000000001cfec7e6883222c2db520a2b3ed04da154b59b8200000000000000000000000000000000000000000000000000000000000000120000000000000000000000004842781be7ba414c29029e6d7a70f6092e9d8beb

-----Decoded View---------------
Arg [0] : _quoterAddress (address): 0x5241C9276698439fEf2780DbaB76fEc90B633Fbd
Arg [1] : _updaterAddress (address): 0x1CfEC7e6883222c2dB520a2B3ed04DA154b59B82
Arg [2] : _srcTokenDecimals (uint8): 18
Arg [3] : _payeeAddress (bytes32): 0x0000000000000000000000004842781be7ba414c29029e6d7a70f6092e9d8beb

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000005241c9276698439fef2780dbab76fec90b633fbd
Arg [1] : 0000000000000000000000001cfec7e6883222c2db520a2b3ed04da154b59b82
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000004842781be7ba414c29029e6d7a70f6092e9d8beb


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
0x5a6c5A46082D029FDD7c5cF8265047E0c4BB2089
Loading...
Loading
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.