Hoodi Testnet

Contract

0xb3b91b87183e74102AAb105F04b7160201DdF8c4

Overview

ETH Balance

0 ETH

More Info

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Amount
Transfer14181812025-10-15 8:39:1224 days ago1760517552IN
0xb3b91b87...201DdF8c4
0 ETH0.000038131.03501405
Transfer12319982025-09-17 14:51:0052 days ago1758120660IN
0xb3b91b87...201DdF8c4
0 ETH0.00005171.40342288
Transfer12312832025-09-17 12:21:4852 days ago1758111708IN
0xb3b91b87...201DdF8c4
0 ETH0.000239516.50084751
Transfer12309312025-09-17 11:08:0052 days ago1758107280IN
0xb3b91b87...201DdF8c4
0 ETH0.000071631.94418663
Transfer12261332025-09-16 18:01:0053 days ago1758045660IN
0xb3b91b87...201DdF8c4
0 ETH0.000053381.44886906
Transfer12181692025-09-15 13:15:2454 days ago1757942124IN
0xb3b91b87...201DdF8c4
0 ETH0.000043821.18942898
Transfer12168752025-09-15 8:43:0054 days ago1757925780IN
0xb3b91b87...201DdF8c4
0 ETH0.000035440.96210419

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

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

Contract Source Code (Solidity Standard Json-Input format)

// 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/"
  ],
  "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 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"}]

60a0604052348015600e575f5ffd5b506040516107d93803806107d9833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f5ffd5b81516001600160a01b0381168114605f575f5ffd5b9392505050565b6080516107546100855f395f818161012b015261031c01526107545ff3fe608060405260043610610066575f3560e01c8063ab98c5f811610041578063ab98c5f814610172578063bc197c8114610191578063f23a6e61146101d8575f5ffd5b806301ffc9a714610071578063150b7a02146100a5578063521372551461011a575f5ffd5b3661006d57005b5f5ffd5b34801561007c575f5ffd5b5061009061008b366004610430565b61021d565b60405190151581526020015b60405180910390f35b3480156100b0575f5ffd5b506100e96100bf3660046104dc565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161009c565b348015610125575f5ffd5b5061014d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009c565b34801561017d575f5ffd5b5061009061018c366004610546565b610303565b34801561019c575f5ffd5b506100e96101ab3660046105dd565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156101e3575f5ffd5b506100e96101f236600461069c565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f807f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841614806102b057507f150b7a02000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b806102fc57507f4e2312e0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161480159061034a5750303314155b15610381576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8573ffffffffffffffffffffffffffffffffffffffff168386866040516103aa92919061070f565b5f6040518083038185875af1925050503d805f81146103e4576040519150601f19603f3d011682016040523d82523d5f602084013e6103e9565b606091505b5050905080610424576040517f93cfa3ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600195945050505050565b5f60208284031215610440575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102fc575f5ffd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610492575f5ffd5b919050565b5f5f83601f8401126104a7575f5ffd5b50813567ffffffffffffffff8111156104be575f5ffd5b6020830191508360208285010111156104d5575f5ffd5b9250929050565b5f5f5f5f5f608086880312156104f0575f5ffd5b6104f98661046f565b94506105076020870161046f565b935060408601359250606086013567ffffffffffffffff811115610529575f5ffd5b61053588828901610497565b969995985093965092949392505050565b5f5f5f5f60608587031215610559575f5ffd5b6105628561046f565b9350602085013567ffffffffffffffff81111561057d575f5ffd5b61058987828801610497565b9598909750949560400135949350505050565b5f5f83601f8401126105ac575f5ffd5b50813567ffffffffffffffff8111156105c3575f5ffd5b6020830191508360208260051b85010111156104d5575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156105f4575f5ffd5b6105fd8961046f565b975061060b60208a0161046f565b9650604089013567ffffffffffffffff811115610626575f5ffd5b6106328b828c0161059c565b909750955050606089013567ffffffffffffffff811115610651575f5ffd5b61065d8b828c0161059c565b909550935050608089013567ffffffffffffffff81111561067c575f5ffd5b6106888b828c01610497565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a087890312156106b1575f5ffd5b6106ba8761046f565b95506106c86020880161046f565b94506040870135935060608701359250608087013567ffffffffffffffff8111156106f1575f5ffd5b6106fd89828a01610497565b979a9699509497509295939492505050565b818382375f910190815291905056fea26469706673582212203204c41825658673596b8b587e5b29c245b41c8c2df6176db778b9b90aeef2d264736f6c634300081e00330000000000000000000000005132dce9ad675b2ac5e37d69d2bc7399764b5469

