实现无法交易转账的Token
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract Xwal is ERC721, Ownable {
error NonTransferableToken();
constructor() ERC721("xwal", "xwalNFT") {}
function _baseURI() internal pure override returns (string memory) {
return "https://arweave.net/E7rz7sKa1wWxKlMeFVrtZHgRjGMdDadDkT4QF2vDDkw/";
}
function safeMint(address to, uint256 tokenId) public onlyOwner {
_safeMint(to, tokenId);
}
function _beforeTokenTransfer(
address from,
address to,
uint256 tokenId
) override internal virtual {
if (from != address(0) && to != address(0)) {
revert NonTransferableToken();
}
}
}
覆盖 _beforeTokenTransfer 方法即可。