Overview
ETH Balance
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 668 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Create | 428224 | 579 days ago | IN | 0 ETH | 0.00032533 | ||||
Create | 428222 | 579 days ago | IN | 0 ETH | 0.00031505 | ||||
Create | 427210 | 579 days ago | IN | 0 ETH | 0.00096692 | ||||
Create | 425208 | 580 days ago | IN | 0 ETH | 0.000567 | ||||
Create | 424987 | 580 days ago | IN | 0 ETH | 0.00041808 | ||||
Create | 424754 | 580 days ago | IN | 0 ETH | 0.00031868 | ||||
Create | 424500 | 580 days ago | IN | 0 ETH | 0.00031522 | ||||
Create | 424190 | 580 days ago | IN | 0 ETH | 0.00037339 | ||||
Create | 424162 | 580 days ago | IN | 0 ETH | 0.00033271 | ||||
Create | 424136 | 580 days ago | IN | 0 ETH | 0.00036846 | ||||
Create | 423815 | 580 days ago | IN | 0 ETH | 0.00037368 | ||||
Create | 423800 | 580 days ago | IN | 0 ETH | 0.0003152 | ||||
Create | 423787 | 580 days ago | IN | 0 ETH | 0.00037017 | ||||
Create | 423598 | 580 days ago | IN | 0 ETH | 0.00034296 | ||||
Create | 423427 | 580 days ago | IN | 0 ETH | 0.00034053 | ||||
Create | 423084 | 580 days ago | IN | 0 ETH | 0.00026105 | ||||
Create | 421827 | 580 days ago | IN | 0 ETH | 0.0007908 | ||||
Create | 421622 | 580 days ago | IN | 0 ETH | 0.00030136 | ||||
Create | 421606 | 580 days ago | IN | 0 ETH | 0.00030663 | ||||
Create | 421318 | 580 days ago | IN | 0 ETH | 0.00036997 | ||||
Create | 420302 | 580 days ago | IN | 0 ETH | 0.00068845 | ||||
Create | 420214 | 580 days ago | IN | 0 ETH | 0.00088101 | ||||
Create | 418742 | 581 days ago | IN | 0 ETH | 0.00083448 | ||||
Create | 418053 | 581 days ago | IN | 0 ETH | 0.00037683 | ||||
Create | 418013 | 581 days ago | IN | 0 ETH | 0.00036683 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
3772329 | 365 days ago | 0 ETH | ||||
3772301 | 365 days ago | 0 ETH | ||||
3772270 | 365 days ago | 0 ETH | ||||
3772245 | 365 days ago | 0 ETH | ||||
3772168 | 365 days ago | 0 ETH | ||||
3772078 | 365 days ago | 0 ETH | ||||
3772055 | 365 days ago | 0 ETH | ||||
3751608 | 365 days ago | 0 ETH | ||||
3751569 | 365 days ago | 0 ETH | ||||
3751554 | 365 days ago | 0 ETH | ||||
3751541 | 365 days ago | 0 ETH | ||||
3751458 | 365 days ago | 0 ETH | ||||
3750850 | 365 days ago | 0 ETH | ||||
3750824 | 365 days ago | 0 ETH | ||||
3749870 | 365 days ago | 0 ETH | ||||
3749849 | 365 days ago | 0 ETH | ||||
3749827 | 365 days ago | 0 ETH | ||||
3744951 | 366 days ago | 0 ETH | ||||
3744912 | 366 days ago | 0 ETH | ||||
3744881 | 366 days ago | 0 ETH | ||||
3744842 | 366 days ago | 0 ETH | ||||
3744253 | 366 days ago | 0 ETH | ||||
3744130 | 366 days ago | 0 ETH | ||||
3744056 | 366 days ago | 0 ETH | ||||
3741519 | 366 days ago | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
OmniseaDropsFactory
Compiler Version
v0.8.9+commit.e5eed63a
Optimization Enabled:
Yes with 1 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "../interfaces/IOmniseaERC721Psi.sol"; import "./OmniseaERC721PsiProxy.sol"; import "../interfaces/IOmniseaDropsFactory.sol"; import { CreateParams } from "../structs/erc721/ERC721Structs.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; contract OmniseaDropsFactory is IOmniseaDropsFactory, ReentrancyGuard { address internal _manager; address public owner; address public scheduler; address public universalONFT; address public omniseaERC721Psi; mapping(address => bool) public drops; event Created(address indexed collection); constructor(address _scheduler, address _universalONFT, address _omniseaERC721Psi) { owner = msg.sender; scheduler = _scheduler; universalONFT = _universalONFT; omniseaERC721Psi = _omniseaERC721Psi; } function create(CreateParams calldata _params) external override nonReentrant { OmniseaERC721PsiProxy proxy = new OmniseaERC721PsiProxy(omniseaERC721Psi); address proxyAddress = address(proxy); IOmniseaERC721Psi(proxyAddress).initialize(_params, msg.sender, _manager, scheduler, universalONFT); drops[proxyAddress] = true; emit Created(proxyAddress); } function setManager(address manager_) external { require(msg.sender == owner); _manager = manager_; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.5.0; import "@openzeppelin/contracts/utils/introspection/IERC165.sol"; import { CreateParams } from "../structs/erc721/ERC721Structs.sol"; /** * @dev Interface of the IOmniseaUniversalONFT: Universal ONFT Core through delegation */ interface IOmniseaERC721Psi is IERC165 { function initialize(CreateParams memory params, address _owner, address _dropsManagerAddress, address _scheduler, address _universalONFT) external; function mint(address _minter, uint24 _quantity, bytes32[] memory _merkleProof, uint8 _phaseId) external; function mintPrice(uint8 _phaseId) external view returns (uint256); function exists(uint256 tokenId) external view returns (bool); function owner() external view returns (address); function dropsManager() external view returns (address); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract OmniseaERC721PsiProxy { address private _proxy; constructor(address proxy_) { _proxy = proxy_; } fallback() external payable { _delegate(_proxy); } receive() external payable { _delegate(_proxy); } function _delegate(address _proxyTo) internal { assembly { let ptr := mload(0x40) calldatacopy(ptr, 0, calldatasize()) let result := delegatecall(gas(), _proxyTo, ptr, calldatasize(), 0, 0) let size := returndatasize() returndatacopy(ptr, 0, size) switch result case 0 { revert(ptr, size) } default { return(ptr, size) } } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import {CreateParams} from "../structs/erc721/ERC721Structs.sol"; interface IOmniseaDropsFactory { function create(CreateParams calldata params) external; function drops(address) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; struct CreateParams { string name; string symbol; string uri; string tokensURI; uint24 maxSupply; bool isZeroIndexed; uint24 royaltyAmount; uint256 endTime; } struct MintParams { address collection; uint24 quantity; bytes32[] merkleProof; uint8 phaseId; } struct OmnichainMintParams { address collection; uint24 quantity; uint256 paid; uint8 phaseId; address minter; } struct Phase { uint256 from; uint256 to; uint24 maxPerAddress; uint256 price; bytes32 merkleRoot; } struct BasicCollectionParams { string name; string symbol; string uri; string tokensURI; uint24 maxSupply; address owner; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol) pragma solidity ^0.8.0; /** * @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 // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); }
{ "optimizer": { "enabled": true, "runs": 1 }, "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":"_scheduler","type":"address"},{"internalType":"address","name":"_universalONFT","type":"address"},{"internalType":"address","name":"_omniseaERC721Psi","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"collection","type":"address"}],"name":"Created","type":"event"},{"inputs":[{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"uri","type":"string"},{"internalType":"string","name":"tokensURI","type":"string"},{"internalType":"uint24","name":"maxSupply","type":"uint24"},{"internalType":"bool","name":"isZeroIndexed","type":"bool"},{"internalType":"uint24","name":"royaltyAmount","type":"uint24"},{"internalType":"uint256","name":"endTime","type":"uint256"}],"internalType":"struct CreateParams","name":"_params","type":"tuple"}],"name":"create","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"drops","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"omniseaERC721Psi","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"scheduler","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"manager_","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"universalONFT","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161077c38038061077c83398101604081905261002f9161009d565b6001600055600280546001600160a01b03199081163317909155600380546001600160a01b039586169083161790556004805493851693821693909317909255600580549190931691161790556100e0565b80516001600160a01b038116811461009857600080fd5b919050565b6000806000606084860312156100b257600080fd5b6100bb84610081565b92506100c960208501610081565b91506100d760408501610081565b90509250925092565b61068d806100ef6000396000f3fe608060405234801561001057600080fd5b506004361061006d5760003560e01c80633849f410146100725780634c19eb681461009b57806362c8b9fd146100ce5780636b59f3fe146100e35780638da5cb5b146100f6578063d0ebdbe714610109578063d1ad17bf1461011c575b600080fd5b600554610085906001600160a01b031681565b60405161009291906102ef565b60405180910390f35b6100be6100a9366004610303565b60066020526000908152604090205460ff1681565b6040519015158152602001610092565b6100e16100dc366004610333565b61012f565b005b600454610085906001600160a01b031681565b600254610085906001600160a01b031681565b6100e1610117366004610303565b61029c565b600354610085906001600160a01b031681565b600260005414156101865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b600260009081556005546040516001600160a01b03909116906101a8906102d5565b6101b291906102ef565b604051809103906000f0801580156101ce573d6000803e3d6000fd5b506001546003546004805460405163c3dfab4560e01b815294955085946001600160a01b038087169563c3dfab4595610216958b95339593851694928316939216910161040b565b600060405180830381600087803b15801561023057600080fd5b505af1158015610244573d6000803e3d6000fd5b5050506001600160a01b038216600081815260066020526040808220805460ff19166001179055519192507f1449abf21e49fd025f33495e77f7b1461caefdd3d4bb646424a3f445c4576a5b91a25050600160005550565b6002546001600160a01b031633146102b357600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6101198061053f83390190565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b60006020828403121561031557600080fd5b81356001600160a01b038116811461032c57600080fd5b9392505050565b60006020828403121561034557600080fd5b81356001600160401b0381111561035b57600080fd5b8201610100818503121561032c57600080fd5b6000808335601e1984360301811261038557600080fd5b83016020810192503590506001600160401b038111156103a457600080fd5b8036038313156103b357600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803562ffffff811681146103f657600080fd5b919050565b803580151581146103f657600080fd5b60a08152600061041b878861036e565b6101008060a08601526104336101a0860183856103ba565b925061044260208b018b61036e565b9250609f19808786030160c088015261045c8585846103ba565b945061046b60408d018d61036e565b94509150808786030160e08801526104848585846103ba565b945061049360608d018d61036e565b94509150808786030183880152506104ac8484836103ba565b93505050506104bd608089016103e3565b62ffffff166101208401526104d460a089016103fb565b15156101408401526104e860c089016103e3565b62ffffff1661016084015260e0880135610180840152905061050d60208301876102e2565b61051a60408301866102e2565b61052760608301856102e2565b61053460808301846102e2565b969550505050505056fe608060405234801561001057600080fd5b5060405161011938038061011983398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6087806100926000396000f3fe608060405236601d57600054601b906001600160a01b0316602d565b005b600054601b906001600160a01b03165b60405136600082376000803683855af43d806000843e818015604d578184f35b8184fdfea2646970667358221220fa8eabba1ac43a598649c5fe28ee08745f26f609c3dca50b8fc2e0a40f4ae5ef64736f6c63430008090033a2646970667358221220cf7ff70788a7bc87bc36ad50af004c26c5730dd202bbe6ace34e4621e76c473264736f6c634300080900330000000000000000000000007f0478fc86252d4e2e34ab6b338f168a0f0f1de00000000000000000000000001f10ab6e8fafd0a1a5672224ea038307621cff6b00000000000000000000000059d7618b1c6b575a1bed48ca8fe6aa8a1df73fbd
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061006d5760003560e01c80633849f410146100725780634c19eb681461009b57806362c8b9fd146100ce5780636b59f3fe146100e35780638da5cb5b146100f6578063d0ebdbe714610109578063d1ad17bf1461011c575b600080fd5b600554610085906001600160a01b031681565b60405161009291906102ef565b60405180910390f35b6100be6100a9366004610303565b60066020526000908152604090205460ff1681565b6040519015158152602001610092565b6100e16100dc366004610333565b61012f565b005b600454610085906001600160a01b031681565b600254610085906001600160a01b031681565b6100e1610117366004610303565b61029c565b600354610085906001600160a01b031681565b600260005414156101865760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640160405180910390fd5b600260009081556005546040516001600160a01b03909116906101a8906102d5565b6101b291906102ef565b604051809103906000f0801580156101ce573d6000803e3d6000fd5b506001546003546004805460405163c3dfab4560e01b815294955085946001600160a01b038087169563c3dfab4595610216958b95339593851694928316939216910161040b565b600060405180830381600087803b15801561023057600080fd5b505af1158015610244573d6000803e3d6000fd5b5050506001600160a01b038216600081815260066020526040808220805460ff19166001179055519192507f1449abf21e49fd025f33495e77f7b1461caefdd3d4bb646424a3f445c4576a5b91a25050600160005550565b6002546001600160a01b031633146102b357600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6101198061053f83390190565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b60006020828403121561031557600080fd5b81356001600160a01b038116811461032c57600080fd5b9392505050565b60006020828403121561034557600080fd5b81356001600160401b0381111561035b57600080fd5b8201610100818503121561032c57600080fd5b6000808335601e1984360301811261038557600080fd5b83016020810192503590506001600160401b038111156103a457600080fd5b8036038313156103b357600080fd5b9250929050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803562ffffff811681146103f657600080fd5b919050565b803580151581146103f657600080fd5b60a08152600061041b878861036e565b6101008060a08601526104336101a0860183856103ba565b925061044260208b018b61036e565b9250609f19808786030160c088015261045c8585846103ba565b945061046b60408d018d61036e565b94509150808786030160e08801526104848585846103ba565b945061049360608d018d61036e565b94509150808786030183880152506104ac8484836103ba565b93505050506104bd608089016103e3565b62ffffff166101208401526104d460a089016103fb565b15156101408401526104e860c089016103e3565b62ffffff1661016084015260e0880135610180840152905061050d60208301876102e2565b61051a60408301866102e2565b61052760608301856102e2565b61053460808301846102e2565b969550505050505056fe608060405234801561001057600080fd5b5060405161011938038061011983398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6087806100926000396000f3fe608060405236601d57600054601b906001600160a01b0316602d565b005b600054601b906001600160a01b03165b60405136600082376000803683855af43d806000843e818015604d578184f35b8184fdfea2646970667358221220fa8eabba1ac43a598649c5fe28ee08745f26f609c3dca50b8fc2e0a40f4ae5ef64736f6c63430008090033a2646970667358221220cf7ff70788a7bc87bc36ad50af004c26c5730dd202bbe6ace34e4621e76c473264736f6c63430008090033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007f0478fc86252d4e2e34ab6b338f168a0f0f1de00000000000000000000000001f10ab6e8fafd0a1a5672224ea038307621cff6b00000000000000000000000059d7618b1c6b575a1bed48ca8fe6aa8a1df73fbd
-----Decoded View---------------
Arg [0] : _scheduler (address): 0x7f0478Fc86252d4e2e34ab6B338F168A0F0f1de0
Arg [1] : _universalONFT (address): 0x1f10Ab6E8FaFd0a1A5672224eA038307621CfF6b
Arg [2] : _omniseaERC721Psi (address): 0x59d7618b1C6b575A1BED48CA8Fe6aA8A1Df73FBd
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007f0478fc86252d4e2e34ab6b338f168a0f0f1de0
Arg [1] : 0000000000000000000000001f10ab6e8fafd0a1a5672224ea038307621cff6b
Arg [2] : 00000000000000000000000059d7618b1c6b575a1bed48ca8fe6aa8a1df73fbd
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.