Overview
ETH Balance
ETH Value
$0.00Latest 25 from a total of 15,121 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Create Proxy Wit... | 427757267 | 17 mins ago | IN | 0 ETH | 0.00000554 | ||||
| Create Proxy Wit... | 427753643 | 32 mins ago | IN | 0 ETH | 0.0000056 | ||||
| Create Proxy Wit... | 427749544 | 49 mins ago | IN | 0 ETH | 0.00000556 | ||||
| Create Proxy Wit... | 427744956 | 1 hr ago | IN | 0 ETH | 0.0000056 | ||||
| Create Proxy Wit... | 427739889 | 1 hr ago | IN | 0 ETH | 0.00000558 | ||||
| Create Proxy Wit... | 427735550 | 1 hr ago | IN | 0 ETH | 0.00000569 | ||||
| Create Proxy Wit... | 427731212 | 2 hrs ago | IN | 0 ETH | 0.00000569 | ||||
| Create Proxy Wit... | 427727834 | 2 hrs ago | IN | 0 ETH | 0.00000591 | ||||
| Create Proxy Wit... | 427723005 | 2 hrs ago | IN | 0 ETH | 0.00000613 | ||||
| Create Proxy Wit... | 427719301 | 2 hrs ago | IN | 0 ETH | 0.00000694 | ||||
| Create Proxy Wit... | 427712278 | 3 hrs ago | IN | 0 ETH | 0.00000783 | ||||
| Create Proxy Wit... | 427707954 | 3 hrs ago | IN | 0 ETH | 0.00000553 | ||||
| Create Proxy Wit... | 427704581 | 3 hrs ago | IN | 0 ETH | 0.00000551 | ||||
| Create Proxy Wit... | 427697104 | 4 hrs ago | IN | 0 ETH | 0.00000549 | ||||
| Create Proxy Wit... | 427691319 | 4 hrs ago | IN | 0 ETH | 0.0000055 | ||||
| Create Proxy Wit... | 427685532 | 5 hrs ago | IN | 0 ETH | 0.00000552 | ||||
| Create Proxy Wit... | 427676365 | 5 hrs ago | IN | 0 ETH | 0.0000057 | ||||
| Create Proxy Wit... | 427669139 | 6 hrs ago | IN | 0 ETH | 0.00000557 | ||||
| Create Proxy Wit... | 427665027 | 6 hrs ago | IN | 0 ETH | 0.00000555 | ||||
| Create Proxy Wit... | 427661414 | 6 hrs ago | IN | 0 ETH | 0.00000567 | ||||
| Create Proxy Wit... | 427656317 | 7 hrs ago | IN | 0 ETH | 0.00000582 | ||||
| Create Proxy Wit... | 427652187 | 7 hrs ago | IN | 0 ETH | 0.0000066 | ||||
| Create Proxy Wit... | 427648342 | 7 hrs ago | IN | 0 ETH | 0.00000549 | ||||
| Create Proxy Wit... | 427644252 | 8 hrs ago | IN | 0 ETH | 0.00000548 | ||||
| Create Proxy Wit... | 427637972 | 8 hrs ago | IN | 0 ETH | 0.00000548 |
Latest 25 internal transactions (View All)
Cross-Chain Transactions
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: LGPL-3.0-only pragma solidity >=0.7.0 <0.9.0; import "./GnosisSafeProxy.sol"; import "./IProxyCreationCallback.sol"; /// @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); mapping(address => address) public userToProxy; /// @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 calldata initializer, uint256 saltNonce) public returns (GnosisSafeProxy proxy) { require(saltNonce == 0, "Only nonce 0 allowed"); proxy = deployProxyWithNonce(_singleton, initializer, saltNonce); if (initializer.length > 0) { bytes memory memInitializer = initializer; // solhint-disable-next-line no-inline-assembly assembly { if eq(call(gas(), proxy, 0, add(memInitializer, 0x20), mload(memInitializer), 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 calldata initializer, uint256 saltNonce) internal returns (GnosisSafeProxy proxy) { address[] memory owners = decodeSetupData(initializer); require(owners.length == 1 && owners[0] != address(0), "Invalid proxy owner"); address userAddress = owners[0]; require(userToProxy[userAddress] == address(0), "User Proxy already existed"); // 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"); userToProxy[userAddress] = address(proxy); } function decodeSetupData(bytes calldata initializer) internal pure returns (address[] memory owners) { bytes calldata parameters = initializer[4:]; (owners,,,,,,,) = abi.decode(parameters, (address[], uint256, address, bytes, address, address, uint256, address)); } /// @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) public view returns (address safe) { bytes memory bytecode = abi.encodePacked(proxyCreationCode(), abi.encode(_singleton)); bytes32 bytecodeHash = keccak256(bytecode); bytes32 salt = keccak256(abi.encodePacked(keccak256(initializer), saltNonce)); bytes32 rawAddress = keccak256(abi.encodePacked(bytes1(0xff), address(this), salt, bytecodeHash)); safe = address(uint160(uint256(rawAddress))); } }
// 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()) } } }
// SPDX-License-Identifier: LGPL-3.0-only
pragma solidity >=0.7.0 <0.9.0;
import "./GnosisSafeProxy.sol";
interface IProxyCreationCallback {
function proxyCreated(
GnosisSafeProxy proxy,
address _singleton,
bytes calldata initializer,
uint256 saltNonce
) external;
}{
"evmVersion": "london",
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [
":@/=src/",
":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
":ds-test/=lib/solmate/lib/ds-test/src/",
":forge-std/=lib/forge-std/src/",
":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/",
":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
":solmate/=lib/solmate/src/"
],
"viaIR": true,
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address"},{"indexed":false,"internalType":"address","name":"singleton","type":"address"}],"name":"ProxyCreation","type":"event"},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"name":"calculateCreateProxyWithNonceAddress","outputs":[{"internalType":"address","name":"safe","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_singleton","type":"address"},{"internalType":"bytes","name":"initializer","type":"bytes"},{"internalType":"uint256","name":"saltNonce","type":"uint256"}],"name":"createProxyWithNonce","outputs":[{"internalType":"contract GnosisSafeProxy","name":"proxy","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"proxyCreationCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"proxyRuntimeCode","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"userToProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60808060405234601557610a7f908161001b8239f35b600080fdfe6080604052600436101561001257600080fd5b6000803560e01c9081631688f0b91461006a575080632500510e1461006557806353e5d93514610060578063addacc0f1461005b5763c47ab4401461005657600080fd5b6103d2565b610394565b61036c565b6101c1565b346101195761007836610167565b80949291939461011c5761008e908483876105ee565b92806100f5575b604080516001600160a01b038681168252871660208201526100f19186917f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359190a16040516001600160a01b0390911681529081906020820190565b0390f35b61010383928392369161045e565b60208151910182865af115610119578080610095565b80fd5b62461bcd60e51b6080526020608452601460a4527313db9b1e481b9bdb98d9480c08185b1b1bddd95960621b60c45260646080fd5b6001600160a01b0381160361016257565b600080fd5b60606003198201126101625760043561017f81610151565b9160243567ffffffffffffffff928382116101625780602383011215610162578160040135938411610162576024848301011161016257602401919060443590565b34610162576100f16103036102f76102636102dc6102e861021e6102936102876101ea36610167565b949261024c6102586101fe9b94939b6104bc565b604080516001600160a01b039095166020860152939990938a9190820190565b0398610232601f199a8b8101835282610427565b6040519283916102466020840180976104a5565b906104a5565b03898101835282610427565b51902098369161045e565b60208151910120926040519283916020830195869091604092825260208201520190565b03848101835282610427565b5190206040516001600160f81b0319602082019081523060601b6bffffffffffffffffffffffff1916602183015260358201929092526055810195909552939283906075820190565b03908101835282610427565b5190206001600160a01b031690565b6001600160a01b031690565b6040516001600160a01b0390911681529081906020820190565b60005b8381106103305750506000910152565b8181015183820152602001610320565b60409160208252610360815180928160208601526020868601910161031d565b601f01601f1916010190565b34610162576000366003190112610162576100f16103886104bc565b60405191829182610340565b34610162576000366003190112610162576100f16079604051906103bb6020820183610427565b8082526109d1602083013960405191829182610340565b346101625760203660031901126101625760206004356103f181610151565b60018060a01b038091166000526000825260406000205416604051908152f35b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761044957604052565b610411565b9061045c6040519283610427565b565b92919267ffffffffffffffff82116104495760405191610488601f8201601f191660200184610427565b829481845281830111610162578281602093846000960137010152565b906104b86020928281519485920161031d565b0190565b6040516101596104cf6020820183610427565b808252610878602083013990565b8051156104ea5760200190565b634e487b7160e01b600052603260045260246000fd5b1561050757565b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b210383937bc3c9037bbb732b960691b6044820152606490fd5b1561054957565b60405162461bcd60e51b815260206004820152601a60248201527f557365722050726f787920616c726561647920657869737465640000000000006044820152606490fd5b60209291906105a484928281519485920161031d565b019081520190565b156105b357565b60405162461bcd60e51b815260206004820152601360248201527210dc99585d194c8818d85b1b0819985a5b1959606a1b6044820152606490fd5b61071a9061045c9392959461062f610622610609868a610784565b600181511480610739575b61061d90610500565b6104dd565b516001600160a01b031690565b936106ea6106a661068160018060a01b039a8b9461067a866106736106668d60018060a01b03166000526000602052604060002090565b546001600160a01b031690565b1615610542565b369161045e565b9384516020809601209060405192839187830193849091604092825260208201520190565b03916106ba601f1993848101835282610427565b519020946102dc6101596106cf87820161044e565b9080825261087888830139604051958693169087840161058e565b805191016000f5948516916107008315156105ac565b6001600160a01b0316600090815260208190526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b5061061d6001600160a01b03610751610622846104dd565b1615159050610614565b359061045c82610151565b9080601f83011215610162578160206107819335910161045e565b90565b908060041161016257810161010082820360031901126101625767ffffffffffffffff906004830135828111610162578301928160238501121561016257600484013593838511610449578460051b90602091604051966107e86020830189610427565b8752602460208801918301019185831161016257602401905b82821061085e57505050506108186044820161075b565b5060648101359283116101625761083960e492600461085a95840101610766565b506108466084820161075b565b5061085360a4820161075b565b500161075b565b5090565b838091833561086c81610151565b81520191019061080156fe60803460c457601f61015938819003918201601f19168301916001600160401b0383118484101760c95780849260209460405283398101031260c457516001600160a01b0381169081900360c4578015607457600080546001600160a01b031916919091179055604051607990816100e08239f35b60405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600080546001600160a01b031690803563530ca43760e11b14603c57808092368280378136915af43d82803e156038573d90f35b3d90fd5b6020918152f3fea2646970667358221220902beb9972d68571de446cdf31d3951fdc48ef87b6c5df7043b968a797add3ce64736f6c634300081900336080604052600080546001600160a01b031690803563530ca43760e11b14603c57808092368280378136915af43d82803e156038573d90f35b3d90fd5b6020918152f3fea2646970667358221220902beb9972d68571de446cdf31d3951fdc48ef87b6c5df7043b968a797add3ce64736f6c63430008190033a264697066735822122061522e5811a445f2271940db73e788c5a215353ab7acdf0983fe43aecdea827264736f6c63430008190033
Deployed Bytecode
0x6080604052600436101561001257600080fd5b6000803560e01c9081631688f0b91461006a575080632500510e1461006557806353e5d93514610060578063addacc0f1461005b5763c47ab4401461005657600080fd5b6103d2565b610394565b61036c565b6101c1565b346101195761007836610167565b80949291939461011c5761008e908483876105ee565b92806100f5575b604080516001600160a01b038681168252871660208201526100f19186917f4f51faf6c4561ff95f067657e43439f0f856d97c04d9ec9070a6199ad418e2359190a16040516001600160a01b0390911681529081906020820190565b0390f35b61010383928392369161045e565b60208151910182865af115610119578080610095565b80fd5b62461bcd60e51b6080526020608452601460a4527313db9b1e481b9bdb98d9480c08185b1b1bddd95960621b60c45260646080fd5b6001600160a01b0381160361016257565b600080fd5b60606003198201126101625760043561017f81610151565b9160243567ffffffffffffffff928382116101625780602383011215610162578160040135938411610162576024848301011161016257602401919060443590565b34610162576100f16103036102f76102636102dc6102e861021e6102936102876101ea36610167565b949261024c6102586101fe9b94939b6104bc565b604080516001600160a01b039095166020860152939990938a9190820190565b0398610232601f199a8b8101835282610427565b6040519283916102466020840180976104a5565b906104a5565b03898101835282610427565b51902098369161045e565b60208151910120926040519283916020830195869091604092825260208201520190565b03848101835282610427565b5190206040516001600160f81b0319602082019081523060601b6bffffffffffffffffffffffff1916602183015260358201929092526055810195909552939283906075820190565b03908101835282610427565b5190206001600160a01b031690565b6001600160a01b031690565b6040516001600160a01b0390911681529081906020820190565b60005b8381106103305750506000910152565b8181015183820152602001610320565b60409160208252610360815180928160208601526020868601910161031d565b601f01601f1916010190565b34610162576000366003190112610162576100f16103886104bc565b60405191829182610340565b34610162576000366003190112610162576100f16079604051906103bb6020820183610427565b8082526109d1602083013960405191829182610340565b346101625760203660031901126101625760206004356103f181610151565b60018060a01b038091166000526000825260406000205416604051908152f35b634e487b7160e01b600052604160045260246000fd5b90601f8019910116810190811067ffffffffffffffff82111761044957604052565b610411565b9061045c6040519283610427565b565b92919267ffffffffffffffff82116104495760405191610488601f8201601f191660200184610427565b829481845281830111610162578281602093846000960137010152565b906104b86020928281519485920161031d565b0190565b6040516101596104cf6020820183610427565b808252610878602083013990565b8051156104ea5760200190565b634e487b7160e01b600052603260045260246000fd5b1561050757565b60405162461bcd60e51b815260206004820152601360248201527224b73b30b634b210383937bc3c9037bbb732b960691b6044820152606490fd5b1561054957565b60405162461bcd60e51b815260206004820152601a60248201527f557365722050726f787920616c726561647920657869737465640000000000006044820152606490fd5b60209291906105a484928281519485920161031d565b019081520190565b156105b357565b60405162461bcd60e51b815260206004820152601360248201527210dc99585d194c8818d85b1b0819985a5b1959606a1b6044820152606490fd5b61071a9061045c9392959461062f610622610609868a610784565b600181511480610739575b61061d90610500565b6104dd565b516001600160a01b031690565b936106ea6106a661068160018060a01b039a8b9461067a866106736106668d60018060a01b03166000526000602052604060002090565b546001600160a01b031690565b1615610542565b369161045e565b9384516020809601209060405192839187830193849091604092825260208201520190565b03916106ba601f1993848101835282610427565b519020946102dc6101596106cf87820161044e565b9080825261087888830139604051958693169087840161058e565b805191016000f5948516916107008315156105ac565b6001600160a01b0316600090815260208190526040902090565b80546001600160a01b0319166001600160a01b03909216919091179055565b5061061d6001600160a01b03610751610622846104dd565b1615159050610614565b359061045c82610151565b9080601f83011215610162578160206107819335910161045e565b90565b908060041161016257810161010082820360031901126101625767ffffffffffffffff906004830135828111610162578301928160238501121561016257600484013593838511610449578460051b90602091604051966107e86020830189610427565b8752602460208801918301019185831161016257602401905b82821061085e57505050506108186044820161075b565b5060648101359283116101625761083960e492600461085a95840101610766565b506108466084820161075b565b5061085360a4820161075b565b500161075b565b5090565b838091833561086c81610151565b81520191019061080156fe60803460c457601f61015938819003918201601f19168301916001600160401b0383118484101760c95780849260209460405283398101031260c457516001600160a01b0381169081900360c4578015607457600080546001600160a01b031916919091179055604051607990816100e08239f35b60405162461bcd60e51b815260206004820152602260248201527f496e76616c69642073696e676c65746f6e20616464726573732070726f766964604482015261195960f21b6064820152608490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600080546001600160a01b031690803563530ca43760e11b14603c57808092368280378136915af43d82803e156038573d90f35b3d90fd5b6020918152f3fea2646970667358221220902beb9972d68571de446cdf31d3951fdc48ef87b6c5df7043b968a797add3ce64736f6c634300081900336080604052600080546001600160a01b031690803563530ca43760e11b14603c57808092368280378136915af43d82803e156038573d90f35b3d90fd5b6020918152f3fea2646970667358221220902beb9972d68571de446cdf31d3951fdc48ef87b6c5df7043b968a797add3ce64736f6c63430008190033a264697066735822122061522e5811a445f2271940db73e788c5a215353ab7acdf0983fe43aecdea827264736f6c63430008190033
Net Worth in USD
Net Worth in ETH
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.