S Price: $0.067516 (+2.70%)
Gas: 55 Gwei

Contract

0x99a86cA809c4C55D8dAa4f4Eb3d710a110c2b434
Transaction Hash
Block
From
To
Exec Transaction429512022025-08-14 8:49:05165 days ago1755161345IN
0x99a86cA8...110c2b434
0 S0.006960355.01
Exec Transaction396847622025-07-22 13:01:02188 days ago1753189262IN
0x99a86cA8...110c2b434
0 S0.0091242551.5
Exec Transaction320565532025-06-05 15:20:37235 days ago1749136837IN
0x99a86cA8...110c2b434
0 S0.0053395455.01
Exec Transaction320563072025-06-05 15:19:07235 days ago1749136747IN
0x99a86cA8...110c2b434
0 S0.0053395455.01
Exec Transaction320556952025-06-05 15:15:40235 days ago1749136540IN
0x99a86cA8...110c2b434
0 S0.0941758656.65
Exec Transaction320553052025-06-05 15:13:33235 days ago1749136413IN
0x99a86cA8...110c2b434
0 S0.1410069155.01
Exec Transaction320551712025-06-05 15:12:49235 days ago1749136369IN
0x99a86cA8...110c2b434
0 S0.0042652555.01
Exec Transaction320549652025-06-05 15:11:30235 days ago1749136290IN
0x99a86cA8...110c2b434
0 S0.0035376355.01
Exec Transaction320549592025-06-05 15:11:28235 days ago1749136288IN
0x99a86cA8...110c2b434
0 S0.0048286451.5
Exec Transaction320517652025-06-05 14:51:42235 days ago1749135102IN
0x99a86cA8...110c2b434
0 S0.0069610255.01
Exec Transaction306943862025-05-30 16:01:42241 days ago1748620902IN
0x99a86cA8...110c2b434
0 S0.0042869255.01
Exec Transaction306861122025-05-30 15:13:59241 days ago1748618039IN
0x99a86cA8...110c2b434
0 S0.0040672755.01
Exec Transaction282670852025-05-20 15:06:54251 days ago1747753614IN
0x99a86cA8...110c2b434
0 S0.0038198551.5
Exec Transaction282658742025-05-20 15:00:09251 days ago1747753209IN
0x99a86cA8...110c2b434
0 S0.0038198551.5
Exec Transaction270355162025-05-15 17:41:18256 days ago1747330878IN
0x99a86cA8...110c2b434
0 S0.0045075755.01
Exec Transaction264764222025-05-13 11:08:07258 days ago1747134487IN
0x99a86cA8...110c2b434
0 S0.0062028651.5
Exec Transaction262615812025-05-12 14:04:48259 days ago1747058688IN
0x99a86cA8...110c2b434
0 S0.0038204751.5
Exec Transaction259878972025-05-11 11:42:13260 days ago1746963733IN
0x99a86cA8...110c2b434
0 S0.0038198551.5
Exec Transaction250864892025-05-07 20:32:21264 days ago1746649941IN
0x99a86cA8...110c2b434
0 S0.0045069155.01
Exec Transaction250854582025-05-07 20:26:29264 days ago1746649589IN
0x99a86cA8...110c2b434
0 S0.0054968155.01
Exec Transaction248000022025-05-06 16:35:00265 days ago1746549300IN
0x99a86cA8...110c2b434
0 S0.0038192451.5
Exec Transaction247938452025-05-06 16:01:19265 days ago1746547279IN
0x99a86cA8...110c2b434
0 S0.0038204751.5
Exec Transaction226849462025-04-27 16:07:12274 days ago1745770032IN
0x99a86cA8...110c2b434
0 S0.0040672755.01
Exec Transaction226847112025-04-27 16:05:38274 days ago1745769938IN
0x99a86cA8...110c2b434
0 S0.0040666155.01
Exec Transaction213388792025-04-21 8:24:15280 days ago1745223855IN
0x99a86cA8...110c2b434
0 S0.0038204751.5
View all transactions

