LogoLogo
Manifold for Developers
Manifold for Developers
  • Introduction
  • Shopify Merch Bridge
    • Overview
    • Tutorial
      • Step 1: Product Gate Setup
        • 1.1: Configure the Product
        • 1.2: Install Manifold Merch Bridge
        • 1.2: Create a New Product Gate
        • 1.3: Link a Product to the Gate
        • 1.4: Add Rules
      • Step 2: Store Theme Setup
        • 2.1 The Theme Editor
        • 2.2 Product Page Setup
        • 2.3 Cart Page Setup
    • Advanced Configuration
    • FAQ / Error Help
    • Reference
      • Product and Gate Configuration
        • Shopify Products
        • Product Gates
          • Gate Products
          • Rules
      • Custom Themes
      • Updating to the Latest Version
      • UI Configuration Options
      • Advanced Usage
      • Common Issues
  • Guides
    • Getting Started
    • HTML
    • React
    • NextJS
    • Vue
    • Wix
    • Squarespace
      • Simple Squarespace Site
      • Customised Squarespace Template
  • Resources
    • Apps
      • Grant Types
    • Widgets
      • Directory
      • Manifold CSS Variables
        • Scheme Utility Classes
        • List of Manifold CSS Variables
      • Connect Widget
        • Blockchain Interaction
        • Wallet Authentication
        • Data Client
          • NFT Information Retrieval
            • getNFT
            • getNFTsOfOwner
            • ownerHasNFT
            • getCollectors
          • Data Storage and Retrieval
        • Advanced Configuration
        • Customization & Styling
        • Automatic Error Handling
      • Campaign Widget
        • Campaign Creation
          • Questionnaire
        • Campaign Progress
        • Customization & Styling
      • Curation Widget
      • Marketplace Widgets
        • Widgets
          • Data Attributes
          • Layout Widgets
          • Card Widgets
          • Listing Widgets
        • Window Events
        • Troubleshooting
        • Customization & Styling
        • Version Change Notes
          • 3.2.1 - CSS Selector Changes
          • 3.1.1 - CSS Selector Changes
      • Claim Widgets
        • Widgets
          • Data Attributes
          • Complete Claim Widget
          • Buy Button Only Widget
          • Mint Count Widget
        • Troubleshooting
        • Customization & Styling
        • Version Change Notes
          • 1.7.0, 1.7.1 - CSS Selector Changes
      • Restricted Token Widget
        • Customization & Styling
      • Wallet Identity Widget
        • Customization & Styling
      • Subscription Widget
      • 6551 Display Widget
    • Manifold Ethereum Provider
  • Tools and APIs
    • Merkle Tree Tool
    • Snapshot Tool
    • Discord Tools
    • Server-Side Session Authentication
      • Signature Grant
      • Authorization Code Grant
  • Smart Contracts
    • Manifold Creator
      • Contracts
        • Creator Core
          • Common Functions
          • ERC721 Functions
          • ERC1155 Functions
        • Extensions
          • Extensions Functions
          • Extensions Examples
          • Extensions Deployment Guide
            • Dynamic NFT Extension
            • Lazy Mint Extension ERC1155
            • Lazy Mint Extension ERC721
        • Mint Permissions
          • Mint Permissions Functions
      • Prior Versions
        • 1.0.x
          • Creator Core
            • Common Functions
            • ERC721 Functions
            • ERC1155 Functions
          • Extensions
            • Extensions Functions
            • Extensions Examples
            • Extensions Deployment Guide
              • Dynamic NFT Extension
              • Lazy Mint Extension ERC1155
              • Lazy Mint Extension ERC721
          • Mint Permissions
            • Mint Permissions Functions
        • 2.0.x
          • Creator Core
            • Common Functions
            • ERC721 Functions
            • ERC1155 Functions
          • Extensions
            • Extensions Functions
            • Extensions Examples
            • Extensions Deployment Guide
              • Dynamic NFT Extension
              • Lazy Mint Extension ERC1155
              • Lazy Mint Extension ERC721
          • Mint Permissions
            • Mint Permissions Functions
    • Marketplace
      • Identity Verifier
    • Royalty Registry
  • Contact Us
Powered by GitBook
On this page
  • Overview
  • Creator Core
  • Creator Extensions
  • Mint Permissions

Was this helpful?

  1. Smart Contracts

Manifold Creator

Last updated 2 years ago

Was this helpful?

Overview

The Manifold Creator Architecture is a more powerful version of the and 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

By default, all contracts created with Manifold Studio make use of the ERC721Creator and ERC1155Creator contracts.

The repository is located .

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.

You can find reference extensions .

here on GitHub
ERC721
ERC1155
here on GitHub
Creator Core
Creator Extensions
Mint Permissions