Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 220 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Burn Batch | 19245740 | 338 days ago | IN | 0 ETH | 0.00590931 | ||||
Burn Batch | 19209211 | 343 days ago | IN | 0 ETH | 0.0042553 | ||||
Burn Batch | 19198141 | 344 days ago | IN | 0 ETH | 0.00561539 | ||||
Burn Batch | 19170744 | 348 days ago | IN | 0 ETH | 0.00716823 | ||||
Burn Batch | 19120599 | 355 days ago | IN | 0 ETH | 0.02145489 | ||||
Burn Batch | 19119166 | 356 days ago | IN | 0 ETH | 0.00749695 | ||||
Burn Batch | 19055319 | 365 days ago | IN | 0 ETH | 0.00607393 | ||||
Burn Batch | 19047624 | 366 days ago | IN | 0 ETH | 0.00759478 | ||||
Burn Batch | 19033689 | 368 days ago | IN | 0 ETH | 0.00699399 | ||||
Burn Batch | 18907090 | 385 days ago | IN | 0 ETH | 0.00387053 | ||||
Burn Batch | 18739053 | 409 days ago | IN | 0 ETH | 0.0076559 | ||||
Burn Batch | 18518874 | 440 days ago | IN | 0 ETH | 0.00471169 | ||||
Burn Batch | 18488130 | 444 days ago | IN | 0 ETH | 0.00440762 | ||||
Burn Batch | 18418221 | 454 days ago | IN | 0 ETH | 0.00299503 | ||||
Burn Batch | 18315453 | 468 days ago | IN | 0 ETH | 0.00234413 | ||||
Burn Batch | 18296044 | 471 days ago | IN | 0 ETH | 0.00145349 | ||||
Burn Batch | 18263244 | 475 days ago | IN | 0 ETH | 0.00357236 | ||||
Burn Batch | 18230291 | 480 days ago | IN | 0 ETH | 0.00169462 | ||||
Burn Batch | 18138230 | 493 days ago | IN | 0 ETH | 0.0023777 | ||||
Burn Batch | 18051260 | 505 days ago | IN | 0 ETH | 0.00033004 | ||||
Burn Batch | 18051247 | 505 days ago | IN | 0 ETH | 0.00219853 | ||||
Burn Batch | 17637909 | 563 days ago | IN | 0 ETH | 0.00466418 | ||||
Burn Batch | 17610877 | 567 days ago | IN | 0 ETH | 0.00312176 | ||||
Burn Batch | 17557656 | 574 days ago | IN | 0 ETH | 0.00302348 | ||||
Burn Batch | 17551822 | 575 days ago | IN | 0 ETH | 0.00265647 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
OrdinalsBurnRegistry
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 50 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import "erc721a/contracts/extensions/IERC721ABurnable.sol"; contract OrdinalsBurnRegistry { /// @notice Contract to register ordinals burns for IERC721ABurnable public burnableContract; /// @notice Stored burn data mapping(uint256 => OrdinalsBurnDetails) public burnDetails; /// @notice Burn details struct OrdinalsBurnDetails { /// @notice Token ID in the ETH contract (Not Ordinals ID) uint256 tokenId; /// @notice ETH address of the NFT contract address contractAddress; /// @notice ETH address of the owner address ownerEthAddress; /// @notice Target ordinals address of the owner string ownerOrdinalsAddress; /// @notice Whether token is burned or not bool burned; } /// @notice Event emitted when a token is burned /// @param tokenId Token ID in the ETH contract (Not Ordinals ID) /// @param contractAddress ETH address of the NFT contract /// @param ownerEthAddress ETH address of the owner /// @param ownerOrdinalsAddress Target ordinals address of the owner event OrdinalsBurned( uint256 indexed tokenId, address indexed contractAddress, address ownerEthAddress, string ownerOrdinalsAddress ); constructor(address contractAddress) { burnableContract = IERC721ABurnable(contractAddress); } /// @notice Burns the given token ID, registers the burn details and emits a OrdinalsBurned event /// @param tokenId Token ID to be burned /// @param ordinalsAddress Target ordinals address to receive the ordinal function burn(uint256 tokenId, string calldata ordinalsAddress) public { burnableContract.burn(tokenId); OrdinalsBurnDetails storage b = burnDetails[tokenId]; b.tokenId = tokenId; b.contractAddress = address(burnableContract); b.ownerEthAddress = msg.sender; b.ownerOrdinalsAddress = ordinalsAddress; b.burned = true; emit OrdinalsBurned( tokenId, address(burnableContract), msg.sender, ordinalsAddress ); } /// @notice Batch burns the given token IDs, registers the burn details and emits OrdinalsBurned events /// @param tokenIds Token IDs to be burned /// @param ordinalsAddresses Target ordinals addresses to receive the ordinal function burnBatch( uint256[] calldata tokenIds, string[] calldata ordinalsAddresses ) external { require( tokenIds.length == ordinalsAddresses.length, "Param arrays must be the same length" ); for (uint256 i = 0; i < tokenIds.length; i++) { burn(tokenIds[i], ordinalsAddresses[i]); } } }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.3 // Creator: Chiru Labs pragma solidity ^0.8.4; import '../IERC721A.sol'; /** * @dev Interface of ERC721ABurnable. */ interface IERC721ABurnable is IERC721A { /** * @dev Burns `tokenId`. See {ERC721A-_burn}. * * Requirements: * * - The caller must own `tokenId` or be an approved operator. */ function burn(uint256 tokenId) external; }
// SPDX-License-Identifier: MIT // ERC721A Contracts v4.2.3 // Creator: Chiru Labs pragma solidity ^0.8.4; /** * @dev Interface of ERC721A. */ interface IERC721A { /** * The caller must own the token or be an approved operator. */ error ApprovalCallerNotOwnerNorApproved(); /** * The token does not exist. */ error ApprovalQueryForNonexistentToken(); /** * Cannot query the balance for the zero address. */ error BalanceQueryForZeroAddress(); /** * Cannot mint to the zero address. */ error MintToZeroAddress(); /** * The quantity of tokens minted must be more than zero. */ error MintZeroQuantity(); /** * The token does not exist. */ error OwnerQueryForNonexistentToken(); /** * The caller must own the token or be an approved operator. */ error TransferCallerNotOwnerNorApproved(); /** * The token must be owned by `from`. */ error TransferFromIncorrectOwner(); /** * Cannot safely transfer to a contract that does not implement the * ERC721Receiver interface. */ error TransferToNonERC721ReceiverImplementer(); /** * Cannot transfer to the zero address. */ error TransferToZeroAddress(); /** * The token does not exist. */ error URIQueryForNonexistentToken(); /** * The `quantity` minted with ERC2309 exceeds the safety limit. */ error MintERC2309QuantityExceedsLimit(); /** * The `extraData` cannot be set on an unintialized ownership slot. */ error OwnershipNotInitializedForExtraData(); // ============================================================= // STRUCTS // ============================================================= struct TokenOwnership { // The address of the owner. address addr; // Stores the start time of ownership with minimal overhead for tokenomics. uint64 startTimestamp; // Whether the token has been burned. bool burned; // Arbitrary data similar to `startTimestamp` that can be set via {_extraData}. uint24 extraData; } // ============================================================= // TOKEN COUNTERS // ============================================================= /** * @dev Returns the total number of tokens in existence. * Burned tokens will reduce the count. * To get the total number of tokens minted, please see {_totalMinted}. */ function totalSupply() external view returns (uint256); // ============================================================= // IERC165 // ============================================================= /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * [EIP section](https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified) * to learn more about how these ids are created. * * This function call must use less than 30000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); // ============================================================= // IERC721 // ============================================================= /** * @dev Emitted when `tokenId` token is transferred from `from` to `to`. */ event Transfer(address indexed from, address indexed to, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. */ event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId); /** * @dev Emitted when `owner` enables or disables * (`approved`) `operator` to manage all of its assets. */ event ApprovalForAll(address indexed owner, address indexed operator, bool approved); /** * @dev Returns the number of tokens in `owner`'s account. */ function balanceOf(address owner) external view returns (uint256 balance); /** * @dev Returns the owner of the `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function ownerOf(uint256 tokenId) external view returns (address owner); /** * @dev Safely transfers `tokenId` token from `from` to `to`, * checking first that contract recipients are aware of the ERC721 protocol * to prevent tokens from being forever locked. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must exist and be owned by `from`. * - If the caller is not `from`, it must be have been allowed to move * this token by either {approve} or {setApprovalForAll}. * - If `to` refers to a smart contract, it must implement * {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. * * Emits a {Transfer} event. */ function safeTransferFrom( address from, address to, uint256 tokenId, bytes calldata data ) external payable; /** * @dev Equivalent to `safeTransferFrom(from, to, tokenId, '')`. */ function safeTransferFrom( address from, address to, uint256 tokenId ) external payable; /** * @dev Transfers `tokenId` from `from` to `to`. * * WARNING: Usage of this method is discouraged, use {safeTransferFrom} * whenever possible. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `tokenId` token must be owned by `from`. * - If the caller is not `from`, it must be approved to move this token * by either {approve} or {setApprovalForAll}. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 tokenId ) external payable; /** * @dev Gives permission to `to` to transfer `tokenId` token to another account. * The approval is cleared when the token is transferred. * * Only a single account can be approved at a time, so approving the * zero address clears previous approvals. * * Requirements: * * - The caller must own the token or be an approved operator. * - `tokenId` must exist. * * Emits an {Approval} event. */ function approve(address to, uint256 tokenId) external payable; /** * @dev Approve or remove `operator` as an operator for the caller. * Operators can call {transferFrom} or {safeTransferFrom} * for any token owned by the caller. * * Requirements: * * - The `operator` cannot be the caller. * * Emits an {ApprovalForAll} event. */ function setApprovalForAll(address operator, bool _approved) external; /** * @dev Returns the account approved for `tokenId` token. * * Requirements: * * - `tokenId` must exist. */ function getApproved(uint256 tokenId) external view returns (address operator); /** * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. * * See {setApprovalForAll}. */ function isApprovedForAll(address owner, address operator) external view returns (bool); // ============================================================= // IERC721Metadata // ============================================================= /** * @dev Returns the token collection name. */ function name() external view returns (string memory); /** * @dev Returns the token collection symbol. */ function symbol() external view returns (string memory); /** * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token. */ function tokenURI(uint256 tokenId) external view returns (string memory); // ============================================================= // IERC2309 // ============================================================= /** * @dev Emitted when tokens in `fromTokenId` to `toTokenId` * (inclusive) is transferred from `from` to `to`, as defined in the * [ERC2309](https://eips.ethereum.org/EIPS/eip-2309) standard. * * See {_mintERC2309} for more details. */ event ConsecutiveTransfer(uint256 indexed fromTokenId, uint256 toTokenId, address indexed from, address indexed to); }
{ "optimizer": { "enabled": true, "runs": 50 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"address","name":"ownerEthAddress","type":"address"},{"indexed":false,"internalType":"string","name":"ownerOrdinalsAddress","type":"string"}],"name":"OrdinalsBurned","type":"event"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"ordinalsAddress","type":"string"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"},{"internalType":"string[]","name":"ordinalsAddresses","type":"string[]"}],"name":"burnBatch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"burnDetails","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"contractAddress","type":"address"},{"internalType":"address","name":"ownerEthAddress","type":"address"},{"internalType":"string","name":"ownerOrdinalsAddress","type":"string"},{"internalType":"bool","name":"burned","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnableContract","outputs":[{"internalType":"contract IERC721ABurnable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5060405161081f38038061081f83398101604081905261002f91610054565b600080546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61078c806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806306f2a6be1461005157806338cc68ff1461006657806362affe1c146100965780637641e6f3146100ba575b600080fd5b61006461005f3660046103b7565b6100cd565b005b600054610079906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a96100a4366004610422565b610190565b60405161008d95949392919061043b565b6100646100c83660046104ba565b610258565b82811461012c5760405162461bcd60e51b8152602060048201526024808201527f506172616d20617272617973206d757374206265207468652073616d65206c656044820152630dccee8d60e31b606482015260840160405180910390fd5b60005b838110156101895761017785858381811061014c5761014c610535565b9050602002013584848481811061016557610165610535565b90506020028101906100c8919061054b565b8061018181610591565b91505061012f565b5050505050565b600160208190526000918252604090912080549181015460028201546003830180546001600160a01b039384169492909316926101cc906105b8565b80601f01602080910402602001604051908101604052809291908181526020018280546101f8906105b8565b80156102455780601f1061021a57610100808354040283529160200191610245565b820191906000526020600020905b81548152906001019060200180831161022857829003601f168201915b5050506004909301549192505060ff1685565b600054604051630852cd8d60e31b8152600481018590526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b50505060008481526001602081905260408220868155915490820180546001600160a01b039092166001600160a01b0319928316179055600282018054339216919091179055905060038101610309838583610657565b5060048101805460ff191660011790556000546040516001600160a01b039091169085907fcca9d3831df267af009e52d180a797cdd3e220f4b1a9971b3e810c4d561af4ca9061035e90339088908890610716565b60405180910390a350505050565b60008083601f84011261037e57600080fd5b5081356001600160401b0381111561039557600080fd5b6020830191508360208260051b85010111156103b057600080fd5b9250929050565b600080600080604085870312156103cd57600080fd5b84356001600160401b03808211156103e457600080fd5b6103f08883890161036c565b9096509450602087013591508082111561040957600080fd5b506104168782880161036c565b95989497509550505050565b60006020828403121561043457600080fd5b5035919050565b8581526000602060018060a01b038088168285015280871660408501525060a0606084015284518060a085015260005b818110156104875786810183015185820160c00152820161046b565b50600060c0828601015260c0601f19601f830116850101925050506104b0608083018415159052565b9695505050505050565b6000806000604084860312156104cf57600080fd5b8335925060208401356001600160401b03808211156104ed57600080fd5b818601915086601f83011261050157600080fd5b81358181111561051057600080fd5b87602082850101111561052257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261056257600080fd5b8301803591506001600160401b0382111561057c57600080fd5b6020019150368190038213156103b057600080fd5b6000600182016105b157634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806105cc57607f821691505b6020821081036105ec57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f82111561065257600081815260208120601f850160051c8101602086101561062f5750805b601f850160051c820191505b8181101561064e5782815560010161063b565b5050505b505050565b6001600160401b0383111561066e5761066e6105f2565b6106828361067c83546105b8565b83610608565b6000601f8411600181146106b6576000851561069e5750838201355b600019600387901b1c1916600186901b178355610189565b600083815260209020601f19861690835b828110156106e757868501358255602094850194600190920191016106c7565b50868210156107045760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220d44f9a1cb4fc8a912cdadb94b2c3fe7c69369eaebb31558839371269c4298c7664736f6c6343000811003300000000000000000000000022c83c0e004c70b22a41e2655574764e1871e9af
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806306f2a6be1461005157806338cc68ff1461006657806362affe1c146100965780637641e6f3146100ba575b600080fd5b61006461005f3660046103b7565b6100cd565b005b600054610079906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100a96100a4366004610422565b610190565b60405161008d95949392919061043b565b6100646100c83660046104ba565b610258565b82811461012c5760405162461bcd60e51b8152602060048201526024808201527f506172616d20617272617973206d757374206265207468652073616d65206c656044820152630dccee8d60e31b606482015260840160405180910390fd5b60005b838110156101895761017785858381811061014c5761014c610535565b9050602002013584848481811061016557610165610535565b90506020028101906100c8919061054b565b8061018181610591565b91505061012f565b5050505050565b600160208190526000918252604090912080549181015460028201546003830180546001600160a01b039384169492909316926101cc906105b8565b80601f01602080910402602001604051908101604052809291908181526020018280546101f8906105b8565b80156102455780601f1061021a57610100808354040283529160200191610245565b820191906000526020600020905b81548152906001019060200180831161022857829003601f168201915b5050506004909301549192505060ff1685565b600054604051630852cd8d60e31b8152600481018590526001600160a01b03909116906342966c6890602401600060405180830381600087803b15801561029e57600080fd5b505af11580156102b2573d6000803e3d6000fd5b50505060008481526001602081905260408220868155915490820180546001600160a01b039092166001600160a01b0319928316179055600282018054339216919091179055905060038101610309838583610657565b5060048101805460ff191660011790556000546040516001600160a01b039091169085907fcca9d3831df267af009e52d180a797cdd3e220f4b1a9971b3e810c4d561af4ca9061035e90339088908890610716565b60405180910390a350505050565b60008083601f84011261037e57600080fd5b5081356001600160401b0381111561039557600080fd5b6020830191508360208260051b85010111156103b057600080fd5b9250929050565b600080600080604085870312156103cd57600080fd5b84356001600160401b03808211156103e457600080fd5b6103f08883890161036c565b9096509450602087013591508082111561040957600080fd5b506104168782880161036c565b95989497509550505050565b60006020828403121561043457600080fd5b5035919050565b8581526000602060018060a01b038088168285015280871660408501525060a0606084015284518060a085015260005b818110156104875786810183015185820160c00152820161046b565b50600060c0828601015260c0601f19601f830116850101925050506104b0608083018415159052565b9695505050505050565b6000806000604084860312156104cf57600080fd5b8335925060208401356001600160401b03808211156104ed57600080fd5b818601915086601f83011261050157600080fd5b81358181111561051057600080fd5b87602082850101111561052257600080fd5b6020830194508093505050509250925092565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261056257600080fd5b8301803591506001600160401b0382111561057c57600080fd5b6020019150368190038213156103b057600080fd5b6000600182016105b157634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806105cc57607f821691505b6020821081036105ec57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b601f82111561065257600081815260208120601f850160051c8101602086101561062f5750805b601f850160051c820191505b8181101561064e5782815560010161063b565b5050505b505050565b6001600160401b0383111561066e5761066e6105f2565b6106828361067c83546105b8565b83610608565b6000601f8411600181146106b6576000851561069e5750838201355b600019600387901b1c1916600186901b178355610189565b600083815260209020601f19861690835b828110156106e757868501358255602094850194600190920191016106c7565b50868210156107045760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6001600160a01b03841681526040602082018190528101829052818360608301376000818301606090810191909152601f909201601f191601019291505056fea2646970667358221220d44f9a1cb4fc8a912cdadb94b2c3fe7c69369eaebb31558839371269c4298c7664736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000022c83c0e004c70b22a41e2655574764e1871e9af
-----Decoded View---------------
Arg [0] : contractAddress (address): 0x22c83C0e004c70b22a41E2655574764E1871e9aF
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000022c83c0e004c70b22a41e2655574764e1871e9af
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.