Dynamic NFT Extension
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/IERC721CreatorCore.sol";
import "@manifoldxyz/creator-core-solidity/contracts/extensions/ICreatorExtensionTokenURI.sol";
import "@openzeppelin/contracts/utils/introspection/ERC165.sol";
contract Tutorial is AdminControl, ICreatorExtensionTokenURI{
address private _core;
string private _firstURI;
string private _secondURI;
function initialize(address core) public adminRequired {
_core = core;
IERC721CreatorCore(_core).mintExtension(msg.sender);
}
function supportsInterface(bytes4 interfaceId) public view virtual override(AdminControl, IERC165) returns (bool) {
return interfaceId == type(ICreatorExtensionTokenURI).interfaceId || AdminControl.supportsInterface(interfaceId) || super.supportsInterface(interfaceId);
}
function setURIs(string memory firstURI, string memory secondURI) public adminRequired {
_firstURI = firstURI;
_secondURI = secondURI;
}
function tokenURI(address core, uint256 tokenId) external view override returns (string memory) {
require(core == _core, "Invalid token");
if (block.timestamp % 2 == 0) {
return _firstURI;
} else {
return _secondURI;
}
}
}How to Deploy
FAQ
Last updated
