Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
Singlesig
Compiler Version
v0.8.21+commit.d9974bed
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: CC0-1.0 pragma solidity ^0.8.4; /// @title 1-of-1 smart contract wallet with rotatable ownership for counterfactually receiving tokens at the same address across many EVM chains contract Singlesig { address public owner; address public pendingOwner; event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /// @dev Initializes the contract setting the address provided by the deployer as the initial owner /// @dev Distinct constructor args will lead to distinct CREATE2 initialization bytecode, so no collision risk here constructor(address initialOwner) { owner = initialOwner; emit OwnershipTransferred(address(0), initialOwner); } /// @dev Throws if called by any account other than the owner modifier onlyOwner() { require(owner == msg.sender, "Ownable2Step: caller is not the owner"); _; } /// @notice Executes a call with provided parameters /// @dev This method doesn't perform any sanity check of the transaction /// @param to Destination address /// @param value Native token value in wei /// @param data Data payload /// @return success Boolean flag indicating if the call succeeded function execute(address to, uint256 value, bytes memory data) public onlyOwner returns (bool success) { (success,) = to.call{value: value}(data); } /// @dev Offers to transfer ownership permissions to a new account function transferOwnership(address newOwner) external onlyOwner { pendingOwner = newOwner; emit OwnershipTransferStarted(owner, newOwner); } /// @dev The new owner accepts the ownership transfer function acceptOwnership() external { require(pendingOwner == msg.sender, "Ownable2Step: caller is not the new owner"); emit OwnershipTransferred(owner, pendingOwner); owner = pendingOwner; } /// @dev Function to receive native tokens when `msg.data` is empty receive() external payable {} /// @dev Fallback function is called when `msg.data` is not empty fallback() external payable {} function supportsInterface(bytes4 interfaceId) external pure returns (bool) { return interfaceId == 0x01ffc9a7 // ERC165 Interface ID for ERC165 || interfaceId == 0x150b7a02 // ERC165 Interface ID for ERC721TokenReceiver || interfaceId == 0x4e2312e0; // ERC165 Interface ID for ERC1155TokenReceiver } function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { return 0x150b7a02; //bytes4(keccak256("onERC721Received(address,uint256,bytes)")); } function onERC1155Received(address, address, uint256, uint256, bytes calldata) external pure returns (bytes4) { return 0xf23a6e61; // bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)")); } function onERC1155BatchReceived(address, address, uint256[] calldata, uint256[] calldata, bytes calldata) external pure returns (bytes4) { return 0xbc197c81; // bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)")) } }
{ "viaIR": false, "codegen": "yul", "remappings": [ "ds-test/=lib/forge-std/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "murky/=lib/murky/src/", "openzeppelin/=lib/openzeppelin-contracts/contracts/", "era-contracts/=lib/era-contracts/" ], "evmVersion": "paris", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "enableEraVMExtensions": false, "forceEVMLA": false }
[{"inputs":[{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"execute","outputs":[{"internalType":"bool","name":"success","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":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
3cda3351000000000000000000000000000000000000000091430a7ea982667861000090010000afc9aaa5d31fb2f17055d8c2359758d31fcfaf75c697cf0e96ebe6c59a000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000200000000000000000000000006ed7d526b020780f694f3c10dfb25e1b134d3215
Deployed Bytecode
0x0002000000000002000100000000000200000000030200190001000000010355000000600210027000000082022001970000000100300190000000370000c13d0000008003000039000000400030043f000000040020008c000000ce0000413d000000000301043b000000e0033002700000008a0030009c0000006f0000a13d0000008b0030009c0000008a0000a13d0000008c0030009c000000d00000613d0000008d0030009c0000012b0000613d0000008e0030009c000000ce0000c13d000000240020008c000001650000413d0000000002000416000000000002004b000001650000c13d0000000401100370000000000601043b000000850060009c000001650000213d000000000100041a00000085051001970000000001000411000000000015004b000001520000c13d0000000101000039000000000201041a0000008602200197000000000262019f000000000021041b0000000001000414000000820010009c0000008201008041000000c00110021000000087011001c70000800d0200003900000003030000390000009a04000041020201fd0000040f0000000100200190000001650000613d000000ce0000013d0000000003000416000000000003004b000001650000c13d0000001f0320003900000083033001970000008003300039000000400030043f0000001f0420018f00000084052001980000008003500039000000480000613d0000008006000039000000000701034f000000007807043c0000000006860436000000000036004b000000440000c13d000000000004004b000000550000613d000000000151034f0000000304400210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000000200020008c000001650000413d000000800600043d000000850060009c000001650000213d000000000100041a0000008601100197000000000161019f000000000010041b0000000001000414000000820010009c0000008201008041000000c00110021000000087011001c70000800d02000039000000030300003900000088040000410000000005000019020201fd0000040f0000000100200190000001650000613d0000002001000039000001000010044300000120000004430000008901000041000002030001042e000000910030009c000000c50000213d000000940030009c000000d90000613d000000950030009c000000ce0000c13d000000840020008c000001650000413d0000000003000416000000000003004b000001650000c13d0000000403100370000000000303043b000000850030009c000001650000213d0000002403100370000000000303043b000000850030009c000001650000213d0000006401100370000000000101043b0000009b0010009c000001650000213d0000000401100039020201e40000040f000000a8010000410000013f0000013d0000008f0030009c000000ec0000613d000000900030009c000000ce0000c13d000000a40020008c000001650000413d0000000003000416000000000003004b000001650000c13d0000000403100370000000000303043b000000850030009c000001650000213d0000002403100370000000000303043b000000850030009c000001650000213d0000004403100370000000000303043b0000009b0030009c000001650000213d0000002304300039000000000024004b000001650000813d0000000404300039000000000441034f000000000404043b0000009b0040009c000001650000213d000000050440021000000000034300190000002403300039000000000023004b000001650000213d0000006403100370000000000303043b0000009b0030009c000001650000213d0000002304300039000000000024004b000001650000813d0000000404300039000000000441034f000000000404043b0000009b0040009c000001650000213d000000050440021000000000034300190000002403300039000000000023004b000001650000213d0000008401100370000000000101043b0000009b0010009c000001650000213d0000000401100039020201e40000040f0000009f010000410000013f0000013d000000920030009c0000010d0000613d000000930030009c000000ce0000c13d0000000001000416000000000001004b000001650000c13d000000000100041a000000d50000013d0000000001000019000002030001042e0000000001000416000000000001004b000001650000c13d0000000101000039000000000101041a0000008501100197000000800010043f0000009e01000041000002030001042e000000240020008c000001650000413d0000000002000416000000000002004b000001650000c13d0000000401100370000000000201043b000000a900200198000001650000c13d0000000101000039000000aa0020009c000000e90000613d000000a80020009c000000e90000613d000000ab0020009c000000000100c019000000800010043f0000009e01000041000002030001042e000000640020008c000001650000413d0000000003000416000000000003004b000001650000c13d0000000403100370000000000403043b000000850040009c000001650000213d0000004403100370000000000503043b0000009b0050009c000001650000213d0000002303500039000000000023004b000001650000813d0000000406500039000000000361034f000000000303043b000000a00030009c000001070000813d0000001f07300039000000ac077001970000003f07700039000000ac07700197000000a10070009c0000015e0000a13d000000a501000041000000000010043f0000004101000039000000040010043f000000a60100004100000204000104300000000001000416000000000001004b000001650000c13d0000000101000039000000000101041a00000085011001970000000006000411000000000061004b000001460000c13d000000000200041a0000000001000414000000820010009c0000008201008041000000c00110021000000087011001c7000100000002001d00000085052001970000800d0200003900000003030000390000008804000041020201fd0000040f0000000100200190000001650000613d000000010100002900000086011001970000000002000411000000000121019f000000000010041b0000000001000019000002030001042e000000a40020008c000001650000413d0000000003000416000000000003004b000001650000c13d0000000403100370000000000303043b000000850030009c000001650000213d0000002403100370000000000303043b000000850030009c000001650000213d0000008401100370000000000101043b0000009b0010009c000001650000213d0000000401100039020201e40000040f0000009c01000041000000400200043d0000000000120435000000820020009c000000820200804100000040012002100000009d011001c7000002030001042e0000009601000041000000800010043f0000002001000039000000840010043f0000002901000039000000a40010043f0000009701000041000000c40010043f000000a701000041000000e40010043f000000990100004100000204000104300000009601000041000000800010043f0000002001000039000000840010043f0000002501000039000000a40010043f0000009701000041000000c40010043f0000009801000041000000e40010043f000000990100004100000204000104300000008007700039000000400070043f000000800030043f00000000053500190000002405500039000000000025004b000001670000a13d000000000100001900000204000104300000002005600039000000000651034f000000ac073001980000001f0830018f000000a005700039000001730000613d000000a009000039000000000a06034f00000000ab0a043c0000000009b90436000000000059004b0000016f0000c13d000000000008004b000001800000613d000000000676034f0000000307800210000000000805043300000000087801cf000000000878022f000000000606043b0000010007700089000000000676022f00000000067601cf000000000686019f0000000000650435000000a0033000390000000000030435000000000300041a00000085033001970000000005000411000000000053004b000001910000c13d000000800600043d0000002403100370000000000303043b0000000005000414000000040040008c000001a50000c13d000000000121034f00000001020000390000000003000031000001b80000013d000000400100043d00000064021000390000009803000041000000000032043500000044021000390000009703000041000000000032043500000024021000390000002503000039000000000032043500000096020000410000000000210435000000040210003900000020030000390000000000320435000000820010009c00000082010080410000004001100210000000a2011001c70000020400010430000000820060009c00000082060080410000006001600210000000820050009c0000008205008041000000c002500210000000000112019f000000000003004b000001b10000c13d000000a4011001c70000000002040019000001b40000013d000000a3011001c700008009020000390000000005000019020201fd0000040f0000006003100270000000820030019d0000008203300197000000000003004b000001bc0000c13d000000010120018f0000013f0000013d0000009b0030009c000001070000213d0000001f04300039000000ac044001970000003f04400039000000ac05400197000000400400043d0000000005540019000000000045004b000000000600003900000001060040390000009b0050009c000001070000213d0000000100600190000001070000c13d000000400050043f0000000006340436000000ac043001980000001f0530018f0000000003460019000001d60000613d000000000701034f000000007807043c0000000006860436000000000036004b000001d20000c13d000000000005004b000001ba0000613d000000000141034f0000000304500210000000000503043300000000054501cf000000000545022f000000000101043b0000010004400089000000000141022f00000000014101cf000000000151019f0000000000130435000001ba0000013d0000001f03100039000000000023004b0000000004000019000000ad04004041000000ad05200197000000ad03300197000000000653013f000000000053004b0000000003000019000000ad03002041000000ad0060009c000000000304c019000000000003004b000001fb0000613d0000000103100367000000000303043b0000009b0030009c000001fb0000213d00000000013100190000002001100039000000000021004b000001fb0000213d000000000001042d0000000001000019000002040001043000000200002104210000000102000039000000000001042d0000000002000019000000000001042d0000020200000432000002030001042e000002040001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff00000000000000000000000000000000000000000000000000000001ffffffe000000000000000000000000000000000000000000000000000000000ffffffe0000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000008be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000b61d27f500000000000000000000000000000000000000000000000000000000e30c397700000000000000000000000000000000000000000000000000000000e30c397800000000000000000000000000000000000000000000000000000000f23a6e6100000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000b61d27f600000000000000000000000000000000000000000000000000000000bc197c810000000000000000000000000000000000000000000000000000000079ba50960000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000008da5cb5b0000000000000000000000000000000000000000000000000000000001ffc9a700000000000000000000000000000000000000000000000000000000150b7a0208c379a0000000000000000000000000000000000000000000000000000000004f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206f776e6572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008400000080000000000000000038d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e22700000000000000000000000000000000000000000000000000fffffffffffffffff23a6e610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000800000000000000000bc197c81000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f00000000000000000000000000000000000000840000000000000000000000000200000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000a000000000000000004e487b710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000240000000000000000000000006e6577206f776e65720000000000000000000000000000000000000000000000150b7a020000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000004e2312e000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080000000000000000000000000000000000000000000000000000000000000008fb6876d5bdcb1965650abedf6271efd00c8b4199d63c62fc03489b62ff5b017
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.