Esecuzione di un contratto

È possibile utilizzare Blockchain App Builder per eseguire una query su un token distribuito o su un account/proxy di identità o per richiamare una funzione di contratto che cambia lo stato.

Dopo aver compilato un progetto, è possibile utilizzare la scheda Esegui nel form Distribuisci/Esegui per eseguire query o richiamare funzioni. L'estensione legge il contratto selezionato ABI, presenta le funzioni disponibili, codifica i parametri e invia la richiesta tramite il trasporto appropriato per l'ambiente selezionato. Per i progetti composti, distribuire e attivare i proxy di token e account prima di tentare operazioni di token che cambiano lo stato.

Lo strumento Execute rileva le funzioni dagli artifact compilati. Per i progetti composti, il manifesto generato identifica anche l'ABI account/identità compatibile per il token selezionato. Per accedere allo strumento Esegui:
  1. Aprire la vista Contratti.
  2. Selezionare il progetto Hardhat, quindi aprire Distribuisci/esegui.
  3. Selezionare la scheda Esegui.
  4. Se il form include un selettore di progetto, scegliere il progetto proprietario del contratto e i relativi artifact compilati.

È necessario completare i seguenti campi per selezionare una destinazione e una funzione prima di eseguire una chiamata.

  • Token: il contratto token compilato di cui si desidera utilizzare l'ABI.
  • Destinazione chiamata: selezionare Token per chiamare il proxy del token oppure Account/Identità per chiamare il proxy dell'account associato. Selezionare Token come destinazione di chiamata per il funzionamento del token, ad esempio saldi, conversione, trasferimenti, configurazione e operazioni di classe asset. Selezionare Account/Identità per le funzioni di identità, autorizzazione o criterio del contratto dell'account complementare.
  • ABI destinazione: l'ABI utilizzato per elencare e codificare le funzioni. Un manifesto generato blocca l'account abbinato ABI; altrimenti selezionarne uno manualmente.
  • toAddress: l'indirizzo proxy distribuito per la destinazione selezionata. Non immettere un indirizzo della libreria di supporto o di implementazione.
  • Ambiente: l'ambiente in cui viene distribuito il proxy.
  • Funzione: funzione ABI per eseguire query o richiamare. L'elenco include l'origine della funzione per facilitare la distinzione delle capacità ereditate.

Percorso esecuzione

L'estensione sceglie o limita la modalità disponibile in base all'ambiente selezionato.

Modalità ambiente e API Comportamento query Comportamento richiamo Informazioni firmatario obbligatorie
Nodo locale Hardhat o Altre VM con JSON-RPC Chiama il nodo utilizzando la chiave privata locale selezionata come from. Segni e trasmissioni direttamente tramite JSON-RPC. Account chiamante configurato o chiave privata a 32 byte immessa manualmente.
Oracle Blockchain Platform Besu con API JSON-RPC Chiama l'endpoint JSON-RPC di Oracle Blockchain Platform utilizzando l'indirizzo dell'account del servizio wallet selezionato come from. Crea una transazione, richiede una firma del servizio wallet, quindi la trasmette tramite JSON-RPC di Oracle Blockchain Platform. URL di firma del servizio wallet, notazione JSON degli account, token di autorizzazione e account wallet selezionato.
Oracle Blockchain Platform Besu con API rpc-proxy REST Invia all'API di query di Oracle Blockchain Platform. Invia all'API delle transazioni di Oracle Blockchain Platform. Da Indirizzo; facoltativamente le impostazioni di gas e ricezione-attesa. In questa modalità non è stata immessa alcuna chiave privata locale o firmatario del servizio wallet.

La modalità rpc-proxy REST è disponibile solo per un ambiente Besu Oracle Blockchain Platform. Le impostazioni dell'host URL RPC, del token di autenticazione e TLS dell'ambiente vengono utilizzate per le chiamate REST. Altri ambienti EVM e Hardhat locali utilizzano JSON-RPC con firma locale.

Interroga una funzione

Utilizzare Query per una chiamata in lettura o per simulare una funzione rispetto allo stato corrente della catena.

  1. Selezionare la destinazione, l'ambiente, la funzione e i parametri.
  2. Configurare le informazioni del chiamante o del wallet richieste dal percorso di esecuzione selezionato.
  3. Selezionare Query.
  4. Rivedere il campo Output. L'output JSON-RPC include il risultato della chiamata raw e il risultato ABI decodificato quando la decodifica riesce. L'output REST include la risposta API.

Le query utilizzano una richiesta di chiamata; non trasmettono una transazione o lo stato persistente. Una query può comunque annullare se le condizioni della funzione selezionata, le autorizzazioni del chiamante o i parametri forniti non sono validi per lo stato del contratto corrente.

Richiama una funzione

Utilizzare Richiama per una transazione che cambia lo stato.
  1. Selezionare la destinazione, l'ambiente, la funzione e i parametri.
  2. Configurare il metodo di firma richiesto.
    • Per Altre VM o Nodo locale Hardhat, selezionare un account chiamante configurato o immettere la chiave privata autorizzata.
    • Per il servizio wallet di Oracle Blockchain Platform, fornire l'URL firma, la notazione JSON degli account, il token di autorizzazione e selezionare l'account wallet.
    • Per REST rpc-proxy, immettere l'indirizzo del mittente e, se necessario, le impostazioni relative al limite di gas e all'attesa della ricezione.
  3. Selezionare Richiama.
  4. Attendere il risultato in Output. I richiami JSON-RPC e Wallet Service riusciti includono hash delle transazioni, numero di blocco, gas utilizzato, mittente, destinazione e stato di ricezione.
