Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
Multichain Info
No addresses found
Latest 25 from a total of 406 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Batch Burn | 17030489 | 29 days ago | IN | 0 ETH | 0.00000399 | ||||
Batch Burn | 16910878 | 32 days ago | IN | 0 ETH | 0.00000039 | ||||
Batch Burn | 16513097 | 41 days ago | IN | 0 ETH | 0.00000073 | ||||
Batch Burn | 16506968 | 41 days ago | IN | 0 ETH | 0.00000076 | ||||
Batch Burn | 16426415 | 43 days ago | IN | 0 ETH | 0.00000111 | ||||
Batch Burn | 16356697 | 45 days ago | IN | 0 ETH | 0.00000132 | ||||
Batch Burn | 16356641 | 45 days ago | IN | 0 ETH | 0.00000092 | ||||
Batch Burn | 16356637 | 45 days ago | IN | 0 ETH | 0.00000137 | ||||
Batch Burn | 16356396 | 45 days ago | IN | 0 ETH | 0.00000164 | ||||
Batch Burn | 16336687 | 45 days ago | IN | 0 ETH | 0.00000299 | ||||
Batch Burn | 16323872 | 45 days ago | IN | 0 ETH | 0.00000143 | ||||
Batch Burn | 16323829 | 45 days ago | IN | 0 ETH | 0.00000024 | ||||
Batch Burn | 16323792 | 45 days ago | IN | 0 ETH | 0.00000236 | ||||
Batch Burn | 16322552 | 45 days ago | IN | 0 ETH | 0.00000424 | ||||
Batch Burn | 16321054 | 45 days ago | IN | 0 ETH | 0.00000014 | ||||
Batch Burn | 16320967 | 45 days ago | IN | 0 ETH | 0.00000059 | ||||
Batch Burn | 16320941 | 45 days ago | IN | 0 ETH | 0.00000035 | ||||
Batch Burn | 16320636 | 45 days ago | IN | 0 ETH | 0.00000065 | ||||
Batch Burn | 16320347 | 45 days ago | IN | 0 ETH | 0.0000044 | ||||
Batch Burn | 16320289 | 45 days ago | IN | 0 ETH | 0.00000076 | ||||
Batch Burn | 16320161 | 45 days ago | IN | 0 ETH | 0.0000002 | ||||
Batch Burn | 16317955 | 45 days ago | IN | 0 ETH | 0.00000026 | ||||
Batch Burn | 16315347 | 45 days ago | IN | 0 ETH | 0.00000006 | ||||
Batch Burn | 16315265 | 45 days ago | IN | 0 ETH | 0.00000655 | ||||
Batch Burn | 16315216 | 45 days ago | IN | 0 ETH | 0.00000714 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BatchBurner
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; import "./interfaces/IERC721Burnable.sol"; /** * @title BatchBurner * @dev Contract for batch burning ERC721 tokens that implement IERC721Burnable. * The owner of the tokens must approve this contract before burning can occur. */ contract BatchBurner { /// @notice The ERC721 contract whose tokens will be burned IERC721Burnable public immutable nftContract; /// @notice Event emitted when tokens are batch burned event BatchBurned(address indexed burner, uint256[] tokenIds); /// @notice Custom errors error EmptyTokenIds(); error NotTokenOwner(uint256 tokenId, address caller); /** * @notice Constructs the BatchBurner contract * @param _nftContract Address of the ERC721 contract that implements IERC721Burnable */ constructor(address _nftContract) { nftContract = IERC721Burnable(_nftContract); } /** * @notice Burns multiple tokens in a single transaction * @param tokenIds Array of token IDs to burn * @dev Caller must own all tokens and have approved this contract */ function batchBurn(uint256[] calldata tokenIds) external { if (tokenIds.length == 0) revert EmptyTokenIds(); // Check ownership of all tokens first for (uint256 i = 0; i < tokenIds.length; i++) { if (nftContract.ownerOf(tokenIds[i]) != msg.sender) { revert NotTokenOwner(tokenIds[i], msg.sender); } } // Burn all tokens for (uint256 i = 0; i < tokenIds.length; i++) { nftContract.burn(tokenIds[i]); } emit BatchBurned(msg.sender, tokenIds); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol) pragma solidity ^0.8.20; import {IERC165} from "../../utils/introspection/IERC165.sol"; /** * @dev Required interface of an ERC-721 compliant contract. */ interface IERC721 is IERC165 { /** * @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`. * * 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 approved 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; /** * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients * are aware of the ERC-721 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 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) external; /** * @dev Transfers `tokenId` token from `from` to `to`. * * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must * understand this adds an external call which potentially creates a reentrancy vulnerability. * * 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; /** * @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; /** * @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 address zero. * * 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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165[ERC]. * * 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[ERC 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.28; import "@openzeppelin/contracts/token/ERC721/IERC721.sol"; /** * @title IERC721Burnable * @dev Interface for ERC721 tokens that can be burned (destroyed). */ interface IERC721Burnable is IERC721 { /** * @dev Burns `tokenId`. * Requirements: * - The caller must own `tokenId` or be an approved operator. */ function burn(uint256 tokenId) external; }
{ "evmVersion": "paris", "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_nftContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EmptyTokenIds","type":"error"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"caller","type":"address"}],"name":"NotTokenOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"BatchBurned","type":"event"},{"inputs":[{"internalType":"uint256[]","name":"tokenIds","type":"uint256[]"}],"name":"batchBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nftContract","outputs":[{"internalType":"contract IERC721Burnable","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60a060405234801561001057600080fd5b50604051610797380380610797833981810160405281019061003291906100cf565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fc565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061009c82610071565b9050919050565b6100ac81610091565b81146100b757600080fd5b50565b6000815190506100c9816100a3565b92915050565b6000602082840312156100e5576100e461006c565b5b60006100f3848285016100ba565b91505092915050565b6080516106746101236000396000818160770152818160fd015261023f01526106746000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063d56d229d1461003b578063dc8e92ea14610059575b600080fd5b610043610075565b60405161005091906103c2565b60405180910390f35b610073600480360381019061006e919061044c565b610099565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b600082829050036100d6576040517fed5f7d0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8282905081101561022e573373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e85858581811061014a57610149610499565b5b905060200201356040518263ffffffff1660e01b815260040161016d91906104e1565b602060405180830381865afa15801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae919061053a565b73ffffffffffffffffffffffffffffffffffffffff1614610221578282828181106101dc576101db610499565b5b90506020020135336040517f6d3d1858000000000000000000000000000000000000000000000000000000008152600401610218929190610576565b60405180910390fd5b80806001019150506100d9565b5060005b828290508110156102ee577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166342966c6884848481811061028c5761028b610499565b5b905060200201356040518263ffffffff1660e01b81526004016102af91906104e1565b600060405180830381600087803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050508080600101915050610232565b503373ffffffffffffffffffffffffffffffffffffffff167f0ce69e386b731ca999da815088da00cfe7585ee9110977ce177bbb7b5ca5b8d7838360405161033792919061061a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061038861038361037e84610343565b610363565b610343565b9050919050565b600061039a8261036d565b9050919050565b60006103ac8261038f565b9050919050565b6103bc816103a1565b82525050565b60006020820190506103d760008301846103b3565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261040c5761040b6103e7565b5b8235905067ffffffffffffffff811115610429576104286103ec565b5b602083019150836020820283011115610445576104446103f1565b5b9250929050565b60008060208385031215610463576104626103dd565b5b600083013567ffffffffffffffff811115610481576104806103e2565b5b61048d858286016103f6565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6104db816104c8565b82525050565b60006020820190506104f660008301846104d2565b92915050565b600061050782610343565b9050919050565b610517816104fc565b811461052257600080fd5b50565b6000815190506105348161050e565b92915050565b6000602082840312156105505761054f6103dd565b5b600061055e84828501610525565b91505092915050565b610570816104fc565b82525050565b600060408201905061058b60008301856104d2565b6105986020830184610567565b9392505050565b600082825260208201905092915050565b600080fd5b82818337505050565b60006105ca838561059f565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156105fd576105fc6105b0565b5b60208302925061060e8385846105b5565b82840190509392505050565b600060208201905081810360008301526106358184866105be565b9050939250505056fea2646970667358221220d7d8048d3a6a6768c35ca4d04113a382dc6c7c80d243fe2d9f06f70cb8fb40a664736f6c634300081c003300000000000000000000000010fe37bac405b209f83ff523fb8d00c0c3f508a8
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063d56d229d1461003b578063dc8e92ea14610059575b600080fd5b610043610075565b60405161005091906103c2565b60405180910390f35b610073600480360381019061006e919061044c565b610099565b005b7f00000000000000000000000010fe37bac405b209f83ff523fb8d00c0c3f508a881565b600082829050036100d6576040517fed5f7d0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8282905081101561022e573373ffffffffffffffffffffffffffffffffffffffff167f00000000000000000000000010fe37bac405b209f83ff523fb8d00c0c3f508a873ffffffffffffffffffffffffffffffffffffffff16636352211e85858581811061014a57610149610499565b5b905060200201356040518263ffffffff1660e01b815260040161016d91906104e1565b602060405180830381865afa15801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae919061053a565b73ffffffffffffffffffffffffffffffffffffffff1614610221578282828181106101dc576101db610499565b5b90506020020135336040517f6d3d1858000000000000000000000000000000000000000000000000000000008152600401610218929190610576565b60405180910390fd5b80806001019150506100d9565b5060005b828290508110156102ee577f00000000000000000000000010fe37bac405b209f83ff523fb8d00c0c3f508a873ffffffffffffffffffffffffffffffffffffffff166342966c6884848481811061028c5761028b610499565b5b905060200201356040518263ffffffff1660e01b81526004016102af91906104e1565b600060405180830381600087803b1580156102c957600080fd5b505af11580156102dd573d6000803e3d6000fd5b505050508080600101915050610232565b503373ffffffffffffffffffffffffffffffffffffffff167f0ce69e386b731ca999da815088da00cfe7585ee9110977ce177bbb7b5ca5b8d7838360405161033792919061061a565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061038861038361037e84610343565b610363565b610343565b9050919050565b600061039a8261036d565b9050919050565b60006103ac8261038f565b9050919050565b6103bc816103a1565b82525050565b60006020820190506103d760008301846103b3565b92915050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f84011261040c5761040b6103e7565b5b8235905067ffffffffffffffff811115610429576104286103ec565b5b602083019150836020820283011115610445576104446103f1565b5b9250929050565b60008060208385031215610463576104626103dd565b5b600083013567ffffffffffffffff811115610481576104806103e2565b5b61048d858286016103f6565b92509250509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6104db816104c8565b82525050565b60006020820190506104f660008301846104d2565b92915050565b600061050782610343565b9050919050565b610517816104fc565b811461052257600080fd5b50565b6000815190506105348161050e565b92915050565b6000602082840312156105505761054f6103dd565b5b600061055e84828501610525565b91505092915050565b610570816104fc565b82525050565b600060408201905061058b60008301856104d2565b6105986020830184610567565b9392505050565b600082825260208201905092915050565b600080fd5b82818337505050565b60006105ca838561059f565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156105fd576105fc6105b0565b5b60208302925061060e8385846105b5565b82840190509392505050565b600060208201905081810360008301526106358184866105be565b9050939250505056fea2646970667358221220d7d8048d3a6a6768c35ca4d04113a382dc6c7c80d243fe2d9f06f70cb8fb40a664736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000010fe37bac405b209f83ff523fb8d00c0c3f508a8
-----Decoded View---------------
Arg [0] : _nftContract (address): 0x10FE37BAC405B209f83FF523Fb8D00C0c3F508a8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000010fe37bac405b209f83ff523fb8d00c0c3f508a8
Loading...
Loading
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.