Archivo de especificación de entrada para ERC-1155

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

Puede definir activos estándar y activos de token fungibles y no fungibles que se basan en el estándar ERC-1155 en el mismo archivo de especificación. No puede definir activos de token en función de más de un estándar en el mismo archivo de especificación.

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

Los siguientes archivos de especificación de ejemplo para los activos de token ERC-1155 están disponibles en el paquete Blockchain App Builder:
  • NFTArtCollectionMarketplacewithERC1155-TypeScript.yml
  • FractionalNFTinRealEstate-TypeScript.yml

Además de las propiedades y secciones estándar, los activos de token soportan las secciones behavior y anatomy en el archivo de especificación. Además, los activos de token no fungibles admiten la sección metadata. El siguiente ejemplo muestra la estructura de un archivo de especificación para dos activos de token ERC-1155, un token no fungible completo y un token fungible fraccional:

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
      standard: erc1155+   # Token standard
      
      anatomy:
          type: nonfungible # Token type
          unit: whole  #Token unit
      
      behavior:
        - indivisible                
        - mintable:                   
            max_mint_quantity: 20000
        - transferable                
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
      
      properties:  # Custom asset attributes for non-fungible token 
          
          - 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

    - name: Loyalty # Asset name
      type: token  # Asset type
      standard: erc1155+   # Token standard

      anatomy: 
          type: fungible # Token type
          unit: fractional # Token unit

      behavior: # Token behaviors
          - divisible: 
                decimal: 2  
          - mintable: 
                max_mint_quantity: 10000 
          - transferable
          - burnable 
          - roles: 
                minter_role_name: minter 

      properties:
          - name: currency_name # Custom attribute to represent the token in a specific currency.
            type: string

          - name: token_to_currency_ratio # Custom attribute to specify the token to currency ratio.
            type: number

En el siguiente ejemplo, se muestra la estructura de un archivo de especificación para un token no fungible fraccional:

- name: RealEstateProperty #Asset name
      type: token #Asset type
      standard: erc1155+ # Token standard
      
      anatomy:
          type: nonfungible # Token type
          unit: fractional #Token unit
      
      behavior:
        - divisible:
        - mintable:
        - transferable
        - roles:
            minter_role_name: minter
      
      properties: # Custom asset attributes for non-fungible token.
          
          - name: propertySellingPrice # Custom asset attribute to set the real estate property selling price
            type: number
 
          - name: propertyRentingPrice # Custom asset attribute maintains the renting amount for the real estate property
            type: number
            
      metadata: # To maintain the metadata on-chain, this tag will be used. Users won't be able to update the metadata attribute values.
          
          - name: propertyType
            type: string
 
          - name: propertyName
            type: string
 
          - name: propertyAddress
            type: string
          
          - name: propertyImage
            type: string

Tabla 4-3 Descripciones de parámetros y ejemplos para un archivo de especificación de token ERC-1155

Entrada Descripción Ejemplos
type:

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

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
standard: La propiedad standard es obligatoria para los tokens ERC-1155. Representa el estándar de token que se debe seguir durante la generación del código de cadena.
standard: erc1155+ # Token standard
anatomy:
La sección anatomy tiene dos parámetros obligatorios:
  • type: nonfungible o type: fungible

    Un token no fungible es único.

  • unit: whole o unit: fractional

    Un token entero no se puede subdividir en unidades fraccionadas más pequeñas. Un token fraccionario se puede subdividir en unidades más pequeñas, o acciones, en función de un número especificado de decimales.

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 y transferable son obligatorios para todos los tokens. El comportamiento indivisible es obligatorio para tokens no fungibles completos.
  • indivisible: este comportamiento admite una restricción para que los tokens enteros no se puedan subdividir en fracciones.
  • divisible: este comportamiento describe cómo se pueden subdividir los tokens. El parámetro decimal especifica el número de decimales que se pueden utilizar. La fracción más pequeña posible con el número de decimales es la unidad más pequeña del token que se puede poseer. Si no se especifica el parámetro decimal, el valor por defecto es cero decimales.
  • mintable: este comportamiento obligatorio soporta la extracción 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 extraer cualquier número de tokens.
  • transferable: este comportamiento obligatorio soporta la transferencia de la propiedad de tokens.
  • burnable: este comportamiento admite la desactivación o grabación de tokens. Burning no suprime un token, sino que lo coloca en un estado permanente en el que 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 o quemado por ningún otro usuario.
  • roles: este comportamiento 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 un minter o quemador. 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 de forma explícita.
behavior:
        - indivisible
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
metadata:

La propiedad metadata es opcional y sólo está soportada por 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 acuña el token y no se pueden actualizar una vez que se acuña 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-1155. Actualmente, no se admiten los siguientes eventos y métodos ERC-1155.

Eventos:
  • TransferSingle
  • TransferBatch
  • ApprovalForAll
  • URI
Métodos:
  • safeTransferFrom
  • balanceOf
  • setApprovalForAll
  • isApprovedForAll