becrypto/contracts/logic/NftBuner.sol
2024-01-10 15:11:59 +08:00

40 lines
1.0 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity 0.8.10;
import "@openzeppelin/contracts/access/AccessControlEnumerable.sol";
import "@openzeppelin/contracts/token/ERC721/IERC721.sol";
interface IBadge is IERC721{
function burn(address owner, uint256 tokenId) external;
}
interface ISbt is IERC721{
function burn(uint256 tokenId) external;
}
contract NftBuner is AccessControlEnumerable {
event BatchBurn(
address indexed user,
uint256 indexed tokenId,
address indexed nft,
uint256[] tokenIds
);
function brunBadge(address _badge, uint256[] calldata _nftIds) external {
address user = _msgSender();
for (uint256 i = 0; i < _nftIds.length; i++) {
IBadge(_badge).burn(user, _nftIds[i]);
}
emit BatchBurn(user, 0, _badge, _nftIds);
}
function burnSbt(address _nft, uint256[] calldata _nftIds) external{
for (uint256 i = 0; i < _nftIds.length; i++) {
ISbt(_nft).burn(_nftIds[i]);
}
address user = _msgSender();
emit BatchBurn(user, 0, _nft, _nftIds);
}
}