OP Sepolia Testnet

Contract

0xF9D64d54D32EE2BDceAAbFA60C4C438E224427d0

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Sponsored Call V...236827572025-02-10 6:14:141 hr ago1739168054IN
0xF9D64d54...E224427d0
0 ETH0.0000002132020.00100425
Sponsored Call V...236800472025-02-10 4:43:542 hrs ago1739162634IN
0xF9D64d54...E224427d0
0 ETH0.0000001500170.00100191
Sponsored Call V...236773382025-02-10 3:13:364 hrs ago1739157216IN
0xF9D64d54...E224427d0
0 ETH0.0000000726950.00100275
Sponsored Call V...236746292025-02-10 1:43:185 hrs ago1739151798IN
0xF9D64d54...E224427d0
0 ETH0.0000000678530.00100825
Sponsored Call V...236719192025-02-10 0:12:587 hrs ago1739146378IN
0xF9D64d54...E224427d0
0 ETH0.0000000637590.00100025
Sponsored Call V...236695802025-02-09 22:55:008 hrs ago1739141700IN
0xF9D64d54...E224427d0
0 ETH0.0000002480080.00100725
Sponsored Call V...236695732025-02-09 22:54:468 hrs ago1739141686IN
0xF9D64d54...E224427d0
0 ETH0.0000001633840.00100425
Sponsored Call V...236695732025-02-09 22:54:468 hrs ago1739141686IN
0xF9D64d54...E224427d0
0 ETH0.0000001855910.00100425
Sponsored Call V...236695732025-02-09 22:54:468 hrs ago1739141686IN
0xF9D64d54...E224427d0
0 ETH0.0000001630730.00100425
Sponsored Call V...236695672025-02-09 22:54:348 hrs ago1739141674IN
0xF9D64d54...E224427d0
0 ETH0.0000006063690.00100247
Sponsored Call V...236683112025-02-09 22:12:429 hrs ago1739139162IN
0xF9D64d54...E224427d0
0 ETH0.0000000634370.0010058
Sponsored Call V...236656002025-02-09 20:42:2010 hrs ago1739133740IN
0xF9D64d54...E224427d0
0 ETH0.0000000578840.00087739
Sponsored Call V...236628912025-02-09 19:12:0212 hrs ago1739128322IN
0xF9D64d54...E224427d0
0 ETH0.0000000892180.00100691
Sponsored Call V...236601822025-02-09 17:41:4413 hrs ago1739122904IN
0xF9D64d54...E224427d0
0 ETH0.0000001713250.00100191
Sponsored Call V...236574712025-02-09 16:11:2215 hrs ago1739117482IN
0xF9D64d54...E224427d0
0 ETH0.0000002251970.00100469
Sponsored Call V...236547622025-02-09 14:41:0416 hrs ago1739112064IN
0xF9D64d54...E224427d0
0 ETH0.0000004048550.00100825
Sponsored Call V...236520512025-02-09 13:10:4218 hrs ago1739106642IN
0xF9D64d54...E224427d0
0 ETH0.0000002534810.0010058
Sponsored Call V...236493412025-02-09 11:40:2219 hrs ago1739101222IN
0xF9D64d54...E224427d0
0 ETH0.0000001347750.00100453
Sponsored Call V...236453792025-02-09 9:28:1821 hrs ago1739093298IN
0xF9D64d54...E224427d0
0 ETH0.0000002521230.00100025
Sponsored Call V...236426682025-02-09 7:57:5623 hrs ago1739087876IN
0xF9D64d54...E224427d0
0 ETH0.0000005374140.00100025
Sponsored Call V...236399582025-02-09 6:27:3624 hrs ago1739082456IN
0xF9D64d54...E224427d0
0 ETH0.0000003521050.00100025
Sponsored Call V...236372492025-02-09 4:57:1826 hrs ago1739077038IN
0xF9D64d54...E224427d0
0 ETH0.0000000996750.00100914
Sponsored Call V...236345382025-02-09 3:26:5627 hrs ago1739071616IN
0xF9D64d54...E224427d0
0 ETH0.0000000620490.00089593
Sponsored Call V...236318282025-02-09 1:56:3629 hrs ago1739066196IN
0xF9D64d54...E224427d0
0 ETH0.0000000658570.00100167
Sponsored Call V...236291172025-02-09 0:26:1430 hrs ago1739060774IN
0xF9D64d54...E224427d0
0 ETH0.0000000643620.00100025
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
71427932024-01-24 9:22:06382 days ago1706088126  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GelatoRelay1BalanceV2

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 999999 runs

