Lazy Mint Extension ERC1155
Intro
Contract
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/// @author: manifold.xyz
import "@manifoldxyz/libraries-solidity/contracts/access/AdminControl.sol";
import "@manifoldxyz/creator-core-solidity/contracts/core/IERC1155CreatorCore.sol";
import "@manifoldxyz/creator-core-solidity/contracts/extensions/ICreatorExtensionTokenURI.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";
contract Tutorial2 is AdminControl, ICreatorExtensionTokenURI{
address private _core;
string private _baseURI;
function initialize(address core) public adminRequired {
_core = core;
address[] memory to = new address[](1);
to[0] = msg.sender;
uint[] memory amounts = new uint[](1);
amounts[0] = 1;
string[] memory uris = new string[](1);
uris[0] = "";
IERC1155CreatorCore(_core).mintExtensionNew(to, amounts, uris);
}
function mint() public {
address[] memory to = new address[](1);
to[0] = msg.sender;
uint[] memory tokenIds = new uint[](1);
tokenIds[0] = 1;
uint[] memory amounts = new uint[](1);
amounts[0] = 1;
IERC1155CreatorCore(_core).mintExtensionExisting(to, tokenIds, amounts);
}
function supportsInterface(bytes4 interfaceId) public view virtual override(AdminControl, IERC165) returns (bool) {
return interfaceId == type(ICreatorExtensionTokenURI).interfaceId || AdminControl.supportsInterface(interfaceId) || super.supportsInterface(interfaceId);
}
function setBaseURI(string memory baseURI) public adminRequired {
_baseURI = baseURI;
}
function tokenURI(address core, uint256 tokenId) external view override returns (string memory) {
require(core == _core, "Invalid token");
return _baseURI;
}
}
How to Deploy
FAQ
Last updated
