56 lines
1.5 KiB
Solidity
56 lines
1.5 KiB
Solidity
// SPDX-License-Identifier: CC0-1.0
|
|
|
|
pragma solidity ^0.8.0;
|
|
|
|
import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol";
|
|
import "@openzeppelin/contracts/token/ERC1155/extensions/ERC1155Burnable.sol";
|
|
import "@openzeppelin/contracts/access/Ownable.sol";
|
|
|
|
import "./ERC5633.sol";
|
|
|
|
contract ERC5633Demo is ERC1155, ERC1155Burnable, Ownable, ERC5633 {
|
|
constructor() ERC1155("") ERC5633() {}
|
|
|
|
function mint(address account, uint256 id, uint256 amount, bytes memory data)
|
|
public
|
|
onlyOwner
|
|
{
|
|
_mint(account, id, amount, data);
|
|
}
|
|
|
|
function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
|
|
public
|
|
onlyOwner
|
|
{
|
|
_mintBatch(to, ids, amounts, data);
|
|
}
|
|
|
|
function setSoulbound(uint256 id, bool soulbound)
|
|
public
|
|
onlyOwner
|
|
{
|
|
_setSoulbound(id, soulbound);
|
|
}
|
|
|
|
// The following functions are overrides required by Solidity.
|
|
function supportsInterface(bytes4 interfaceId)
|
|
public
|
|
view
|
|
override(ERC1155, ERC5633)
|
|
returns (bool)
|
|
{
|
|
return super.supportsInterface(interfaceId);
|
|
}
|
|
|
|
function _beforeTokenTransfer(address operator, address from, address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data)
|
|
internal
|
|
override(ERC1155, ERC5633)
|
|
{
|
|
super._beforeTokenTransfer(operator, from, to, ids, amounts, data);
|
|
}
|
|
|
|
function getInterfaceId() public view returns (bytes4) {
|
|
return type(IERC5633).interfaceId;
|
|
}
|
|
}
|