Arquivo de Especificação de Entrada para ERC-721

O comando de inicialização do Blockchain App Builder lê o arquivo de especificação de entrada e gera o projeto com várias ferramentas para ajudar no processo de desenvolvimento de chaincode.

Você pode definir ativos padrão e ativos de token com base no padrão ERC-721 no mesmo arquivo de especificação. As seguintes restrições se aplicam a um arquivo de especificação que inclui uma definição de ativo de token ERC-721:
  • Não é possível definir ativos de token com base em mais de um padrão no mesmo arquivo de especificação.
  • Não é possível definir vários ativos de token não fungíveis em um único arquivo de especificação.

Os valores de atributo personalizados para ativos de token não fungíveis podem ser atualizados pelo proprietário do token.

Para obter informações sobre como incluir ativos padrão no arquivo de especificação, consulte Arquivo de Especificação de Entrada.

O arquivo de especificação de amostra a seguir para um ativo de token ERC-721 está disponível no pacote Blockchain App Builder:
  • NFTArtCollectionMarketPlace with ERC-721-Typescript.yml

Além das propriedades e seções padrão, os ativos de token não fungíveis suportam as seções behavior, anatomy e metadata no arquivo de especificação. Os ativos de token não fungíveis também suportam as propriedades standard e symbol. O exemplo a seguir mostra a estrutura de um arquivo de especificação para um ativo 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

Tabela 7-6 Descrições e Exemplos de Parâmetros para um Arquivo de Especificação de Token ERC-721

Entrada Descrição Exemplos
type:

Você deve especificar type: token na seção assets.

assets:
    - name: ArtCollection #Asset name
      type: token #Asset type
symbol: A propriedade symbol representa o símbolo que identifica o contrato de token, por exemplo, ART. Normalmente, o símbolo tem de 3 a 4 caracteres.
symbol: ART # Token symbol
standard: A propriedade standard é obrigatória para tokens não fungíveis. Ele representa o padrão de token a ser seguido durante a geração do chaincode. No Blockchain App Builder, os tokens não fungíveis seguem uma versão parcial do padrão ERC-721. Para obter mais informações, consulte Limitações.
standard: erc721+ # Token standard
anatomy:
A seção anatomy tem dois parâmetros obrigatórios para tokens não fungíveis:
  • type: nonfungible

    Um token não fungível é exclusivo.

  • unit: whole

    Um token inteiro não pode ser subdividido em unidades fracionárias menores.

anatomy:
          type: nonfungible # Token type
          unit: whole #Token unit
behavior: Esta seção descreve os recursos e as restrições do token. Os comportamentos mintable, transferable, singleton e indivisible são obrigatórios para tokens não fungíveis.
  • singleton: Esse comportamento obrigatório suporta uma restrição para que haja apenas um token inteiro na classe, que não pode ser dividido.
  • indivisible: Esse comportamento obrigatório suporta uma restrição para que tokens inteiros não possam ser subdivididos em frações.
  • mintable: Esse comportamento obrigatório suporta a criação de novas instâncias de token. O parâmetro max_mint_quantity opcional especifica o número total de tokens que podem ser cunhados. Se você não especificar o parâmetro max_mint_quantity, qualquer número de tokens poderá ser cunhado.
  • transferable: Esse comportamento obrigatório suporta a transferência de propriedade de tokens.
  • burnable: Esse comportamento opcional suporta a desativação ou gravação de tokens. A queima não exclui um token, mas o coloca em um estado permanente em que não pode ser usado. A queima não é reversível.
  • lockable: Esse comportamento é opcional e só é suportado por tokens não fungíveis. Esse comportamento permite que o proprietário do token bloqueie um token não fungível. Um token bloqueado não pode ser transferido ou gravado por nenhum outro usuário.
  • roles: Esse comportamento opcional restringe os comportamentos de token aos usuários com atribuições específicas. No momento, duas atribuições estão disponíveis: minter_role_name e burner_role_name. Se você não especificar funções, qualquer usuário poderá agir como um mineiro ou queimador. Por exemplo, se a função de gravador não for especificada, qualquer usuário da conta terá implicitamente a função de gravador. Se a função de gravador for especificada, durante o processo de configuração do token, o usuário Token Admin deverá atribuir a função de gravador a outros usuários explicitamente.
behavior:
        - indivisible
        - singleton
        - mintable:
            max_mint_quantity: 20000
        - transferable
        - burnable
        - lockable
        - roles:
            minter_role_name: minter
metadata:

A propriedade metadata é opcional e só é suportada por tokens não fungíveis. Essa propriedade especifica informações de metadados, que são armazenadas no blockchain, para um token não fungível. Os valores de atributo de metadados só podem ser designados pelo proprietário do token que cria o token e não podem ser atualizados após o token ser cunhado.

No exemplo, name é o nome do atributo de metadados e type é o tipo de valor que o atributo tem.

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

Limitações

O Blockchain App Builder fornece suporte parcial para o padrão ERC-721. Atualmente, os seguintes eventos e métodos ERC-721 não são suportados.

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