ETH Price: $2,972.48 (-1.19%)
Gas: 3 Gwei

Contract

0x22fF1Dc5998258Faa1Ea45a776B57484f8Ab80A2
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Set Safe Singlet...202319612024-07-04 8:29:233 days ago1720081763IN
0x22fF1Dc5...4f8Ab80A2
0 ETH0.000396797.52677796
Transfer Ownersh...188325912023-12-21 6:54:35199 days ago1703141675IN
0x22fF1Dc5...4f8Ab80A2
0 ETH0.0009121831.96835025
Set Safe Singlet...185108452023-11-06 5:24:35244 days ago1699248275IN
0x22fF1Dc5...4f8Ab80A2
0 ETH0.001158637.60987641
Set Safe Singlet...185108442023-11-06 5:24:23244 days ago1699248263IN
0x22fF1Dc5...4f8Ab80A2
0 ETH0.002107539.97691587
Set Safe Singlet...184690012023-10-31 8:44:35250 days ago1698741875IN
0x22fF1Dc5...4f8Ab80A2
0 ETH0.0009602418.21470387
Set Safe Singlet...183761222023-10-18 8:42:35263 days ago1697618555IN
0x22fF1Dc5...4f8Ab80A2
0 ETH0.000246967.52529905

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
202517632024-07-07 2:50:5910 hrs ago1720320659
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202476522024-07-06 13:05:5924 hrs ago1720271159
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202469452024-07-06 10:43:3527 hrs ago1720262615
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202424782024-07-05 19:44:5942 hrs ago1720208699
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202418302024-07-05 17:34:4744 hrs ago1720200887
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202377982024-07-05 4:04:232 days ago1720152263
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202314522024-07-04 6:46:593 days ago1720075619
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202308492024-07-04 4:45:593 days ago1720068359
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202293152024-07-03 23:37:473 days ago1720049867
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202264922024-07-03 14:10:593 days ago1720015859
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202231132024-07-03 2:50:594 days ago1719975059
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202198972024-07-02 16:03:234 days ago1719936203
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202097872024-07-01 6:09:476 days ago1719814187
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202088002024-07-01 2:51:356 days ago1719802295
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
202054442024-06-30 15:37:476 days ago1719761867
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201943282024-06-29 2:21:598 days ago1719627719
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201877132024-06-28 4:11:479 days ago1719547907
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201873282024-06-28 2:54:239 days ago1719543263
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201866762024-06-28 0:42:599 days ago1719535379
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201860142024-06-27 22:29:359 days ago1719527375
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201814562024-06-27 7:12:5910 days ago1719472379
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201809892024-06-27 5:39:2310 days ago1719466763
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201744302024-06-26 7:40:3511 days ago1719387635
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201742392024-06-26 7:01:5911 days ago1719385319
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
201730442024-06-26 3:02:1111 days ago1719370931
0x22fF1Dc5...4f8Ab80A2
 Contract Creation0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AccountFactoryProxy

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 2 : AccountFactoryProxy.sol
// 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())
        }
    }
}

File 2 of 2 : AccountFactoryStorage.sol
// 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
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"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"}]

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


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.