ETH Price: $2,398.30 (-8.65%)

Contract

0xceA8aAa918bc6C19e5B77841ebD77ff3188385AF

Overview

ETH Balance

0 ETH

ETH Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Sponsored Call V...4274763602026-02-01 11:10:282 hrs ago1769944228IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000007520.020118
Sponsored Call V...4274758702026-02-01 11:08:272 hrs ago1769944107IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000006650.020098
Sponsored Call V...4274724982026-02-01 10:54:262 hrs ago1769943266IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005720.020074
Sponsored Call V...4273665082026-02-01 3:33:319 hrs ago1769916811IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005660.020016
Sponsored Call V...4273355082026-02-01 1:24:3112 hrs ago1769909071IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005750.020006
Sponsored Call V...4272756102026-01-31 21:15:2816 hrs ago1769894128IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000006230.021486
Sponsored Call V...4272734472026-01-31 21:06:2916 hrs ago1769893589IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000006140.02153
Sponsored Call V...4272537182026-01-31 19:44:3017 hrs ago1769888670IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000006990.024524
Sponsored Call V...4272522752026-01-31 19:38:3117 hrs ago1769888311IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000007030.024882
Sponsored Call V...4272512982026-01-31 19:34:2917 hrs ago1769888069IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000007540.02577
Sponsored Call V...4272481632026-01-31 19:21:2918 hrs ago1769887289IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.00000760.026198
Sponsored Call V...4272328962026-01-31 18:18:3119 hrs ago1769883511IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000007950.027882
Sponsored Call V...4272190512026-01-31 17:21:3120 hrs ago1769880091IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000010640.037614
Sponsored Call V...4272163952026-01-31 17:10:3020 hrs ago1769879430IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000021240.0645
Sponsored Call V...4271728112026-01-31 14:10:3023 hrs ago1769868630IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005690.020046
Sponsored Call V...4271005872026-01-31 9:10:2828 hrs ago1769850628IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005660.02
Sponsored Call V...4270885102026-01-31 8:20:2529 hrs ago1769847625IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005670.020034
Sponsored Call V...4270865802026-01-31 8:12:2429 hrs ago1769847144IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005690.020106
Sponsored Call V...4269874872026-01-31 1:20:2736 hrs ago1769822427IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005770.02017
Sponsored Call V...4269841152026-01-31 1:06:2736 hrs ago1769821587IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005720.02
Sponsored Call V...4269826722026-01-31 1:00:2736 hrs ago1769821227IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.00000660.020092
Sponsored Call V...4269708942026-01-31 0:11:3037 hrs ago1769818290IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005740.020266
Sponsored Call V...4269299672026-01-30 21:21:2740 hrs ago1769808087IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000006020.02014
Sponsored Call V...4269140542026-01-30 20:15:3041 hrs ago1769804130IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005780.020074
Sponsored Call V...4269031972026-01-30 19:30:2941 hrs ago1769801429IN
Gelato: GelatoRelay1BalanceV2
0 ETH0.000005820.020418
View all transactions

Latest 1 internal transaction

Parent Transaction Hash Block From To
3165966022025-03-17 10:01:48321 days ago1742205708  Contract Creation0 ETH

Cross-Chain Transactions
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
// 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.revertingContractCallNoCopy(
            _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;
}

// 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))));
            }
        }

        // Bubble up unrecognised errors directly
        assembly {
            revert(add(_bytes, 0x20), mload(_bytes))
        }
    }
}

