Eingabespezifikationsdatei für ERC-1155

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 sowohl fungible als auch nicht fungible Tokenassets definieren, die auf dem ERC-1155-Standard in derselben Spezifikationsdatei basieren. Sie können Tokenassets nicht basierend auf mehreren Standards in derselben Spezifikationsdatei definieren.

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

Die folgenden Beispielspezifikationsdateien für ERC-1155-Tokenassets sind im Blockchain App Builder-Package verfügbar:
  • NFTArtCollectionMarketplacewithERC1155-TypeScript.yml
  • FractionalNFTinRealEstate-TypeScript.yml

Neben den Standardeigenschaften und -abschnitten unterstützen Tokenassets die Abschnitte behavior und anatomy in der Spezifikationsdatei. Darüber hinaus unterstützen nicht fungible Tokenassets den Abschnitt metadata. Das folgende Beispiel zeigt die Struktur einer Spezifikationsdatei für zwei ERC-1155-Tokenassets, ein ganzes nicht fungibles Token und ein fraktioniertes fungibles Token:

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
      standard: erc1155+   # Token standard
      
      anatomy:
          type: nonfungible # Token type
          unit: whole  #Token unit
      
      behavior:
        - indivisible                
        - mintable:                   
            max_mint_quantity: 20000
        - transferable                
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
      
      properties:  # Custom asset attributes for non-fungible token 
          
          - 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

    - name: Loyalty # Asset name
      type: token  # Asset type
      standard: erc1155+   # Token standard

      anatomy: 
          type: fungible # Token type
          unit: fractional # Token unit

      behavior: # Token behaviors
          - divisible: 
                decimal: 2  
          - mintable: 
                max_mint_quantity: 10000 
          - transferable
          - burnable 
          - roles: 
                minter_role_name: minter 

      properties:
          - name: currency_name # Custom attribute to represent the token in a specific currency.
            type: string

          - name: token_to_currency_ratio # Custom attribute to specify the token to currency ratio.
            type: number

Das folgende Beispiel zeigt die Struktur einer Spezifikationsdatei für ein fraktioniertes nicht fungibles Token:

- name: RealEstateProperty #Asset name
      type: token #Asset type
      standard: erc1155+ # Token standard
      
      anatomy:
          type: nonfungible # Token type
          unit: fractional #Token unit
      
      behavior:
        - divisible:
        - mintable:
        - transferable
        - roles:
            minter_role_name: minter
      
      properties: # Custom asset attributes for non-fungible token.
          
          - name: propertySellingPrice # Custom asset attribute to set the real estate property selling price
            type: number
 
          - name: propertyRentingPrice # Custom asset attribute maintains the renting amount for the real estate property
            type: number
            
      metadata: # To maintain the metadata on-chain, this tag will be used. Users won't be able to update the metadata attribute values.
          
          - name: propertyType
            type: string
 
          - name: propertyName
            type: string
 
          - name: propertyAddress
            type: string
          
          - name: propertyImage
            type: string

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

Eintrag Beschreibung Beispiele:
type:

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

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
standard: Die Eigenschaft standard ist für ERC-1155-Token obligatorisch. Es stellt den Tokenstandard dar, der bei der Chaincode-Generierung zu befolgen ist.
standard: erc1155+ # Token standard
anatomy:
Der Abschnitt anatomy enthält zwei obligatorische Parameter:
  • type: nonfungible oder type: fungible

    Ein nicht fungibles Token ist einzigartig.

  • unit: whole oder unit: fractional

    Ein ganzes Token kann nicht in kleinere Brucheinheiten unterteilt werden. Ein Bruchteil-Token kann basierend auf einer bestimmten Anzahl von Dezimalstellen in kleinere Einheiten oder Shares 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 und transferable ist für alle Token obligatorisch. Das Verhalten indivisible ist für ganze nicht fungible Token obligatorisch.
  • indivisible: Dieses Verhalten unterstützt eine Einschränkung, sodass ganze Token nicht in Brüche unterteilt werden können.
  • divisible: Dieses Verhalten beschreibt, wie Token unterteilt werden können. Der Parameter decimal gibt die Anzahl der zu verwendenden Dezimalstellen an. Der kleinste Bruchteil, der mit der Anzahl der Dezimalstellen möglich ist, ist die kleinste Einheit des Tokens, dessen Eigentümer Sie sein können. Wenn der Parameter decimal nicht angegeben ist, ist der Standardwert null Dezimalstellen.
  • 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 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 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
        - 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-1155-Standard. Derzeit werden die folgenden ERC-1155-Ereignisse und -Methoden nicht unterstützt.

Ereignisse:
  • TransferSingle
  • TransferBatch
  • ApprovalForAll
  • URI
Methoden:
  • safeTransferFrom
  • balanceOf
  • setApprovalForAll
  • isApprovedForAll