File specifica input per ERC-721

Il comando di inizializzazione di Blockchain App Builder legge il file delle specifiche di input e genera il progetto impalcato con diversi strumenti per assistere nel processo di sviluppo del codice concatenato.

È possibile definire asset standard e asset token basati sullo standard ERC-721 nello stesso file di specifica. Le seguenti restrizioni si applicano a un file di specifica che include una definizione di asset token ERC-721:
  • Impossibile definire asset token basati su più standard nello stesso file di specifica.
  • Impossibile definire più asset token non fungibili in un singolo file di specifica.

I valori degli attributi personalizzati per gli asset token non fungibili possono essere aggiornati dal proprietario del token.

Per informazioni sull'inclusione degli asset standard nel file di specifica, vedere File di specifica di input.

Il seguente file di specifica di esempio per un asset token ERC-721 è disponibile nel package Blockchain App Builder:
  • NFTArtCollectionMarketPlace with ERC-721-Typescript.yml

Oltre alle proprietà e alle sezioni standard, gli asset token non fungibili supportano le sezioni behavior, anatomy e metadata nel file di specifica. Gli asset token non fungibili supportano anche le proprietà standard e symbol. L'esempio seguente mostra la struttura di un file di specifica per un asset token 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

Tabella 4-2 Descrizioni ed esempi dei parametri per un file di specifica dei token ERC-721

Voce Descrizione Esempi
type:

È necessario specificare type: token nella sezione assets.

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
symbol: La proprietà symbol rappresenta il simbolo che identifica il contratto token, ad esempio ART. In genere il simbolo ha una lunghezza compresa tra 3 e 4 caratteri.
symbol: ART # Token symbol
standard: La proprietà standard è obbligatoria per i token non fungibili. Rappresenta lo standard del token da seguire durante la generazione del codice concatenato. In Blockchain App Builder, i token non fungibili seguono una versione parziale dello standard ERC-721. Per maggiori informazioni, vedere Limitazioni.
standard: erc721+ # Token standard
anatomy:
La sezione anatomy contiene due parametri obbligatori per i token non fungibili:
  • type: nonfungible

    Un token non fungibile è univoco.

  • unit: whole

    Un token intero non può essere suddiviso in unità frazionarie più piccole.

anatomy:
          type: nonfungible # Token type
          unit: whole #Token unit
behavior: Questa sezione descrive le funzionalità e le limitazioni del token. I comportamenti mintable, transferable, singleton e indivisible sono obbligatori per i token non fungibili.
  • singleton: questo comportamento obbligatorio supporta una limitazione in modo che nella classe possa essere presente un solo token intero, che non può essere diviso.
  • indivisible: questo comportamento obbligatorio supporta una restrizione in modo che i token interi non possano essere suddivisi in frazioni.
  • mintable: questo comportamento obbligatorio supporta la generazione di nuove istanze di token. Il parametro facoltativo max_mint_quantity specifica il numero totale di token che è possibile coniare. Se non si specifica il parametro max_mint_quantity, è possibile coniare un numero qualsiasi di token.
  • transferable: questo comportamento obbligatorio supporta il trasferimento della proprietà dei token.
  • burnable: questo comportamento facoltativo supporta la disattivazione o la masterizzazione dei token. La masterizzazione non elimina un token ma lo colloca in uno stato permanente in cui non può essere utilizzato. Bruciare non è reversibile.
  • lockable: Questo comportamento è facoltativo ed è supportato solo da token non fungibili. Questo comportamento consente al proprietario del token di bloccare un token non fungibile. Un token bloccato non può essere trasferito o masterizzato da altri utenti.
  • roles: questo comportamento facoltativo limita i comportamenti dei token agli utenti con ruoli specifici. Al momento sono disponibili due ruoli: minter_role_name e burner_role_name. Se non si specificano ruoli, qualsiasi utente può fungere da minatore o masterizzatore. Ad esempio, se il ruolo di masterizzatore non viene specificato, qualsiasi utente di account dispone implicitamente del ruolo di masterizzatore. Se si specifica il ruolo di masterizzatore, durante il processo di impostazione del token l'utente Token Admin deve assegnare il ruolo di masterizzatore ad altri utenti in modo esplicito.
behavior:
        - indivisible
        - singleton
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
metadata:

La proprietà metadata è facoltativa ed è supportata solo da token non fungibili. Questa proprietà specifica le informazioni sui metadati, che vengono memorizzate sulla blockchain, per un token non fungibile. I valori degli attributi dei metadati possono essere assegnati solo dal proprietario del token che estrae il token e non possono essere aggiornati dopo la stampa del token.

Nell'esempio, name è il nome dell'attributo metadati e type è il tipo di valore dell'attributo.

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

Limitazioni

Blockchain App Builder fornisce un supporto parziale per lo standard ERC-721. Attualmente, i seguenti eventi e metodi ERC-721 non sono supportati.

Eventi:
  • event Transfer
  • event Approval
  • event ApprovalForAll
Metodi:
  • approve
  • getApproved
  • setApprovalForAll
  • isApprovedForAll