Fazer Upload de um Manifesto de Contrato no Registro com a Linha de Comando
Você pode usar a linha de comando para validar e publicar metadados de implantação de um projeto Hardhat selecionado para contratar serviços de registro.
A tarefa Hardhat do upload-contract-manifest publica os manifestos de contrato atualizáveis ou imutáveis do projeto para serviços de registro configurados.
Execute a tarefa no diretório raiz do projeto do contrato empacotado após uma implantação bem-sucedida. A tarefa lê arquivos de manifesto de implantação do projeto. Os seguintes arquivos são os locais padrão:
- Manifesto OpenZeppelin:
.openzeppelin/unknown-<chain-id>.json - Manifesto ERC-7201:
.obp-da/.erc7201/deployedContracts-<chain-id>.json - Manifesto Imutável/Solidity:
.obp-da/.solc/deployedContracts-<chain-id>.json
OZ_MANIFEST_PATH como seu caminho project-local.
- Configurar pontos finais de registro. Defina as variáveis de ponto final do registro para os tipos de manifesto que você planeja fazer upload. Use o mecanismo seguro de variável de ambiente do seu shell ou o mecanismo de variável Hardhat configurado do projeto; não confirme credenciais ou pontos finais privados no controle de origem. Por exemplo, uma chamada de shell ocasional pode fornecer os valores para a tarefa, conforme mostrado no exemplo a seguir.
Para um ambiente do Oracle Blockchain Platform, também forneça as informações da cadeia de destino e o token de autorização de proxy RPC exigido pela configuração do seu projeto.ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \ SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \ npx hardhat upload-contract-manifest --mode all
Os valores do ponto final são configuração explícita. Não suponha que um URL de registro possa ser derivado de um nome de host do Oracle Blockchain Platform.BESU_CHAIN_ID="<chain-id>" \ BESU_RPX_PROXY_AUTH_TOKEN="<rpc-proxy-token>" \ ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \ SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \ npx hardhat upload-contract-manifest --mode all - Selecione o que enviar escolhendo um dos modos a seguir.
Os modos# Upload both applicable manifest types. npx hardhat upload-contract-manifest --mode all # Upload the OpenZeppelin and ERC-7201 manifest content. npx hardhat upload-contract-manifest --mode erc7201 # Upload immutable/Solidity contract manifest content only. npx hardhat upload-contract-manifest --mode immutablealleerc7201exigem a variávelERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT. Os modosalleimmutableexigem a variávelSOLC_UPLOAD_REGISTRY_ENDPOINT. Para projetos importados empacotados ou contratos de ativos digitais gerados pelo Blockchain App Builder, o modo ERC-7201 é suficiente. - Use a opção
--dry-runpara validar os arquivos de manifesto selecionados e fazer upload da configuração sem publicação.npx hardhat upload-contract-manifest --mode all --dry-run - Após uma execução seca bem-sucedida, execute o mesmo comando sem a opção
--dry-runpara publicar. Se o seu projeto suportar isso, defina a variávelUPLOAD_CONTRACT_MANIFEST_TIMEOUT_MSpara aumentar o timeout de upload e definaUPLOAD_CONTRACT_MANIFEST_VERBOSE=truepara saída de diagnóstico adicional. Não inclua segredos em logs verbosos ou saída de terminal compartilhada.
Solucionando Problemas
| Condição | Resolução |
|---|---|
| Tarefa não encontrada | Confirme se o plug-in de upload de manifesto está instalado, importado pelo arquivo hardhat.config.ts e configurado com a tarefa de upload.
|
| Manifesto obrigatório ausente | Implante primeiro no ambiente selecionado, confirme o ID da cadeia e verifique o local de manifesto esperado. Para um manifesto OpenZeppelin não padrão, defina a variável OZ_MANIFEST_PATH como o arquivo project-local correto.
|
| Ponto final de registro ausente ou inválido | Informe um ponto final http ou https para o modo selecionado. Os modos erc7201 e immutable usam diferentes variáveis de ponto final.
|
| O upload do Oracle Blockchain Platform não está autorizado | Verifique se o ambiente do Oracle Blockchain Platform selecionado e as variáveis BESU_CHAIN_ID e BESU_RPX_PROXY_AUTH_TOKEN são todos para o mesmo ambiente de destino.
|