Other Settings:
paris EvmVersion, MIT license

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 5 : GelatoRelay1BalanceV2.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

import {IGelatoRelay1BalanceV2} from "./interfaces/IGelatoRelay1BalanceV2.sol";
import {IGelato1BalanceV2} from "./interfaces/IGelato1BalanceV2.sol";
import {GelatoCallUtils} from "./lib/GelatoCallUtils.sol";

/// @title  Gelato Relay V2 contract
/// @notice This contract deals with Gelato 1Balance payments
/// @dev    This contract must NEVER hold funds!
/// @dev    Maliciously crafted transaction payloads could wipe out any funds left here
// solhint-disable-next-line max-states-count
contract GelatoRelay1BalanceV2 is IGelatoRelay1BalanceV2, IGelato1BalanceV2 {
    using GelatoCallUtils for address;

    /// @notice Relay call + One Balance payment - with sponsor authentication
    /// @dev    This method can be called directly without passing through the diamond
    /// @dev    The validity of the emitted LogUseGelato1BalanceV2 event must be verified off-chain
    /// @dev    Payment is handled with off-chain accounting using Gelato's 1Balance system
    /// @param _target Relay call target
    /// @param _data Relay call data
    /// @param _correlationId Unique task identifier generated by gelato
    /// Signature is split into `r` and `vs` - See https://eips.ethereum.org/EIPS/eip-2098
    /// @param _r Checker signature
    /// @param _vs Checker signature
    function sponsoredCallV2(
        address _target,
        bytes calldata _data,
        bytes32 _correlationId,
        bytes32 _r,
        bytes32 _vs
    ) external {
        // These parameters are decoded from calldata
        (_correlationId);
        (_r);
        (_vs);

        // INTERACTIONS
        _target.revertingContractCall(_data, "GelatoRelay.sponsoredCallV2:");

        emit LogUseGelato1BalanceV2();
    }
}

File 2 of 5 : IGelato1BalanceV2.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

interface IGelato1BalanceV2 {
    event LogUseGelato1BalanceV2();
}

File 3 of 5 : IGelatoRelay1BalanceV2.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

interface IGelatoRelay1BalanceV2 {
    function sponsoredCallV2(
        address _target,
        bytes calldata _data,
        bytes32 _correlationId,
        bytes32 _r,
        bytes32 _vs
    ) external;
}

File 4 of 5 : GelatoBytes.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