// 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);
        }
    }

    function revertingContractCallNoCopy(
        address _contract,
        bytes calldata _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 Security Audit

Contract ABI

API
[{"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"}]

608060405234801561001057600080fd5b506104e5806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ad718d2a14610030575b600080fd5b61004361003e3660046102ca565b610045565b005b60408051808201909152601c81527f47656c61746f52656c61792e73706f6e736f72656443616c6c56323a00000000602082015261009e9073ffffffffffffffffffffffffffffffffffffffff881690879087906100d0565b506040517f8e4f8b7f1299a63a6b46587ec357933d2006e5697cd46d99297e670cee1dbeb190600090a1505050505050565b606060008573ffffffffffffffffffffffffffffffffffffffff1685856040516100fb92919061037f565b6000604051808303816000865af19150503d8060008114610138576040519150601f19603f3d011682016040523d82523d6000602084013e61013d565b606091505b509250905080156101d35781516000036101ce5773ffffffffffffffffffffffffffffffffffffffff86163b15158360405160200161017c91906103b3565b604051602081830303815290604052906101cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c391906103f4565b60405180910390fd5b505b6101dd565b6101dd82846101e6565b50949350505050565b602082516101f49190610445565b6004036102c25760208201517fffffffff0000000000000000000000000000000000000000000000000000000081167f08c379a000000000000000000000000000000000000000000000000000000000036102c0576044830192508183604051602001610262929190610480565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101c3916004016103f4565b505b815160208301fd5b60008060008060008060a087890312156102e357600080fd5b863573ffffffffffffffffffffffffffffffffffffffff8116811461030757600080fd5b9550602087013567ffffffffffffffff8082111561032457600080fd5b818901915089601f83011261033857600080fd5b81358181111561034757600080fd5b8a602082850101111561035957600080fd5b979a60209290920199509697604081013597506060810135965060800135945092505050565b8183823760009101908152919050565b60005b838110156103aa578181015183820152602001610392565b50506000910152565b600082516103c581846020870161038f565b7f43616c6c20746f206e6f6e20636f6e7472616374000000000000000000000000920191825250601401919050565b602081526000825180602084015261041381604085016020870161038f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008261047b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000835161049281846020880161038f565b8351908301906104a681836020880161038f565b0194935050505056fea2646970667358221220db14341cd5dc3b9436bdac3c021e2866bfe4f04219cb79808b7163e0ab4b055164736f6c63430008140033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063ad718d2a14610030575b600080fd5b61004361003e3660046102ca565b610045565b005b60408051808201909152601c81527f47656c61746f52656c61792e73706f6e736f72656443616c6c56323a00000000602082015261009e9073ffffffffffffffffffffffffffffffffffffffff881690879087906100d0565b506040517f8e4f8b7f1299a63a6b46587ec357933d2006e5697cd46d99297e670cee1dbeb190600090a1505050505050565b606060008573ffffffffffffffffffffffffffffffffffffffff1685856040516100fb92919061037f565b6000604051808303816000865af19150503d8060008114610138576040519150601f19603f3d011682016040523d82523d6000602084013e61013d565b606091505b509250905080156101d35781516000036101ce5773ffffffffffffffffffffffffffffffffffffffff86163b15158360405160200161017c91906103b3565b604051602081830303815290604052906101cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c391906103f4565b60405180910390fd5b505b6101dd565b6101dd82846101e6565b50949350505050565b602082516101f49190610445565b6004036102c25760208201517fffffffff0000000000000000000000000000000000000000000000000000000081167f08c379a000000000000000000000000000000000000000000000000000000000036102c0576044830192508183604051602001610262929190610480565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a00000000000000000000000000000000000000000000000000000000082526101c3916004016103f4565b505b815160208301fd5b60008060008060008060a087890312156102e357600080fd5b863573ffffffffffffffffffffffffffffffffffffffff8116811461030757600080fd5b9550602087013567ffffffffffffffff8082111561032457600080fd5b818901915089601f83011261033857600080fd5b81358181111561034757600080fd5b8a602082850101111561035957600080fd5b979a60209290920199509697604081013597506060810135965060800135945092505050565b8183823760009101908152919050565b60005b838110156103aa578181015183820152602001610392565b50506000910152565b600082516103c581846020870161038f565b7f43616c6c20746f206e6f6e20636f6e7472616374000000000000000000000000920191825250601401919050565b602081526000825180602084015261041381604085016020870161038f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008261047b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b6000835161049281846020880161038f565b8351908301906104a681836020880161038f565b0194935050505056fea2646970667358221220db14341cd5dc3b9436bdac3c021e2866bfe4f04219cb79808b7163e0ab4b055164736f6c63430008140033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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