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

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 ressources standard et des ressources de jeton 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 ressource de jeton ERC-721 :
  • Vous ne pouvez pas définir des ressources de jeton basées sur plusieurs normes dans le même fichier de spécification.
  • Vous ne pouvez pas définir plusieurs ressources de jeton non fongibles dans un seul fichier de spécification.

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

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.

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

En plus des propriétés et des 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 des paramètres et exemples 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 entre 3 et 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 chaîne. Dans Blockchain App Builder, les jetons non fongibles suivent une version partielle de la norme ERC-721. Pour plus d'informations, reportez-vous à 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 de sorte qu'il ne peut 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 de sorte que les jetons entiers ne puissent pas être subdivisés en fractions.
  • 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 facultatif 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 facultatif 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
        - 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 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-721. Actuellement, les événements et méthodes ERC-721 suivants ne sont pas pris en charge.

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