library GelatoBytes {
    function calldataSliceSelector(
        bytes calldata _bytes
    ) internal pure returns (bytes4 selector) {
        selector =
            _bytes[0] |
            (bytes4(_bytes[1]) >> 8) |
            (bytes4(_bytes[2]) >> 16) |
            (bytes4(_bytes[3]) >> 24);
    }

    function memorySliceSelector(
        bytes memory _bytes
    ) internal pure returns (bytes4 selector) {
        selector =
            _bytes[0] |
            (bytes4(_bytes[1]) >> 8) |
            (bytes4(_bytes[2]) >> 16) |
            (bytes4(_bytes[3]) >> 24);
    }

    function revertWithError(
        bytes memory _bytes,
        string memory _tracingInfo
    ) internal pure {
        // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
        if (_bytes.length % 32 == 4) {
            bytes4 selector;
            assembly {
                selector := mload(add(0x20, _bytes))
            }
            if (selector == 0x08c379a0) {
                // Function selector for Error(string)
                assembly {
                    _bytes := add(_bytes, 68)
                }
                revert(string(abi.encodePacked(_tracingInfo, string(_bytes))));
            } else {
                revert(
                    string(abi.encodePacked(_tracingInfo, "NoErrorSelector"))
                );
            }
        } else {
            revert(
                string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"))
            );
        }
    }

    function returnError(
        bytes memory _bytes,
        string memory _tracingInfo
    ) internal pure returns (string memory) {
        // 68: 32-location, 32-length, 4-ErrorSelector, UTF-8 err
        if (_bytes.length % 32 == 4) {
            bytes4 selector;
            assembly {
                selector := mload(add(0x20, _bytes))
            }
            if (selector == 0x08c379a0) {
                // Function selector for Error(string)
                assembly {
                    _bytes := add(_bytes, 68)
                }
                return string(abi.encodePacked(_tracingInfo, string(_bytes)));
            } else {
                return
                    string(abi.encodePacked(_tracingInfo, "NoErrorSelector"));
            }
        } else {
            return
                string(abi.encodePacked(_tracingInfo, "UnexpectedReturndata"));
        }
    }
}

File 5 of 5 : GelatoCallUtils.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

import {GelatoBytes} from "./GelatoBytes.sol";

library GelatoCallUtils {
    using GelatoBytes for bytes;

    function revertingContractCall(
        address _contract,
        bytes memory _data,
        string memory _errorMsg
    ) internal returns (bytes memory returndata) {
        bool success;
        (success, returndata) = _contract.call(_data);

        // solhint-disable-next-line max-line-length
        // https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/f9b6fc3fdab7aca33a9cfa8837c5cd7f67e176be/contracts/utils/AddressUpgradeable.sol#L177
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(
                    isContract(_contract),
                    string(abi.encodePacked(_errorMsg, "Call to non contract"))
                );
            }
        } else {
            returndata.revertWithError(_errorMsg);
        }
    }

    // solhint-disable-next-line max-line-length
    // https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable/blob/f9b6fc3fdab7aca33a9cfa8837c5cd7f67e176be/contracts/utils/AddressUpgradeable.sol#L36
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 0;
    }
}

