Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Set Safe Singlet... | 20231961 | 3 days ago | IN | 0 ETH | 0.00039679 | ||||
Transfer Ownersh... | 18832591 | 199 days ago | IN | 0 ETH | 0.00091218 | ||||
Set Safe Singlet... | 18510845 | 244 days ago | IN | 0 ETH | 0.0011586 | ||||
Set Safe Singlet... | 18510844 | 244 days ago | IN | 0 ETH | 0.0021075 | ||||
Set Safe Singlet... | 18469001 | 250 days ago | IN | 0 ETH | 0.00096024 | ||||
Set Safe Singlet... | 18376122 | 263 days ago | IN | 0 ETH | 0.00024696 |
Latest 25 internal transactions (View All)
Advanced mode:
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:
AccountFactoryProxy
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.12; import {AccountFactoryStorageBase} from "./AccountFactoryStorage.sol"; contract AccountFactoryProxy is AccountFactoryStorageBase { event ImplementationSet(address indexed oldImpl, address indexed newImpl); constructor(address impl, address _owner, address walletTemplate) { implementation = impl; owner = _owner; (bool success, bytes memory returnData) = implementation.delegatecall( abi.encodeWithSignature("initialize(address)", walletTemplate )); require(success, string(returnData)); } function setImplementation(address impl) external onlyOwner { require(impl != address(0), "implementation is address 0"); address oldImpl = implementation; implementation = impl; emit ImplementationSet(oldImpl, impl); } receive() external payable { revert("do not transfer to me"); } /// @dev Fallback function forwards all transactions and returns all received return data. fallback() external payable { // solhint-disable-next-line no-inline-assembly assembly { let _singleton := and( sload(0), 0xffffffffffffffffffffffffffffffffffffffff ) calldatacopy(0, 0, calldatasize()) let success := delegatecall( gas(), _singleton, 0, calldatasize(), 0, 0 ) returndatacopy(0, 0, returndatasize()) if eq(success, 0) { revert(0, returndatasize()) } return(0, returndatasize()) } } }
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity ^0.8.12; contract AccountFactoryStorageBase { address public implementation; // keep it the 1st slot address public owner; // keep it the 2nd slot uint8 public initialized; // for initialize method. event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); modifier onlyOwner() { require(msg.sender == owner, "OnlyOwner allowed"); _; } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); address oldOwner = owner; owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract AccountFactoryStorage is AccountFactoryStorageBase { // SmartAccount template => bool, save the mapping(address => bool) public safeSingleton; // wallet address => bool, save accounts created by this Factory. // mapping(address => bool) public walletWhiteList; // NOTICE: add new storage variables below }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"impl","type":"address"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"walletTemplate","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldImpl","type":"address"},{"indexed":true,"internalType":"address","name":"newImpl","type":"address"}],"name":"ImplementationSet","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":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"initialized","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"impl","type":"address"}],"name":"setImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b506040516105f13803806105f183398101604081905261002f91610137565b600080546001600160a01b03199081166001600160a01b03868116918217845560018054909316868216179092556040519184166024830152829160440160408051601f198184030181529181526020820180516001600160e01b031663189acdbd60e31b179052516100a2919061019e565b600060405180830381855af49150503d80600081146100dd576040519150601f19603f3d011682016040523d82523d6000602084013e6100e2565b606091505b50915091508181906101105760405162461bcd60e51b815260040161010791906101ba565b60405180910390fd5b5050505050506101ed565b80516001600160a01b038116811461013257600080fd5b919050565b60008060006060848603121561014c57600080fd5b6101558461011b565b92506101636020850161011b565b91506101716040850161011b565b90509250925092565b60005b8381101561019557818101518382015260200161017d565b50506000910152565b600082516101b081846020870161017a565b9190910192915050565b60208152600082518060208401526101d981604085016020870161017a565b601f01601f19169190910160400192915050565b6103f5806101fc6000396000f3fe60806040526004361061004e5760003560e01c8063158ef93e146100c45780635c60da1b146100fc5780638da5cb5b14610134578063d784d42614610154578063f2fde38b1461017657610098565b366100985760405162461bcd60e51b8152602060048201526015602482015274646f206e6f74207472616e7366657220746f206d6560581b60448201526064015b60405180910390fd5b600080546001600160a01b03163682803781823684845af490503d82833e806100bf573d82fd5b503d81f35b3480156100d057600080fd5b506001546100e590600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561010857600080fd5b5060005461011c906001600160a01b031681565b6040516001600160a01b0390911681526020016100f3565b34801561014057600080fd5b5060015461011c906001600160a01b031681565b34801561016057600080fd5b5061017461016f36600461038f565b610196565b005b34801561018257600080fd5b5061017461019136600461038f565b61028a565b6001546001600160a01b031633146101e45760405162461bcd60e51b815260206004820152601160248201527013db9b1e53dddb995c88185b1b1bddd959607a1b604482015260640161008f565b6001600160a01b03811661023a5760405162461bcd60e51b815260206004820152601b60248201527f696d706c656d656e746174696f6e206973206164647265737320300000000000604482015260640161008f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f1acacd74b878778c66cc2abd6987699d6602bfb4b7f244c64c6ed0d61054bb5e9190a35050565b6001546001600160a01b031633146102d85760405162461bcd60e51b815260206004820152601160248201527013db9b1e53dddb995c88185b1b1bddd959607a1b604482015260640161008f565b6001600160a01b03811661033d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161008f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156103a157600080fd5b81356001600160a01b03811681146103b857600080fd5b939250505056fea264697066735822122053b05864e00c18edbdd9580888ab07f7c26bea4a7492d24720ad7df80d62d79b64736f6c6343000811003300000000000000000000000001bbfe892ddb1e1ded5e6ad98a8b267fa43682bd000000000000000000000000e24bfa481cee75e4fd64e14915e6d104f8696159000000000000000000000000ac78f1101883a68babcfbaccccaadc7d55e657ba
Deployed Bytecode
0x60806040526004361061004e5760003560e01c8063158ef93e146100c45780635c60da1b146100fc5780638da5cb5b14610134578063d784d42614610154578063f2fde38b1461017657610098565b366100985760405162461bcd60e51b8152602060048201526015602482015274646f206e6f74207472616e7366657220746f206d6560581b60448201526064015b60405180910390fd5b600080546001600160a01b03163682803781823684845af490503d82833e806100bf573d82fd5b503d81f35b3480156100d057600080fd5b506001546100e590600160a01b900460ff1681565b60405160ff90911681526020015b60405180910390f35b34801561010857600080fd5b5060005461011c906001600160a01b031681565b6040516001600160a01b0390911681526020016100f3565b34801561014057600080fd5b5060015461011c906001600160a01b031681565b34801561016057600080fd5b5061017461016f36600461038f565b610196565b005b34801561018257600080fd5b5061017461019136600461038f565b61028a565b6001546001600160a01b031633146101e45760405162461bcd60e51b815260206004820152601160248201527013db9b1e53dddb995c88185b1b1bddd959607a1b604482015260640161008f565b6001600160a01b03811661023a5760405162461bcd60e51b815260206004820152601b60248201527f696d706c656d656e746174696f6e206973206164647265737320300000000000604482015260640161008f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f1acacd74b878778c66cc2abd6987699d6602bfb4b7f244c64c6ed0d61054bb5e9190a35050565b6001546001600160a01b031633146102d85760405162461bcd60e51b815260206004820152601160248201527013db9b1e53dddb995c88185b1b1bddd959607a1b604482015260640161008f565b6001600160a01b03811661033d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161008f565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000602082840312156103a157600080fd5b81356001600160a01b03811681146103b857600080fd5b939250505056fea264697066735822122053b05864e00c18edbdd9580888ab07f7c26bea4a7492d24720ad7df80d62d79b64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000001bbfe892ddb1e1ded5e6ad98a8b267fa43682bd000000000000000000000000e24bfa481cee75e4fd64e14915e6d104f8696159000000000000000000000000ac78f1101883a68babcfbaccccaadc7d55e657ba
-----Decoded View---------------
Arg [0] : impl (address): 0x01bBFe892ddB1e1dED5E6Ad98a8B267fA43682BD
Arg [1] : _owner (address): 0xe24bfA481CEe75E4Fd64E14915e6D104f8696159
Arg [2] : walletTemplate (address): 0xAc78F1101883a68bABCfBacCCCaADc7D55e657bA
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 00000000000000000000000001bbfe892ddb1e1ded5e6ad98a8b267fa43682bd
Arg [1] : 000000000000000000000000e24bfa481cee75e4fd64e14915e6d104f8696159
Arg [2] : 000000000000000000000000ac78f1101883a68babcfbaccccaadc7d55e657ba
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.