Eingabespezifikationsdatei für ERC-721

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

Sie können Standardassets und Tokenassets, die auf dem ERC-721-Standard basieren, in derselben Spezifikationsdatei definieren. Für eine Spezifikationsdatei, die eine Tokenassetdefinition des Typs ERC-721 enthält, gelten die folgenden Einschränkungen:
  • Sie können Tokenassets nicht basierend auf mehreren Standards in derselben Spezifikationsdatei definieren.
  • Sie können nicht mehrere nicht fungible Tokenassets in einer einzigen Spezifikationsdatei definieren.

Benutzerdefinierte Attributwerte für nicht fungible Tokenassets können vom Tokeneigentümer 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

Zusätzlich zu 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, z.B. 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 fungibles 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. Das Verhalten mintable, transferable, singleton und indivisible ist 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 aufgeteilt werden kann.
  • indivisible: Dieses obligatorische Verhalten unterstützt eine Einschränkung, sodass ganze Token nicht in Brüche 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 der Eigentumsrechte 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 Status 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. Dieses Verhalten ermöglicht es dem Tokenbesitzer, ein nicht fungibles Token zu 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 Burner 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 Tokeneigentümer zugewiesen werden, der das Token mintet, und können nicht mehr aktualisiert werden, nachdem das Token geprägt wurde.

In dem Beispiel ist name der Name des Metadatenattributs und type der Werttyp, den das Attribut hat.

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