DCIPs/assets/eip-5633/contracts/ERC5633Demo.sol

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;
}
}