Archivo de especificación de entrada para ERC-1155

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 fungibles y no fungibles basados en el estándar ERC-1155 en el mismo archivo de especificación. No puede definir activos de token basados en más de un estándar en el mismo archivo de especificación.

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.

Los siguientes archivos de especificación de ejemplo para 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 del archivo de especificación. Además, los activos de token no fungibles soportan la sección metadata. En el siguiente ejemplo se 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

El siguiente ejemplo 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 7-7 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 fraccionales más pequeñas. Un token fraccional se puede subdividir en unidades más pequeñas, o recursos compartidos, en función de un número especificado de posiciones 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 soporta una restricción para que los tokens completos 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 posiciones decimales que se pueden utilizar. La fracción más pequeña posible con el número de posiciones decimales es la unidad más pequeña del token que puede ser propiedad. Si no se especifica el parámetro decimal, el valor por defecto es cero decimales.
  • 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 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 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
        - 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-1155. Actualmente, los siguientes eventos y métodos ERC-1155 no están soportados.

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