1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- // SPDX-License-Identifier: MIT
- // OpenZeppelin Contracts v4.4.1 (token/ERC1155/extensions/ERC1155Burnable.sol)
- pragma solidity ^0.8.0;
- import "../ERC1155Upgradeable.sol";
- import "../../../proxy/utils/Initializable.sol";
- /**
- * @dev Extension of {ERC1155} that allows token holders to destroy both their
- * own tokens and those that they have been approved to use.
- *
- * _Available since v3.1._
- */
- abstract contract ERC1155BurnableUpgradeable is Initializable, ERC1155Upgradeable {
- function __ERC1155Burnable_init() internal onlyInitializing {
- }
- function __ERC1155Burnable_init_unchained() internal onlyInitializing {
- }
- function burn(
- address account,
- uint256 id,
- uint256 value
- ) public virtual {
- require(
- account == _msgSender() || isApprovedForAll(account, _msgSender()),
- "ERC1155: caller is not owner nor approved"
- );
- _burn(account, id, value);
- }
- function burnBatch(
- address account,
- uint256[] memory ids,
- uint256[] memory values
- ) public virtual {
- require(
- account == _msgSender() || isApprovedForAll(account, _msgSender()),
- "ERC1155: caller is not owner nor approved"
- );
- _burnBatch(account, ids, values);
- }
- /**
- * This empty reserved space is put in place to allow future versions to add new
- * variables without shifting down storage in the inheritance chain.
- * See https://docs.openzeppelin.com/contracts/4.x/upgradeable#storage_gaps
- */
- uint256[50] private __gap;
- }
|