Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Latest 7 from a total of 7 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
Amount
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 1418181 | 24 days ago | IN | 0 ETH | 0.00003813 | ||||
| Transfer | 1231998 | 52 days ago | IN | 0 ETH | 0.0000517 | ||||
| Transfer | 1231283 | 52 days ago | IN | 0 ETH | 0.00023951 | ||||
| Transfer | 1230931 | 52 days ago | IN | 0 ETH | 0.00007163 | ||||
| Transfer | 1226133 | 53 days ago | IN | 0 ETH | 0.00005338 | ||||
| Transfer | 1218169 | 54 days ago | IN | 0 ETH | 0.00004382 | ||||
| Transfer | 1216875 | 54 days ago | IN | 0 ETH | 0.00003544 |
Loading...
Loading
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);
}{
"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"}]Contract Creation Code
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
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.