图片

L'ultima volta che abbiamo creato un articolo pratico sulla creazione di un componente per ottenere dati sui prezzi di Ethereum da un contratto Ethereum, Snapshot Indexer EVM utilizza l'ABI come interfaccia per recuperare i dati da una catena compatibile con EVM.

In questo articolo proveremo a recuperare dati dai computer Internet utilizzando Candid, un'interfaccia sui computer Internet che eseguono Chainsight. In questo articolo proveremo a creare un componente che raccolga dati dai computer Internet utilizzando Snapshot Indexer ICP.

Il progetto è un ICP indicizzatore di istantanee dei prezzi che raccoglie i prezzi ICP utilizzando contratti DEX su computer Internet e, a partire da febbraio 2024, 1 ICP viene scambiato a circa $ 12.

Definizione del componente completata

ICPSwap è uno dei DEX più conosciuti su Internet. Viene utilizzato per ottenere i prezzi ICP. Il contratto ICPSwap (contenitore) viene richiamato regolarmente per raccogliere i dati sui prezzi ICP. L'indicizzatore di snapshot è costruito con un intervallo di raccolta di 1 ora.

图片

prerequisiti

La CLI di Chainsight richiede più strumenti e l'installazione di CSX. Fare riferimento ai seguenti articoli per i preparativi preliminari:

  • dev.to/hide_yoshi/step-by-step-creating-an-evm-price-oracle-with-chainsight-469g

Crea un progetto e aggiungi un modello di lista di controllo

Come prima, crea da un progetto vuoto e utilizza csx new --no-samples per creare il modello.

图片

Quindi utilizzare csx add per aggiungere l'EVM dell'indicizzatore di snapshot, è necessario selezionare il tipo snapshot_indexer_icp.

图片

Aggiorniamo il manifest che abbiamo aggiunto in modo da poter chiamare un contenitore già distribuito sui computer su Internet, in questo caso utilizzeremo il contenitore utilizzato in ICPSwap.

ID dominio: 2ixw4-taaaa-aaaag-qcpdq-cai

图片

Nel campo origine dati, specificare il contenitore e la relativa funzione da chiamare questa volta.

Specificare l'ID del contenitore da chiamare nel campo location.id, in questo caso impostare 2ixw4-taaaa-aaaag-qcpdq-cai e successivamente, in datasource.method , specificare la funzione contenitore da chiamare.

In Method.identifier la funzione è specificata nel formato Candid, che è la notazione dell'interfaccia per i computer Internet.

Candid è un linguaggio di descrizione dell'interfaccia il cui scopo principale è descrivere l'interfaccia pubblica di un servizio, solitamente sotto forma di un programma distribuito come contenitore in esecuzione su computer su Internet. Uno dei principali vantaggi di Candid è che è un linguaggio. agnostico e consente l'interoperabilità tra servizi e front-end scritti in diversi linguaggi di programmazione, inclusi Motoko, Rust e JavaScript.

fonte:

  • internetcomputer.org/docs/current/developer-docs/backend/candid/candid-concepts

I computer Internet possono visualizzare facilmente l'interfaccia del contenitore tramite il dashboard.

图片图片

fonte:

  • dashboard.internetcomputer.org/canister/2ixw4-taaaa-aaaag-qcpdq-cai

Questa è l'interfaccia Candid del contenitore che chiameremo. La dichiarazione in service è l'interfaccia fornita dal contenitore. In questo caso utilizzeremo la funzione get_exchange_rates qui descritta. Dobbiamo fare due cose.

Specificare la dichiarazione della funzione contenente parametri e informazioni sulla risposta in metodo.identificatore: get_exchange_rates: () -> (vec ExchangeRate__1).

Poiché il tipo personalizzato utilizzato da questa dichiarazione non è il tipo integrato Candid, crea un file .did che contenga l'interfaccia Candid in modo da potervi fare riferimento e specificarlo in Method.interface .

Dopo aver selezionato Candid nell'interfaccia del contenitore della suddetta schermata Dashboard, fai clic su "Copia" nell'angolo in alto a destra per copiare la dichiarazione nell'interfaccia, quindi crea target_interface.did nella cartella delle interfacce e incolla il contenuto appena copiato in Contents , le cartelle e i file effettivi appariranno così.

图片

Dopo aver creato il file, specifica interfacce/target_interface.did in metodo.interface e il campo dell'origine dati dovrebbe assomigliare a questo.

图片

Infine, aggiungi un'impostazione per questo componente per chiamare il contenitore all'esterno di Chainsight Platform. is_target_component deve essere impostato su false Se questo flag non è impostato ed è true, il componente chiamerà il componente all'interno di Chainsight Platform. Ciò completa l'aggiornamento del manifest Il manifesto completato è il seguente.

图片

Per i metadati, va bene qualsiasi impostazione arbitraria, controlla nuovamente i campi dell'origine dati e is_target_component, se hai modificato con successo il codice finora, genereremo il codice immediatamente.

Genera codice e costruisci moduli

Usiamo csxgenerate per generare il codice contenitore, se esegui effettivamente questo comando otterrai il seguente output.

图片

Come nel caso di Snapshot Indexer EVM, questa interfaccia nell'ICP Snapshot Indexer non richiede alcuna personalizzazione aggiuntiva e il processo di compilazione può iniziare senza alcuna personalizzazione aggiuntiva.

Puoi usare csx build per generare un modulo dal codice, eseguiamolo.

图片

La compilazione verrà completata in pochi minuti. Questo comando genera il modulo WASM e l'interfaccia candida. Per una comprensione più approfondita di questi comportamenti, fare riferimento al seguente articolo:

  • medium.com/@Chainsight_Network/behind-chainsight-how-modules-are-created-pt-2-4cf29234b98b

Infine, distribuisci e avvia il componente!

Distribuire i componenti

Come nelle lezioni pratiche precedenti, utilizza csx deploy e csx exec per distribuire questo componente sulla piattaforma Chainsight.

图片

Quando li esegui dovresti ottenere i seguenti log.

图片

Le istruzioni per la distribuzione e l'avvio dell'operazione sono ora complete e ora è sufficiente attendere l'intervallo di esecuzione automatica per fare riferimento ai dati.

Anche i componenti che possono essere creati in questa sessione pratica sono effettivamente in esecuzione (abbiamo leggermente modificato la descrizione e gli intervalli di esecuzione).

图片

fonte:

  • beta.chainsight.network/explore/components/lqf7x-4yaaa-aaaal-qdg7q-cai

La nostra pratica sull'indicizzatore di istantanee EVM termina qui. Continueremo a creare e pubblicare nuovi corsi pratici in futuro, quindi resta sintonizzato!

Rimani connesso con noi per aggiornamenti più interessanti e scopri come si sta costruendo il futuro del web3, mentre insieme continuiamo a dare forma a un futuro della finanza più modulare e innovativo!

图片

Canali di contatto

Sito ufficiale:

chainsight.network

X:

@Chainsight_

Github:

github.com/horizonx-tech?q=chainsight&type=all

Medio:

medium.com/@Chainsight_Network

Documenti:

docs.chainsight.network

图片

#Chainsight #EVM #Web3 #ICP🚀🚀 $ICP

Contenuti IC che ti interessano

Progresso tecnologico |. Informazioni sul progetto |

Raccogli e segui il canale IC Binance

Rimani aggiornato con le informazioni più recenti