The Manifold Creator Architecture is a more powerful version of the ERC721 and ERC1155 standard token contracts, providing creators with the ability to deploy smart contracts with functionalities beyond basic NFT minting. These functionalities include the ability to set and edit on-chain royalties and contract permissions, and introduce a framework for extending functionality even further via the registration of additional smart contract extensions.
The Manifold Creator Architecture is comprised of three primary components:
The Creator Core is the underlying smart contract for creating NFTs. We've built versions for both the ERC721 and ERC1155 token standards, each supporting the following functionalities:
- Mint NFTs - a function callable by the contract owner or admin to create new NFTs
- Modify NFT Metadata - a function callable by the contract owner or admin to change an NFTs metadata identifier
- Transfer NFTs - functions callable by the token owner to transfer ownership of an NFT
- Burn NFTs - functions callable by the token owner to destroy an NFT
- Set NFT Royalties - functions callable by the contract owner or admin to set token royalty amounts for when an NFT created by the contract is sold or re-sold
Extensions are contracts written with a specific design to override certain functions of a contract they are registered to. With extensions, sometimes referred to as "Apps" within Manifold Studio, creators can do much more than simply mint NFTs. The extensions framework is infinitely customizable and enables creators to build custom minting experiences for their collectors, introduce new transfer mechanics, create unique dynamic NFTs, integrate with third-party platforms, and much more.
By design, Creator Extensions enable unlimited flexibility and creativity of your NFTs by extending the following functions:
- Minting - Extending the mint function to an app allows the app to mint from the base contract so token structure and provenance is maintained by the base contract. For example, a contract usually reserves the mint function for Owner or Admins only. If you are building an experience where a collector uses a website to connect their wallet and mint an NFT, the mint function would need to be called by the user of the website, hence requiring an extension of this function.
- Token URI - Access to setting or modifying a token's Token URI, or the identifier for where to look for your tokens artwork and metadata, can be given to an extension for customization using this function. For example, creating a dynamic NFT would make use of extending the token URI via any desired logic within the contract (e.g. external events, transfer hooks, etc.), such as creating an SVG for your image on the fly.
- Pre-Mint/Transfer/Burn Hooks - Hooks can be used to extend contract functions upon a mint, transfer, or burn event. Custom logic can be coded into the extension in these instances for unlimited creativity when designing mechanics for your NFTs. For example, an experience where the token artwork or metadata of an NFT changes when the NFT is transferred between wallets would make use of a pre-transfer hook.
- Royalty Override - (Available in version 2.0.0 and above) Extensions can override the royalty bps and recipients for tokens minted via the extension
A Mint Permissions contract is a separate custom contract that adds specific interfaces for extensions that want to build rule sets around mint functionalities allowed from the base creator contract. For example, a Mint Permissions contract could be deployed to restrict the minting functionality of a particular extension between a certain set of dates/times or a maximum number of tokens that can be minted.