Feature Tip: Add private address tag to any address under My Name Tag !
Latest 25 from a total of 438,173 transactions (+10 Pending)
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| 0x16514a910ca4c5ed2c2061bb868dd3a06035021930bb3f234e8a101ab12e7453 | Transfer | (pending) | 50 mins ago | IN | 0.00002 ETH | (Pending) | |||
| 0x683044a5f72444c838a6671573a38bb5c52fcf2ad792e80f604ab767391a5adf | Transfer | (pending) | 7 hrs ago | IN | 0.0007 ETH | (Pending) | |||
| 0xcac03b3e9f2ac7fd7091c36f52fcc0dd5a3c3518f5d1479a78542a0f2287c757 | Transfer | (pending) | 8 hrs ago | IN | 0.00006 ETH | (Pending) | |||
| 0xe1092b1793798d2c31db27a6e27a67347158ec313766ee3e48ecdf724216ea42 | Transfer | (pending) | 10 hrs ago | IN | 0.000788 ETH | (Pending) | |||
| 0x0e40a0ed7cafb77db36fb585577e43a61bd5bd75b281d2601f41ac698af53435 | Deposit ETH | (pending) | 11 hrs ago | IN | 0.001 ETH | (Pending) | |||
| 0x157e2654633bb4878f45d26ff20d45b5789fc8a5f56e687dc3e52a792ee14398 | Bridge ETH To | (pending) | 11 hrs ago | IN | 0.00001 ETH | (Pending) | |||
| 0x3da48e52b1898dd01e0b202f0284b57c9ebe054f7264fbf834f41f206634b195 | Bridge ETH To | (pending) | 11 hrs ago | IN | 0.0001 ETH | (Pending) | |||
| 0x653c2b887e54ffe0173d3511ec724cee469b5db2fae0956b1ec0a7ad5fe811a0 | Deposit ETH | (pending) | 12 hrs ago | IN | 0.0008 ETH | (Pending) | |||
| 0x8d0a4665f45dd32a6a27f43a57c75c6a46ae6e1df0e3fe569bc6da397a5e8fac | Bridge ETH To | (pending) | 12 hrs ago | IN | 0.0001 ETH | (Pending) | |||
| 0xf1fb1223a869c1ea2bc18d1907ccae15fb2a6c9c57dd5726b85ef8822fc5fda8 | Bridge ETH To | (pending) | 14 days ago | IN | 0.0057 ETH | (Pending) | |||
| Bridge ETH To | 24462111 | 2 hrs ago | IN | 0.002 ETH | 0.00004775 | ||||
| Deposit ERC20To | 24461050 | 5 hrs ago | IN | 0 ETH | 0.00015549 | ||||
| Bridge ETH To | 24460956 | 6 hrs ago | IN | 0.001497 ETH | 0.00002365 | ||||
| Bridge ETH To | 24460954 | 6 hrs ago | IN | 0.0005 ETH | 0.00003206 | ||||
| Deposit ERC20To | 24460916 | 6 hrs ago | IN | 0 ETH | 0.00002756 | ||||
| Deposit ERC20To | 24458460 | 14 hrs ago | IN | 0 ETH | 0.00001954 | ||||
| Bridge ETH To | 24457621 | 17 hrs ago | IN | 0.0001 ETH | 0.00003067 | ||||
| Bridge ETH To | 24457588 | 17 hrs ago | IN | 0.5 ETH | 0.00001916 | ||||
| Bridge ETH To | 24457444 | 17 hrs ago | IN | 1.25 ETH | 0.0000205 | ||||
| Bridge ETH To | 24457212 | 18 hrs ago | IN | 0.0001 ETH | 0.00003953 | ||||
| Bridge ETH To | 24457212 | 18 hrs ago | IN | 0.0001 ETH | 0.00003953 | ||||
| Bridge ETH To | 24457212 | 18 hrs ago | IN | 0.0001 ETH | 0.00003953 | ||||
| Bridge ETH To | 24456467 | 21 hrs ago | IN | 12.164 ETH | 0.00003812 | ||||
| Bridge ETH To | 24456261 | 21 hrs ago | IN | 0.5 ETH | 0.00127385 | ||||
| Bridge ETH To | 24456260 | 21 hrs ago | IN | 0.5 ETH | 0.00127721 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24462529 | 46 mins ago | 72.19693252 ETH | ||||
| Finalize Bridge ... | 24462529 | 46 mins ago | 72.19693252 ETH | ||||
| Send Message | 24462111 | 2 hrs ago | 0.002 ETH | ||||
| Transfer | 24461274 | 4 hrs ago | 157.77 ETH | ||||
| Finalize Bridge ... | 24461274 | 4 hrs ago | 157.77 ETH | ||||
| Send Message | 24460956 | 6 hrs ago | 0.001497 ETH | ||||
| Send Message | 24460954 | 6 hrs ago | 0.0005 ETH | ||||
| Bridge ETH To | 24459418 | 11 hrs ago | 0.0002 ETH | ||||
| Send Message | 24458110 | 15 hrs ago | 124.48594248 ETH | ||||
| Deposit ETH To | 24458110 | 15 hrs ago | 124.48594248 ETH | ||||
| Send Message | 24457621 | 17 hrs ago | 0.0001 ETH | ||||
| Send Message | 24457588 | 17 hrs ago | 0.5 ETH | ||||
| Send Message | 24457444 | 17 hrs ago | 1.25 ETH | ||||
| Send Message | 24457212 | 18 hrs ago | 0.0001 ETH | ||||
| Send Message | 24457212 | 18 hrs ago | 0.0001 ETH | ||||
| Send Message | 24457212 | 18 hrs ago | 0.0001 ETH | ||||
| Send Message | 24456490 | 20 hrs ago | 0.001 ETH | ||||
| Bridge ETH To | 24456490 | 20 hrs ago | 0.001 ETH | ||||
| Send Message | 24456467 | 21 hrs ago | 12.164 ETH | ||||
| Send Message | 24456261 | 21 hrs ago | 0.5 ETH | ||||
| Send Message | 24456260 | 21 hrs ago | 0.5 ETH | ||||
| Send Message | 24456172 | 22 hrs ago | 0.00134 ETH | ||||
| Send Message | 24455957 | 22 hrs ago | 0.033 ETH | ||||
| Send Message | 24455563 | 24 hrs ago | 0.00005 ETH | ||||
| Send Message | 24455134 | 25 hrs ago | 70.65005 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
L1ChugSplashProxy
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity >0.5.0 <0.8.0;
import { iL1ChugSplashDeployer } from "./interfaces/iL1ChugSplashDeployer.sol";
/**
* @title L1ChugSplashProxy
* @dev Basic ChugSplash proxy contract for L1. Very close to being a normal proxy but has added
* functions `setCode` and `setStorage` for changing the code or storage of the contract. Nifty!
*
* Note for future developers: do NOT make anything in this contract 'public' unless you know what
* you're doing. Anything public can potentially have a function signature that conflicts with a
* signature attached to the implementation contract. Public functions SHOULD always have the
* 'proxyCallIfNotOwner' modifier unless there's some *really* good reason not to have that
* modifier. And there almost certainly is not a good reason to not have that modifier. Beware!
*/
contract L1ChugSplashProxy {
/*************
* Constants *
*************/
// "Magic" prefix. When prepended to some arbitrary bytecode and used to create a contract, the
// appended bytecode will be deployed as given.
bytes13 constant internal DEPLOY_CODE_PREFIX = 0x600D380380600D6000396000f3;
// bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1)
bytes32 constant internal IMPLEMENTATION_KEY = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
// bytes32(uint256(keccak256('eip1967.proxy.admin')) - 1)
bytes32 constant internal OWNER_KEY = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;
/***************
* Constructor *
***************/
/**
* @param _owner Address of the initial contract owner.
*/
constructor(
address _owner
) {
_setOwner(_owner);
}
/**********************
* Function Modifiers *
**********************/
/**
* Blocks a function from being called when the parent signals that the system should be paused
* via an isUpgrading function.
*/
modifier onlyWhenNotPaused() {
address owner = _getOwner();
// We do a low-level call because there's no guarantee that the owner actually *is* an
// L1ChugSplashDeployer contract and Solidity will throw errors if we do a normal call and
// it turns out that it isn't the right type of contract.
(bool success, bytes memory returndata) = owner.staticcall(
abi.encodeWithSelector(
iL1ChugSplashDeployer.isUpgrading.selector
)
);
// If the call was unsuccessful then we assume that there's no "isUpgrading" method and we
// can just continue as normal. We also expect that the return value is exactly 32 bytes
// long. If this isn't the case then we can safely ignore the result.
if (success && returndata.length == 32) {
// Although the expected value is a *boolean*, it's safer to decode as a uint256 in the
// case that the isUpgrading function returned something other than 0 or 1. But we only
// really care about the case where this value is 0 (= false).
uint256 ret = abi.decode(returndata, (uint256));
require(
ret == 0,
"L1ChugSplashProxy: system is currently being upgraded"
);
}
_;
}
/**
* Makes a proxy call instead of triggering the given function when the caller is either the
* owner or the zero address. Caller can only ever be the zero address if this function is
* being called off-chain via eth_call, which is totally fine and can be convenient for
* client-side tooling. Avoids situations where the proxy and implementation share a sighash
* and the proxy function ends up being called instead of the implementation one.
*
* Note: msg.sender == address(0) can ONLY be triggered off-chain via eth_call. If there's a
* way for someone to send a transaction with msg.sender == address(0) in any real context then
* we have much bigger problems. Primary reason to include this additional allowed sender is
* because the owner address can be changed dynamically and we do not want clients to have to
* keep track of the current owner in order to make an eth_call that doesn't trigger the
* proxied contract.
*/
modifier proxyCallIfNotOwner() {
if (msg.sender == _getOwner() || msg.sender == address(0)) {
_;
} else {
// This WILL halt the call frame on completion.
_doProxyCall();
}
}
/*********************
* Fallback Function *
*********************/
fallback()
external
payable
{
// Proxy call by default.
_doProxyCall();
}
/********************
* Public Functions *
********************/
/**
* Sets the code that should be running behind this proxy. Note that this scheme is a bit
* different from the standard proxy scheme where one would typically deploy the code
* separately and then set the implementation address. We're doing it this way because it gives
* us a lot more freedom on the client side. Can only be triggered by the contract owner.
* @param _code New contract code to run inside this contract.
*/
function setCode(
bytes memory _code
)
proxyCallIfNotOwner
public
{
// Get the code hash of the current implementation.
address implementation = _getImplementation();
// If the code hash matches the new implementation then we return early.
if (keccak256(_code) == _getAccountCodeHash(implementation)) {
return;
}
// Create the deploycode by appending the magic prefix.
bytes memory deploycode = abi.encodePacked(
DEPLOY_CODE_PREFIX,
_code
);
// Deploy the code and set the new implementation address.
address newImplementation;
assembly {
newImplementation := create(0x0, add(deploycode, 0x20), mload(deploycode))
}
// Check that the code was actually deployed correctly. I'm not sure if you can ever
// actually fail this check. Should only happen if the contract creation from above runs
// out of gas but this parent execution thread does NOT run out of gas. Seems like we
// should be doing this check anyway though.
require(
_getAccountCodeHash(newImplementation) == keccak256(_code),
"L1ChugSplashProxy: code was not correctly deployed."
);
_setImplementation(newImplementation);
}
/**
* Modifies some storage slot within the proxy contract. Gives us a lot of power to perform
* upgrades in a more transparent way. Only callable by the owner.
* @param _key Storage key to modify.
* @param _value New value for the storage key.
*/
function setStorage(
bytes32 _key,
bytes32 _value
)
proxyCallIfNotOwner
public
{
assembly {
sstore(_key, _value)
}
}
/**
* Changes the owner of the proxy contract. Only callable by the owner.
* @param _owner New owner of the proxy contract.
*/
function setOwner(
address _owner
)
proxyCallIfNotOwner
public
{
_setOwner(_owner);
}
/**
* Queries the owner of the proxy contract. Can only be called by the owner OR by making an
* eth_call and setting the "from" address to address(0).
* @return Owner address.
*/
function getOwner()
proxyCallIfNotOwner
public
returns (
address
)
{
return _getOwner();
}
/**
* Queries the implementation address. Can only be called by the owner OR by making an
* eth_call and setting the "from" address to address(0).
* @return Implementation address.
*/
function getImplementation()
proxyCallIfNotOwner
public
returns (
address
)
{
return _getImplementation();
}
/**********************
* Internal Functions *
**********************/
/**
* Sets the implementation address.
* @param _implementation New implementation address.
*/
function _setImplementation(
address _implementation
)
internal
{
assembly {
sstore(IMPLEMENTATION_KEY, _implementation)
}
}
/**
* Queries the implementation address.
* @return Implementation address.
*/
function _getImplementation()
internal
view
returns (
address
)
{
address implementation;
assembly {
implementation := sload(IMPLEMENTATION_KEY)
}
return implementation;
}
/**
* Changes the owner of the proxy contract.
* @param _owner New owner of the proxy contract.
*/
function _setOwner(
address _owner
)
internal
{
assembly {
sstore(OWNER_KEY, _owner)
}
}
/**
* Queries the owner of the proxy contract.
* @return Owner address.
*/
function _getOwner()
internal
view
returns (
address
)
{
address owner;
assembly {
owner := sload(OWNER_KEY)
}
return owner;
}
/**
* Gets the code hash for a given account.
* @param _account Address of the account to get a code hash for.
* @return Code hash for the account.
*/
function _getAccountCodeHash(
address _account
)
internal
view
returns (
bytes32
)
{
bytes32 codeHash;
assembly {
codeHash := extcodehash(_account)
}
return codeHash;
}
/**
* Performs the proxy call via a delegatecall.
*/
function _doProxyCall()
onlyWhenNotPaused
internal
{
address implementation = _getImplementation();
require(
implementation != address(0),
"L1ChugSplashProxy: implementation is not set yet"
);
assembly {
// Copy calldata into memory at 0x0....calldatasize.
calldatacopy(0x0, 0x0, calldatasize())
// Perform the delegatecall, make sure to pass all available gas.
let success := delegatecall(gas(), implementation, 0x0, calldatasize(), 0x0, 0x0)
// Copy returndata into memory at 0x0....returndatasize. Note that this *will*
// overwrite the calldata that we just copied into memory but that doesn't really
// matter because we'll be returning in a second anyway.
returndatacopy(0x0, 0x0, returndatasize())
// Success == 0 means a revert. We'll revert too and pass the data up.
if iszero(success) {
revert(0x0, returndatasize())
}
// Otherwise we'll just return and pass the data up.
return(0x0, returndatasize())
}
}
}// SPDX-License-Identifier: MIT
pragma solidity >0.5.0 <0.8.0;
/**
* @title iL1ChugSplashDeployer
*/
interface iL1ChugSplashDeployer {
function isUpgrading()
external
view
returns (
bool
);
}{
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 200
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_code","type":"bytes"}],"name":"setCode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"},{"internalType":"bytes32","name":"_value","type":"bytes32"}],"name":"setStorage","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
608060405234801561001057600080fd5b506040516107983803806107988339818101604052602081101561003357600080fd5b505161003e81610044565b50610068565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b610721806100776000396000f3fe60806040526004361061004a5760003560e01c806313af4035146100545780636c5d4ad014610087578063893d20e81461013a5780639b0b0fda1461016b578063aaf10f421461019b575b6100526101b0565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661036c565b34801561009357600080fd5b50610052600480360360208110156100aa57600080fd5b8101906020810181356401000000008111156100c557600080fd5b8201836020820111156100d757600080fd5b803590602001918460018302840111640100000000831117156100f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103af945050505050565b34801561014657600080fd5b5061014f610505565b604080516001600160a01b039092168252519081900360200190f35b34801561017757600080fd5b506100526004803603604081101561018e57600080fd5b508035906020013561054b565b3480156101a757600080fd5b5061014f610589565b60006101ba6105bd565b60408051600481526024810182526020810180516001600160e01b0316635bca393160e11b1781529151815193945060009384936001600160a01b0387169392918291908083835b602083106102215780518252601f199092019160209182019101610202565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610281576040519150601f19603f3d011682016040523d82523d6000602084013e610286565b606091505b5091509150818015610299575080516020145b156102f85760008180602001905160208110156102b557600080fd5b5051905080156102f65760405162461bcd60e51b81526004018080602001828103825260358152602001806106b76035913960400191505060405180910390fd5b505b60006103026105e2565b90506001600160a01b0381166103495760405162461bcd60e51b81526004018080602001828103825260308152602001806106546030913960400191505060405180910390fd5b3660008037600080366000845af43d6000803e80610366573d6000fd5b503d6000f35b6103746105bd565b6001600160a01b0316336001600160a01b03161480610391575033155b156103a45761039f81610607565b6103ac565b6103ac6101b0565b50565b6103b76105bd565b6001600160a01b0316336001600160a01b031614806103d4575033155b156103a45760006103e36105e2565b90506103ee8161062b565b825160208401201415610401575061039f565b60006c600d380380600d6000396000f360981b83604051602001808372ffffffffffffffffffffffffffffffffffffff19168152600d0182805190602001908083835b602083106104635780518252601f199092019160209182019101610444565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905060008151602083016000f0905083805190602001206104b88261062b565b146104f45760405162461bcd60e51b81526004018080602001828103825260338152602001806106846033913960400191505060405180910390fd5b6104fd8161062f565b5050506103ac565b600061050f6105bd565b6001600160a01b0316336001600160a01b0316148061052c575033155b15610540576105396105bd565b9050610548565b6105486101b0565b90565b6105536105bd565b6001600160a01b0316336001600160a01b03161480610570575033155b1561057d57808255610585565b6105856101b0565b5050565b60006105936105bd565b6001600160a01b0316336001600160a01b031614806105b0575033155b15610540576105396105e2565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3f90565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe4c314368756753706c61736850726f78793a20696d706c656d656e746174696f6e206973206e6f7420736574207965744c314368756753706c61736850726f78793a20636f646520776173206e6f7420636f72726563746c79206465706c6f7965642e4c314368756753706c61736850726f78793a2073797374656d2069732063757272656e746c79206265696e67207570677261646564a26469706673582212202e20c1d0062b5a698d49624edce72a713b117e88f4cd70877869b53519c1d1f964736f6c634300070600330000000000000000000000009996571372066a1545d3435c6935e3f9593a7ef5
Deployed Bytecode
0x60806040526004361061004a5760003560e01c806313af4035146100545780636c5d4ad014610087578063893d20e81461013a5780639b0b0fda1461016b578063aaf10f421461019b575b6100526101b0565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661036c565b34801561009357600080fd5b50610052600480360360208110156100aa57600080fd5b8101906020810181356401000000008111156100c557600080fd5b8201836020820111156100d757600080fd5b803590602001918460018302840111640100000000831117156100f957600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506103af945050505050565b34801561014657600080fd5b5061014f610505565b604080516001600160a01b039092168252519081900360200190f35b34801561017757600080fd5b506100526004803603604081101561018e57600080fd5b508035906020013561054b565b3480156101a757600080fd5b5061014f610589565b60006101ba6105bd565b60408051600481526024810182526020810180516001600160e01b0316635bca393160e11b1781529151815193945060009384936001600160a01b0387169392918291908083835b602083106102215780518252601f199092019160209182019101610202565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610281576040519150601f19603f3d011682016040523d82523d6000602084013e610286565b606091505b5091509150818015610299575080516020145b156102f85760008180602001905160208110156102b557600080fd5b5051905080156102f65760405162461bcd60e51b81526004018080602001828103825260358152602001806106b76035913960400191505060405180910390fd5b505b60006103026105e2565b90506001600160a01b0381166103495760405162461bcd60e51b81526004018080602001828103825260308152602001806106546030913960400191505060405180910390fd5b3660008037600080366000845af43d6000803e80610366573d6000fd5b503d6000f35b6103746105bd565b6001600160a01b0316336001600160a01b03161480610391575033155b156103a45761039f81610607565b6103ac565b6103ac6101b0565b50565b6103b76105bd565b6001600160a01b0316336001600160a01b031614806103d4575033155b156103a45760006103e36105e2565b90506103ee8161062b565b825160208401201415610401575061039f565b60006c600d380380600d6000396000f360981b83604051602001808372ffffffffffffffffffffffffffffffffffffff19168152600d0182805190602001908083835b602083106104635780518252601f199092019160209182019101610444565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052905060008151602083016000f0905083805190602001206104b88261062b565b146104f45760405162461bcd60e51b81526004018080602001828103825260338152602001806106846033913960400191505060405180910390fd5b6104fd8161062f565b5050506103ac565b600061050f6105bd565b6001600160a01b0316336001600160a01b0316148061052c575033155b15610540576105396105bd565b9050610548565b6105486101b0565b90565b6105536105bd565b6001600160a01b0316336001600160a01b03161480610570575033155b1561057d57808255610585565b6105856101b0565b5050565b60006105936105bd565b6001600160a01b0316336001600160a01b031614806105b0575033155b15610540576105396105e2565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610355565b3f90565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5556fe4c314368756753706c61736850726f78793a20696d706c656d656e746174696f6e206973206e6f7420736574207965744c314368756753706c61736850726f78793a20636f646520776173206e6f7420636f72726563746c79206465706c6f7965642e4c314368756753706c61736850726f78793a2073797374656d2069732063757272656e746c79206265696e67207570677261646564a26469706673582212202e20c1d0062b5a698d49624edce72a713b117e88f4cd70877869b53519c1d1f964736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009996571372066a1545d3435c6935e3f9593a7ef5
-----Decoded View---------------
Arg [0] : _owner (address): 0x9996571372066A1545D3435C6935e3F9593A7eF5
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009996571372066a1545d3435c6935e3f9593a7ef5
Loading...
Loading
Loading...
Loading
Net Worth in USD
$471,019,261.57
Net Worth in ETH
235,666.752527
Token Allocations
USDT
32.10%
WLD
25.35%
WBTC
15.71%
Others
26.85%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 32.10% | $0.999765 | 151,223,746.5918 | $151,188,209.01 | |
| ETH | 25.35% | $0.405582 | 294,354,069.0875 | $119,384,712.05 | |
| ETH | 15.71% | $76,149 | 971.4984 | $73,978,635.47 | |
| ETH | 15.29% | $0.473715 | 152,000,000 | $72,004,725.62 | |
| ETH | 6.78% | $1 | 31,948,914.7682 | $31,948,914.77 | |
| ETH | 1.91% | $2,624.38 | 3,425.4735 | $8,989,744.18 | |
| ETH | 0.44% | $8.8 | 238,029.9771 | $2,094,663.8 | |
| ETH | 0.34% | $0.081599 | 19,733,844.1497 | $1,610,261.95 | |
| ETH | 0.32% | $0.250426 | 6,046,654.6563 | $1,514,241.67 | |
| ETH | 0.22% | $125.18 | 8,462.7935 | $1,059,372.49 | |
| ETH | 0.19% | $0.999561 | 908,862.3205 | $908,463.33 | |
| ETH | 0.16% | $0.030236 | 24,795,221.5024 | $749,713.03 | |
| ETH | 0.15% | $15.98 | 43,311.4552 | $692,117.05 | |
| ETH | 0.13% | $1.25 | 488,625.7621 | $610,782.2 | |
| ETH | 0.12% | $1 | 571,719.033 | $573,417.11 | |
| ETH | 0.06% | $3.48 | 86,577.8879 | $301,291.05 | |
| ETH | 0.05% | $0.022435 | 10,050,476.7577 | $225,480.23 | |
| ETH | 0.05% | $0.000345 | 616,336,042.4052 | $212,418.08 | |
| ETH | 0.04% | $0.556348 | 380,881.3397 | $211,902.57 | |
| ETH | 0.04% | $0.995127 | 196,763.0627 | $195,804.3 | |
| ETH | 0.04% | $1.17 | 159,001.0284 | $186,031.2 | |
| ETH | 0.04% | $0.000814 | 221,537,576.8502 | $180,238.54 | |
| ETH | 0.02% | $0.011383 | 10,279,138.7822 | $117,012.37 | |
| ETH | 0.02% | $0.054671 | 2,135,584.9195 | $116,754.56 | |
| ETH | 0.02% | $0.011993 | 9,357,510.8293 | $112,222.57 | |
| ETH | 0.02% | $2,767.01 | 40.4402 | $111,898.41 | |
| ETH | 0.02% | $0.03629 | 3,057,469.8692 | $110,956.87 | |
| ETH | 0.02% | $0.047579 | 1,997,753.7931 | $95,051.89 | |
| ETH | 0.02% | $2,533.88 | 37.1928 | $94,242.16 | |
| ETH | 0.02% | $0.342796 | 264,775.4193 | $90,763.95 | |
| ETH | 0.02% | $0.153348 | 553,320.918 | $84,850.73 | |
| ETH | 0.01% | $1 | 61,683.9359 | $61,683.94 | |
| ETH | 0.01% | $21.88 | 2,768.0435 | $60,564.79 | |
| ETH | 0.01% | $0.00104 | 57,443,996.5981 | $59,718.2 | |
| ETH | 0.01% | $0.142478 | 391,538.7895 | $55,785.66 | |
| ETH | 0.01% | $0.102344 | 534,742.9459 | $54,727.73 | |
| ETH | 0.01% | $0.009835 | 5,000,010 | $49,174.12 | |
| ETH | 0.01% | $0.041129 | 1,174,154.136 | $48,292.03 | |
| ETH | $0.108859 | 419,593.6196 | $45,676.54 | ||
| ETH | $0.004227 | 10,616,835.2551 | $44,879.59 | ||
| ETH | $0.052146 | 834,392.8365 | $43,510.25 | ||
| ETH | $0.150323 | 278,627.7215 | $41,884.15 | ||
| ETH | $0.023391 | 1,722,910.86 | $40,300.38 | ||
| ETH | $1.3 | 29,543.9069 | $38,407.08 | ||
| ETH | $0.017213 | 2,229,156.4842 | $38,369.65 | ||
| ETH | $3.49 | 10,236.9759 | $35,727.05 | ||
| ETH | $1,791.75 | 18.6835 | $33,476.17 | ||
| ETH | $15.71 | 2,050.0262 | $32,205.91 | ||
| ETH | $0.108094 | 293,840.6133 | $31,762.41 | ||
| ETH | $6.64 | 3,826.8633 | $25,410.37 | ||
| ETH | $0.454115 | 50,054.3378 | $22,730.43 | ||
| ETH | $0.01176 | 1,803,478.3768 | $21,209.19 | ||
| ETH | $0.000833 | 25,263,213.5069 | $21,032.64 | ||
| ETH | $0.00017 | 115,249,114.8016 | $19,599.93 | ||
| ETH | $0.007044 | 2,759,762.7446 | $19,438.77 | ||
| ETH | $1.02 | 19,021.8481 | $19,402.29 | ||
| ETH | $0.000001 | 27,257,708,397 | $18,794.9 | ||
| ETH | $1.07 | 16,747.6559 | $17,836.25 | ||
| ETH | $0.024539 | 725,307.4903 | $17,798.43 | ||
| ETH | $0.22054 | 79,417.8481 | $17,514.81 | ||
| ETH | $0.001477 | 11,532,052.4238 | $17,031.92 | ||
| ETH | $0.15074 | 95,334.4205 | $14,370.71 | ||
| ETH | $0.001041 | 13,668,588.464 | $14,235.31 | ||
| ETH | $0.007291 | 1,841,197.6357 | $13,423.67 | ||
| ETH | $0.112686 | 117,693.1047 | $13,262.34 | ||
| ETH | $0.00544 | 2,338,403.5004 | $12,720.07 | ||
| ETH | $12.34 | 1,016.4658 | $12,543.19 | ||
| ETH | $2,459.09 | 4.8631 | $11,958.8 | ||
| ETH | $0.007085 | 1,622,168.6312 | $11,492.9 | ||
| ETH | $0.00 | 509.1038 | $0.00 | ||
| ETH | $0.255413 | 24,057 | $6,144.47 | ||
| ETH | $0.004578 | 1,243,424.1155 | $5,692.06 | ||
| ETH | $0.998586 | 4,995.7581 | $4,988.69 | ||
| ETH | $1,580.98 | 3.1519 | $4,983.16 | ||
| ETH | $0.000078 | 51,941,829.5876 | $4,064.97 | ||
| ETH | $0.000741 | 5,331,172.0571 | $3,950.67 | ||
| ETH | $0.207731 | 18,567.1792 | $3,856.98 | ||
| ETH | $0.004311 | 797,595.6989 | $3,438.31 | ||
| ETH | $0.000084 | 39,953,498.0852 | $3,356.49 | ||
| ETH | $0.02736 | 115,954.5955 | $3,172.53 | ||
| ETH | $0.071518 | 32,238.7018 | $2,305.65 | ||
| ETH | $0.499658 | 4,278.4859 | $2,137.78 | ||
| ETH | $0.018276 | 92,265.3226 | $1,686.29 | ||
| ETH | $0.000426 | 3,009,632 | $1,282.2 | ||
| ETH | $1.69 | 676.664 | $1,143.56 | ||
| ETH | $0.00004 | 26,738,722.7175 | $1,067.41 | ||
| ETH | $0.777123 | 1,252 | $972.96 | ||
| ETH | $0.040357 | 21,756.5722 | $878.03 | ||
| ETH | $0.108398 | 6,358.5121 | $689.25 | ||
| ETH | $0.094784 | 6,307.9614 | $597.89 | ||
| ETH | $0.000005 | 122,785,652.1206 | $562.36 | ||
| ETH | $0.004878 | 86,488.6118 | $421.93 | ||
| ETH | $0.000001 | 500,000,000 | $368.31 | ||
| ETH | $7,583.42 | 0.0461 | $349.92 | ||
| ETH | $0.026901 | 12,523.4256 | $336.9 | ||
| ETH | $1.46 | 225.5904 | $329.36 | ||
| ETH | $0.004417 | 67,985.5742 | $300.27 | ||
| ETH | $2,859.8 | 0.1025 | $293.2 | ||
| ETH | $0.005417 | 46,487.0877 | $251.82 | ||
| ETH | $0.033873 | 6,922.6154 | $234.49 | ||
| ETH | $0.000672 | 314,034.2621 | $210.95 | ||
| ETH | $0.080302 | 2,044.1583 | $164.15 | ||
| ETH | $0.292402 | 446.7695 | $130.64 | ||
| ETH | $1.19 | 107.1935 | $127.56 | ||
| ETH | $1,998.67 | 0.0588 | $117.43 | ||
| ETH | $0.01 | 10,100 | $101 | ||
| ETH | $0.019413 | 4,529.7992 | $87.94 | ||
| ETH | $0.008136 | 10,226.6443 | $83.2 | ||
| ETH | $0.002909 | 24,458.1576 | $71.15 | ||
| ETH | $0.000482 | 113,815.0323 | $54.89 | ||
| ETH | $0.103121 | 498.8038 | $51.44 | ||
| ETH | $0.000034 | 1,381,539.1781 | $47.03 | ||
| ETH | $1,810.99 | 0.025 | $45.27 | ||
| ETH | $0.00078 | 52,450.3274 | $40.92 | ||
| ETH | $0.017724 | 2,307.3638 | $40.9 | ||
| ETH | $0.618669 | 62.0698 | $38.4 | ||
| ETH | $0.041128 | 767.4525 | $31.56 | ||
| ETH | $0.08735 | 360.8616 | $31.52 | ||
| ETH | $0.005509 | 4,249.4098 | $23.41 | ||
| ETH | $8.16 | 2 | $16.32 | ||
| ETH | $0.147029 | 78.71 | $11.57 | ||
| ETH | $0.000115 | 99,905.0275 | $11.53 | ||
| ETH | $0.021494 | 466.626 | $10.03 | ||
| ETH | $0.017664 | 500 | $8.83 | ||
| ETH | $0.000469 | 11,746.2094 | $5.51 | ||
| ETH | $0.992679 | 3.4746 | $3.45 | ||
| ETH | $3.13 | 1 | $3.13 | ||
| ETH | $0.073439 | 25.7764 | $1.89 | ||
| ETH | $0.034918 | 45 | $1.57 | ||
| ETH | $0.001738 | 767.148 | $1.33 | ||
| ETH | $0.0009 | 1,311.4143 | $1.18 | ||
| ETH | $1 | 1 | $1 | ||
| ETH | $0.019993 | 50.0029 | $0.9997 | ||
| ETH | $0.006602 | 110 | $0.7262 | ||
| ETH | $0.037646 | 15.9993 | $0.6023 | ||
| ETH | $0.564546 | 1 | $0.5645 | ||
| ETH | $0.005393 | 101 | $0.5446 | ||
| ETH | $0.000256 | 1,363.3232 | $0.3483 | ||
| ETH | $0.000619 | 400 | $0.2474 | ||
| ETH | 16,356,542.4364 | $0.2454 | |||
| ETH | $0.000237 | 1,000 | $0.2369 | ||
| ETH | $0.206297 | 1 | $0.2062 | ||
| ETH | 502,169,951.9409 | $0.2019 | |||
| ETH | $0.00081 | 155.7873 | $0.1262 | ||
| ETH | $0.00 | 0.01 | $0.00 | ||
| ETH | $0.00 | 1,000 | $0.00 | ||
| OP | $2,000.15 | 11.0085 | $22,018.69 | ||
| OP | $0.9999 | 190.78 | $190.76 | ||
| OP | $0.187784 | 122.0911 | $22.93 | ||
| OP | $3.5 | 0.06 | $0.21 | ||
| BSC | $1.86 | 6,492.1153 | $12,101.66 | ||
| BSC | $1.02 | 100 | $101.99 | ||
| BSC | $619.18 | 0.0624 | $38.62 | ||
| BSC | $1,998.07 | 0.01 | $20.02 | ||
| BSC | $0.999679 | 4.55 | $4.55 | ||
| BSC | 804,828 | $0.1868 | |||
| ARB | $1,999.02 | 0.1276 | $255.02 | ||
| ARB | $0.998438 | 0.1842 | $0.1839 | ||
| BASE | $0.019895 | 320 | $6.37 | ||
| BASE | $1,999 | 0.00200588 | $4.01 | ||
| BASE | 295,774,647 | $2.19 | |||
| BASE | $0.000483 | 4,324.6182 | $2.09 | ||
| BASE | $0.00 | 120 | $0.00 | ||
| AVAX | $9.32 | 0.1251 | $1.17 | ||
| LINEA | $1,998.67 | 0.00012171 | $0.243263 | ||
| POL | $0.000737 | 213.62 | $0.1573 | ||
| POL | $0.105017 | 0.2075 | $0.021793 |
Loading...
Loading
Loading...
Loading
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.
${zeroWidthWarningMessage} Check the actual text at ENS.
`;
}
const contentHtml =
`Additional Info
Full Name:
Note:
- Name tag is displayed due to forward and reverse resolution. Find out more.
- A Domain Name is not necessarily held by a person popularly associated with the name.
Other names resolving to this address:
${listOtherENSNames}
${moreOtherENSNames}
`;
return result;
}
// ===== end ENS name tag
const tooltipForTokenHolding = 'More than 335 tokens found, listing and displaying the total balance of the first 200 tokens only. Click on the Coins icon to see the full list and balance.';
var adjustPosition = 0;
$(document).ready(function () {
switchAmountToValue(document.getElementById("headerAmountValue"), 'Value (USD)', 'Amount', true);
switchAmountToValue(document.getElementById("headerIntAmountValue"), 'Value (USD)', 'Amount', true);
switchMethodColumn(document.getElementById("headerMethod"), 'Method', 'Action', true);
switchMethodColumn(document.getElementById("headerMethod_internaltx"), 'Method', 'Action', true);
onDocumentReady();
$("[rel='tooltip']").tooltip();
$("[data-bs-toggle-second='tooltip']").tooltip({ trigger: 'hover' });
$("[rel='tooltipEns']").each(function () {
$(this).tooltip({ title: $(this).attr("tooltip-title") });
});
//if (hash != '') {
// activaTab(hash);
//};
onAddressDocReady();
//// Note: this is causing "Copied" tooltip not showing when copy button is clicked in V3, and seems like not applicable to v3, comment out first in case there is issue
//$('[data-bs-toggle="tooltip"]').click(function () {
// $('[data-bs-toggle="tooltip"]').tooltip("hide");
//});
if (document.getElementById("copyaddressbutton")) {
document.getElementById("copyaddressbutton").classList.remove("disabled");
}
if ($("#txtSearchContract").length) {
initialiseKeyupOnDocReady();
}
if (!!$('#ensName')[0]) {
initEnsNamePopOver();
}
handleToggle();
$("#btnLoginRequired").attr("href", "/login?ref=" + window.location.pathname.slice(1));
if (window.matchMedia("(max-width: 767px)").matches) {
// Mobile
adjustPosition = 90;
} else {
// Others
adjustPosition = 50;
}
if (tooltipForTokenHolding) {
const dropdownMenuBalance = document.getElementById("dropdownMenuBalance");
if (dropdownMenuBalance) {
const dropdownWrapper = dropdownMenuBalance.closest(".dropdown");
if (dropdownWrapper) {
dropdownWrapper.setAttribute("title", tooltipForTokenHolding);
new bootstrap.Tooltip(dropdownWrapper);
}
}
}
setIOState();
setFiltersStatus();
});
function displayAudit() {
$('html, body').animate({
scrollTop: $("#auditReportId").offset().top - adjustPosition
});
}
function handleToggle() {
var className = document.getElementsByClassName('editor');
var classNameCount = className.length;
for (var j = 0; j t.innerWidth()) {
if (mb + d > tb) {
t.css('padding-bottom', ((mb + d) - tb));
}
}
else {
t.css('overflow', 'visible');
}
}).on('hidden.bs.dropdown', function () {
$(this).css({ 'padding-bottom': '', 'overflow': '' });
});
var btn_ERC20_sort = {
count: 0,
reminder_count: 2,
list: [],
default_list: [],
ERC20_sort_start: function (count) {
if (document.getElementsByClassName('list-custom-divider-ERC20')[0]) {
var self = this
if (count != undefined) {
self.count = count
}
var before_el = document.getElementsByClassName('list-custom-divider-ERC20')[0]
var parent_el = before_el.parentNode
var element_selector = parent_el.querySelectorAll(".list-custom-ERC20");
if (self.list.length == 0) {
element_selector.forEach(function (e) {
self.list.push(e);
self.default_list.push(e);
});
}
$(".list-custom-ERC20").remove()
var type = self.count % self.reminder_count
self.sortList(type, parent_el, before_el);
self.count++
}
},
sortList: function (type, parent_el, before_el) {
var self = this
var sorted_list = []
var icon_el = $(before_el).find('button').find('i')
switch (type) {
case 1:
icon_el.attr("class", "fad fa-sort-up")
sorted_list = self.sortUsdAsc()
break;
default:
icon_el.attr("class", "fad fa-sort-down")
sorted_list = self.sortUsdDesc()
}
for (var i = sorted_list.length - 1; i >= 0; i--) {
before_el.insertAdjacentElement('afterend', sorted_list[i])
}
},
sortUsdAsc: function () {
var self = this
var sort_list = self.list
sort_list.sort(function (a, b) {
var target_a_value = self.formatCurrencyToNumber(a.querySelector('.list-usd-value').textContent.trim() || -1);
var target_b_value = self.formatCurrencyToNumber(b.querySelector('.list-usd-value').textContent.trim() || -1);
if (target_a_value == -1 || target_b_value == -1) {
return 1;
}
if (target_a_value target_b_value) {
return 1;
}
return 0
});
return sort_list
},
sortUsdDesc: function () {
var self = this
var sort_list = self.list
sort_list.sort(function (a, b) {
var target_a_value = self.formatCurrencyToNumber(a.querySelector('.list-usd-value').textContent.trim() || -1);
var target_b_value = self.formatCurrencyToNumber(b.querySelector('.list-usd-value').textContent.trim() || -1);
if (target_a_value target_b_value) {
return -1;
}
return 0
});
return sort_list
},
formatCurrencyToNumber: function (strCurrency) {
if (typeof strCurrency == "number")
return strCurrency
else
return Number(strCurrency.replace(/[^0-9.-]+/g, ""));
},
}
$("#btn_ERC20_sort").on("click", function (event) {
event.preventDefault();
setTimeout(function () {
btn_ERC20_sort.ERC20_sort_start()
}, 10)
})
function hrefTokenHolding() {
var location = "/tokenholdings?a=0x99c9fc46f92e8a1c0dec1b1747d010903e884be1"
var queryString = $("input.form-control.form-control-xs.search.mb-3")[0].value
if (queryString) {
location += "&q=" + queryString
}
window.location.href = location
}
function toggleLoginModal() {
$('#loginRequiredModal').modal('toggle');
}
function setIOState() {
const mainAddress = $("#hdnAddress").val()?.toLowerCase();
const currentFilters = new URLSearchParams(window.location.search);
const faddr = currentFilters.get("fadd")?.toLowerCase();
const taddr = currentFilters.get("tadd")?.toLowerCase();
$(".dropdown-item-io").removeClass("active");
if (taddr) {
if (taddr.indexOf(mainAddress) != -1) {
$("#btnInTxFilter").addClass("active");
$("#btnInIntlTxFilter").addClass("active");
$(".js-listbox-item").text("IN");
}
else {
$("#btnOutTxFilter").addClass("active");
$("#btnOutIntlTxFilter").addClass("active");
$(".js-listbox-item").text("OUT");
}
}
else if (faddr) {
if (faddr.indexOf(mainAddress) != -1) {
$("#btnOutTxFilter").addClass("active");
$("#btnOutIntlTxFilter").addClass("active");
$(".js-listbox-item").text("OUT");
}
else {
$("#btnInTxFilter").addClass("active");
$("#btnInIntlTxFilter").addClass("active");
$(".js-listbox-item").text("IN");
}
}
else {
$("#btnAnyTxFilter").addClass("active");
$("#btnAnyIntlTxFilter").addClass("active");
$(".js-listbox-item").text("ANY");
}
}
function setFiltersStatus() {
if (isSignedIn == "0") {
disableControl("#dropdownMethod");
disableControl("#dropdownAge");
disableControl("#dropdownFrom");
disableControl("#dropdownIO");
disableControl("#dropdownTo");
disableControl("#btnDropdownAmount");
disableControl("#dropdownAgeIntlTxns");
disableControl("#dropdownFromIntlTxns");
disableControl("#dropdownIOIntlTxns");
disableControl("#dropdownToIntlTxns");
disableControl("#btnDropdownAmountIntlTxns");
$(".dropdown-filters").tooltip();
}
}
function disableControl(selector) {
$(selector).prop("disabled", true);
}