Distribuisci un contratto

Dopo aver compilato uno smart contract, è possibile distribuirlo in un ambiente Oracle Blockchain Platform Besu.

Il processo di distribuzione crea le librerie di supporto e i proxy UUPS necessari, collega i contesti di token e account e imposta il contesto di governance. Il token e l'account sono distribuiti in stato inattivo. Diventano attivi solo attraverso il processo di intento di distribuzione.

Per distribuire un contratto compilato, ottenere l'indirizzo del contratto di governance predistribuito e il relativo UUID criterio dall'amministratore del token degli asset digitali. Ottenere un account con l'autorizzazione per la distribuzione e, se applicabile, inoltrare l'intento di distribuzione. Il modulo di distribuzione richiede un contratto, un ambiente, un ID di distribuzione e metadati del registro: ID contratto smart, versione, descrizione e autore. L'ID distribuzione identifica uno stato di distribuzione che può essere ripreso; utilizzare un valore stabile e univoco quando si esegue di nuovo la stessa distribuzione.

Ciclo di vita distribuzione

  1. Compila il progetto.
  2. Distribuisci lo stack di asset digitali di Oracle Blockchain Platform.
  3. Imposta i contesti di account/token e governance. (I proxy sono inattivi).
  4. Rivedere e sottomettere l'intento di distribuzione per entrambi i componenti proxy.
    • Governance no-op: la proposta ha esito positivo e quindi i componenti vengono attivati.
    • Governato: le approvazioni dei criteri necessarie vengono completate e i componenti vengono attivati.

Nota:

I proxy sono inattivi subito dopo la distribuzione. La distribuzione del contratto riuscita non significa che il token sia attivo. L'attivazione è controllata dal contratto di governance configurato per la distribuzione, non da un aggiornamento UUPS.

Creare un ambiente Besu di Oracle Blockchain Platform

Un ambiente Oracle Blockchain Platform Besu memorizza l'host RPC di Oracle Blockchain Platform, non un endpoint JSON-RPC completo. L'estensione deriva i percorsi Besu e di governance richiesti da questo host.

  1. Aprire la vista Ambienti, quindi selezionare Aggiungi ambiente.
  2. Immettere un nome di ambiente descrittivo. Ad esempio, immettere obp-test.
  3. Selezionare Oracle Blockchain Platform Besu per Tipo di ambiente.
  4. Immettere l'host URL RPC. Ad esempio, immettere https://rpcproxy.example.com:443.

    L'host URL RPC deve essere solo un'origine http o https, non un percorso endpoint, una stringa di query, un frammento, un nome utente o una password. Ad esempio, immettere https://rpcproxy.example.com:443 e non https://rpcproxy.example.com:443/v1/besu/proxy.

  5. Immettere l'ID catena di rete.
  6. Immettere il token di autorizzazione richiesto dal proxy RPC.
  7. Facoltativamente, impostare Gas Price Wei, Consenti firma automatica e un percorso certificato CA per un'autorità di certificazione privata. Lasciare vuoti i conti BESU a meno che il modello di distribuzione non richieda specificamente la firma non affidale. Le distribuzioni del servizio wallet di Oracle Blockchain Platform raccolgono i dettagli di firma in base alla distribuzione.
  8. Selezionare Crea.

Per l'host Oracle Blockchain Platform memorizzato, l'estensione deriva l'endpoint proxy Besu e utilizza l'endpoint dell'intento di governance di Oracle Blockchain Platform. Ciò consente di mantenere l'ambiente portatile tra le operazioni di implementazione, esecuzione e governance.

L'ambiente Nodo locale Hardhat integrato è disponibile per lo sviluppo locale e non deve essere salvato. Non si tratta di un ambiente Oracle Blockchain Platform.

Distribuisci in un ambiente Besu di Oracle Blockchain Platform

  1. Nel riquadro Contratti aprire il form Distribuisci/Esegui del progetto e selezionare la scheda Distribuisci.
  2. Selezionare il pacchetto contratto e l'ambiente Besu.
  3. Immettere un ID distribuzione o mantenere l'ID distribuzione visualizzato.
  4. Completare i metadati del registro richiesti. Il nome del token del tempo di distribuzione, il simbolo, la descrizione, l'URI e gli ID amministratore sono facoltativi. I valori vuoti utilizzano i valori predefiniti dello script di distribuzione.
  5. Immettere le informazioni di firma del servizio wallet visualizzate per l'ambiente Oracle Blockchain Platform.
    • URL firma servizio wallet
    • Account di servizio wallet, un array JSON di oggetti address/wallet-ID
    • Token di autenticazione servizio wallet
  6. Selezionare Next.
  7. In Opzioni di distribuzione, immettere Indirizzo contratto governance e UUID criterio, quindi selezionare Distribuisci.

