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

La commande d'initialisation du générateur d'applications de chaîne de blocs 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 de chaîne.

Vous pouvez définir des immobilisations standard et des immobilisations de jeton qui sont basées sur la norme ERC-721 dans le même fichier de spécification. Les restrictions suivantes s'appliquent à un fichier de spécification qui inclut une définition de jeton ERC-721 :
  • Vous ne pouvez pas définir des ressources de jeton en fonction de plusieurs normes dans le même fichier de spécification.
  • Vous ne pouvez pas définir plusieurs immobilisations de jeton non fongibles dans un seul fichier de spécification.

Les valeurs d'attribut personnalisées pour les ressources de jeton non fongibles peuvent être mises à jour par le responsable du jeton.

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

L'exemple de fichier de spécification suivant pour une ressource de jeton ERC-721 est disponible dans le package Blockchain App Builder :
  • NFTArtCollectionMarketPlace with ERC-721-Typescript.yml

Outre les propriétés et les sections standard, les ressources de jeton non fongibles prennent en charge les sections behavior, anatomy et metadata dans le fichier de spécification. Les ressources de jeton non fongibles prennent également en charge les propriétés standard et symbol. L'exemple suivant montre la structure d'un fichier de spécification pour une ressource de jeton ERC-721 :

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

Tableau 7-6 : Descriptions et exemples de paramètres pour un fichier de spécification de jeton ERC-721

Entrée Description Exemples
type:

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

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
symbol: La propriété symbol représente le symbole qui identifie le contrat de jeton, par exemple ART. En général, le symbole comporte de 3 à 4 caractères.
symbol: ART # Token symbol
standard: La propriété standard est obligatoire pour les jetons non fongibles. Il représente la norme de jeton à suivre lors de la génération du code de chaîne. Dans Blockchain App Builder, les jetons non fongibles suivent une version partielle de la norme ERC-721. Pour plus d'informations, voir Limites.
standard: erc721+ # Token standard
anatomy:
La section anatomy comporte deux paramètres obligatoires pour les jetons non fongibles :
  • type: nonfungible

    Un jeton non fongible est unique.

  • unit: whole

    Un jeton entier ne peut pas être subdivisé en unités fractionnaires plus petites.

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, transferable, singleton et indivisible sont obligatoires pour les jetons non fongibles.
  • singleton : Ce comportement obligatoire prend en charge une restriction afin qu'il ne puisse y avoir qu'un seul jeton entier dans la classe, qui ne peut pas être divisé.
  • indivisible : Ce comportement obligatoire prend en charge une restriction afin que les jetons entiers ne puissent pas être subdivisés en fractions.
  • mintable : Ce comportement obligatoire prend en charge la suppression de nouvelles instances de jeton. Le paramètre facultatif max_mint_quantity spécifie le nombre total de jetons pouvant être frappés. Si vous ne spécifiez pas le paramètre max_mint_quantity, vous pouvez frapper un nombre quelconque de jetons.
  • transferable : Ce comportement obligatoire prend en charge le transfert de propriété des jetons.
  • burnable : Ce comportement facultatif prend en charge la désactivation ou la gravure des jetons. La gravure ne supprime pas un jeton, mais le place dans un état permanent où il ne peut pas être utilisé. La combustion 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 brûlé par d'autres utilisateurs.
  • roles : Ce comportement facultatif limite les comportements de jeton aux utilisateurs ayant des rôles spécifiques. Actuellement, deux rôles sont disponibles : minter_role_name et burner_role_name. Si vous ne spécifiez pas de rôles, n'importe quel utilisateur peut agir en tant que minter 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
        - singleton
        - 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 chaîne de blocs, pour un jeton non fongible. Les valeurs d'attribut de métadonnées ne peuvent être affectées que par le responsable du jeton qui frappe le jeton et ne peuvent pas être mises à jour après la frappe 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

Limitations

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

Événements :
  • event Transfer
  • event Approval
  • event ApprovalForAll
Méthodes :
  • approve
  • getApproved
  • setApprovalForAll
  • isApprovedForAll