File specifica di input per ERC-721

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

È possibile definire cespiti standard e cespiti 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 in base a 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.

Nel pacchetto Blockchain App Builder è disponibile il seguente file di specifica di esempio per un asset token ERC-721:
  • 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 7-6 Descrizioni ed esempi dei parametri per un file di specifica 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 del 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 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 ulteriori 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 capacità 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 esistere un solo token intero, che non può essere diviso.
  • indivisible: questo comportamento obbligatorio supporta una limitazione in modo che interi token non possano essere suddivisi in frazioni.
  • mintable: questo comportamento obbligatorio supporta il conio di nuove istanze di token. Il parametro facoltativo max_mint_quantity specifica il numero totale di token che possono essere coniati. Se non si specifica il parametro max_mint_quantity, è possibile creare 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 funzione di masterizzazione non elimina un token, ma lo posiziona in uno stato permanente in cui non è possibile utilizzarlo. 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. Attualmente sono disponibili due ruoli: minter_role_name e burner_role_name. Se non si specificano i ruoli, qualsiasi utente può agire come minatore o bruciatore. Ad esempio, se il ruolo bruciatore non viene specificato, qualsiasi utente account ha implicitamente il ruolo bruciatore. Se viene specificato il ruolo burner, durante il processo di impostazione del token l'utente Token Admin deve assegnare il ruolo burner in modo esplicito ad altri utenti.
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, memorizzate sulla blockchain, per un token non fungibile. I valori degli attributi dei metadati possono essere assegnati solo dal proprietario del token che coniuga il token e non possono essere aggiornati dopo la coniatura del token.

Nell'esempio, name è il nome dell'attributo dei 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

Limiti

Blockchain App Builder fornisce 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