Carga de un manifiesto de contrato en el registro con la línea de comandos

Puede utilizar la línea de comandos para validar y publicar metadatos de despliegue de un proyecto de Hardhat seleccionado en servicios de registro de contratos.

La tarea upload-contract-manifest Hardhat publica los manifiestos de contrato actualizables o inmutables del proyecto en servicios de registro configurados.

Ejecute la tarea desde el directorio raíz del proyecto de contrato empaquetado después de un despliegue correcto. La tarea lee los archivos de manifiesto de despliegue del proyecto. Los siguientes archivos son las ubicaciones estándar:
  • manifiesto de OpenZeppelin: .openzeppelin/unknown-<chain-id>.json
  • manifiesto ERC-7201: .obp-da/.erc7201/deployedContracts-<chain-id>.json
  • Manifiesto inmutable/de solidaridad: .obp-da/.solc/deployedContracts-<chain-id>.json
Utilice el identificador de cadena del entorno de destino en lugar de <chain-id>. Si el manifiesto de OpenZeppelin se almacena en otro lugar, establezca la variable OZ_MANIFEST_PATH en su ruta local de proyecto.
  1. Configure los puntos finales del registro. Defina las variables de punto final de registro para los tipos de manifiesto que desea cargar. Utilice el mecanismo de variable de entorno seguro del shell o el mecanismo de variable de Hardhat configurado del proyecto; no confirme credenciales ni puntos finales privados para el control de origen. Por ejemplo, una llamada de shell de un solo uso puede proporcionar los valores para la tarea, como se muestra en el siguiente ejemplo.
    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 un entorno de Oracle Blockchain Platform, también proporcione la información de la cadena de destino y el token de autorización de proxy RPC que necesita la configuración del proyecto.
    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
    Los valores de punto final son una configuración explícita. No suponga que una URL de registro se puede derivar de un nombre de host de Oracle Blockchain Platform.
  2. Seleccione qué desea cargar seleccionando uno de los siguientes 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 immutable
    Los modos all y erc7201 necesitan la variable ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT. Los modos all y immutable necesitan la variable SOLC_UPLOAD_REGISTRY_ENDPOINT. Para proyectos importados empaquetados o contratos de activos digitales generados por Blockchain App Builder, el modo ERC-7201 es suficiente.
  3. Utilice la opción --dry-run para validar los archivos de manifiesto seleccionados y cargar la configuración sin publicar.
    npx hardhat upload-contract-manifest --mode all --dry-run
  4. Después de una ejecución simulada correcta, ejecute el mismo comando sin la opción --dry-run para publicar. Si el proyecto lo soporta, defina la variable UPLOAD_CONTRACT_MANIFEST_TIMEOUT_MS para aumentar el timeout de carga y defina UPLOAD_CONTRACT_MANIFEST_VERBOSE=true para una salida de diagnóstico adicional. No incluya secretos en los logs detallados ni en la salida de terminal compartida.

Solución de problemas

Condición Resolución
No se ha encontrado la Tarea Confirme que el plugin de carga de manifiesto esté instalado, importado por el archivo hardhat.config.ts y configurado con la tarea de carga.
Falta el manifiesto requerido Desplegar en el entorno seleccionado primero, confirmar el ID de cadena y comprobar la ubicación de manifiesto esperada. Para un manifiesto OpenZeppelin no estándar, establezca la variable OZ_MANIFEST_PATH en el archivo local de proyecto correcto.
Falta el punto final de registro o no es válido Proporcione un punto final http o https para el modo seleccionado. Los modos erc7201 y immutable utilizan diferentes variables de punto final.
La carga de Oracle Blockchain Platform no está autorizada Verifique que el entorno de Oracle Blockchain Platform seleccionado y las variables BESU_CHAIN_ID y BESU_RPX_PROXY_AUTH_TOKEN son todas para el mismo entorno de destino.