Latest 23 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
429517732025-08-14 8:53:39165 days ago1755161619
0x99a86cA8...110c2b434
5,928.16803744 S
396847622025-07-22 13:01:02188 days ago1753189262
0x99a86cA8...110c2b434
561.97085405 S
320556952025-06-05 15:15:40235 days ago1749136540
0x99a86cA8...110c2b434
25,000 S
320517682025-06-05 14:51:42235 days ago1749135102
0x99a86cA8...110c2b434
7,096.53729285 S
306943862025-05-30 16:01:42241 days ago1748620902
0x99a86cA8...110c2b434
300 S
306861122025-05-30 15:13:59241 days ago1748618039
0x99a86cA8...110c2b434
300 S
282670852025-05-20 15:06:54251 days ago1747753614
0x99a86cA8...110c2b434
300 S
282658742025-05-20 15:00:09251 days ago1747753209
0x99a86cA8...110c2b434
300 S
264764252025-05-13 11:08:08258 days ago1747134488
0x99a86cA8...110c2b434
19,883.77204769 S
262615812025-05-12 14:04:48259 days ago1747058688
0x99a86cA8...110c2b434
400 S
259878972025-05-11 11:42:13260 days ago1746963733
0x99a86cA8...110c2b434
500 S
248000022025-05-06 16:35:00265 days ago1746549300
0x99a86cA8...110c2b434
400 S
247938452025-05-06 16:01:19265 days ago1746547279
0x99a86cA8...110c2b434
400 S
226849462025-04-27 16:07:12274 days ago1745770032
0x99a86cA8...110c2b434
400 S
226847112025-04-27 16:05:38274 days ago1745769938
0x99a86cA8...110c2b434
400 S
213388792025-04-21 8:24:15280 days ago1745223855
0x99a86cA8...110c2b434
400 S
212965822025-04-21 3:08:00280 days ago1745204880
0x99a86cA8...110c2b434
400 S
207680702025-04-17 17:12:09284 days ago1744909929
0x99a86cA8...110c2b434
30,000 S
207677732025-04-17 17:09:51284 days ago1744909791
0x99a86cA8...110c2b434
23,858.47023533 S
174496612025-04-01 11:25:13300 days ago1743506713
0x99a86cA8...110c2b434
13,322.53466331 S
137092812025-03-14 16:59:12318 days ago1741971552
0x99a86cA8...110c2b434
0x99a86cA8...110c2b434
0.01 S
120762512025-03-06 15:36:06326 days ago1741275366
0x99a86cA8...110c2b434
0.5 S
120338652025-03-06 10:59:19326 days ago1741258759  Contract Creation0 S
Cross-Chain Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x2C14c3Cb...B98B7445b
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
GnosisSafeProxy

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2024-12-31
*/

/**
 *Submitted for verification at Etherscan.io on 2021-07-09
*/

// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity >=0.7.0 <0.9.0;

/// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain
/// @author Richard Meissner - <[email protected]>
interface IProxy {
    function masterCopy() external view returns (address);
}

/// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
/// @author Stefan George - <[email protected]>
/// @author Richard Meissner - <[email protected]>
contract GnosisSafeProxy {
    // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.
    // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`
    address internal singleton;

    /// @dev Constructor function sets address of singleton contract.
    /// @param _singleton Singleton address.
    constructor(address _singleton) {
        require(_singleton != address(0), "Invalid singleton address provided");
        singleton = _singleton;
    }

    /// @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)
            // 0xa619486e == keccak("masterCopy()"). The value is right padded to 32-bytes with 0s
            if eq(calldataload(0), 0xa619486e00000000000000000000000000000000000000000000000000000000) {
                mstore(0, _singleton)
                return(0, 0x20)
            }
            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())
        }
    }
}