Blockchain App Builder esegue lo script di distribuzione Hardhat generato tramite la rete Besu di Oracle Blockchain Platform, utilizzando i valori del servizio wallet solo per tale distribuzione. Distribuisce o riutilizza i componenti richiesti, imposta i contesti e restituisce il token e gli indirizzi proxy dell'account. Entrambi i proxy sono inattivi.

Sottomettere l'intento di distribuzione

Al termine della distribuzione inattiva, la sezione Governance viene popolata con i valori distribuiti Token Target e Account Target. Mantenere entrambi gli obiettivi nell'intento. Ciascuno è un proxy EIP-1967; la governance attiva il proxy rispetto all'indirizzo di implementazione risolto e all'hash del codice runtime.

  1. Confermare le destinazioni token e account. Eseguire l'override solo se si propone intenzionalmente una coppia di proxy esistente.
  2. Immettere una scadenza proposta futura.
  3. Per Oracle Blockchain Platform Besu, immettere l'indirizzo del mittente autorizzato dal criterio selezionato. L'ambiente selezionato deve avere un host URL RPC e un token di autorizzazione.
  4. Per altri ambienti EVM, selezionare un account chiamante o immettere la chiave privata del chiamante. L'applicazione ricava l'indirizzo del mittente da tale chiave.
  5. Selezionare Revisione. L'estensione risolve l'hash del codice di implementazione e implementazione di ciascun proxy, quindi visualizza l'intento proposto.
  6. Verificare l'UUID, la scadenza, le destinazioni proxy, gli indirizzi di implementazione e gli hash codice.
  7. Selezionare Sottometti.

Per un ambiente Oracle Blockchain Platform, l'estensione sottomette l'intento esaminato tramite l'endpoint di governance del servizio wallet di Oracle Blockchain Platform. Per altri ambienti EVM, invia una transazione proposeDeployIntent firmata direttamente al contratto di governance tramite JSON-RPC.

Se si modifica l'indirizzo di governance, l'UUID, le destinazioni proxy o la scadenza dopo la revisione, l'anteprima viene invalidata. Rivedere la proposta prima di sottometterla.

Attivazione della governance

Lo stesso flusso di lavoro intento viene utilizzato per entrambi i tipi di governance. La differenza è ciò che accade dopo che il contratto di governance accetta la proposta:

  • No-Op: una chiamata proposeDeployIntent riuscita attiva immediatamente i componenti inclusi. Confermare la transazione o la risposta a Oracle Blockchain Platform, quindi verificare lo stato attivo del token.
  • Governato: l'intento sottomesso rimane soggetto al criterio configurato. Il token e l'account diventano attivi solo dopo la ricezione delle approvazioni richieste prima della scadenza.

L'estensione sottomette l'intento e non rappresenta né ignora gli approvatori della governance. Per un criterio disciplinato, utilizzare il processo di approvazione dell'organizzazione e attendere l'attivazione del contratto di governance. Se il criterio rifiuta o scade l'intento, correggere la causa e quindi sottomettere un nuovo intento valido. La distribuzione da sola non attiverà i proxy.

Nota:

Dopo la distribuzione di un contratto, i file manifest vengono generati nella cartella .openzeppelin nella radice del progetto. Per le reti di produzione (non le reti di sviluppo), eseguire il commit di questi file sul controllo dell'origine. Per ulteriori informazioni, vedere File di rete nella documentazione di OpenZeppelin.

Risoluzione dei problemi relativi agli errori di distribuzione

Condizione Risoluzione
Impossibile salvare l'ambiente Oracle Blockchain Platform Immettere un'origine HTTP o HTTPS senza un percorso endpoint. Il campo Oracle Blockchain Platform prevede solo l'host.
La revisione della governance afferma che l'ambiente Oracle Blockchain Platform richiede un host URL RPC e un token di autorizzazione Aggiornare l'ambiente Oracle Blockchain Platform salvato con entrambi i valori, quindi aprirlo o selezionarlo di nuovo.
Bytecode runtime mancante nei report di revisione della governance Verificare la rete e gli indirizzi proxy/implementazione selezionati. Non sottomettere un intento per una destinazione non distribuita.
Distribuzione riuscita, ma il token è inattivo Sottomettere l'intento di distribuzione. Per una governance governata, attendere tutte le approvazioni delle policy; per una governance no-op, confermare che la transazione della proposta è riuscita.
Impossibile sottomettere la proposta dopo la modifica dei campi Selezionare di nuovo Rivedi. L'applicazione invalida deliberatamente un'anteprima non più valida.