ETH Price: $1,972.29 (+0.54%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

ContractCreator

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer243819072026-02-04 7:10:5917 days ago1770189059IN
Spire: Trusted Proposer
0 ETH0.000003980.10813604
Transfer243819012026-02-04 7:09:4717 days ago1770188987IN
Spire: Trusted Proposer
0 ETH0.00000460.12496957
Transfer243818962026-02-04 7:08:4717 days ago1770188927IN
Spire: Trusted Proposer
0 ETH0.000004760.12923529
Transfer243626932026-02-01 14:44:3520 days ago1769957075IN
Spire: Trusted Proposer
0.00000001 ETH0.000026051.24085936
Transfer243626802026-02-01 14:41:5920 days ago1769956919IN
Spire: Trusted Proposer
0 ETH0.000040571.10137152
Transfer239250682025-12-02 10:04:5981 days ago1764669899IN
Spire: Trusted Proposer
0 ETH0.000001240.03374735
Transfer236497112025-10-24 20:28:59120 days ago1761337739IN
Spire: Trusted Proposer
0 ETH0.000003520.09563731

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Proposer

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 100000000 runs

Other Settings:
prague EvmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;

import {IProposer} from 'interfaces/proposer/IProposer.sol';

/// @title Proposer
///
/// @dev ⚠ SECURITY WARNING:  This contract provides FULL ARBITRARY CALL PRIVILEGES
///       to the ProposerMulticall contract. Use with extreme caution.
///
/// @dev An example implementation of a proposer contract that is compatible with the aggregation service
///      Intended to be set as an EOA account code (EIP-7702)
///      This contract is meant to be an example implementation, and is stateless for the sake of simple storage management
///
contract Proposer is IProposer {
  /// @notice The address of the proposer multicall contract
  address public immutable PROPOSER_MULTICALL;

  /// @notice Constructor
  ///
  /// @param _proposerMulticall The address of the proposer multicall contract
  constructor(
    address _proposerMulticall
  ) {
    PROPOSER_MULTICALL = _proposerMulticall;
  }

  /// @notice Fallback function to receive ether
  receive() external payable {}

  /// @dev     To support EIP 721 and EIP 1155, we need to respond to those methods with their own method signature
  ///
  /// @return  bytes4  onERC721Received function selector
  function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) {
    return this.onERC721Received.selector;
  }

  /// @dev     To support EIP 721 and EIP 1155, we need to respond to those methods with their own method signature
  ///
  /// @return  bytes4  onERC1155Received function selector
  function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) {
    return this.onERC1155Received.selector;
  }

  /// @dev     To support EIP 721 and EIP 1155, we need to respond to those methods with their own method signature
  ///
  /// @return  bytes4  onERC1155BatchReceived function selector
  function onERC1155BatchReceived(
    address,
    address,
    uint256[] calldata,
    uint256[] calldata,
    bytes calldata
  ) external pure returns (bytes4) {
    return this.onERC1155BatchReceived.selector;
  }

  /// @notice  EIP-1155 implementation
  /// we pretty much only need to signal that we support the interface for 165, but for 1155 we also need the fallback function
  ///
  /// @param   _interfaceID  the interface we're signaling support for
  ///
  /// @return  bool  True if the interface is supported, false otherwise.
  function supportsInterface(
    bytes4 _interfaceID
  ) external pure returns (bool) {
    bool _supported = _interfaceID == 0x01ffc9a7 // ERC-165 support (i.e. `bytes4(keccak256('supportsInterface(bytes4)'))`).
      || _interfaceID == 0x150b7a02 // ERC721TokenReceiver
      || _interfaceID == 0x4e2312e0; // ERC-1155 `ERC1155TokenReceiver` support (i.e. `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")) ^ bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))`).
    return _supported;
  }

  /// @notice Makes an arbitrary low level call
  ///
  /// @param _target The address to call
  /// @param _data The calldata to send
  /// @param _value The value to send with the call
  ///
  /// @return True by default if the call succeeds
  ///
  /// @dev The interface expectation is the boolean return value matches the status of the call, if it returns false for any reason
  ///      the builder will ignore the transaction
  /// @dev Has a whitelist check to enforce an authorized caller
  /// @dev Used to allow for contracts to make arbitrary calls for an EOA
  function onCall(address _target, bytes calldata _data, uint256 _value) external returns (bool) {
    if (msg.sender != PROPOSER_MULTICALL && address(this) != msg.sender) revert Unauthorized();

    (bool _success,) = _target.call{value: _value}(_data);
    if (!_success) {
      revert LowLevelCallFailed();
    }

    return true;
  }
}

