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
Use o ID da cadeia do ambiente de destino no lugar de <chain-id>. Se o manifesto do OpenZeppelin estiver armazenado em outro lugar, defina a variável OZ_MANIFEST_PATH como seu caminho project-local.
  1. 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.
    ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \
    SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \
    npx hardhat upload-contract-manifest --mode all
    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.
    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
    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.
  2. Selecione o que enviar escolhendo um dos modos a seguir.
    # 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 immutable
    Os modos all e erc7201 exigem a variável ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT. Os modos all e immutable exigem a variável SOLC_UPLOAD_REGISTRY_ENDPOINT. Para projetos importados empacotados ou contratos de ativos digitais gerados pelo Blockchain App Builder, o modo ERC-7201 é suficiente.
  3. Use a opção --dry-run para validar os arquivos de manifesto selecionados e fazer upload da configuração sem publicação.
    npx hardhat upload-contract-manifest --mode all --dry-run
  4. Após uma execução seca bem-sucedida, execute o mesmo comando sem a opção --dry-run para publicar. Se o seu projeto suportar isso, defina a variável UPLOAD_CONTRACT_MANIFEST_TIMEOUT_MS para aumentar o timeout de upload e defina UPLOAD_CONTRACT_MANIFEST_VERBOSE=true para 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.