// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (proxy/transparent/TransparentUpgradeableProxy.sol)
pragma solidity ^0.8.0;
import "../ERC1967/ERC1967Proxy.sol";
/**
* @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}
* does not implement this interface directly, and some of its functions are implemented by an internal dispatch
* mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not
* include them in the ABI so this interface must be used to interact with it.
*/
interface ITransparentUpgradeableProxy is IERC1967 {
function admin() external view returns (address);
function implementation() external view returns (address);
function changeAdmin(address) external;
function upgradeTo(address) external;
function upgradeToAndCall(address, bytes memory) external payable;
}
/**
* @dev This contract implements a proxy that is upgradeable by an admin.
*
* To avoid https://medium.com/nomic-labs-blog/malicious-backdoors-in-ethereum-proxies-62629adf3357[proxy selector
* clashing], which can potentially be used in an attack, this contract uses the
* https://blog.openzeppelin.com/the-transparent-proxy-pattern/[transparent proxy pattern]. This pattern implies two
* things that go hand in hand:
*
* 1. If any account other than the admin calls the proxy, the call will be forwarded to the implementation, even if
* that call matches one of the admin functions exposed by the proxy itself.
* 2. If the admin calls the proxy, it can access the admin functions, but its calls will never be forwarded to the
* implementation. If the admin tries to call a function on the implementation it will fail with an error that says
* "admin cannot fallback to proxy target".
*
* These properties mean that the admin account can only be used for admin actions like upgrading the proxy or changing
* the admin, so it's best if it's a dedicated account that is not used for anything else. This will avoid headaches due
* to sudden errors when trying to call a function from the proxy implementation.
*
* Our recommendation is for the dedicated account to be an instance of the {ProxyAdmin} contract. If set up this way,
* you should think of the `ProxyAdmin` instance as the real administrative interface of your proxy.
*
* NOTE: The real interface of this proxy is that defined in `ITransparentUpgradeableProxy`. This contract does not
* inherit from that interface, and instead the admin functions are implicitly implemented using a custom dispatch
* mechanism in `_fallback`. Consequently, the compiler will not produce an ABI for this contract. This is necessary to
* fully implement transparency without decoding reverts caused by selector clashes between the proxy and the
* implementation.
*
* WARNING: It is not recommended to extend this contract to add additional external functions. If you do so, the compiler
* will not check that there are no selector conflicts, due to the note above. A selector clash between any new function
* and the functions declared in {ITransparentUpgradeableProxy} will be resolved in favor of the new one. This could
* render the admin operations inaccessible, which could prevent upgradeability. Transparency may also be compromised.
*/
contract TransparentUpgradeableProxy is ERC1967Proxy {
/**
* @dev Initializes an upgradeable proxy managed by `_admin`, backed by the implementation at `_logic`, and
* optionally initialized with `_data` as explained in {ERC1967Proxy-constructor}.
*/
constructor(address _logic, address admin_, bytes memory _data) payable ERC1967Proxy(_logic, _data) {
_changeAdmin(admin_);
}
/**
* @dev Modifier used internally that will delegate the call to the implementation unless the sender is the admin.
*
* CAUTION: This modifier is deprecated, as it could cause issues if the modified function has arguments, and the
* implementation provides a function with the same selector.
*/
modifier ifAdmin() {
if (msg.sender == _getAdmin()) {
_;
} else {
_fallback();
}
}
/**
* @dev If caller is the admin process the call internally, otherwise transparently fallback to the proxy behavior
*/
function _fallback() internal virtual override {
if (msg.sender == _getAdmin()) {
bytes memory ret;
bytes4 selector = msg.sig;
if (selector == ITransparentUpgradeableProxy.upgradeTo.selector) {
ret = _dispatchUpgradeTo();
} else if (selector == ITransparentUpgradeableProxy.upgradeToAndCall.selector) {
ret = _dispatchUpgradeToAndCall();
} else if (selector == ITransparentUpgradeableProxy.changeAdmin.selector) {
ret = _dispatchChangeAdmin();
} else if (selector == ITransparentUpgradeableProxy.admin.selector) {
ret = _dispatchAdmin();
} else if (selector == ITransparentUpgradeableProxy.implementation.selector) {
ret = _dispatchImplementation();
} else {
revert("TransparentUpgradeableProxy: admin cannot fallback to proxy target");
}
assembly {
return(add(ret, 0x20), mload(ret))
}
} else {
super._fallback();
}
}
/**
* @dev Returns the current admin.
*
* TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
* https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
* `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`
*/
function _dispatchAdmin() private returns (bytes memory) {
_requireZeroValue();
address admin = _getAdmin();
return abi.encode(admin);
}
/**
* @dev Returns the current implementation.
*
* TIP: To get this value clients can read directly from the storage slot shown below (specified by EIP1967) using the
* https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.
* `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`
*/
function _dispatchImplementation() private returns (bytes memory) {
_requireZeroValue();
address implementation = _implementation();
return abi.encode(implementation);
}
/**
* @dev Changes the admin of the proxy.
*
* Emits an {AdminChanged} event.
*/
function _dispatchChangeAdmin() private returns (bytes memory) {
_requireZeroValue();
address newAdmin = abi.decode(msg.data[4:], (address));
_changeAdmin(newAdmin);
return "";
}
/**
* @dev Upgrade the implementation of the proxy.
*/
function _dispatchUpgradeTo() private returns (bytes memory) {
_requireZeroValue();
address newImplementation = abi.decode(msg.data[4:], (address));
_upgradeToAndCall(newImplementation, bytes(""), false);
return "";
}
/**
* @dev Upgrade the implementation of the proxy, and then call a function from the new implementation as specified
* by `data`, which should be an encoded function call. This is useful to initialize new storage variables in the
* proxied contract.
*/
function _dispatchUpgradeToAndCall() private returns (bytes memory) {
(address newImplementation, bytes memory data) = abi.decode(msg.data[4:], (address, bytes));
_upgradeToAndCall(newImplementation, data, true);
return "";
}
/**
* @dev Returns the current admin.
*
* CAUTION: This function is deprecated. Use {ERC1967Upgrade-_getAdmin} instead.
*/
function _admin() internal view virtual returns (address) {
return _getAdmin();
}
/**
* @dev To keep this contract fully transparent, all `ifAdmin` functions must be payable. This helper is here to
* emulate some proxy functions being non-payable while still allowing value to pass through.
*/
function _requireZeroValue() private {
require(msg.value == 0);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "_logic",
"type": "address",
"internalType": "address"
},
{
"name": "admin_",
"type": "address",
"internalType": "address"
},
{
"name": "_data",
"type": "bytes",
"internalType": "bytes"
}
],
"stateMutability": "payable"
},
{
"name": "AdminChanged",
"type": "event",
"inputs": [
{
"name": "previousAdmin",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "newAdmin",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "BeaconUpgraded",
"type": "event",
"inputs": [
{
"name": "beacon",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "Upgraded",
"type": "event",
"inputs": [
{
"name": "implementation",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"type": "fallback",
"stateMutability": "payable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x6080604052610fb280380380610014816102c7565b92833981016060828203126102c35761002c82610300565b61003860208401610300565b604084015190936001600160401b0382116102c357019082601f830112156102c35781519161006e61006984610314565b6102c7565b928084526020840194602082840101116102c35784602061008f930161032f565b803b15610268577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0383169081179091557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2815115801590610261575b6101dd575b50505f80516020610f9283398151915254604080516001600160a01b03808416825290941660208501819052939192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f91a18115610189576001600160a01b031916175f80516020610f9283398151915255604051610b8e90816104048239f35b60405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b5f80610250946101ed60606102c7565b94602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c6020870152660819985a5b195960ca1b60408701525190845af43d15610259573d9161024161006984610314565b9283523d5f602085013e610350565b505f8080610107565b606091610350565b505f610102565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102ec57604052565b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b03821682036102c357565b6001600160401b0381116102ec57601f01601f191660200190565b5f5b8381106103405750505f910152565b8181015183820152602001610331565b919290156103b25750815115610364575090565b3b1561036d5790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b8251909150156103c55750805190602001fd5b6044604051809262461bcd60e51b8252602060048301526103f5815180928160248601526020868601910161032f565b601f01601f19168101030190fdfe6080604052366102385761006361004a73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103541690565b73ffffffffffffffffffffffffffffffffffffffff1690565b3303610233575f357fffffffff00000000000000000000000000000000000000000000000000000000167f3659cfe60000000000000000000000000000000000000000000000000000000081036100c557506100bd610737565b602081519101f35b7f4f1ef2860000000000000000000000000000000000000000000000000000000081036100fa57506100f561067c565b6100bd565b7f8f28397000000000000000000000000000000000000000000000000000000000810361012a57506100f561050f565b7ff851a44000000000000000000000000000000000000000000000000000000000810361015a57506100f56103f5565b7f5c60da1b0000000000000000000000000000000000000000000000000000000003610188576100f561039a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b6102d3565b61027961004a73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103541690565b33036102d3575f357fffffffff00000000000000000000000000000000000000000000000000000000167f3659cfe60000000000000000000000000000000000000000000000000000000081036100c557506100bd610737565b5f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e15610323573d5ff35b3d5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761039557604052565b610327565b6103a26108d7565b73ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416604051906020820152602081526103f2604082610354565b90565b6103fd6108d7565b73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416604051906020820152602081526103f2604082610354565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361047057565b5f80fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60209101126104705760043573ffffffffffffffffffffffffffffffffffffffff811681036104705790565b67ffffffffffffffff811161039557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6040519061050a602083610354565b5f8252565b6105176108d7565b366004116104705773ffffffffffffffffffffffffffffffffffffffff61053d36610474565b167fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805173ffffffffffffffffffffffffffffffffffffffff84168152846020820152a181156105f8577fffffffffffffffffffffffff000000000000000000000000000000000000000016177fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556103f26104fb565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b366004116104705760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610470576106b661044d565b6024359067ffffffffffffffff82116104705736602383011215610470578160040135916106e3836104c1565b916106f16040519384610354565b8383523660248584010111610470575f60208561072f96602473ffffffffffffffffffffffffffffffffffffffff96018388013785010152166108de565b6103f26104fb565b61073f6108d7565b366004116104705773ffffffffffffffffffffffffffffffffffffffff61076536610474565b1660405190610775602083610354565b5f8252803b1561085357807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061084c575b610832575b505060405161082c602082610354565b5f815290565b6108449161083e6109b2565b91610a13565b505f8061081c565b505f610817565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152fd5b3461047057565b803b156108535773ffffffffffffffffffffffffffffffffffffffff8116807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906109aa575b61099b575050565b6109a79161083e6109b2565b50565b506001610993565b604051906109c1606083610354565b602782527f206661696c6564000000000000000000000000000000000000000000000000006040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b5f806103f29493602081519101845af43d15610a50573d91610a34836104c1565b92610a426040519485610354565b83523d5f602085013e610abd565b606091610abd565b15610a5f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b91929015610add5750815115610ad1575090565b6103f2903b1515610a58565b825190915015610af05750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152818151918260248301525f5b838110610b695750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835f604480968601015201168101030190fd5b60208282018101516044878401015285935001610b2a56fea164736f6c634300081a000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61030000000000000000000000005992554d006b7ea2e20f457788da6d357b343f29000000000000000000000000e2297a88fc06f12c832e7948d539343f0fd3ea780000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000010488301911000000000000000000000000cf85d47c00adf9bd94347c01ed7f47c57e03cbef000000000000000000000000446296e64b9cad45ead715befd37e7c41e408c38000000000000000000000000446296e64b9cad45ead715befd37e7c41e408c38000000000000000000000000cf85d47c00adf9bd94347c01ed7f47c57e03cbef000000000000000000000000446296e64b9cad45ead715befd37e7c41e408c380000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad730000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000
0x6080604052366102385761006361004a73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103541690565b73ffffffffffffffffffffffffffffffffffffffff1690565b3303610233575f357fffffffff00000000000000000000000000000000000000000000000000000000167f3659cfe60000000000000000000000000000000000000000000000000000000081036100c557506100bd610737565b602081519101f35b7f4f1ef2860000000000000000000000000000000000000000000000000000000081036100fa57506100f561067c565b6100bd565b7f8f28397000000000000000000000000000000000000000000000000000000000810361012a57506100f561050f565b7ff851a44000000000000000000000000000000000000000000000000000000000810361015a57506100f56103f5565b7f5c60da1b0000000000000000000000000000000000000000000000000000000003610188576100f561039a565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f6574000000000000000000000000000000000000000000000000000000000000608482015260a490fd5b6102d3565b61027961004a73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103541690565b33036102d3575f357fffffffff00000000000000000000000000000000000000000000000000000000167f3659cfe60000000000000000000000000000000000000000000000000000000081036100c557506100bd610737565b5f8073ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416368280378136915af43d5f803e15610323573d5ff35b3d5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761039557604052565b610327565b6103a26108d7565b73ffffffffffffffffffffffffffffffffffffffff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416604051906020820152602081526103f2604082610354565b90565b6103fd6108d7565b73ffffffffffffffffffffffffffffffffffffffff7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416604051906020820152602081526103f2604082610354565b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361047057565b5f80fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60209101126104705760043573ffffffffffffffffffffffffffffffffffffffff811681036104705790565b67ffffffffffffffff811161039557601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6040519061050a602083610354565b5f8252565b6105176108d7565b366004116104705773ffffffffffffffffffffffffffffffffffffffff61053d36610474565b167fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103547f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6040805173ffffffffffffffffffffffffffffffffffffffff84168152846020820152a181156105f8577fffffffffffffffffffffffff000000000000000000000000000000000000000016177fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103556103f26104fb565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b366004116104705760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610470576106b661044d565b6024359067ffffffffffffffff82116104705736602383011215610470578160040135916106e3836104c1565b916106f16040519384610354565b8383523660248584010111610470575f60208561072f96602473ffffffffffffffffffffffffffffffffffffffff96018388013785010152166108de565b6103f26104fb565b61073f6108d7565b366004116104705773ffffffffffffffffffffffffffffffffffffffff61076536610474565b1660405190610775602083610354565b5f8252803b1561085357807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a281511580159061084c575b610832575b505060405161082c602082610354565b5f815290565b6108449161083e6109b2565b91610a13565b505f8061081c565b505f610817565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152fd5b3461047057565b803b156108535773ffffffffffffffffffffffffffffffffffffffff8116807fffffffffffffffffffffffff00000000000000000000000000000000000000007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5416177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a28151158015906109aa575b61099b575050565b6109a79161083e6109b2565b50565b506001610993565b604051906109c1606083610354565b602782527f206661696c6564000000000000000000000000000000000000000000000000006040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b5f806103f29493602081519101845af43d15610a50573d91610a34836104c1565b92610a426040519485610354565b83523d5f602085013e610abd565b606091610abd565b15610a5f57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b91929015610add5750815115610ad1575090565b6103f2903b1515610a58565b825190915015610af05750805190602001fd5b604051907f08c379a000000000000000000000000000000000000000000000000000000000825260206004830152818151918260248301525f5b838110610b695750507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835f604480968601015201168101030190fd5b60208282018101516044878401015285935001610b2a56fea164736f6c634300081a000a
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| DIH | 2 | $0.0000102 | $0 |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x4a7392…3def56 | 12 days agoTue, 04 Aug 2026 13:37:56 UTC | 0x877d9d…bb32 | [0] 0x000000000000…152d2b09 |
| 0x0657e6…0e52c3 | 19 days agoTue, 28 Jul 2026 11:40:08 UTC | 0x877d9d…bb32 | [0] 0x000000000000…a50271ca |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x9283dd…6b6e | [0] 0x000000000000…e58e460f |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x9283dd…6b6e | [0] 0x000000000000…7aab8ba3 |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x9283dd…6b6e | [0] 0x000000000000…e3d4d513 |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x9283dd…6b6e | [0] 0x000000000000…71e835ab |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x9283dd…6b6e | [0] 0x000000000000…9a917fc2 |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x877d9d…bb32 | [0] 0x000000000000…2c1a8d9a |
| 0x79f446…372613 | 27 days agoMon, 20 Jul 2026 11:18:03 UTC | 0x877d9d…bb32 | [0] 0x000000000000…4574e313 |
| 0xa3d20d…87e468 | 27 days agoMon, 20 Jul 2026 11:02:41 UTC | 0x8be007…57e0 | [0] 0x000000000000…1e408c38 [1] 0x000000000000…a13e9ed7 |
| 0x7d30f6…47ecae | 34 days agoMon, 13 Jul 2026 10:07:00 UTC | 0x9283dd…6b6e | [0] 0x000000000000…e58e460f |
| 0x975b98…fdd983 | 34 days agoMon, 13 Jul 2026 10:06:59 UTC | 0x9283dd…6b6e | [0] 0x000000000000…7aab8ba3 |
| 0x5514b8…1bd487 | 34 days agoMon, 13 Jul 2026 10:06:57 UTC | 0x9283dd…6b6e | [0] 0x000000000000…e3d4d513 |
| 0x38aa2d…677582 | 34 days agoMon, 13 Jul 2026 10:06:56 UTC | 0x9283dd…6b6e | [0] 0x000000000000…71e835ab |
| 0x3621dc…c1de66 | 34 days agoMon, 13 Jul 2026 10:06:54 UTC | 0x9283dd…6b6e | [0] 0x000000000000…9a917fc2 |
| 0x6a6a9e…d1c8cc | 34 days agoMon, 13 Jul 2026 10:06:53 UTC | 0x877d9d…bb32 | [0] 0x000000000000…2c1a8d9a |
| 0xbb114f…2d9e5f | 34 days agoMon, 13 Jul 2026 10:06:51 UTC | 0x877d9d…bb32 | [0] 0x000000000000…4574e313 |
| 0x85cf01…c12de2 | 34 days agoMon, 13 Jul 2026 08:49:54 UTC | 0x7e644d…798f | data: 0x000000000000000000…0fd3ea78 |
| 0x85cf01…c12de2 | 34 days agoMon, 13 Jul 2026 08:49:54 UTC | 0x7f26b8…2498 | data: 0x000000000000000000…00000001 |
| 0x85cf01…c12de2 | 34 days agoMon, 13 Jul 2026 08:49:54 UTC | 0x8be007…57e0 | [0] 0x000000000000…7e03cbef [1] 0x000000000000…1e408c38 |
| 0x85cf01…c12de2 | 34 days agoMon, 13 Jul 2026 08:49:54 UTC | 0x8be007…57e0 | [0] 0x000000000000…00000000 [1] 0x000000000000…7e03cbef |
| 0x85cf01…c12de2 | 34 days agoMon, 13 Jul 2026 08:49:54 UTC | 0xbc7cd7…2d3b | [0] 0x000000000000…7b343f29 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x556e513c…286ad4 | Transfer | 17,355,603 | 24 days agoThu, 23 Jul 2026 14:22:18 UTC | 0xcaf7…5d11 | IN | 0xf81c…0751 | $0.001 DIH | ||
| 0xc513f375…37a9c4 | Transfer | 17,298,627 | 24 days agoThu, 23 Jul 2026 12:47:09 UTC | 0xcaf7…5d11 | IN | 0xf81c…0751 | $0.001 DIH |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0xf65cdc…22caa6 | 0x42606eaa | 38,308,515 | 1 hr agoSun, 16 Aug 2026 21:44:55 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000458 | |
| 0xad31c8…038b49 | 0x42606eaa | 38,308,422 | 1 hr agoSun, 16 Aug 2026 21:44:46 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000452 | |
| 0xfe932c…6cd263 | 0x42606eaa | 38,307,729 | 1 hr agoSun, 16 Aug 2026 21:43:36 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000468 | |
| 0xdb2979…840114 | 0xf93a2c3e | 38,307,720 | 1 hr agoSun, 16 Aug 2026 21:43:36 UTC | 0xdc23…8ba3 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000372 | |
| 0x1c0faa…fa9d15 | 0x42606eaa | 38,307,714 | 1 hr agoSun, 16 Aug 2026 21:43:35 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000464 | |
| 0x813136…12f94b | 0x42606eaa | 38,307,707 | 1 hr agoSun, 16 Aug 2026 21:43:34 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000466 | |
| 0x29facc…f7e08c | 0x42606eaa | 38,307,698 | 1 hr agoSun, 16 Aug 2026 21:43:33 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000455 | |
| 0x8bd5ff…b31a19 | 0x42606eaa | 38,307,693 | 1 hr agoSun, 16 Aug 2026 21:43:33 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000468 | |
| 0xf8a8f8…e76cac | 0x19260710 | 38,197,802 | 4 hrs agoSun, 16 Aug 2026 18:39:53 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000444 | |
| 0x13a21e…bfe0d1 | 0x19260710 | 38,183,626 | 4 hrs agoSun, 16 Aug 2026 18:16:12 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000447 | |
| 0x8b05ce…58acea | 0x42606eaa | 38,178,475 | 4 hrs agoSun, 16 Aug 2026 18:07:35 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000458 | |
| 0x250965…bb7907 | 0x42606eaa | 38,153,011 | 5 hrs agoSun, 16 Aug 2026 17:25:00 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000443 | |
| 0xba8f9f…10b815 | 0x42606eaa | 38,152,377 | 5 hrs agoSun, 16 Aug 2026 17:23:56 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000450 | |
| 0x5cf15a…cafa24 | 0x42606eaa | 38,152,118 | 5 hrs agoSun, 16 Aug 2026 17:23:30 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000454 | |
| 0x7f6b9d…ce5312 | 0x42606eaa | 38,152,112 | 5 hrs agoSun, 16 Aug 2026 17:23:30 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000445 | |
| 0x67a3df…f1b150 | 0x42606eaa | 38,152,092 | 5 hrs agoSun, 16 Aug 2026 17:23:28 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000458 | |
| 0xf675dd…7d4a46 | 0x42606eaa | 38,150,989 | 5 hrs agoSun, 16 Aug 2026 17:21:37 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000458 | |
| 0xe9be1c…4e26e5 | 0x42606eaa | 38,150,983 | 5 hrs agoSun, 16 Aug 2026 17:21:36 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000451 | |
| 0x0e87fc…6492cd | 0x42606eaa | 38,150,975 | 5 hrs agoSun, 16 Aug 2026 17:21:35 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000451 | |
| 0x12e241…8856af | 0x42606eaa | 38,150,968 | 5 hrs agoSun, 16 Aug 2026 17:21:35 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000467 | |
| 0x3de4a8…72bb2e | 0x19260710 | 38,144,197 | 5 hrs agoSun, 16 Aug 2026 17:10:15 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000445 | |
| 0x2cf0c8…feef51 | 0x42606eaa | 38,030,060 | 8 hrs agoSun, 16 Aug 2026 13:59:22 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000455 | |
| 0xab13c8…dc61fa | 0x42606eaa | 38,011,418 | 9 hrs agoSun, 16 Aug 2026 13:28:11 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000468 | |
| 0x1f7260…5c0c29 | 0x42606eaa | 37,999,510 | 9 hrs agoSun, 16 Aug 2026 13:08:14 UTC | 0x29fe…7fc2 | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000467 | |
| 0x25e193…ab3430 | 0x42606eaa | 37,977,898 | 10 hrs agoSun, 16 Aug 2026 12:32:04 UTC | 0x659d…35ab | IN | TransparentUpgradeableProxy | $0.000 ETH | 0.00000466 |