Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| 0x60803461 | 19263857 | 625 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
NameWrapperProxy
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 1 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
//SPDX-License-Identifier: UNLICENSED
pragma solidity ~0.8.20;
import {INameWrapper} from "./ens/INameWrapper.sol";
import {Controllable} from "./controllers/Controllable.sol";
import {INameWrapperProxy} from "./INameWrapperProxy.sol";
contract NameWrapperProxy is Controllable, INameWrapperProxy {
INameWrapper nameWrapper;
constructor(
address _nameWrapperAddress
) {
nameWrapper = INameWrapper(_nameWrapperAddress);
}
function setSubnodeRecord(
bytes32 node,
string calldata label,
address owner,
address resolver,
uint64 ttl,
uint32 fuses,
uint64 expiry
) external onlyController returns (bytes32) {
bytes32 subnameNode = _namehash(node, label);
require(
nameWrapper.ownerOf(uint256(subnameNode)) == address(0),
"Subname is not available"
);
return
nameWrapper.setSubnodeRecord(
node,
label,
owner,
resolver,
ttl,
fuses,
expiry
);
}
function setFuses(
bytes32 node,
uint16 ownerControlledFuses
) external onlyController returns (uint32 newFuses) {
return
nameWrapper.setFuses(
node,
ownerControlledFuses
);
}
function setNameWrapperAddress(
address _nameWrapperAddress
) external onlyOwner {
nameWrapper = INameWrapper(_nameWrapperAddress);
}
function _namehash(
bytes32 parentNode,
string memory nameLabel
) internal pure returns (bytes32) {
return keccak256(abi.encodePacked(parentNode, _labelhash(nameLabel)));
}
function _labelhash(string memory label) internal pure returns (bytes32) {
return keccak256(bytes(label));
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (token/ERC1155/IERC1155.sol)
pragma solidity ^0.8.20;
import {IERC165} from "../../utils/introspection/IERC165.sol";
/**
* @dev Required interface of an ERC1155 compliant contract, as defined in the
* https://eips.ethereum.org/EIPS/eip-1155[EIP].
*/
interface IERC1155 is IERC165 {
/**
* @dev Emitted when `value` amount of tokens of type `id` are transferred from `from` to `to` by `operator`.
*/
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);
/**
* @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all
* transfers.
*/
event TransferBatch(
address indexed operator,
address indexed from,
address indexed to,
uint256[] ids,
uint256[] values
);
/**
* @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to
* `approved`.
*/
event ApprovalForAll(address indexed account, address indexed operator, bool approved);
/**
* @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.
*
* If an {URI} event was emitted for `id`, the standard
* https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value
* returned by {IERC1155MetadataURI-uri}.
*/
event URI(string value, uint256 indexed id);
/**
* @dev Returns the value of tokens of token type `id` owned by `account`.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function balanceOf(address account, uint256 id) external view returns (uint256);
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.
*
* Requirements:
*
* - `accounts` and `ids` must have the same length.
*/
function balanceOfBatch(
address[] calldata accounts,
uint256[] calldata ids
) external view returns (uint256[] memory);
/**
* @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,
*
* Emits an {ApprovalForAll} event.
*
* Requirements:
*
* - `operator` cannot be the caller.
*/
function setApprovalForAll(address operator, bool approved) external;
/**
* @dev Returns true if `operator` is approved to transfer ``account``'s tokens.
*
* See {setApprovalForAll}.
*/
function isApprovedForAll(address account, address operator) external view returns (bool);
/**
* @dev Transfers a `value` amount of tokens of type `id` from `from` to `to`.
*
* WARNING: This function can potentially allow a reentrancy attack when transferring tokens
* to an untrusted contract, when invoking {onERC1155Received} on the receiver.
* Ensure to follow the checks-effects-interactions pattern and consider employing
* reentrancy guards when interacting with untrusted contracts.
*
* Emits a {TransferSingle} event.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - If the caller is not `from`, it must have been approved to spend ``from``'s tokens via {setApprovalForAll}.
* - `from` must have a balance of tokens of type `id` of at least `value` amount.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the
* acceptance magic value.
*/
function safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes calldata data) external;
/**
* @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.
*
* WARNING: This function can potentially allow a reentrancy attack when transferring tokens
* to an untrusted contract, when invoking {onERC1155BatchReceived} on the receiver.
* Ensure to follow the checks-effects-interactions pattern and consider employing
* reentrancy guards when interacting with untrusted contracts.
*
* Emits either a {TransferSingle} or a {TransferBatch} event, depending on the length of the array arguments.
*
* Requirements:
*
* - `ids` and `values` must have the same length.
* - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the
* acceptance magic value.
*/
function safeBatchTransferFrom(
address from,
address to,
uint256[] calldata ids,
uint256[] calldata values,
bytes calldata data
) external;
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (utils/introspection/IERC165.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC165 standard, as defined in the
* https://eips.ethereum.org/EIPS/eip-165[EIP].
*
* Implementers can declare support of contract interfaces, which can then be
* queried by others ({ERC165Checker}).
*
* For an implementation, see {ERC165}.
*/
interface IERC165 {
/**
* @dev Returns true if this contract implements the interface defined by
* `interfaceId`. See the corresponding
* https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]
* to learn more about how these ids are created.
*
* This function call must use less than 30 000 gas.
*/
function supportsInterface(bytes4 interfaceId) external view returns (bool);
}//SPDX-License-Identifier: MIT
pragma solidity ~0.8.20;
import "@openzeppelin/contracts/access/Ownable.sol";
contract Controllable is Ownable {
mapping(address => bool) public controllers;
event ControllerChanged(address indexed controller, bool enabled);
constructor() Ownable(msg.sender) {}
modifier onlyController() {
require(
controllers[msg.sender],
"Controllable: Caller is not a controller"
);
_;
}
function setController(address controller, bool enabled) public onlyOwner {
controllers[controller] = enabled;
emit ControllerChanged(controller, enabled);
}
}//SPDX-License-Identifier: MIT
pragma solidity ~0.8.20;
import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol";
uint32 constant CANNOT_UNWRAP = 1;
interface INameWrapper is IERC1155 {
error Unauthorised(bytes32 node, address addr);
error IncompatibleParent();
error IncorrectTokenType();
error LabelMismatch(bytes32 labelHash, bytes32 expectedLabelhash);
error LabelTooShort();
error LabelTooLong(string label);
error IncorrectTargetOwner(address owner);
error CannotUpgrade();
error OperationProhibited(bytes32 node);
error NameIsNotWrapped();
error NameIsStillExpired();
function ownerOf(uint256 id) external view returns (address owner);
function setSubnodeRecord(
bytes32 node,
string calldata label,
address owner,
address resolver,
uint64 ttl,
uint32 fuses,
uint64 expiry
) external returns (bytes32);
function setFuses(
bytes32 node,
uint16 ownerControlledFuses
) external returns (uint32 newFuses);
}//SPDX-License-Identifier: UNLICENSED
pragma solidity ~0.8.20;
interface INameWrapperProxy {
function setSubnodeRecord(
bytes32 node,
string calldata label,
address owner,
address resolver,
uint64 ttl,
uint32 fuses,
uint64 expiry
) external returns (bytes32);
function setFuses(
bytes32 node,
uint16 ownerControlledFuses
) external returns (uint32 newFuses);
}{
"viaIR": true,
"optimizer": {
"enabled": true,
"runs": 1
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_nameWrapperAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"ControllerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"controllers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"controller","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint16","name":"ownerControlledFuses","type":"uint16"}],"name":"setFuses","outputs":[{"internalType":"uint32","name":"newFuses","type":"uint32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_nameWrapperAddress","type":"address"}],"name":"setNameWrapperAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"string","name":"label","type":"string"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"resolver","type":"address"},{"internalType":"uint64","name":"ttl","type":"uint64"},{"internalType":"uint32","name":"fuses","type":"uint32"},{"internalType":"uint64","name":"expiry","type":"uint64"}],"name":"setSubnodeRecord","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080346100c657601f61085138819003918201601f19168301916001600160401b038311848410176100cb578084926020946040528339810103126100c657516001600160a01b0390818116908190036100c65733156100ad5760005460018060a01b0319903382821617600055604051933391167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a3600254161760025561076f90816100e28239f35b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b634e487b7160e01b600052604160045260246000fdfe6080604052600436101561001257600080fd5b60003560e01c806324c1af4414610334578063327b11ed146102f1578063402906fc1461021b578063715018a6146101d45780638da5cb5b146101ab578063da8c229e1461016c578063e0dba60f146100ed5763f2fde38b1461007457600080fd5b346100e85760203660031901126100e85761008d610657565b61009561066d565b6001600160a01b039081169081156100cf576000548260018060a01b03198216176000551660008051602061071a833981519152600080a3005b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b346100e85760403660031901126100e857610106610657565b602435908115158092036100e85760207f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf879161014061066d565b60018060a01b0316928360005260018252604060002060ff1981541660ff8316179055604051908152a2005b346100e85760203660031901126100e8576001600160a01b0361018d610657565b166000526001602052602060ff604060002054166040519015158152f35b346100e85760003660031901126100e8576000546040516001600160a01b039091168152602090f35b346100e85760003660031901126100e8576101ed61066d565b600080546001600160a01b0319811682556001600160a01b031660008051602061071a8339815191528280a3005b346100e85760403660031901126100e85760243561ffff81168091036100e857336000526000602080926001825261025960ff604085205416610699565b60025460405163100a41bf60e21b8152600480359082015260248101929092529092839160449183916001600160a01b03165af19081156102e5576000916102ab575b5063ffffffff60405191168152f35b90508181813d83116102de575b6102c281836106f6565b810103126100e8575163ffffffff811681036100e8578261029c565b503d6102b8565b6040513d6000823e3d90fd5b346100e85760203660031901126100e85761030a610657565b61031261066d565b600280546001600160a01b0319166001600160a01b0392909216919091179055005b346100e85760e03660031901126100e8576001600160401b03602435116100e8573660236024350112156100e8576001600160401b0360046024350135116100e85736602480356004013581350101116100e8576044356001600160a01b03811681036100e857606435906001600160a01b03821682036100e8576084356001600160401b03811681036100e85760a4359263ffffffff841684036100e85760c435906001600160401b03821682036100e85733600052600160205261040160ff60406000205416610699565b60405161041e60046024350135601f01601f1916602001826106f6565b60248035600481013580845291016020830137600060206024356004013583010152602081519101209160405192600435602085015260408401526040835282606081011060018060401b036060850111176106415760608301604081905283516020808601919091206002546331a9108f60e11b845260648701919091526001600160a01b03169491602481875afa9081156102e5576000916105f9575b506001600160a01b03166105b95760209460009163ffffffff60405198899788966309306bd160e21b8852600435600489015260e060248901526024356004013560e489015261010495602435600401356024803501888b01376024356004013589810188018990526001600160a01b0391821660448b0152911660648901526001600160401b0391821660848901529190921660a4870152911660c4850152601f01601f1916830183900301925af180156102e557600090610586575b602090604051908152f35b506020813d6020116105b1575b816105a0602093836106f6565b810103126100e8576020905161057b565b3d9150610593565b60405162461bcd60e51b81526020600482015260186024820152775375626e616d65206973206e6f7420617661696c61626c6560401b6044820152606490fd5b90506020813d602011610639575b81610617602093606084016106f6565b810103126100e857606001516001600160a01b03811681036100e857876104bd565b3d9150610607565b634e487b7160e01b600052604160045260246000fd5b600435906001600160a01b03821682036100e857565b6000546001600160a01b0316330361068157565b60405163118cdaa760e01b8152336004820152602490fd5b156106a057565b60405162461bcd60e51b815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f604482015267373a3937b63632b960c11b6064820152608490fd5b601f909101601f19168101906001600160401b038211908210176106415760405256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212208611963cd1dbf0884f211ba5be1d0217cf8f62db7dfe8eeb1d735662df41196864736f6c63430008140033000000000000000000000000d4416b13d2b3a9abae7acd5d6c2bbdbe25686401
Deployed Bytecode
0x6080604052600436101561001257600080fd5b60003560e01c806324c1af4414610334578063327b11ed146102f1578063402906fc1461021b578063715018a6146101d45780638da5cb5b146101ab578063da8c229e1461016c578063e0dba60f146100ed5763f2fde38b1461007457600080fd5b346100e85760203660031901126100e85761008d610657565b61009561066d565b6001600160a01b039081169081156100cf576000548260018060a01b03198216176000551660008051602061071a833981519152600080a3005b604051631e4fbdf760e01b815260006004820152602490fd5b600080fd5b346100e85760403660031901126100e857610106610657565b602435908115158092036100e85760207f4c97694570a07277810af7e5669ffd5f6a2d6b74b6e9a274b8b870fd5114cf879161014061066d565b60018060a01b0316928360005260018252604060002060ff1981541660ff8316179055604051908152a2005b346100e85760203660031901126100e8576001600160a01b0361018d610657565b166000526001602052602060ff604060002054166040519015158152f35b346100e85760003660031901126100e8576000546040516001600160a01b039091168152602090f35b346100e85760003660031901126100e8576101ed61066d565b600080546001600160a01b0319811682556001600160a01b031660008051602061071a8339815191528280a3005b346100e85760403660031901126100e85760243561ffff81168091036100e857336000526000602080926001825261025960ff604085205416610699565b60025460405163100a41bf60e21b8152600480359082015260248101929092529092839160449183916001600160a01b03165af19081156102e5576000916102ab575b5063ffffffff60405191168152f35b90508181813d83116102de575b6102c281836106f6565b810103126100e8575163ffffffff811681036100e8578261029c565b503d6102b8565b6040513d6000823e3d90fd5b346100e85760203660031901126100e85761030a610657565b61031261066d565b600280546001600160a01b0319166001600160a01b0392909216919091179055005b346100e85760e03660031901126100e8576001600160401b03602435116100e8573660236024350112156100e8576001600160401b0360046024350135116100e85736602480356004013581350101116100e8576044356001600160a01b03811681036100e857606435906001600160a01b03821682036100e8576084356001600160401b03811681036100e85760a4359263ffffffff841684036100e85760c435906001600160401b03821682036100e85733600052600160205261040160ff60406000205416610699565b60405161041e60046024350135601f01601f1916602001826106f6565b60248035600481013580845291016020830137600060206024356004013583010152602081519101209160405192600435602085015260408401526040835282606081011060018060401b036060850111176106415760608301604081905283516020808601919091206002546331a9108f60e11b845260648701919091526001600160a01b03169491602481875afa9081156102e5576000916105f9575b506001600160a01b03166105b95760209460009163ffffffff60405198899788966309306bd160e21b8852600435600489015260e060248901526024356004013560e489015261010495602435600401356024803501888b01376024356004013589810188018990526001600160a01b0391821660448b0152911660648901526001600160401b0391821660848901529190921660a4870152911660c4850152601f01601f1916830183900301925af180156102e557600090610586575b602090604051908152f35b506020813d6020116105b1575b816105a0602093836106f6565b810103126100e8576020905161057b565b3d9150610593565b60405162461bcd60e51b81526020600482015260186024820152775375626e616d65206973206e6f7420617661696c61626c6560401b6044820152606490fd5b90506020813d602011610639575b81610617602093606084016106f6565b810103126100e857606001516001600160a01b03811681036100e857876104bd565b3d9150610607565b634e487b7160e01b600052604160045260246000fd5b600435906001600160a01b03821682036100e857565b6000546001600160a01b0316330361068157565b60405163118cdaa760e01b8152336004820152602490fd5b156106a057565b60405162461bcd60e51b815260206004820152602860248201527f436f6e74726f6c6c61626c653a2043616c6c6572206973206e6f74206120636f604482015267373a3937b63632b960c11b6064820152608490fd5b601f909101601f19168101906001600160401b038211908210176106415760405256fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0a26469706673582212208611963cd1dbf0884f211ba5be1d0217cf8f62db7dfe8eeb1d735662df41196864736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000d4416b13d2b3a9abae7acd5d6c2bbdbe25686401
-----Decoded View---------------
Arg [0] : _nameWrapperAddress (address): 0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000d4416b13d2b3a9abae7acd5d6c2bbdbe25686401
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.