Archivo de especificación de entrada para ERC-721

El comando de inicialización Blockchain App Builder lee el archivo de especificación de entrada y genera el proyecto andamio con varias herramientas para ayudar en el proceso de desarrollo de código de cadenas.

Puede definir activos estándar y activos de token que se basan en el estándar ERC-721 en el mismo archivo de especificación. Las siguientes restricciones se aplican a un archivo de especificación que incluye una definición de activo de token ERC-721:
  • No puede definir activos de token basados en más de un estándar en el mismo archivo de especificación.
  • No puede definir varios activos de token no fungibles en un único archivo de especificación.

El propietario del token puede actualizar los valores de atributo personalizados para activos de token no fungibles.

Para obtener información sobre la inclusión de activos estándar en el archivo de especificación, consulte Archivo de especificación de entrada.

El siguiente archivo de especificación de ejemplo para un activo de token ERC-721 está disponible en el paquete Blockchain App Builder:
  • NFTArtCollectionMarketPlace with ERC-721-Typescript.yml

Además de las propiedades y secciones estándar, los activos de token no fungibles soportan las secciones behavior, anatomy y metadata del archivo de especificación. Los activos de token no fungibles también soportan las propiedades standard y symbol. En el siguiente ejemplo se muestra la estructura de un archivo de especificación para un activo de 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

Tabla 7-6 Descripciones de parámetros y ejemplos para un archivo de especificación de token ERC-721

Entrada Descripción Ejemplos
type:

Debe especificar type: token en la sección assets.

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
symbol: La propiedad symbol representa el símbolo que identifica el contrato de token, por ejemplo, ART. Normalmente, el símbolo tiene entre 3 y 4 caracteres.
symbol: ART # Token symbol
standard: La propiedad standard es obligatoria para tokens no fungibles. Representa el estándar de token que se debe seguir durante la generación del código de cadena. En Blockchain App Builder, los tokens no fungibles siguen una versión parcial del estándar ERC-721. Para obtener más información, consulte Limitaciones.
standard: erc721+ # Token standard
anatomy:
La sección anatomy tiene dos parámetros obligatorios para tokens no fungibles:
  • type: nonfungible

    Un token no fungible es único.

  • unit: whole

    Un token entero no se puede subdividir en unidades fraccionales más pequeñas.

anatomy:
          type: nonfungible # Token type
          unit: whole #Token unit
behavior: En esta sección, se describen las capacidades y las restricciones del token. Los comportamientos mintable, transferable, singleton y indivisible son obligatorios para los tokens no fungibles.
  • singleton: este comportamiento obligatorio soporta una restricción para que solo pueda haber un token completo en la clase, que no se puede dividir.
  • indivisible: este comportamiento obligatorio soporta una restricción para que los tokens completos no se puedan subdividir en fracciones.
  • mintable: este comportamiento obligatorio soporta la minería de nuevas instancias de token. El parámetro opcional max_mint_quantity especifica el número total de tokens que se pueden extraer. Si no especifica el parámetro max_mint_quantity, se puede minar cualquier número de tokens.
  • transferable: este comportamiento obligatorio soporta la transferencia de propiedad de tokens.
  • burnable: este comportamiento opcional soporta la desactivación o la grabación de tokens. Burning no suprime un token, sino que lo coloca en un estado permanente donde no se puede utilizar. La quema no es reversible.
  • lockable: este comportamiento es opcional y sólo está soportado por tokens no fungibles. Este comportamiento permite al propietario del token bloquear un token no fungible. Un token bloqueado no puede ser transferido ni quemado por ningún otro usuario.
  • roles: este comportamiento opcional restringe los comportamientos de token a los usuarios con roles específicos. Actualmente hay dos roles disponibles: minter_role_name y burner_role_name. Si no especifica roles, cualquier usuario puede actuar como minter o burner. Por ejemplo, si no se especifica el rol de quemador, cualquier usuario de cuenta tiene implícitamente el rol de quemador. Si se especifica el rol de quemador, durante el proceso de configuración del token, el usuario Token Admin debe asignar el rol de quemador a otros usuarios explícitamente.
behavior:
        - indivisible
        - singleton
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
metadata:

La propiedad metadata es opcional y sólo es compatible con tokens no fungibles. Esta propiedad especifica la información de metadatos, que se almacena en la cadena de bloques, para un token no fungible. Los valores de atributo de metadatos solo los puede asignar el propietario del token que extrae el token y no se pueden actualizar después de que se extrae el token.

En el ejemplo, name es el nombre del atributo de metadatos y type es el tipo de valor que tiene el atributo.

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

Limitaciones

Blockchain App Builder proporciona soporte parcial para el estándar ERC-721. Actualmente, los siguientes eventos y métodos de ERC-721 no están soportados.

Eventos:
  • event Transfer
  • event Approval
  • event ApprovalForAll
Métodos:
  • approve
  • getApproved
  • setApprovalForAll
  • isApprovedForAll