/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.
/// @author Stefan George - <[email protected]>
contract GnosisSafeProxyFactory {
    event ProxyCreation(GnosisSafeProxy proxy, address singleton);

    /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.
    /// @param singleton Address of singleton contract.
    /// @param data Payload for message call sent to new proxy contract.
    function createProxy(address singleton, bytes memory data) public returns (GnosisSafeProxy proxy) {
        proxy = new GnosisSafeProxy(singleton);
        if (data.length > 0)
            // solhint-disable-next-line no-inline-assembly
            assembly {
                if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) {
                    revert(0, 0)
                }
            }
        emit ProxyCreation(proxy, singleton);
    }

    /// @dev Allows to retrieve the runtime code of a deployed Proxy. This can be used to check that the expected Proxy was deployed.
    function proxyRuntimeCode() public pure returns (bytes memory) {
        return type(GnosisSafeProxy).runtimeCode;
    }

    /// @dev Allows to retrieve the creation code used for the Proxy deployment. With this it is easily possible to calculate predicted address.
    function proxyCreationCode() public pure returns (bytes memory) {
        return type(GnosisSafeProxy).creationCode;
    }

    /// @dev Allows to create new proxy contact using CREATE2 but it doesn't run the initializer.
    ///      This method is only meant as an utility to be called from other methods
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    function deployProxyWithNonce(
        address _singleton,
        bytes memory initializer,
        uint256 saltNonce
    ) internal returns (GnosisSafeProxy proxy) {
        // If the initializer changes the proxy address should change too. Hashing the initializer data is cheaper than just concatinating it
        bytes32 salt = keccak256(abi.encodePacked(keccak256(initializer), saltNonce));
        bytes memory deploymentData = abi.encodePacked(type(GnosisSafeProxy).creationCode, uint256(uint160(_singleton)));
        // solhint-disable-next-line no-inline-assembly
        assembly {
            proxy := create2(0x0, add(0x20, deploymentData), mload(deploymentData), salt)
        }
        require(address(proxy) != address(0), "Create2 call failed");
    }

    /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    function createProxyWithNonce(
        address _singleton,
        bytes memory initializer,
        uint256 saltNonce
    ) public returns (GnosisSafeProxy proxy) {
        proxy = deployProxyWithNonce(_singleton, initializer, saltNonce);
        if (initializer.length > 0)
            // solhint-disable-next-line no-inline-assembly
            assembly {
                if eq(call(gas(), proxy, 0, add(initializer, 0x20), mload(initializer), 0, 0), 0) {
                    revert(0, 0)
                }
            }
        emit ProxyCreation(proxy, _singleton);
    }

    /// @dev Allows to create new proxy contact, execute a message call to the new proxy and call a specified callback within one transaction
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    /// @param callback Callback that will be invoced after the new proxy contract has been successfully deployed and initialized.
    function createProxyWithCallback(
        address _singleton,
        bytes memory initializer,
        uint256 saltNonce,
        IProxyCreationCallback callback
    ) public returns (GnosisSafeProxy proxy) {
        uint256 saltNonceWithCallback = uint256(keccak256(abi.encodePacked(saltNonce, callback)));
        proxy = createProxyWithNonce(_singleton, initializer, saltNonceWithCallback);
        if (address(callback) != address(0)) callback.proxyCreated(proxy, _singleton, initializer, saltNonce);
    }

    /// @dev Allows to get the address for a new proxy contact created via `createProxyWithNonce`
    ///      This method is only meant for address calculation purpose when you use an initializer that would revert,
    ///      therefore the response is returned with a revert. When calling this method set `from` to the address of the proxy factory.
    /// @param _singleton Address of singleton contract.
    /// @param initializer Payload for message call sent to new proxy contract.
    /// @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
    function calculateCreateProxyWithNonceAddress(
        address _singleton,
        bytes calldata initializer,
        uint256 saltNonce
    ) external returns (GnosisSafeProxy proxy) {
        proxy = deployProxyWithNonce(_singleton, initializer, saltNonce);
        revert(string(abi.encodePacked(proxy)));
    }
}

interface IProxyCreationCallback {
    function proxyCreated(
        GnosisSafeProxy proxy,
        address _singleton,
        bytes calldata initializer,
        uint256 saltNonce
    ) external;
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_singleton","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"}]

0x608060405234801561001057600080fd5b506040516101e63803806101e68339818101604052602081101561003357600080fd5b8101908080519060200190929190505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806101c46022913960400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060ab806101196000396000f3fe608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea264697066735822122003d1488ee65e08fa41e58e888a9865554c535f2c77126a82cb4c0f917f31441364736f6c63430007060033496e76616c69642073696e676c65746f6e20616464726573732070726f766964656400000000000000000000000041675c099f32341bf84bfc5382af534df5c7461a

Deployed Bytecode

0x608060405273ffffffffffffffffffffffffffffffffffffffff600054167fa619486e0000000000000000000000000000000000000000000000000000000060003514156050578060005260206000f35b3660008037600080366000845af43d6000803e60008114156070573d6000fd5b3d6000f3fea264697066735822122003d1488ee65e08fa41e58e888a9865554c535f2c77126a82cb4c0f917f31441364736f6c63430007060033

Deployed Bytecode Sourcemap

595:1528:0:-:0;;;1447:42;1443:1;1437:8;1433:57;1627:66;1623:1;1610:15;1607:87;1604:2;;;1724:10;1721:1;1714:21;1763:4;1760:1;1753:15;1604:2;1816:14;1813:1;1810;1797:34;1914:1;1911;1895:14;1892:1;1880:10;1873:5;1860:56;1951:16;1948:1;1945;1930:38;1997:1;1988:7;1985:14;1982:2;;;2029:16;2026:1;2019:27;1982:2;2085:16;2082:1;2075:27

Swarm Source

ipfs://03d1488ee65e08fa41e58e888a9865554c535f2c77126a82cb4c0f917f314413

Block Transaction Gas Used Reward
view all blocks ##produced##

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