DERA chain docs
  • Introduction
  • NFT2.0
    • Introduction
    • Architecture
    • Concepts
      • Collection
      • NFT2.0
      • Data Registry
      • Derivative NFT
      • Derived Account
      • Token Bound Account (aka TBA)
    • Smart Contracts
      • Interfaces
        • Factory
        • Dynamicity
        • Derivability
        • Cross chain ability
      • Use cases
        • Create collection
        • Mint NFT2.0
        • Create Data registry
        • Write onchain data
        • Retrieve onchain data
        • Mint Derivative NFT2.0
        • Create TBA
    • SDK
      • Setup
        • Create Console Account
        • Manage API key
        • Set up metadata schema
        • Initialize the SDK
      • API reference
        • Get List Collection
        • Get List Collection By Owner
        • Get Collection Info
        • Get List NFT By Collection
        • Get List NFT By Owner
        • Get List Derivative NFT By Original
        • Get NFT Info
        • Get List Data Registry
        • Get Data Registry By Owner
        • Get Data Registry Info
        • Get NFT onchain data
        • Get NFT protocol-scoped onchain data
        • Get User Freemint Info
        • Get Claim Token Uri Info
        • Upload JSON Uri Data To IPFS
        • Generate Presigned URL To Upload Image (IPFS)
        • Utility Functions
    • App guide
      • NFT2Scan
        • Create Collection
        • Mint NFT2.0
        • Mint Derivative NFT2.0
      • NFT2Console
        • Create Dapp
        • Register data schema
        • Manage API keys
        • Manage onchain data
    • References
      • Links
  • Bridge
    • Introduction
    • Bridge Token
    • Bridge NFT
  • Staking
    • Introduction
    • Validate
    • Delegate
  • Smart Contracts
    • EVM compatibility
    • Hardhat
    • Foundry
    • Account Abstraction
    • SubQuery Indexer
    • SAFE multisign
  • Nodes & Validators
    • Run a Node
    • Become a Validator
Powered by GitBook
On this page
  • Protocol layer
  • Dapps layer
  1. NFT2.0

Architecture

Protocol architecture

PreviousIntroductionNextConcepts

Last updated 7 months ago

The current architecture of NFT2.0 is depicted in the following diagram.

There are two distinct layers: Protocol layer and Dapps layer. We will examine each one in detail below.

Protocol layer

Protocol layer facilitates all necessary components for Dapps to utilize NFT2.0, which include:

  1. Factory: enable Dapp to create NFT collections, Data-Registry, Derived accounts, Token bound account (ERC6551Account). It also manages a self-registry in order to lookup all aforementioned entities.

  2. Collection: NFT2.0 collections that comply with ERC721 standard and other widely adopted standards such as ERC2981 and ERC1155. Dapps can opt-in to configure NFT collection to comply with some less popular standard, e.g. Soul-bound-token, Semi-transferable (our proprietary standard).

  3. Data Registry: provide onchain data storage, serving as an onchain database for NFT data. The data registry is also responsible for creating the derivative NFT and derived account, where royalty commissions are accrued.

Protocol layer also supports additional supplementary components, including:

  1. DerivedAccount: a customized, non-executable ERC6551Account for derivative NFTs. It accrues royalty commissions and allows withdrawal in a permissionless manner. Royalty commissions are intentionally diverted to the derived account to ensure proper distribution between the NFT owner and creator. Anyone can claim royalties from the derived account by paying sufficient gas fees, resulting in a pro-rata distribution to the NFT owner and creator.

  2. Token Bound Account (aka TBA): a fully fledged version of ERC6551Account that complies with ERC721Receiver and ERC1155Receiver interfaces.

  3. Addons: add-ons for ERC721 collections, including but not limited to: Whitelisted freemint.

Dapps layer

Dapps layer includes Dapps that utilize NFT2.0 protocol. Leveraging protocol, Dapps will be able to perform following actions permissionlessly:

  • Create NFT collections

  • Create Data Registry

  • Mint NFT within collections

  • Write / read NFT onchain data (to Data Registry)

  • Derive NFTs

  • Create Token bound account (aka TBA) for NFTs

Protocol architecture