Criar e Compor um Projeto de Ativos Digitais

Você pode usar o Blockchain App Builder para criar e compor um projeto de contrato inteligente para trabalhar com ativos digitais.

O Blockchain App Builder For Besu gera um projeto de Hardhat independente para tokens ERC-20 ou ERC-1155. Você escolhe o token padrão e os recursos suportados na extensão. A função do compositor no Blockchain App Builder copia o SDK correspondente, cria o contrato de token Universal Upgradeable Proxy Standard (UUPS) concreto e adiciona scripts para implantar e atualizar o contrato inteligente.

Use a função composer para criar um projeto em que o token ABI e o contrato da conta sejam derivados de um perfil de capacidade explícito. Ele não implanta um token ao criar o projeto e não executa o comando npm install automaticamente

Para poder criar e implantar um projeto de ativos digitais, instale a extensão Blockchain App Builder para Besu e abra um espaço de trabalho do Visual Studio Code. Para implantar o projeto gerado, o Node.js e o npm devem ser instalados. Você também precisa de uma rede Hardhat ou Besu acessível, uma conta capaz de implantar contratos e um contrato de governança e um UUID de governança existentes.

Os scripts de implantação gerados exigem variáveis de ambiente GOVERNANCE_ADDRESS e GOVERNANCE_UUID. A função composer vincula esse contexto de governança aos proxies de conta e token gerados; a ativação da implantação permanece sujeita ao fluxo de trabalho de governança configurado.

Criar um Projeto

  1. Abra a exibição Módulos na barra de atividades do Blockchain App Builder para Besu.
  2. Selecione Abrir Compositor de Módulo e, em seguida, selecione a guia Compositor de Módulo.
  3. Em Criar Novo Projeto Hardhat, informe o nome do projeto e escolha sua pasta pai. A função de coomposição cria o projeto usando a seguinte estrutura de diretório: <parent_folder>/<project_name>.

    O nome do projeto pode conter letras, números, pontos, hifens e sublinhados, mas não dois pontos (..). O nome do projeto deve começar com uma letra ou sublinhado e pode conter apenas letras, números e sublinhados. O destino deve estar vazio. A função de composição não substituirá uma pasta de projeto não vazia.

  4. Selecione o padrão do token, o modo de composição e os recursos, que são descritos na seção a seguir.
  5. Informe um nome de contrato de Solidez. Por exemplo, informe DepositarToken.
  6. Verifique a visualização da composição gerada e selecione Gerar Pacote.

Quando a geração do projeto é bem-sucedida, a extensão importa o projeto para a exibição Contratos.

Modos de Composição

Por padrão, a função de composição usa o modo de composição estrita. Ambos os modos são suportados para ambos os padrões de token.
  • Modo de composição estrita: O token gerado herda uma base que expõe apenas os recursos opcionais selecionados. Para adicionar qualquer recurso que não esteja selecionado durante a composição, é necessária uma atualização de implementação.
  • O token gerado herda uma base de compatibilidade de superfície completa. A configuração de tempo de execução controla os comportamentos aplicáveis, mas a superfície mais ampla do método permanece no ABI.

Elaborar um Projeto ERC-20

Selecione um módulo de permissão de identidade necessário:
  • ERC-5892: Back-end de controle de acesso padrão.
  • ERC-6617: Back-end de controle de acesso baseado em bit.

Em seguida, configure os recursos descritos na tabela a seguir.

Entrada Valores Observações
Cunhagem Desativado, Direto, Aprovação obrigatória A aprovação necessária adiciona o workflow de solicitação/aprovação.
Queimando Desativado, Direto, Aprovação obrigatória A aprovação necessária adiciona o workflow de solicitação/aprovação.
Mantido Ativado ou desativado Suporta fluxos de trabalho de retenção.
Funções Ativada ou desativada Ativado automaticamente para cunhagem de aprovação, gravação de aprovação ou fluxos de trabalho que podem ser mantidos porque exigem autorização NOTARY.
Limites Diários Ativado ou desativado Seleciona uma variante de conta com ou sem aplicação de limite diário.
Aprovações de Vários Níveis Ativada ou desativada Ativa políticas de conta e aprovação e execução de retenção sequenciada por aprovação. Permite automaticamente a capacidade de retenção.