Deployed Bytecode

0x608060405260043610610066575f3560e01c8063ab98c5f811610041578063ab98c5f814610172578063bc197c8114610191578063f23a6e61146101d8575f5ffd5b806301ffc9a714610071578063150b7a02146100a5578063521372551461011a575f5ffd5b3661006d57005b5f5ffd5b34801561007c575f5ffd5b5061009061008b366004610430565b61021d565b60405190151581526020015b60405180910390f35b3480156100b0575f5ffd5b506100e96100bf3660046104dc565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161009c565b348015610125575f5ffd5b5061014d7f0000000000000000000000005132dce9ad675b2ac5e37d69d2bc7399764b546981565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161009c565b34801561017d575f5ffd5b5061009061018c366004610546565b610303565b34801561019c575f5ffd5b506100e96101ab3660046105dd565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156101e3575f5ffd5b506100e96101f236600461069c565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b5f807f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000841614806102b057507f150b7a02000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b806102fc57507f4e2312e0000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416145b9392505050565b5f3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000005132dce9ad675b2ac5e37d69d2bc7399764b5469161480159061034a5750303314155b15610381576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8573ffffffffffffffffffffffffffffffffffffffff168386866040516103aa92919061070f565b5f6040518083038185875af1925050503d805f81146103e4576040519150601f19603f3d011682016040523d82523d5f602084013e6103e9565b606091505b5050905080610424576040517f93cfa3ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600195945050505050565b5f60208284031215610440575f5ffd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146102fc575f5ffd5b803573ffffffffffffffffffffffffffffffffffffffff81168114610492575f5ffd5b919050565b5f5f83601f8401126104a7575f5ffd5b50813567ffffffffffffffff8111156104be575f5ffd5b6020830191508360208285010111156104d5575f5ffd5b9250929050565b5f5f5f5f5f608086880312156104f0575f5ffd5b6104f98661046f565b94506105076020870161046f565b935060408601359250606086013567ffffffffffffffff811115610529575f5ffd5b61053588828901610497565b969995985093965092949392505050565b5f5f5f5f60608587031215610559575f5ffd5b6105628561046f565b9350602085013567ffffffffffffffff81111561057d575f5ffd5b61058987828801610497565b9598909750949560400135949350505050565b5f5f83601f8401126105ac575f5ffd5b50813567ffffffffffffffff8111156105c3575f5ffd5b6020830191508360208260051b85010111156104d5575f5ffd5b5f5f5f5f5f5f5f5f60a0898b0312156105f4575f5ffd5b6105fd8961046f565b975061060b60208a0161046f565b9650604089013567ffffffffffffffff811115610626575f5ffd5b6106328b828c0161059c565b909750955050606089013567ffffffffffffffff811115610651575f5ffd5b61065d8b828c0161059c565b909550935050608089013567ffffffffffffffff81111561067c575f5ffd5b6106888b828c01610497565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a087890312156106b1575f5ffd5b6106ba8761046f565b95506106c86020880161046f565b94506040870135935060608701359250608087013567ffffffffffffffff8111156106f1575f5ffd5b6106fd89828a01610497565b979a9699509497509295939492505050565b818382375f910190815291905056fea26469706673582212203204c41825658673596b8b587e5b29c245b41c8c2df6176db778b9b90aeef2d264736f6c634300081e0033

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

0000000000000000000000005132dce9ad675b2ac5e37d69d2bc7399764b5469

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

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000005132dce9ad675b2ac5e37d69d2bc7399764b5469


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