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
- Abra a exibição Módulos na barra de atividades do Blockchain App Builder para Besu.
- Selecione Abrir Compositor de Módulo e, em seguida, selecione a guia Compositor de Módulo.
- 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.
- Selecione o padrão do token, o modo de composição e os recursos, que são descritos na seção a seguir.
- Informe um nome de contrato de Solidez. Por exemplo, informe DepositarToken.
- 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
- 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
- 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.mdO 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.