Caricare un manifesto contratto nel registro con la riga di comando

È possibile utilizzare la riga di comando per convalidare e pubblicare i metadati di distribuzione da un progetto Hardhat selezionato ai servizi del registro dei contratti.

Il task Hardhat upload-contract-manifest pubblica i file manifest del contratto aggiornabili o immutabili del progetto nei servizi di registro configurati.

Eseguire il task dalla directory radice del progetto di contratto in package dopo una distribuzione riuscita. Il task legge i file manifesto di distribuzione dal progetto. Di seguito sono riportate le posizioni standard.
  • Manifesto di OpenZeppelin: .openzeppelin/unknown-<chain-id>.json
  • Manifesto ERC-7201: .obp-da/.erc7201/deployedContracts-<chain-id>.json
  • File manifesto immutabile/di solidità: .obp-da/.solc/deployedContracts-<chain-id>.json
Utilizzare l'ID catena dell'ambiente di destinazione anziché <chain-id>. Se il file manifesto OpenZeppelin è memorizzato altrove, impostare la variabile OZ_MANIFEST_PATH sul percorso locale-progetto.
  1. Configurare gli endpoint del registro. Impostare le variabili dell'endpoint del registro per i tipi di file manifesto che si prevede di caricare. Utilizzare il meccanismo di variabile dell'ambiente sicuro della shell o il meccanismo di variabile Hardhat configurato del progetto; non eseguire il commit delle credenziali o degli endpoint privati nel controllo dell'origine. Ad esempio, un richiamo shell occasionale può fornire i valori al task, come mostrato nell'esempio seguente.
    ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/erc7201" \
    SOLC_UPLOAD_REGISTRY_ENDPOINT="https://registry.example/solc" \
    npx hardhat upload-contract-manifest --mode all
    Per un ambiente Oracle Blockchain Platform, fornire anche le informazioni sulla catena di destinazione e il token di autorizzazione proxy RPC richiesto dalla configurazione del progetto.
    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
    I valori degli endpoint sono una configurazione esplicita. Non presumere che un URL del registro possa essere derivato da un nome host di Oracle Blockchain Platform.
  2. Selezionare cosa caricare scegliendo una delle seguenti modalità.
    # 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
    Le modalità all e erc7201 richiedono la variabile ERC7201_MANIFEST_UPLOAD_REGISTRY_ENDPOINT. Le modalità all e immutable richiedono la variabile SOLC_UPLOAD_REGISTRY_ENDPOINT. Per i progetti importati in pacchetti o i contratti di asset digitali generati da Blockchain App Builder, la modalità ERC-7201 è sufficiente.
  3. Utilizzare l'opzione --dry-run per convalidare i file manifest selezionati e caricare la configurazione senza pubblicare.
    npx hardhat upload-contract-manifest --mode all --dry-run
  4. Dopo una esecuzione manuale riuscita, eseguire lo stesso comando senza l'opzione --dry-run da pubblicare. Se il progetto lo supporta, impostare la variabile UPLOAD_CONTRACT_MANIFEST_TIMEOUT_MS per aumentare il timeout di caricamento e impostare UPLOAD_CONTRACT_MANIFEST_VERBOSE=true per l'output di diagnostica aggiuntivo. Non includere segreti nei log dettagliati o nell'output del terminale condiviso.

Risoluzione dei problemi

Condizione Risoluzione
Task non trovata Verificare che il plugin di caricamento file manifesto sia installato, importato dal file hardhat.config.ts e configurato con il task di caricamento.
Manifesto richiesto mancante Eseguire prima la distribuzione nell'ambiente selezionato, confermare l'ID catena e controllare la posizione del file manifesto prevista. Per un file manifesto OpenZeppelin non standard, impostare la variabile OZ_MANIFEST_PATH sul file locale-progetto corretto.
Endpoint del registro mancante o non valido Fornire un endpoint http o https per la modalità selezionata. Le modalità erc7201 e immutable utilizzano variabili endpoint diverse.
Caricamento di Oracle Blockchain Platform non autorizzato Verificare che l'ambiente Oracle Blockchain Platform selezionato e le variabili BESU_CHAIN_ID e BESU_RPX_PROXY_AUTH_TOKEN si riferiscano tutti allo stesso ambiente di destinazione.