Fichier de spécification d'entrée pour ERC-1155

La commande d'initialisation Blockchain App Builder lit le fichier de spécification d'entrée et génère le projet échafaudé avec plusieurs outils pour faciliter le processus de développement de code chaîne.

Vous pouvez définir des actifs standard et des actifs à jetons fongibles et non fongibles qui sont basés sur la norme ERC-1155 dans le même fichier de spécification. Vous ne pouvez pas définir des ressources de jeton basées sur plusieurs normes dans le même fichier de spécification.

Pour plus d'informations sur l'inclusion de ressources standard dans le fichier de spécification, reportez-vous à Fichier de spécification d'entrée.

Les exemples de fichiers de spécification suivants pour les ressources de jeton ERC-1155 sont disponibles dans le package Blockchain App Builder :
  • NFTArtCollectionMarketplacewithERC1155-TypeScript.yml
  • FractionalNFTinRealEstate-TypeScript.yml

En plus des propriétés et des sections standard, les ressources de jeton prennent en charge les sections behavior et anatomy dans le fichier de spécification. En outre, les ressources de jeton non fongibles prennent en charge la section metadata. L'exemple suivant montre la structure d'un fichier de spécification pour deux actifs de jeton ERC-1155, un jeton entier non fongible et un jeton fongible fractionnaire :

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

L'exemple suivant montre la structure d'un fichier de spécification pour un jeton fractionnaire non fongible :

- 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

Tableau 7-7 Descriptions des paramètres et exemples pour un fichier de spécification de jeton ERC-1155

Entrée Description Exemples 
type:

Vous devez spécifier type: token dans la section assets.

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
standard: La propriété standard est obligatoire pour les jetons ERC-1155. Il représente la norme de jeton à suivre lors de la génération du code chaîne.
standard: erc1155+ # Token standard
anatomy:
La section anatomy comporte deux paramètres obligatoires :
  • type: nonfungible ou type: fungible

    Un jeton non fongible est unique.

  • unit: whole ou unit: fractional

    Un jeton entier ne peut pas être subdivisé en unités fractionnaires plus petites. Un jeton fractionnaire peut être subdivisé en unités plus petites, ou partages, en fonction d'un nombre spécifié de décimales.

anatomy:
          type: nonfungible # Token type
          unit: whole #Token unit
behavior: Cette section décrit les capacités et les restrictions du jeton. Les comportements mintable et transferable sont obligatoires pour tous les jetons. Le comportement indivisible est obligatoire pour les jetons non fongibles entiers.
  • indivisible : ce comportement prend en charge une restriction de sorte que les jetons entiers ne puissent pas être subdivisés en fractions.
  • divisible : ce comportement décrit comment les jetons peuvent être subdivisés. Le paramètre decimal indique le nombre de positions décimales pouvant être utilisées. La plus petite fraction possible avec le nombre de décimales est la plus petite unité du jeton qui peut être détenue. Si le paramètre decimal n'est pas spécifié, la valeur par défaut est zéro décimale.
  • mintable : ce comportement obligatoire prend en charge l'extraction des nouvelles instances de jeton. Le paramètre facultatif max_mint_quantity indique le nombre total de jetons pouvant être extraits. Si vous n'indiquez pas le paramètre max_mint_quantity, tout nombre de jetons peut être extrait.
  • transferable : ce comportement obligatoire prend en charge le transfert de propriété des jetons.
  • burnable : ce comportement prend en charge la désactivation ou la gravure de jetons. La gravure ne supprime pas un jeton, mais le place dans un état permanent où il ne peut pas être utilisé. Brûler n'est pas réversible.
  • lockable : ce comportement est facultatif et n'est pris en charge que par des jetons non fongibles. Ce comportement permet au propriétaire du jeton de verrouiller un jeton non fongible. Un jeton verrouillé ne peut pas être transféré ou gravé par d'autres utilisateurs.
  • roles : ce comportement limite les comportements de jeton aux utilisateurs dotés de rôles spécifiques. Actuellement, deux rôles sont disponibles : minter_role_name et burner_role_name. Si vous n'indiquez pas de rôles, tout utilisateur peut agir en tant que mineur ou brûleur. Par exemple, si le rôle de brûleur n'est pas spécifié, tout utilisateur de compte a implicitement le rôle de brûleur. Si le rôle de brûleur est spécifié, lors du processus de configuration du jeton, l'utilisateur Token Admin doit affecter explicitement le rôle de brûleur à d'autres utilisateurs.
behavior:
        - indivisible
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
metadata:

La propriété metadata est facultative et n'est prise en charge que par des jetons non fongibles. Cette propriété spécifie les informations de métadonnées, qui sont stockées sur la blockchain, pour un jeton non fongible. Les valeurs d'attribut de métadonnées ne peuvent être affectées que par le propriétaire du jeton qui extrait le jeton et ne peuvent pas être mises à jour après l'extraction du jeton.

Dans l'exemple, name est le nom de l'attribut de métadonnées et type est le type de valeur de l'attribut.

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

Restrictions

Blockchain App Builder fournit une prise en charge partielle de la norme ERC-1155. Actuellement, les événements et méthodes ERC-1155 suivants ne sont pas pris en charge.

Evénements:
  • TransferSingle
  • TransferBatch
  • ApprovalForAll
  • URI
Méthodes:
  • safeTransferFrom
  • balanceOf
  • setApprovalForAll
  • isApprovedForAll