Settings
{
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract ABI

[{"anonymous":false,"inputs":[],"name":"LogUseGelato1BalanceV2","type":"event"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"bytes32","name":"_correlationId","type":"bytes32"},{"internalType":"bytes32","name":"_r","type":"bytes32"},{"internalType":"bytes32","name":"_vs","type":"bytes32"}],"name":"sponsoredCallV2","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b506105bb806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ad718d2a14610030575b600080fd5b61004361003e366004610312565b610045565b005b6100d185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601c81527f47656c61746f52656c61792e73706f6e736f72656443616c6c56323a00000000602082015273ffffffffffffffffffffffffffffffffffffffff8b169392509050610103565b506040517f8e4f8b7f1299a63a6b46587ec357933d2006e5697cd46d99297e670cee1dbeb190600090a1505050505050565b606060008473ffffffffffffffffffffffffffffffffffffffff168460405161012c91906103eb565b6000604051808303816000865af19150503d8060008114610169576040519150601f19603f3d011682016040523d82523d6000602084013e61016e565b606091505b509250905080156102045781516000036101ff5773ffffffffffffffffffffffffffffffffffffffff85163b1515836040516020016101ad9190610407565b604051602081830303815290604052906101fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f49190610448565b60405180910390fd5b505b61020e565b61020e8284610216565b509392505050565b602082516102249190610499565b6004036103015760208201517fffffffff0000000000000000000000000000000000000000000000000000000081167f08c379a000000000000000000000000000000000000000000000000000000000036102f05760448301925081836040516020016102929291906104d4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101f491600401610448565b816040516020016102929190610503565b806040516020016102929190610544565b60008060008060008060a0878903121561032b57600080fd5b863573ffffffffffffffffffffffffffffffffffffffff8116811461034f57600080fd5b9550602087013567ffffffffffffffff8082111561036c57600080fd5b818901915089601f83011261038057600080fd5b81358181111561038f57600080fd5b8a60208285010111156103a157600080fd5b979a60209290920199509697604081013597506060810135965060800135945092505050565b60005b838110156103e25781810151838201526020016103ca565b50506000910152565b600082516103fd8184602087016103c7565b9190910192915050565b600082516104198184602087016103c7565b7f43616c6c20746f206e6f6e20636f6e7472616374000000000000000000000000920191825250601401919050565b60208152600082518060208401526104678160408501602087016103c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000826104cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600083516104e68184602088016103c7565b8351908301906104fa8183602088016103c7565b01949350505050565b600082516105158184602087016103c7565b7f4e6f4572726f7253656c6563746f720000000000000000000000000000000000920191825250600f01919050565b600082516105568184602087016103c7565b7f556e657870656374656452657475726e6461746100000000000000000000000092019182525060140191905056fea2646970667358221220582610a37287a07756e82c4742887f464821fa0391645f7cf8c1a59deaf80aa564736f6c63430008140033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ad718d2a14610030575b600080fd5b61004361003e366004610312565b610045565b005b6100d185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051808201909152601c81527f47656c61746f52656c61792e73706f6e736f72656443616c6c56323a00000000602082015273ffffffffffffffffffffffffffffffffffffffff8b169392509050610103565b506040517f8e4f8b7f1299a63a6b46587ec357933d2006e5697cd46d99297e670cee1dbeb190600090a1505050505050565b606060008473ffffffffffffffffffffffffffffffffffffffff168460405161012c91906103eb565b6000604051808303816000865af19150503d8060008114610169576040519150601f19603f3d011682016040523d82523d6000602084013e61016e565b606091505b509250905080156102045781516000036101ff5773ffffffffffffffffffffffffffffffffffffffff85163b1515836040516020016101ad9190610407565b604051602081830303815290604052906101fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101f49190610448565b60405180910390fd5b505b61020e565b61020e8284610216565b509392505050565b602082516102249190610499565b6004036103015760208201517fffffffff0000000000000000000000000000000000000000000000000000000081167f08c379a000000000000000000000000000000000000000000000000000000000036102f05760448301925081836040516020016102929291906104d4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101f491600401610448565b816040516020016102929190610503565b806040516020016102929190610544565b60008060008060008060a0878903121561032b57600080fd5b863573ffffffffffffffffffffffffffffffffffffffff8116811461034f57600080fd5b9550602087013567ffffffffffffffff8082111561036c57600080fd5b818901915089601f83011261038057600080fd5b81358181111561038f57600080fd5b8a60208285010111156103a157600080fd5b979a60209290920199509697604081013597506060810135965060800135945092505050565b60005b838110156103e25781810151838201526020016103ca565b50506000910152565b600082516103fd8184602087016103c7565b9190910192915050565b600082516104198184602087016103c7565b7f43616c6c20746f206e6f6e20636f6e7472616374000000000000000000000000920191825250601401919050565b60208152600082518060208401526104678160408501602087016103c7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000826104cf577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b600083516104e68184602088016103c7565b8351908301906104fa8183602088016103c7565b01949350505050565b600082516105158184602087016103c7565b7f4e6f4572726f7253656c6563746f720000000000000000000000000000000000920191825250600f01919050565b600082516105568184602087016103c7565b7f556e657870656374656452657475726e6461746100000000000000000000000092019182525060140191905056fea2646970667358221220582610a37287a07756e82c4742887f464821fa0391645f7cf8c1a59deaf80aa564736f6c63430008140033

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
[ 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.