Os seguintes comportamentos sempre fazem parte de um perfil gerado pelo ERC-20: comportamento transferível, operações delegadas, comportamento pausável e fluxo de aprovação de governança. As funções também fazem parte do perfil quando a função de composição as habilita automaticamente.

Por exemplo, um token direct-mint, direct-burn sem retenções gera a base estrita ERC20DirectMintBurnUpgradeable. Em vez disso, a ativação de aprovações de vários níveis seleciona uma base de aprovação de vários níveis que pode ser mantida e implanta a biblioteca ERC20MultiLevelApprovalHelperLib adicional.

Elaborar um Projeto ERC-1155

Os projetos ERC-1155 usam o back-end de controle de acesso ERC-5982 por padrão. Selecione um tipo de ativo:

  • Token fungível: classes de token com um suprimento fungível.
  • NFT inteiro: classes NFT não fracionárias.
  • NFT fracionária: classes NFT com propriedade fracionária.
  • Tokens fungíveis e não fungíveis combinados: Classes para tokens fungíveis e NFTs.

Configure a cunhagem direta e a gravação conforme ativado ou desativado. Cunhagem e queima com aprovações não são suportados para ERC-1155. A função de composição sempre inclui comportamento transferível, aprovação de operador delegado (setApprovalForAll e isApprovedForAll), comportamento pausável, governança e controle de acesso ERC-5982.

É possível ativar funções. Para tipos de ativo NFT, você também pode ativar NFTs bloqueáveis. O bloqueio não está disponível para tokens fungíveis e é desativado quando a cunhagem e a gravação estão desativadas. O comportamento divisível/indivisível é derivado do tipo de ativo selecionado, não informado separadamente. Não há suporte para limites diários, comportamento de retenção e aprovações de vários níveis.

O perfil ERC-1155 combinado usa a base ERC1155CombinedTokenUpgradeable de superfície completa, mesmo quando você seleciona a composição estrita. Outros perfis rígidos usam uma base específica de tipo de ativo e hortelã/queimadura.

Conteúdo do Projeto Gerado

A função de composição cria a seguinte estrutura de projeto.

<project>/
├── contracts/
│   ├── obp-sdk/                         # copied ERC-20 or ERC-1155 SDK source
│   └── <ContractName>/
│       ├── <ContractName>Upgradeable.sol
│       └── generated.manifest.json      # selected profile and generated paths
├── scripts/
│   ├── deploy/<contract-name>/deploy-<contract-name>.ts
│   └── upgrade/
│       ├── upgrade-<contract-name>.ts
│       └── upgrade-<contract-name>-account.ts
├── .obp-bap/
│   ├── plugins/                         # bundled Hardhat plugin archives
│   └── project.json                     # Composer project metadata
├── config/hardhat-env.ts
├── hardhat.config.ts
├── package.json
└── README.md

O SDK localizado em contracts/obp-sdk/ é copiado para o projeto gerado e pertence ao projeto após a geração. O manifesto registra o padrão de token, o modo de composição, os contratos de base e conta selecionados e o perfil de capacidade normalizado completo

Solucionando Problemas de Erros de Geração

Mensagem ou Condição Resolução
Select one identity-permission module Escolha ERC-5982 ou ERC-6617 para ERC-20.
Contract name must start with a letter/underscore Use um identificador de Solidez válido.
Project name is required ou nome inseguro Forneça um nome de projeto simples sem separadores de caminho ou pontos duplos (..).
Choose a parent folder Selecione uma pasta pai absoluta no compositor.
A pasta de destino existe e não está vazia Escolha um novo nome de projeto ou um destino vazio. A função de composição não substituirá os projetos.
Cunhagem ou queima baseada em aprovação ERC-1155 não é suportada Escolha Desativado ou Direto para cunhagem e gravação de ERC-1155.
GOVERNANCE_ADDRESS and GOVERNANCE_UUID are required Configure os dois valores antes de executar o script de implantação gerado.

Depois de gerar um projeto de contrato, você pode usar o projeto importado na exibição Contratos para compilar, implantar e abrir formulários de implantação ou executar. Mantenha o manifesto gerado com o contrato; as ferramentas de extensão usam o manifesto para emparelhar o token gerado e os ABIs da conta com o perfil do compositor selecionado.