| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| 0xcf6b39b90fa36c83e518e37030da7fcc0d62fee2333c1c8f7359406b8fea8e94 | Shield | (pending) | 3 hrs ago | IN | 0 ETH | (Pending) | |||
| Shield | 24512486 | 25 mins ago | IN | 0 ETH | 0.00004007 | ||||
| Transact | 24512383 | 46 mins ago | IN | 0 ETH | 0.00004047 | ||||
| Transact | 24512380 | 47 mins ago | IN | 0 ETH | 0.00005481 | ||||
| Shield | 24512193 | 1 hr ago | IN | 0 ETH | 0.00003385 | ||||
| Transact | 24512029 | 1 hr ago | IN | 0 ETH | 0.00005309 | ||||
| Transact | 24511969 | 2 hrs ago | IN | 0 ETH | 0.00005406 | ||||
| Transact | 24511891 | 2 hrs ago | IN | 0 ETH | 0.00005018 | ||||
| Transact | 24511690 | 3 hrs ago | IN | 0 ETH | 0.0000364 | ||||
| Transact | 24511335 | 4 hrs ago | IN | 0 ETH | 0.00003855 | ||||
| Transact | 24511201 | 4 hrs ago | IN | 0 ETH | 0.00006576 | ||||
| Transact | 24511165 | 4 hrs ago | IN | 0 ETH | 0.00006529 | ||||
| Transact | 24511142 | 4 hrs ago | IN | 0 ETH | 0.00005317 | ||||
| Transact | 24511120 | 4 hrs ago | IN | 0 ETH | 0.00005096 | ||||
| Transact | 24511016 | 5 hrs ago | IN | 0 ETH | 0.00005014 | ||||
| Transact | 24510902 | 5 hrs ago | IN | 0 ETH | 0.00004261 | ||||
| Shield | 24510795 | 6 hrs ago | IN | 0 ETH | 0.00002631 | ||||
| Transact | 24510621 | 6 hrs ago | IN | 0 ETH | 0.00004277 | ||||
| Transact | 24510597 | 6 hrs ago | IN | 0 ETH | 0.00003884 | ||||
| Transact | 24510529 | 6 hrs ago | IN | 0 ETH | 0.00004786 | ||||
| Transact | 24510517 | 7 hrs ago | IN | 0 ETH | 0.00004217 | ||||
| Transact | 24510473 | 7 hrs ago | IN | 0 ETH | 0.00003755 | ||||
| Transact | 24510341 | 7 hrs ago | IN | 0 ETH | 0.00003465 | ||||
| Shield | 24510300 | 7 hrs ago | IN | 0 ETH | 0.00002224 | ||||
| Transact | 24510205 | 8 hrs ago | IN | 0 ETH | 0.00004228 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PausableUpgradableProxy
Compiler Version
v0.8.12+commit.f00d7308
Optimization Enabled:
Yes with 1600 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.0;
pragma abicoder v2;
// OpenZeppelin v4
import { StorageSlot } from "@openzeppelin/contracts/utils/StorageSlot.sol";
import { Address } from "@openzeppelin/contracts/utils/Address.sol";
/**
* @title PausableUpgradableProxy
* @author Railgun Contributors
* @notice Delegates calls to implementation address
* @dev Calls are reverted if the contract is paused
*/
contract PausableUpgradableProxy {
// Storage slot locations
bytes32 private constant IMPLEMENTATION_SLOT = bytes32(uint256(keccak256("eip1967.proxy.implementation")) - 1);
bytes32 private constant ADMIN_SLOT = bytes32(uint256(keccak256("eip1967.proxy.admin")) - 1);
bytes32 private constant PAUSED_SLOT = bytes32(uint256(keccak256("eip1967.proxy.paused")) - 1);
// Events
event ProxyUpgrade(address previousImplementation, address newImplementation);
event ProxyOwnershipTransfer(address previousOwner, address newOwner);
event ProxyPause();
event ProxyUnpause();
/**
* @notice Sets initial specified admin value
* Implementation is set as 0x0 and contract is created as paused
* @dev Implementation must be set before unpausing
*/
constructor(address _admin) {
// Set initial value for admin
StorageSlot.getAddressSlot(ADMIN_SLOT).value = _admin;
// Explicitly initialize implementation as 0
StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = address(0);
// Explicitly initialize as paused
StorageSlot.getBooleanSlot(PAUSED_SLOT).value = true;
}
/**
* @notice Reverts if proxy is paused
*/
modifier notPaused() {
// Revert if the contract is paused
require(!StorageSlot.getBooleanSlot(PAUSED_SLOT).value, "Proxy: Contract is paused");
_;
}
/**
* @notice Delegates call to implementation
*/
function delegate() internal notPaused {
// Get implementation
address implementation = StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;
// Check that implementation exists
require(Address.isContract(implementation), "Proxy: Implementation doesn't exist");
// solhint-disable-next-line no-inline-assembly
assembly {
// Copy msg.data. We take full control of memory in this inline assembly
// block because it will not return to Solidity code. We overwrite the
// Solidity scratch pad at memory position 0.
calldatacopy(0, 0, calldatasize())
// Call the implementation.
// out and outsize are 0 because we don't know the size yet.
let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
// Copy the returned data.
returndatacopy(0, 0, returndatasize())
switch result
// delegatecall returns 0 on error.
case 0 { revert(0, returndatasize()) }
default { return(0, returndatasize()) }
}
}
/**
* @notice Prevents calls unless caller is owner
* @dev This should be on all external/public functions that aren't the fallback
*/
modifier onlyOwner() {
if (msg.sender == StorageSlot.getAddressSlot(ADMIN_SLOT).value) {
_;
} else {
// Redirect to delegate if caller isn't owner
delegate();
}
}
/**
* @notice fallback function that delegates calls with calladata
*/
fallback() external payable {
delegate();
}
/**
* @notice fallback function that delegates calls with no calladata
*/
receive() external payable {
delegate();
}
/**
* @notice Transfers ownership to new address
* @param _newOwner - Address to transfer ownership to
*/
function transferOwnership(address _newOwner) external onlyOwner {
require(_newOwner != address(0), "Proxy: Preventing potential accidental burn");
// Get admin slot
StorageSlot.AddressSlot storage admin = StorageSlot.getAddressSlot(ADMIN_SLOT);
// Emit event
emit ProxyOwnershipTransfer(admin.value, _newOwner);
// Store new admin
admin.value = _newOwner;
}
/**
* @notice Upgrades implementation
* @param _newImplementation - Address of the new implementation
*/
function upgrade(address _newImplementation) external onlyOwner {
// Get implementation slot
StorageSlot.AddressSlot storage implementation = StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT);
// If new implementation is identical to old, skip
if (implementation.value != _newImplementation) {
// Emit event
emit ProxyUpgrade(implementation.value, _newImplementation);
// Store new implementation
implementation.value = _newImplementation;
}
}
/**
* @notice Pauses contract
*/
function pause() external onlyOwner {
// Get paused slot
StorageSlot.BooleanSlot storage paused = StorageSlot.getBooleanSlot(PAUSED_SLOT);
// If not already paused, pause
if (!paused.value) {
// Set paused to true
paused.value = true;
// Emit paused event
emit ProxyPause();
}
}
/**
* @notice Unpauses contract
*/
function unpause() external onlyOwner {
// Get paused slot
StorageSlot.BooleanSlot storage paused = StorageSlot.getBooleanSlot(PAUSED_SLOT);
// If already unpaused, do nothing
if (paused.value) {
// Set paused to true
paused.value = false;
// Emit paused event
emit ProxyUnpause();
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.1 (utils/StorageSlot.sol)
pragma solidity ^0.8.0;
/**
* @dev Library for reading and writing primitive types to specific storage slots.
*
* Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.
* This library helps with reading and writing to such slots without the need for inline assembly.
*
* The functions in this library return Slot structs that contain a `value` member that can be used to read or write.
*
* Example usage to set ERC1967 implementation slot:
* ```
* contract ERC1967 {
* bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;
*
* function _getImplementation() internal view returns (address) {
* return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;
* }
*
* function _setImplementation(address newImplementation) internal {
* require(Address.isContract(newImplementation), "ERC1967: new implementation is not a contract");
* StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;
* }
* }
* ```
*
* _Available since v4.1 for `address`, `bool`, `bytes32`, and `uint256`._
*/
library StorageSlot {
struct AddressSlot {
address value;
}
struct BooleanSlot {
bool value;
}
struct Bytes32Slot {
bytes32 value;
}
struct Uint256Slot {
uint256 value;
}
/**
* @dev Returns an `AddressSlot` with member `value` located at `slot`.
*/
function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `BooleanSlot` with member `value` located at `slot`.
*/
function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
*/
function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
assembly {
r.slot := slot
}
}
/**
* @dev Returns an `Uint256Slot` with member `value` located at `slot`.
*/
function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
assembly {
r.slot := slot
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.5.0) (utils/Address.sol)
pragma solidity ^0.8.1;
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*
* [IMPORTANT]
* ====
* You shouldn't rely on `isContract` to protect against flash loan attacks!
*
* Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
* like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
* constructor.
* ====
*/
function isContract(address account) internal view returns (bool) {
// This method relies on extcodesize/address.code.length, which returns 0
// for contracts in construction, since the code is only stored at the end
// of the constructor execution.
return account.code.length > 0;
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success, ) = recipient.call{value: amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
/**
* @dev Performs a Solidity function call using a low level `call`. A
* plain `call` is an unsafe replacement for a function call: use this
* function instead.
*
* If `target` reverts with a revert reason, it is bubbled up by this
* function (like regular Solidity function calls).
*
* Returns the raw returned data. To convert to the expected return value,
* use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
*
* Requirements:
*
* - `target` must be a contract.
* - calling `target` with `data` must not revert.
*
* _Available since v3.1._
*/
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
* `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
return functionCallWithValue(target, data, 0, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but also transferring `value` wei to `target`.
*
* Requirements:
*
* - the calling contract must have an ETH balance of at least `value`.
* - the called Solidity function must be `payable`.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value
) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
/**
* @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
* with `errorMessage` as a fallback revert reason when `target` reverts.
*
* _Available since v3.1._
*/
function functionCallWithValue(
address target,
bytes memory data,
uint256 value,
string memory errorMessage
) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
require(isContract(target), "Address: call to non-contract");
(bool success, bytes memory returndata) = target.call{value: value}(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
return functionStaticCall(target, data, "Address: low-level static call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a static call.
*
* _Available since v3.3._
*/
function functionStaticCall(
address target,
bytes memory data,
string memory errorMessage
) internal view returns (bytes memory) {
require(isContract(target), "Address: static call to non-contract");
(bool success, bytes memory returndata) = target.staticcall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
return functionDelegateCall(target, data, "Address: low-level delegate call failed");
}
/**
* @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
* but performing a delegate call.
*
* _Available since v3.4._
*/
function functionDelegateCall(
address target,
bytes memory data,
string memory errorMessage
) internal returns (bytes memory) {
require(isContract(target), "Address: delegate call to non-contract");
(bool success, bytes memory returndata) = target.delegatecall(data);
return verifyCallResult(success, returndata, errorMessage);
}
/**
* @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
* revert reason using the provided one.
*
* _Available since v4.3._
*/
function verifyCallResult(
bool success,
bytes memory returndata,
string memory errorMessage
) internal pure returns (bytes memory) {
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}{
"optimizer": {
"enabled": true,
"runs": 1600
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"ProxyOwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[],"name":"ProxyPause","type":"event"},{"anonymous":false,"inputs":[],"name":"ProxyUnpause","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousImplementation","type":"address"},{"indexed":false,"internalType":"address","name":"newImplementation","type":"address"}],"name":"ProxyUpgrade","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newImplementation","type":"address"}],"name":"upgrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b506040516107f53803806107f583398101604081905261002f91610123565b8061007061005e60017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6104610153565b60001b61012060201b6100f21760201c565b80546001600160a01b0319166001600160a01b039290921691909117905560006100be61005e60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd610153565b80546001600160a01b0319166001600160a01b0392909216919091179055600161010b61005e827f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa0248711451610153565b805460ff191691151591909117905550610178565b90565b60006020828403121561013557600080fd5b81516001600160a01b038116811461014c57600080fd5b9392505050565b60008282101561017357634e487b7160e01b600052601160045260246000fd5b500390565b61066e806101876000396000f3fe6080604052600436106100435760003560e01c80630900f0101461005a5780633f4ba83a1461007a5780638456cb591461008f578063f2fde38b146100a457610052565b36610052576100506100c4565b005b6100506100c4565b34801561006657600080fd5b506100506100753660046105ca565b61021f565b34801561008657600080fd5b5061005061032d565b34801561009b57600080fd5b506100506103e7565b3480156100b057600080fd5b506100506100bf3660046105ca565b610499565b6100f56100f260017f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa02487114516105fa565b90565b5460ff161561014b5760405162461bcd60e51b815260206004820152601960248201527f50726f78793a20436f6e7472616374206973207061757365640000000000000060448201526064015b60405180910390fd5b600061017b6100f260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6105fa565b546001600160a01b03169050803b6101fb5760405162461bcd60e51b815260206004820152602360248201527f50726f78793a20496d706c656d656e746174696f6e20646f65736e277420657860448201527f69737400000000000000000000000000000000000000000000000000000000006064820152608401610142565b3660008037600080366000845af43d6000803e80801561021a573d6000f35b3d6000fd5b61024d6100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b031633141561032257600061028e6100f260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6105fa565b80549091506001600160a01b0383811691161461031e578054604080516001600160a01b03928316815291841660208301527f85aeb0b8dd2de94a068da6d2ccd785fea888eee68ec95d9a17c74446a865839d91015b60405180910390a180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161781555b5050565b61032a6100c4565b50565b61035b6100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b03163314156103dd57600061039c6100f260017f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa02487114516105fa565b805490915060ff161561032a57805460ff191681556040517f5b5349b254d5540f4586f24c7afd4c990fc8a991b611d7f2c00a020a67f2f29290600090a150565b6103e56100c4565b565b6104156100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b03163314156103dd5760006104566100f260017f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa02487114516105fa565b805490915060ff1661032a57805460ff191660011781556040517fa51641ae9e6ff3082f83f718f043efc36fa8eb06274cd78c3e7251af263ebb6f90600090a150565b6104c76100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b0316331415610322576001600160a01b0381166105545760405162461bcd60e51b815260206004820152602b60248201527f50726f78793a2050726576656e74696e6720706f74656e7469616c206163636960448201527f64656e74616c206275726e0000000000000000000000000000000000000000006064820152608401610142565b60006105846100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b8054604080516001600160a01b03928316815291851660208301529192507fab1e9974b911ffe4a29b0d786b57a5f5defde2e77960d0e9f954b053e7de325991016102e4565b6000602082840312156105dc57600080fd5b81356001600160a01b03811681146105f357600080fd5b9392505050565b600082821015610633577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220ae6409b31636b2af19fdc845ae6d02b8ad636c9274188f3d6fae1649e8f0a40164736f6c634300080c00330000000000000000000000004f8e20f55f879bee7bc010bd6bd2138b34ac65c8
Deployed Bytecode
0x6080604052600436106100435760003560e01c80630900f0101461005a5780633f4ba83a1461007a5780638456cb591461008f578063f2fde38b146100a457610052565b36610052576100506100c4565b005b6100506100c4565b34801561006657600080fd5b506100506100753660046105ca565b61021f565b34801561008657600080fd5b5061005061032d565b34801561009b57600080fd5b506100506103e7565b3480156100b057600080fd5b506100506100bf3660046105ca565b610499565b6100f56100f260017f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa02487114516105fa565b90565b5460ff161561014b5760405162461bcd60e51b815260206004820152601960248201527f50726f78793a20436f6e7472616374206973207061757365640000000000000060448201526064015b60405180910390fd5b600061017b6100f260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6105fa565b546001600160a01b03169050803b6101fb5760405162461bcd60e51b815260206004820152602360248201527f50726f78793a20496d706c656d656e746174696f6e20646f65736e277420657860448201527f69737400000000000000000000000000000000000000000000000000000000006064820152608401610142565b3660008037600080366000845af43d6000803e80801561021a573d6000f35b3d6000fd5b61024d6100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b031633141561032257600061028e6100f260017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd6105fa565b80549091506001600160a01b0383811691161461031e578054604080516001600160a01b03928316815291841660208301527f85aeb0b8dd2de94a068da6d2ccd785fea888eee68ec95d9a17c74446a865839d91015b60405180910390a180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383161781555b5050565b61032a6100c4565b50565b61035b6100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b03163314156103dd57600061039c6100f260017f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa02487114516105fa565b805490915060ff161561032a57805460ff191681556040517f5b5349b254d5540f4586f24c7afd4c990fc8a991b611d7f2c00a020a67f2f29290600090a150565b6103e56100c4565b565b6104156100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b03163314156103dd5760006104566100f260017f8dea8703c3cf94703383ce38a9c894669dccd4ca8e65ddb43267aa02487114516105fa565b805490915060ff1661032a57805460ff191660011781556040517fa51641ae9e6ff3082f83f718f043efc36fa8eb06274cd78c3e7251af263ebb6f90600090a150565b6104c76100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b546001600160a01b0316331415610322576001600160a01b0381166105545760405162461bcd60e51b815260206004820152602b60248201527f50726f78793a2050726576656e74696e6720706f74656e7469616c206163636960448201527f64656e74616c206275726e0000000000000000000000000000000000000000006064820152608401610142565b60006105846100f260017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61046105fa565b8054604080516001600160a01b03928316815291851660208301529192507fab1e9974b911ffe4a29b0d786b57a5f5defde2e77960d0e9f954b053e7de325991016102e4565b6000602082840312156105dc57600080fd5b81356001600160a01b03811681146105f357600080fd5b9392505050565b600082821015610633577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50039056fea2646970667358221220ae6409b31636b2af19fdc845ae6d02b8ad636c9274188f3d6fae1649e8f0a40164736f6c634300080c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000004f8e20f55f879bee7bc010bd6bd2138b34ac65c8
-----Decoded View---------------
Arg [0] : _admin (address): 0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000004f8e20f55f879bee7bc010bd6bd2138b34ac65c8
Loading...
Loading
Loading...
Loading
Net Worth in USD
$87,051,445.06
Net Worth in ETH
44,305.163794
Token Allocations
WETH
47.13%
USDT
25.60%
USDC
12.17%
Others
15.10%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 44.84% | $1,964.81 | 19,866.4521 | $39,033,900.71 | |
| ETH | 25.60% | $0.999758 | 22,294,892.4299 | $22,289,497.07 | |
| ETH | 11.30% | $0.999971 | 9,838,889.895 | $9,838,604.57 | |
| ETH | 10.96% | $0.999907 | 9,538,492.0635 | $9,537,604.98 | |
| ETH | 0.98% | $1.02 | 832,877.5825 | $850,368.01 | |
| ETH | 0.92% | $76,149 | 10.5542 | $803,692.99 | |
| ETH | 0.64% | $1.3 | 426,787.2351 | $554,823.41 | |
| ETH | 0.41% | $2.08 | 170,724.4986 | $355,106.96 | |
| ETH | 0.11% | $1.18 | 82,199.005 | $96,994.83 | |
| ETH | 0.05% | $1.09 | 41,227.513 | $44,773.08 | |
| ETH | 0.03% | $0.007676 | 3,295,371.5097 | $25,295.95 | |
| ETH | 0.03% | $5,135.5 | 4.3707 | $22,445.83 | |
| ETH | 0.02% | $0.262564 | 75,908.9508 | $19,930.96 | |
| ETH | 0.02% | $176.79 | 106.8055 | $18,882.15 | |
| ETH | 0.02% | $5,098.08 | 3.5843 | $18,272.86 | |
| ETH | 0.01% | $0.039511 | 273,323.4427 | $10,799.25 | |
| ETH | 0.01% | $0.020119 | 533,954.6704 | $10,742.8 | |
| ETH | <0.01% | $0.000062 | 134,749,497.96 | $8,289.79 | |
| ETH | <0.01% | $0.084516 | 84,578.1781 | $7,148.21 | |
| ETH | <0.01% | $118.29 | 54.261 | $6,418.53 | |
| ETH | <0.01% | $0.000779 | 8,216,370.58 | $6,399.81 | |
| ETH | <0.01% | $1.01 | 5,953.949 | $5,984.92 | |
| ETH | <0.01% | $0.000004 | 1,293,371,309.3079 | $5,276.95 | |
| ETH | <0.01% | $3.51 | 1,431.9838 | $5,026.26 | |
| ETH | <0.01% | $8.76 | 539.9715 | $4,730.15 | |
| ETH | <0.01% | $0.164761 | 26,867.4349 | $4,426.71 | |
| ETH | <0.01% | $0.020638 | 184,941.4875 | $3,816.91 | |
| ETH | <0.01% | $1 | 3,611.04 | $3,611.04 | |
| ETH | <0.01% | $0.311822 | 9,691.3436 | $3,021.97 | |
| ETH | <0.01% | $0.007254 | 400,000 | $2,901.69 | |
| ETH | <0.01% | $3.58 | 747.3481 | $2,674.15 | |
| ETH | <0.01% | $0.02079 | 106,331.7767 | $2,210.63 | |
| ETH | <0.01% | $1,533.8 | 0.9998 | $1,533.51 | |
| ETH | <0.01% | $6.44 | 230.7824 | $1,486.24 | |
| ETH | <0.01% | $0.290264 | 4,240 | $1,230.72 | |
| ETH | <0.01% | $0.000045 | 22,939,581.9553 | $1,042.6 | |
| ETH | <0.01% | <$0.000001 | 80,470,632,538.3618 | $576.41 | |
| ETH | <0.01% | $194.74 | 2.4308 | $473.38 | |
| ETH | <0.01% | $0.106275 | 4,149.7443 | $441.01 | |
| ETH | <0.01% | $1.58 | 216.9363 | $342.76 | |
| ETH | <0.01% | $0.03439 | 9,481.9327 | $326.09 | |
| ETH | <0.01% | $0.304316 | 1,000 | $304.32 | |
| ETH | <0.01% | $0.000006 | 44,733,433.919 | $277.35 | |
| ETH | <0.01% | $0.017098 | 8,435.5056 | $144.23 | |
| ETH | <0.01% | $0.295464 | 287.2803 | $84.88 | |
| ETH | <0.01% | <$0.000001 | 1,257,930,140.1017 | $78.56 | |
| ETH | <0.01% | $0.121862 | 642.9281 | $78.35 | |
| ETH | <0.01% | <$0.000001 | 386,671,255.0338 | $64.63 | |
| ETH | <0.01% | $1.2 | 49.8246 | $59.79 | |
| ETH | <0.01% | $16.11 | 3.6468 | $58.75 | |
| ETH | <0.01% | $0.03121 | 1,863.9039 | $58.17 | |
| ETH | <0.01% | $0.00222 | 25,739.0734 | $57.13 | |
| ETH | <0.01% | $0.284847 | 199.5 | $56.83 | |
| ETH | <0.01% | $1.01 | 55.5689 | $55.85 | |
| ETH | <0.01% | $0.020852 | 2,144.0144 | $44.71 | |
| ETH | <0.01% | $0.000032 | 1,303,984.1551 | $42.14 | |
| ETH | <0.01% | $0.005078 | 8,268.5779 | $41.99 | |
| ETH | <0.01% | $0.017394 | 1,990.0125 | $34.61 | |
| ETH | <0.01% | $0.117302 | 227.8699 | $26.73 | |
| ETH | <0.01% | $0.00373 | 6,982.5 | $26.04 | |
| ETH | <0.01% | $1.18 | 19.95 | $23.5 | |
| ETH | <0.01% | $1.18 | 19.95 | $23.5 | |
| ETH | <0.01% | $0.994262 | 19.7471 | $19.63 | |
| ETH | <0.01% | $0.000185 | 99,750 | $18.42 | |
| ETH | <0.01% | $1.34 | 12.1332 | $16.26 | |
| ETH | <0.01% | $0.026925 | 598.5 | $16.11 | |
| ETH | <0.01% | $0.092113 | 130.4559 | $12.02 | |
| ETH | <0.01% | $0.08357 | 132.9297 | $11.11 | |
| ETH | <0.01% | $0.627604 | 15.8782 | $9.97 | |
| ETH | <0.01% | $0.998928 | 9.975 | $9.96 | |
| ETH | <0.01% | $0.020844 | 454.0621 | $9.46 | |
| ETH | <0.01% | $0.655857 | 12.6338 | $8.29 | |
| ETH | <0.01% | <$0.000001 | 4,987,500,000 | $7.58 | |
| ETH | <0.01% | $0.935646 | 7.8643 | $7.36 | |
| ETH | <0.01% | $0.094632 | 72.3311 | $6.84 | |
| ETH | <0.01% | $0.01344 | 498.75 | $6.7 | |
| ETH | <0.01% | $0.00415 | 1,496.25 | $6.21 | |
| ETH | <0.01% | $3,455.04 | 0.00172012 | $5.94 | |
| ETH | <0.01% | $0.000021 | 253,025.0033 | $5.28 | |
| ETH | <0.01% | $0.0513 | 101.2531 | $5.19 | |
| ETH | <0.01% | $1.89 | 2.7388 | $5.17 | |
| ETH | <0.01% | $0.228888 | 21.8773 | $5.01 | |
| ETH | <0.01% | $0.000838 | 4,918.3149 | $4.12 | |
| ETH | <0.01% | $0.000006 | 619,182.5268 | $3.98 | |
| ETH | <0.01% | $0.40041 | 6.0528 | $2.42 | |
| ETH | <0.01% | $0.000207 | 11,616.1656 | $2.4 | |
| ETH | <0.01% | $0.000693 | 3,243.6473 | $2.25 | |
| ETH | <0.01% | $0.309733 | 5.5928 | $1.73 | |
| ETH | <0.01% | $0.001425 | 1,119.3631 | $1.6 | |
| ETH | <0.01% | $1.49 | 1.0322 | $1.54 | |
| ETH | <0.01% | $0.081713 | 17.6402 | $1.44 | |
| ETH | <0.01% | $2,767.01 | 0.00050131 | $1.39 | |
| ETH | <0.01% | $0.308107 | 4.01 | $1.24 | |
| ETH | <0.01% | $0.064462 | 14.6301 | $0.943 | |
| ETH | <0.01% | $0.000858 | 997.5 | $0.8563 | |
| ETH | <0.01% | $0.081376 | 10.5126 | $0.8554 | |
| ETH | <0.01% | <$0.000001 | 7,769,000 | $0.7337 | |
| ETH | <0.01% | $0.406203 | 1.715 | $0.6966 | |
| ETH | <0.01% | $0.000007 | 99,750 | $0.6583 | |
| ETH | <0.01% | $0.001522 | 419.2709 | $0.6379 | |
| ETH | <0.01% | $2,624.38 | 0.00022342 | $0.5863 | |
| ETH | <0.01% | $0.106268 | 4.9875 | $0.53 | |
| ETH | <0.01% | $0.074143 | 5.985 | $0.4437 | |
| ETH | <0.01% | $0.000004 | 100,000.697 | $0.425 | |
| ETH | <0.01% | $0.032746 | 8.8161 | $0.2886 | |
| ETH | <0.01% | $0.000262 | 1,000 | $0.2615 | |
| ETH | <0.01% | $0.200449 | 1.225 | $0.2455 | |
| ETH | <0.01% | $0.99964 | 0.1978 | $0.1977 | |
| ETH | <0.01% | $0.00 | 0.0154 | $0.00 | |
| ETH | <0.01% | $0.99981 | 0.1574 | $0.1573 | |
| ETH | <0.01% | $0.002119 | 66.6737 | $0.1413 | |
| ETH | <0.01% | $0.125446 | 0.9975 | $0.1251 | |
| ETH | <0.01% | $0.000967 | 103.5968 | $0.1002 | |
| ARB | 2.29% | $2,258.88 | 880.6887 | $1,989,370.11 | |
| ARB | 1.21% | $0.999901 | 1,054,360.0917 | $1,054,255.71 | |
| ARB | 0.20% | $0.998438 | 170,097.954 | $169,832.26 | |
| ARB | 0.14% | $76,177 | 1.6508 | $125,750.64 | |
| ARB | 0.05% | $0.99991 | 44,530.4757 | $44,526.47 | |
| ARB | 0.04% | $0.999901 | 35,166.0603 | $35,162.58 | |
| ARB | <0.01% | $0.002741 | 2,000,000 | $5,481.05 | |
| ARB | <0.01% | $2,624.38 | 1.2389 | $3,251.33 | |
| ARB | <0.01% | $0.266549 | 10,072.755 | $2,684.88 | |
| ARB | <0.01% | $8.75 | 299.9469 | $2,624.54 | |
| ARB | <0.01% | $0.094356 | 24,677.4488 | $2,328.47 | |
| ARB | <0.01% | $0.000004 | 273,437,549.9054 | $1,112.89 | |
| ARB | <0.01% | $2,317.13 | 0.4236 | $981.62 | |
| ARB | <0.01% | $0.005385 | 101,745 | $547.93 | |
| ARB | <0.01% | $0.758473 | 418.6778 | $317.56 | |
| ARB | <0.01% | $0.003815 | 47,305.9335 | $180.46 | |
| ARB | <0.01% | $0.000482 | 43,967.3261 | $21.19 | |
| ARB | <0.01% | $3.51 | 2.5001 | $8.78 | |
| ARB | <0.01% | $77.98 | 0.0215 | $1.68 | |
| ARB | <0.01% | $0.001375 | 997.5 | $1.37 | |
| ARB | <0.01% | $0.005542 | 89.75 | $0.4973 | |
| ARB | <0.01% | $0.145583 | 2.415 | $0.3515 | |
| ARB | <0.01% | $6.36 | 0.0388 | $0.2466 | |
| ARB | <0.01% | $0.00 | 500 | $0.00 | |
| ARB | <0.01% | $0.228703 | 0.855 | $0.1955 | |
| BASE | <0.01% | $0.019895 | 320 | $6.37 | |
| BASE | <0.01% | $0.00 | 521.7777 | $0.00 | |
| BASE | <0.01% | $0.00 | 225 | $0.00 | |
| BASE | <0.01% | $0.000001 | 225,004.2069 | $0.1353 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.