/* solhint-disable */
// Sources flattened with hardhat v2.12.4 https://hardhat.org
/**
* @notice This is a flattened contract file generated from Safe Smart Account repository v1.4.1
* @see https://github.com/safe-global/safe-smart-account/tree/v1.4.1
* @dev Generated using command:
* npx hardhat flatten contracts/proxies/SafeProxyFactory.sol > flattened/SafeProxyFactory_flattened.sol
*/
// File contracts/proxies/SafeProxy.sol
/// @custom:version 1.4.1
pragma solidity >=0.7.0 <0.9.0;
/**
* @title IProxy - Helper interface to access the singleton address of the Proxy on-chain.
* @author Richard Meissner - @rmeissner
*/
interface IProxy {
function masterCopy() external view returns (address);
}
/**
* @title SafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
* @author Stefan George - <stefan@gnosis.io>
* @author Richard Meissner - <richard@gnosis.io>
*/
contract SafeProxy {
// 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;
/**
* @notice 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())
}
}
}
// File contracts/proxies/IProxyCreationCallback.sol
pragma solidity >=0.7.0 <0.9.0;
/**
* @title IProxyCreationCallback
* @dev An interface for a contract that implements a callback function to be executed after the creation of a proxy instance.
*/
interface IProxyCreationCallback {
/**
* @dev Function to be called after the creation of a SafeProxy instance.
* @param proxy The newly created SafeProxy instance.
* @param _singleton The address of the singleton contract used to create the proxy.
* @param initializer The initializer function call data.
* @param saltNonce The nonce used to generate the salt for the proxy deployment.
*/
function proxyCreated(
SafeProxy proxy,
address _singleton,
bytes calldata initializer,
uint256 saltNonce
) external;
}
// File contracts/proxies/SafeProxyFactory.sol
pragma solidity >=0.7.0 <0.9.0;
/**
* @title Proxy Factory - Allows to create a new proxy contract and execute a message call to the new proxy within one transaction.
* @author Stefan George - @Georgi87
*/
contract SafeProxyFactory {
event ProxyCreation(SafeProxy indexed proxy, address singleton);
/// @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(SafeProxy).creationCode;
}
/**
* @notice Internal method to create a new proxy contract using CREATE2. Optionally executes an initializer call to a new proxy.
* @param _singleton Address of singleton contract. Must be deployed at the time of execution.
* @param initializer (Optional) Payload for a message call to be sent to a new proxy contract.
* @param salt Create2 salt to use for calculating the address of the new proxy contract.
* @return proxy Address of the new proxy contract.
*/
function deployProxy(
address _singleton,
bytes memory initializer,
bytes32 salt
) internal returns (SafeProxy proxy) {
require(isContract(_singleton), "Singleton contract not deployed");
bytes memory deploymentData = abi.encodePacked(
type(SafeProxy).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");
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)
}
}
}
}
/**
* @notice Deploys a new proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy.
* @param _singleton Address of singleton contract. Must be deployed at the time of execution.
* @param initializer Payload for a message call to be sent to a 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 (SafeProxy 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)
);
proxy = deployProxy(_singleton, initializer, salt);
emit ProxyCreation(proxy, _singleton);
}
/**
* @notice Deploys a new chain-specific proxy with `_singleton` singleton and `saltNonce` salt. Optionally executes an initializer call to a new proxy.
* @dev Allows to create a new proxy contract that should exist only on 1 network (e.g. specific governance or admin accounts)
* by including the chain id in the create2 salt. Such proxies cannot be created on other networks by replaying the transaction.
* @param _singleton Address of singleton contract. Must be deployed at the time of execution.
* @param initializer Payload for a message call to be sent to a new proxy contract.
* @param saltNonce Nonce that will be used to generate the salt to calculate the address of the new proxy contract.
*/
function createChainSpecificProxyWithNonce(
address _singleton,
bytes memory initializer,
uint256 saltNonce
) public returns (SafeProxy 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, getChainId())
);
proxy = deployProxy(_singleton, initializer, salt);
emit ProxyCreation(proxy, _singleton);
}
/**
* @notice Deploy a new proxy with `_singleton` singleton and `saltNonce` salt.
* Optionally executes an initializer call to a new proxy and calls a specified callback address `callback`.
* @param _singleton Address of singleton contract. Must be deployed at the time of execution.
* @param initializer Payload for a message call to be sent to a 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 invoked after the new proxy contract has been successfully deployed and initialized.
*/
function createProxyWithCallback(
address _singleton,
bytes memory initializer,
uint256 saltNonce,
IProxyCreationCallback callback
) public returns (SafeProxy 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);
}
/**
* @notice Returns true if `account` is a contract.
* @dev This function will return false if invoked during the constructor of a contract,
* as the code is not actually created until after the constructor finishes.
* @param account The address being queried
* @return True if `account` is a contract
*/
function isContract(address account) internal view returns (bool) {
uint256 size;
// solhint-disable-next-line no-inline-assembly
assembly {
size := extcodesize(account)
}
return size > 0;
}
/**
* @notice Returns the ID of the chain the contract is currently deployed on.
* @return The ID of the current chain as a uint256.
*/
function getChainId() public view returns (uint256) {
uint256 id;
// solhint-disable-next-line no-inline-assembly
assembly {
id := chainid()
}
return id;
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_singleton",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"type": "fallback",
"stateMutability": "payable"
}
]0x608060405273ffffffffffffffffffffffffffffffffffffffff5f54167fa619486e000000000000000000000000000000000000000000000000000000005f3503604b57805f5260205ff35b365f5f375f5f365f845af490503d5f5f3e806064573d5ffd5b503d5ff3fea264697066735822122067994ab7fc0d8624aa09594118e269f5886dd2f2dfcd24a41ffd645574fa49ff64736f6c634300081d0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 1 | $0.0000102 | $0 |
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xe5753a97…cf3b68 | Transfer | 18,524,703 | 24 days agoFri, 24 Jul 2026 22:56:12 UTC | 0xcaf7…5d11 | IN | 0xe494…a6b6 | $0.001 DIH |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x8f71c7…b3325a | 11 days agoThu, 06 Aug 2026 08:20:06 UTC | 0x442e71…556e | [0] 0xfc3f208cf7a0…30b1e3c6 data: 0x000000000000000000…00000000 |
| 0x936222…8bad47 | 11 days agoThu, 06 Aug 2026 08:19:43 UTC | 0x442e71…556e | [0] 0x0b4ffd33684c…58054832 data: 0x000000000000000000…00000000 |
| 0x7beec6…92213c | 17 days agoFri, 31 Jul 2026 09:53:00 UTC | 0x442e71…556e | [0] 0x7e16ffd9d248…ec99ba5f data: 0x000000000000000000…00000000 |
| 0xdf7003…787c2e | 19 days agoWed, 29 Jul 2026 07:36:39 UTC | 0x442e71…556e | [0] 0x62b88292259f…a3564863 data: 0x000000000000000000…00000000 |
| 0x134979…22eaf3 | 20 days agoTue, 28 Jul 2026 08:22:57 UTC | 0x442e71…556e | [0] 0xeaca60fc2e72…2a3fbc45 data: 0x000000000000000000…00000000 |
| 0x37a36d…5ccae8 | 20 days agoTue, 28 Jul 2026 08:22:02 UTC | 0x442e71…556e | [0] 0xfe8aa8c8340b…5744a09a data: 0x000000000000000000…00000000 |
| 0xc491c1…419ed2 | 20 days agoTue, 28 Jul 2026 08:21:22 UTC | 0x442e71…556e | [0] 0x1c3bb5184cb4…59457865 data: 0x000000000000000000…00000000 |
| 0xe387a6…4453a1 | 21 days agoMon, 27 Jul 2026 10:09:24 UTC | 0x442e71…556e | [0] 0x787bd43f571c…7c4eda5f data: 0x000000000000000000…00000000 |
| 0x638fd2…cf5b45 | 24 days agoFri, 24 Jul 2026 09:27:14 UTC | 0x442e71…556e | [0] 0x6c5eda8e5a3a…8c1d6f66 data: 0x000000000000000000…00000000 |
| 0x25a4e7…c3ffd2 | 26 days agoWed, 22 Jul 2026 11:07:56 UTC | 0x442e71…556e | [0] 0xc088e1872d1c…c0f9b53d data: 0x000000000000000000…00000000 |
| 0xd9c430…1a31c5 | 26 days agoWed, 22 Jul 2026 07:30:38 UTC | 0x442e71…556e | [0] 0x5fe0b605d9ef…f3a705f9 data: 0x000000000000000000…00000000 |
| 0x3417ac…cd916e | 26 days agoWed, 22 Jul 2026 07:29:50 UTC | 0x442e71…556e | [0] 0xf3f5144b3e92…16c0e879 data: 0x000000000000000000…00000000 |
| 0x989afa…551dbb | 26 days agoWed, 22 Jul 2026 07:29:33 UTC | 0x442e71…556e | [0] 0xefc2a6e05bb1…fb305d40 data: 0x000000000000000000…00000000 |
| 0xd2cd87…efdffe | 26 days agoWed, 22 Jul 2026 07:29:08 UTC | 0x442e71…556e | [0] 0x9c23d4a37ab7…0c9b62ae data: 0x000000000000000000…00000000 |
| 0xa3e82e…c4996d | 31 days agoFri, 17 Jul 2026 10:29:36 UTC | 0x442e71…556e | [0] 0xd9f86f5c3266…8b3e4d19 data: 0x000000000000000000…00000000 |
| 0x7bf681…6fb205 | 39 days agoThu, 09 Jul 2026 11:51:32 UTC | 0x442e71…556e | [0] 0xa646778f0b64…9b3195a9 data: 0x000000000000000000…00000000 |
| 0x730fc4…9397d9 | 46 days agoThu, 02 Jul 2026 10:22:43 UTC | 0x442e71…556e | [0] 0xcdb9ccdcae94…ae251ab0 data: 0x000000000000000000…00000000 |
| 0x7d2583…1df188 | 47 days agoWed, 01 Jul 2026 11:46:44 UTC | 0x442e71…556e | [0] 0x3c5227fec879…3bdd5feb data: 0x000000000000000000…00000000 |
| 0x7d2583…1df188 | 47 days agoWed, 01 Jul 2026 11:46:44 UTC | 0x9465fa…ea26 | [0] 0x000000000000…30e6095f |
| 0x7d2583…1df188 | 47 days agoWed, 01 Jul 2026 11:46:44 UTC | 0xf8d49f…9eaf | [0] 0x000000000000…5c14e269 |
| 0x900780…062a3b | 47 days agoWed, 01 Jul 2026 11:46:31 UTC | 0x442e71…556e | [0] 0xb821dc075a2b…9a0f82bf data: 0x000000000000000000…00000000 |
| 0x900780…062a3b | 47 days agoWed, 01 Jul 2026 11:46:31 UTC | 0x9465fa…ea26 | [0] 0x000000000000…ce8f1940 |
| 0x900780…062a3b | 47 days agoWed, 01 Jul 2026 11:46:31 UTC | 0xf8d49f…9eaf | [0] 0x000000000000…be2cbf4f |
| 0x401365…e36282 | 47 days agoWed, 01 Jul 2026 11:46:18 UTC | 0x442e71…556e | [0] 0x91906d999ca7…803a70a7 data: 0x000000000000000000…00000000 |
| 0x3b7422…307c69 | 47 days agoWed, 01 Jul 2026 11:46:05 UTC | 0x442e71…556e | [0] 0x1817342999c7…49a42664 data: 0x000000000000000000…00000000 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 242 | 98 days agoMon, 11 May 2026 01:59:23 UTC | 0x85d29d…edfd6c | CREATE2 | createProxyWithNonce | 0xd668…623d | IN | 0xe494…a6b6 | 0 ETH |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x8f71c7…b3325a | execTransaction | 29,200,039 | 11 days agoThu, 06 Aug 2026 08:20:06 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000298 | |
| 0x936222…8bad47 | execTransaction | 29,199,813 | 11 days agoThu, 06 Aug 2026 08:19:43 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000306 | |
| 0x7beec6…92213c | execTransaction | 24,084,247 | 17 days agoFri, 31 Jul 2026 09:53:00 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000219 | |
| 0xdf7003…787c2e | execTransaction | 22,279,202 | 19 days agoWed, 29 Jul 2026 07:36:39 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000276 | |
| 0x134979…22eaf3 | execTransaction | 21,445,291 | 20 days agoTue, 28 Jul 2026 08:22:57 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000334 | |
| 0x37a36d…5ccae8 | execTransaction | 21,444,752 | 20 days agoTue, 28 Jul 2026 08:22:02 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000350 | |
| 0xc491c1…419ed2 | execTransaction | 21,444,346 | 20 days agoTue, 28 Jul 2026 08:21:22 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000334 | |
| 0xe387a6…4453a1 | execTransaction | 20,648,924 | 21 days agoMon, 27 Jul 2026 10:09:24 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000400 | |
| 0x638fd2…cf5b45 | execTransaction | 18,040,529 | 24 days agoFri, 24 Jul 2026 09:27:14 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00001238 | |
| 0x25a4e7…c3ffd2 | execTransaction | 16,377,135 | 26 days agoWed, 22 Jul 2026 11:07:56 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000920 | |
| 0xd9c430…1a31c5 | execTransaction | 16,247,052 | 26 days agoWed, 22 Jul 2026 07:30:38 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000815 | |
| 0x3417ac…cd916e | execTransaction | 16,246,573 | 26 days agoWed, 22 Jul 2026 07:29:50 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000788 | |
| 0x989afa…551dbb | execTransaction | 16,246,406 | 26 days agoWed, 22 Jul 2026 07:29:33 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000812 | |
| 0xd2cd87…efdffe | execTransaction | 16,246,151 | 26 days agoWed, 22 Jul 2026 07:29:08 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000821 | |
| 0xa3e82e…c4996d | execTransaction | 12,048,319 | 31 days agoFri, 17 Jul 2026 10:29:36 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000835 | |
| 0x7bf681…6fb205 | execTransaction | 5,195,203 | 39 days agoThu, 09 Jul 2026 11:51:32 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000253 | |
| 0x730fc4…9397d9 | execTransaction | 1,184,065 | 46 days agoThu, 02 Jul 2026 10:22:43 UTC | 0xb05e…095f | IN | SafeProxy | $0.000 ETH | 0.00000224 | |
| 0x7d2583…1df188 | execTransaction | 711,636 | 47 days agoWed, 01 Jul 2026 11:46:44 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000196 | |
| 0x900780…062a3b | execTransaction | 711,618 | 47 days agoWed, 01 Jul 2026 11:46:31 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000197 | |
| 0x401365…e36282 | execTransaction | 711,586 | 47 days agoWed, 01 Jul 2026 11:46:18 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000234 | |
| 0x3b7422…307c69 | execTransaction | 711,570 | 47 days agoWed, 01 Jul 2026 11:46:05 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000230 | |
| 0x6493a6…d6a023 | execTransaction | 546,192 | 48 days agoTue, 30 Jun 2026 09:30:56 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000225 | |
| 0xbebf97…7942fa | execTransaction | 193,974 | 53 days agoThu, 25 Jun 2026 13:05:28 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000266 | |
| 0x027542…c4dd76 | execTransaction | 179,406 | 53 days agoThu, 25 Jun 2026 00:17:17 UTC | 0xb137…e269 | IN | SafeProxy | $0.000 ETH | 0.00000242 | |
| !0xcfbb84…b4e336 | execTransaction | 179,351 | 53 days agoThu, 25 Jun 2026 00:12:44 UTC | 0x492e…d4c4 | IN | SafeProxy | $0.000 ETH | 0.00000119 |