// SPDX-License-Identifier: MIT
pragma solidity 0.8.30;

interface IProposer {
  error LowLevelCallFailed();
  error Unauthorized();

  function onCall(address _target, bytes calldata _data, uint256 _value) external returns (bool);
}

Settings
{
  "remappings": [
    "contracts/=src/contracts/",
    "interfaces/=src/interfaces/",
    "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
    "@openzeppelin-upgradeable/contracts/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
    "erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/",
    "forge-std/=lib/forge-std/src/",
    "halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/",
    "openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/openzeppelin-contracts/",
    "solady/=lib/solady/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 100000000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "prague",
  "viaIR": false
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_proposerMulticall","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"LowLevelCallFailed","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"PROPOSER_MULTICALL","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"onCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155BatchReceived","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC1155Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052348015600e575f5ffd5b506040516107d93803806107d9833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516107546100855f395f818161012b015261031c01526107545ff3fe608060405260043610610066575f3560e01c8063ab98c5f811610041578063ab98c5f814610172578063bc197c8114610191578063f23a6e61146101d8575f5ffd5b806301ffc9a714610071578063150b7a02146100a5578063521372551461011a575f5ffd5b3661006d57005b5f5ffd5b34801561007c575f5ffd5b5061009061008b366004610430565b61021d565b60405190151581526020015b60405180910390f35b3480156100b0575f5ffd5b506100e96100bf3660046104dc565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161009c565b348015610125575f5ffd5b5061014d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009c565b34801561017d575f5ffd5b5061009061018c366004610546565b610303565b34801561019c575f5ffd5b506100e96101ab3660046105dd565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156101e3575f5ffd5b506100e96101f236600461069c565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f807f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841614806102b057507f150b7a02000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b806102fc57507f4e2312e0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480159061034a5750303314155b15610381576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8573ffffffffffffffffffffffffffffffffffffffff168386866040516103aa92919061070f565b5f6040518083038185875af1925050503d805f81146103e4576040519150601f19603f3d011682016040523d82523d5f602084013e6103e9565b606091505b5050905080610424576040517f93cfa3ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600195945050505050565b5f60208284031215610440575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102fc575f5ffd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610492575f5ffd5b919050565b5f5f83601f8401126104a7575f5ffd5b50813567ffffffffffffffff8111156104be575f5ffd5b6020830191508360208285010111156104d5575f5ffd5b9250929050565b5f5f5f5f5f608086880312156104f0575f5ffd5b6104f98661046f565b94506105076020870161046f565b935060408601359250606086013567ffffffffffffffff811115610529575f5ffd5b61053588828901610497565b969995985093965092949392505050565b5f5f5f5f60608587031215610559575f5ffd5b6105628561046f565b9350602085013567ffffffffffffffff81111561057d575f5ffd5b61058987828801610497565b9598909750949560400135949350505050565b5f5f83601f8401126105ac575f5ffd5b50813567ffffffffffffffff8111156105c3575f5ffd5b6020830191508360208260051b85010111156104d5575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156105f4575f5ffd5b6105fd8961046f565b975061060b60208a0161046f565b9650604089013567ffffffffffffffff811115610626575f5ffd5b6106328b828c0161059c565b909750955050606089013567ffffffffffffffff811115610651575f5ffd5b61065d8b828c0161059c565b909550935050608089013567ffffffffffffffff81111561067c575f5ffd5b6106888b828c01610497565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a087890312156106b1575f5ffd5b6106ba8761046f565b95506106c86020880161046f565b94506040870135935060608701359250608087013567ffffffffffffffff8111156106f1575f5ffd5b6106fd89828a01610497565b979a9699509497509295939492505050565b818382375f910190815291905056fea2646970667358221220666d68f3bfe21ef5bb7744a6b28be08ee527305f2ba5e32097a676d6e970c47364736f6c634300081e00330000000000000000000000009ccc2f3ecde026230e11a5c8799ac7524f2bb294

Deployed Bytecode

0x608060405260043610610066575f3560e01c8063ab98c5f811610041578063ab98c5f814610172578063bc197c8114610191578063f23a6e61146101d8575f5ffd5b806301ffc9a714610071578063150b7a02146100a5578063521372551461011a575f5ffd5b3661006d57005b5f5ffd5b34801561007c575f5ffd5b5061009061008b366004610430565b61021d565b60405190151581526020015b60405180910390f35b3480156100b0575f5ffd5b506100e96100bf3660046104dc565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161009c565b348015610125575f5ffd5b5061014d7f0000000000000000000000009ccc2f3ecde026230e11a5c8799ac7524f2bb29481565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009c565b34801561017d575f5ffd5b5061009061018c366004610546565b610303565b34801561019c575f5ffd5b506100e96101ab3660046105dd565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156101e3575f5ffd5b506100e96101f236600461069c565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f807f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841614806102b057507f150b7a02000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b806102fc57507f4e2312e0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000009ccc2f3ecde026230e11a5c8799ac7524f2bb294161480159061034a5750303314155b15610381576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8573ffffffffffffffffffffffffffffffffffffffff168386866040516103aa92919061070f565b5f6040518083038185875af1925050503d805f81146103e4576040519150601f19603f3d011682016040523d82523d5f602084013e6103e9565b606091505b5050905080610424576040517f93cfa3ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600195945050505050565b5f60208284031215610440575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102fc575f5ffd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610492575f5ffd5b919050565b5f5f83601f8401126104a7575f5ffd5b50813567ffffffffffffffff8111156104be575f5ffd5b6020830191508360208285010111156104d5575f5ffd5b9250929050565b5f5f5f5f5f608086880312156104f0575f5ffd5b6104f98661046f565b94506105076020870161046f565b935060408601359250606086013567ffffffffffffffff811115610529575f5ffd5b61053588828901610497565b969995985093965092949392505050565b5f5f5f5f60608587031215610559575f5ffd5b6105628561046f565b9350602085013567ffffffffffffffff81111561057d575f5ffd5b61058987828801610497565b9598909750949560400135949350505050565b5f5f83601f8401126105ac575f5ffd5b50813567ffffffffffffffff8111156105c3575f5ffd5b6020830191508360208260051b85010111156104d5575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156105f4575f5ffd5b6105fd8961046f565b975061060b60208a0161046f565b9650604089013567ffffffffffffffff811115610626575f5ffd5b6106328b828c0161059c565b909750955050606089013567ffffffffffffffff811115610651575f5ffd5b61065d8b828c0161059c565b909550935050608089013567ffffffffffffffff81111561067c575f5ffd5b6106888b828c01610497565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a087890312156106b1575f5ffd5b6106ba8761046f565b95506106c86020880161046f565b94506040870135935060608701359250608087013567ffffffffffffffff8111156106f1575f5ffd5b6106fd89828a01610497565b979a9699509497509295939492505050565b818382375f910190815291905056fea2646970667358221220666d68f3bfe21ef5bb7744a6b28be08ee527305f2ba5e32097a676d6e970c47364736f6c634300081e0033

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

0000000000000000000000009ccc2f3ecde026230e11a5c8799ac7524f2bb294

-----Decoded View---------------
Arg [0] : _proposerMulticall (address): 0x9ccc2f3ecdE026230e11a5c8799ac7524f2bb294

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ccc2f3ecde026230e11a5c8799ac7524f2bb294


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.