Eingabespezifikationsdatei für ERC-721

Der Initialisierungsbefehl Blockchain App Builder liest die Eingabespezifikationsdatei und generiert das gerüstete Projekt mit mehreren Tools, um den Chaincode-Entwicklungsprozess zu unterstützen.

In derselben Spezifikationsdatei können Sie Standardanlagen und Tokenanlagen definieren, die auf dem ERC-721-Standard basieren. Die folgenden Einschränkungen gelten für eine Spezifikationsdatei, die eine ERC-721-Tokenassetdefinition enthält:
  • Sie können Tokenassets nicht basierend auf mehreren Standardwerten in derselben Spezifikationsdatei definieren.
  • Sie können nicht mehrere nicht fungible Tokenassets in einer einzelnen Spezifikationsdatei definieren.

Benutzerdefinierte Attributwerte für nicht fungible Tokenassets können vom Tokenverantwortlichen aktualisiert werden.

Informationen zum Einschließen von Standardassets in die Spezifikationsdatei finden Sie unter Eingabespezifikationsdatei.

Die folgende Beispielspezifikationsdatei für ein ERC-721-Tokenasset ist im Blockchain App Builder-Package verfügbar:
  • NFTArtCollectionMarketPlace with ERC-721-Typescript.yml

Neben den Standardeigenschaften und -abschnitten unterstützen nicht fungible Tokenassets die Abschnitte behavior, anatomy und metadata in der Spezifikationsdatei. Nicht fungible Tokenassets unterstützen auch die Eigenschaften standard und symbol. Das folgende Beispiel zeigt die Struktur einer Spezifikationsdatei für ein ERC-721-Tokenasset:

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
      symbol: ART # Token symbol
      standard: erc721+ # Token standard
      
      anatomy:
          type: nonfungible # Token type
          unit: whole #Token unit
      
      behavior:
        - indivisible
        - singleton
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
      
      properties: # Custom asset attributes for non-fungible tokens
          
          - name: price # Custom asset attribute to set the price of a non-fungible token in the marketplace
            type: number
          
          - name: on_sale_flag # Custom asset attribute maintains non-fungible token selling status in the marketplace
            type: boolean
      
      metadata: # Use this section to maintain the metadata on the blockchain. Only the user creating the non-fungible token can assign metadata attribute values, which cannot be updated later.
          
          - name: painting_name
            type: string
          
          - name: description
            type: string
          
          - name: image
            type: string
          
          - name: painter_name
            type: string

Tabelle 7-6: Parameterbeschreibungen und Beispiele für eine ERC-721-Tokenspezifikationsdatei

Eintrag Beschreibung Beispiele
type:

Sie müssen type: token im Abschnitt assets angeben.

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
symbol: Die Eigenschaft symbol stellt das Symbol dar, das den Tokenvertrag identifiziert. Beispiel: ART. Normalerweise ist das Symbol 3 bis 4 Zeichen lang.
symbol: ART # Token symbol
standard: Die Eigenschaft standard ist für nicht fungible Token obligatorisch. Es stellt den Tokenstandard dar, der bei der Chaincode-Generierung zu befolgen ist. In Blockchain App Builder folgen nicht fungible Token einer Teilversion des ERC-721-Standards. Weitere Informationen finden Sie unter Einschränkungen.
standard: erc721+ # Token standard
anatomy:
Der Abschnitt anatomy enthält zwei obligatorische Parameter für nicht fungible Token:
  • type: nonfungible

    Ein nicht fungibler Token ist einzigartig.

  • unit: whole

    Ein ganzes Token kann nicht in kleinere Brucheinheiten unterteilt werden.

anatomy:
          type: nonfungible # Token type
          unit: whole #Token unit
behavior: In diesem Abschnitt werden die Funktionen und Einschränkungen des Tokens beschrieben. Die Verhaltensweisen mintable, transferable, singleton und indivisible sind für nicht fungible Token obligatorisch.
  • singleton: Dieses obligatorische Verhalten unterstützt eine Einschränkung, sodass nur ein ganzes Token in der Klasse vorhanden sein kann, das nicht geteilt werden kann.
  • indivisible: Dieses obligatorische Verhalten unterstützt eine Einschränkung, sodass ganze Token nicht in Bruchteile unterteilt werden können.
  • mintable: Dieses obligatorische Verhalten unterstützt das Minting neuer Tokeninstanzen. Der optionale Parameter max_mint_quantity gibt die Gesamtanzahl der Token an, die geprägt werden können. Wenn Sie den Parameter max_mint_quantity nicht angeben, können beliebig viele Token geprägt werden.
  • transferable: Dieses obligatorische Verhalten unterstützt die Übertragung des Eigentums an Token.
  • burnable: Dieses optionale Verhalten unterstützt das Deaktivieren oder Brennen von Token. Beim Brennen wird ein Token nicht gelöscht, sondern in einen permanenten Zustand versetzt, in dem es nicht verwendet werden kann. Brennen ist nicht reversibel.
  • lockable: Dieses Verhalten ist optional und wird nur von nicht fungiblen Token unterstützt. Mit diesem Verhalten kann der Tokenbesitzer ein nicht fungibles Token sperren. Ein gesperrtes Token kann nicht an andere Benutzer übertragen oder von diesen gebrannt werden.
  • roles: Dieses optionale Verhalten schränkt das Tokenverhalten auf Benutzer mit bestimmten Rollen ein. Derzeit sind zwei Rollen verfügbar: minter_role_name und burner_role_name. Wenn Sie keine Rollen angeben, kann jeder Benutzer als Minter oder Brenner fungieren. Beispiel: Wenn die Brennerrolle nicht angegeben ist, hat jeder Accountbenutzer implizit die Brennerrolle. Wenn die Brennerrolle angegeben ist, muss der Benutzer Token Admin während des Tokensetupprozesses die Brennerrolle explizit anderen Benutzern zuweisen.
behavior:
        - indivisible
        - singleton
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
metadata:

Die Eigenschaft metadata ist optional und wird nur von nicht fungiblen Token unterstützt. Diese Eigenschaft gibt Metadateninformationen an, die in der Blockchain für ein nicht fungibles Token gespeichert werden. Metadatenattributwerte können nur vom Tokenverantwortlichen zugewiesen werden, der das Token mint, und können nicht aktualisiert werden, nachdem das Token geprägt wurde.

In dem Beispiel ist name der Name des Metadatenattributs und type der Typ des Wertes, den das Attribut aufweist.

metadata:
                                
                                - name: painting_name
                                type: string
                                
                                - name: description
                                type: string
                                
                                - name: image
                                type: string
                                
                                - name: painter_name
                                type: string

Einschränkungen

Blockchain App Builder bietet teilweise Unterstützung für den ERC-721-Standard. Derzeit werden die folgenden ERC-721-Ereignisse und -Methoden nicht unterstützt.

Ereignisse:
  • event Transfer
  • event Approval
  • event ApprovalForAll
Methoden:
  • approve
  • getApproved
  • setApprovalForAll
  • isApprovedForAll