Un richiamo può essere accettato dal trasporto, ma torna comunque on-chain. Considera un incasso con stato diverso da 1 o una risposta di errore come operazione non riuscita e ispeziona l'output per individuare i dettagli di un errore personalizzato decodificato o di un errore RPC.

Immettere i parametri

Selezionare il pulsante … accanto a Parametri per aprire l'editor dei parametri. Visualizza il nome del parametro ABI, la proprietà nidificata, il tipo e un campo di input. Selezionare l'azione di applicazione dell'editor per generare l'array di parametri JSON che verrà utilizzato dalla funzione Esegui.

I parametri vengono inviati come un array JSON nello stesso ordine degli input ABI della funzione selezionata.

Input ABI JSON parametro incollabile
Nessun inserimento []
balanceOf(address) ["0x1111111111111111111111111111111111111111"]
transfer(address,uint256) ["0x1111111111111111111111111111111111111111", "1000"]
Una tupla [{"fieldA":"value","fieldB":"1000"}]
Un input tuple[] standalone [[{"userAddress":"0x1111111111111111111111111111111111111111","approvalSequence":1}]]

Per i campi ABI interi, immettere una stringa decimale, ad esempio "1000", per evitare la perdita di precisione numerica JavaScript. Utilizzare JSON true o false per i valori booleani. Gli indirizzi devono essere indirizzi 0x validi.

Per gli input di tuple e array di tuple, utilizzare oggetti JSON denominati i cui nomi di proprietà corrispondono ai nomi dei componenti ABI. Non utilizzare la sintassi della tupla posizionale Solidity nell'editor dei parametri.

Ad esempio, quando l'editor visualizza una proprietà approverDetails tuple[] con componenti userAddress e approvalSequence, incollare il valore seguente nell'editor JSON della proprietà:

[
  {
    "userAddress": "0x1111111111111111111111111111111111111111",
    "approvalSequence": 1
  }
]

L'editor di parametri posiziona tale valore all'interno dell'array esterno dell'argomento della funzione. Per una tupla completa, immettere ogni componente visualizzato dall'ABI selezionato. I campi esatti variano in base alla versione del contratto, quindi utilizzare le proprietà visualizzate nell'editor dei parametri anziché copiare una forma di tupla da un progetto token diverso.

Formato di input servizio wallet

Per la modalità JSON-RPC di Oracle Blockchain Platform, immettere gli account del servizio wallet come array JSON. Ogni voce deve avere un indirizzo e può includere un ID wallet come mostrato nell'esempio riportato di seguito.

[
  {
    "address": "0x1111111111111111111111111111111111111111",
    "walletId": "0x1111111111111111111111111111111111111111"
  }
]

Selezionare uno dei conti analizzati in Conto wallet. Le query utilizzano il proprio indirizzo come from; i richiami chiedono al servizio wallet di firmare per tale account. Il token di autorizzazione del servizio wallet non è memorizzato nella bozza salvata del form.

Salva e riutilizza input

Selezionare Salva input per conservare le selezioni di esecuzione non segrete correnti e il parametro JSON per il progetto. Selezionare Cancella input salvato per rimuovere lo stato del form salvato. Ricontrollare gli indirizzi proxy, la funzione selezionata e i parametri prima di un richiamo; gli input salvati non provano che una destinazione è ancora distribuita nell'ambiente attualmente selezionato.

Risoluzione dei problemi

Condizione Risoluzione
Dopo un aggiornamento, un nuovo metodo aggiunto non viene elencato nell'elenco ABI nella pagina Esegui Aggiornare il file manifesto di Blockchain App Builder (generated.manifest.json) per modificare contractClassName e contractRelativePath in modo da puntare al contratto appena aggiornato.
Nessuna funzione ABI trovata Compilare il progetto e confermare l'esistenza dell'artifact token/account selezionato. Per una destinazione account senza manifesto, selezionare manualmente l'ABI account corretto.
L'indirizzo di destinazione non ha alcun codice contratto Controllare l'ambiente selezionato e immettere l'indirizzo proxy distribuito, non una libreria di supporto o un indirizzo di implementazione.
JSON parametri non validi Utilizzare l'editor … per rigenerare l'array di argomenti. Assicurarsi che array e oggetti utilizzino un formato JSON valido con nomi di proprietà con virgolette doppie.
La selezione dell'account del servizio wallet è obbligatoria Immettere un array JSON account valido e selezionare un account wallet.
Le API rpc-proxy REST richiedono un ambiente Oracle Blockchain Platform Passa a un ambiente Oracle Blockchain Platform Besu con un URL RPC solo host o utilizza JSON-RPC per altri EVM/Hardhat.
Chiamante non autorizzato o errore personalizzato decodificato Verificare l'account chiamante/wallet selezionato, il proxy di destinazione, lo stato di governance attivo, i prerequisiti ruolo/criterio e i parametri ABI.
Interrogazione o Richiama rimangono non disponibili Completare i campi target, ambiente, funzione e firmatario richiesti per la modalità API selezionata.