Eingabespezifikationsdatei für ERC-1155

Der Initialisierungsbefehl Blockchain App Builder liest die Eingabespezifikationsdatei und generiert das gerüstete Projekt 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 Standardwerten 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

Zusätzlich zu 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 partielles 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 erforderlich. 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 fungibler 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 angegebenen 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, transferable ist für alle Token erforderlich. Das indivisible-Verhalten ist für ganze nicht fungible Token obligatorisch.
  • indivisible: Dieses Verhalten unterstützt eine Einschränkung, sodass ganze Token nicht in Bruchteile unterteilt werden können.
  • divisible: Dieses Verhalten beschreibt, wie Token unterteilt werden können. Der Parameter decimal gibt die Anzahl der Dezimalstellen an, die verwendet werden können. Der kleinste mögliche Bruch mit der Anzahl der Dezimalstellen ist die kleinste Einheit des Tokens, die Eigentum sein kann. 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 des Eigentums 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 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 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
        - 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-1155-Standard. Derzeit werden die folgenden ERC-1155-Ereignisse und -Methoden nicht unterstützt.

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