图片

Terakhir kali kami membuat artikel praktis tentang cara membuat komponen untuk mendapatkan data harga Ethereum dari kontrak Ethereum, Snapshot Indexer EVM menggunakan ABI sebagai antarmuka untuk mengambil data dari rantai yang kompatibel dengan EVM.

Pada artikel kali ini kita akan mencoba mengambil data dari komputer internet menggunakan Candid, sebuah antarmuka pada komputer internet yang menjalankan Chainsight. Pada artikel ini kita akan mencoba membuat komponen yang mengumpulkan data dari komputer internet menggunakan Snapshot Indexer ICP.

Proyek ini adalah pengindeks cuplikan harga ICP yang mengumpulkan harga ICP menggunakan kontrak DEX di komputer internet, dan pada Februari 2024, 1 ICP diperdagangkan dengan harga sekitar $12.

Definisi komponen selesai

ICPSwap adalah salah satu DEX terkenal di Internet. Ini digunakan untuk mendapatkan harga ICP. Kontrak ICPSwap (wadah) dipanggil secara berkala untuk mengumpulkan data harga ICP. Pengindeks snapshot dibuat dengan interval pengumpulan 1 jam.

图片

prasyarat

Chainsight CLI memerlukan banyak alat dan instalasi csx. Silakan merujuk ke artikel berikut untuk persiapan awal:

  • dev.to/hide_yoshi/langkah-demi-langkah-membuat-an-evm-price-Oracle-with-chainsight-469g

Buat proyek dan tambahkan templat daftar periksa

Seperti sebelumnya, buat dari proyek kosong dan gunakan csx new --no-samples untuk membuat templat.

图片

Kemudian gunakan csx add untuk menambahkan EVM pengindeks snapshot, jenis snapshot_indexer_icp harus dipilih.

图片

Mari kita perbarui manifes yang telah kita tambahkan sehingga kita dapat memanggil container yang sudah di-deploy pada komputer di internet, dalam hal ini kita akan menggunakan container yang digunakan di ICPSwap.

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

图片

Di kolom sumber data, tentukan kontainer dan fungsinya yang akan dipanggil kali ini.

Tentukan ID container yang akan dipanggil di kolom location.id, dalam hal ini, setel 2ixw4-taaaa-aaaag-qcpdq-cai, dan selanjutnya, di datasource.method , tentukan fungsi container yang akan dipanggil.

Dalam method.identifier , fungsinya ditentukan dalam format Candid, yang merupakan notasi antarmuka untuk komputer Internet.

Candid adalah bahasa deskripsi antarmuka yang tujuan utamanya adalah untuk menggambarkan antarmuka publik suatu layanan, biasanya dalam bentuk program yang digunakan sebagai wadah yang berjalan pada komputer melalui Internet. agnostik dan memungkinkan Interoperasi antara layanan dan front-end yang ditulis dalam bahasa pemrograman berbeda, termasuk Motoko, Rust, dan JavaScript.

sumber:

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

Komputer internet dapat dengan mudah melihat antarmuka wadah melalui dasbor.

图片图片

sumber:

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

Ini adalah antarmuka Candid dari container yang akan kita panggil. Deklarasi dalam service adalah antarmuka yang disediakan oleh container. Dalam hal ini kita akan menggunakan fungsi get_exchange_rates yang dijelaskan di sini.

Tentukan deklarasi fungsi yang berisi parameter dan informasi respons di metode.identifier: get_exchange_rates: () -> (vec ExchangeRate__1).

Karena tipe kustom yang digunakan oleh deklarasi ini bukan tipe bawaan Candid, buatlah file .did yang berisi antarmuka Candid sehingga Anda dapat mereferensikannya, dan tentukan di method.interface .

Setelah memilih Candid di Antarmuka Canister pada layar Dasbor yang disebutkan di atas, klik "Salin" di sudut kanan atas untuk menyalin deklarasi di antarmuka. Kemudian, buat target_interface.did di bawah folder antarmuka dan tempelkan konten yang baru saja Anda salin ke dalamnya Konten , folder dan file sebenarnya akan terlihat seperti ini.

图片

Setelah membuat file, tentukan interfaces/target_interface.did di method.interface dan bidang sumber data akan terlihat seperti ini.

图片

Terakhir, tambahkan pengaturan untuk komponen ini untuk memanggil container di luar Chainsight Platform. is_target_component harus disetel ke false. Jika tanda ini tidak disetel dan bernilai true, komponen akan memanggil komponen di dalam Chainsight Platform .Manifes yang sudah lengkap adalah sebagai berikut.

图片

Untuk metadata, pengaturan sewenang-wenang apa pun dapat dilakukan, periksa kembali bidang sumber data dan is_target_component, jika Anda telah berhasil memodifikasi kode sejauh ini, maka kami akan segera membuat kode tersebut.

Hasilkan kode dan buat modul

Mari gunakan csxgenerate untuk menghasilkan kode container, jika Anda benar-benar menjalankan perintah ini, Anda akan mendapatkan output berikut.

图片

Seperti pada EVM Pengindeks Snapshot, antarmuka di ICP Pengindeks Snapshot ini tidak memerlukan penyesuaian tambahan dan proses pembangunan dapat dimulai tanpa penyesuaian tambahan apa pun.

Anda dapat menggunakan csx build untuk menghasilkan modul dari kode, mari kita jalankan.

图片

Pembangunan akan selesai dalam beberapa menit. Perintah ini menghasilkan modul WASM dan antarmuka candid.

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

Terakhir, terapkan dan mulai komponen!

Menyebarkan komponen

Seperti pelajaran praktis sebelumnya, gunakan csx deploy dan csx exec untuk menerapkan komponen ini pada platform Chainsight.

图片

Saat Anda menjalankannya, Anda akan mendapatkan log berikut.

图片

Petunjuk penerapan dan memulai operasi kini telah selesai dan kini Anda hanya perlu menunggu interval eksekusi otomatis untuk mereferensikan data.

Komponen-komponen yang dapat dibuat pada sesi hands-on ini juga benar-benar berjalan (kami sedikit mengubah deskripsi dan interval eksekusi).

图片

sumber:

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

Praktik kami pada pengindeks snapshot EVM berakhir di sini. Kami akan terus membuat dan merilis kursus praktik baru di masa mendatang, jadi pantau terus!

Tetap terhubung dengan kami untuk pembaruan menarik lainnya dan temukan bagaimana masa depan web3 dibangun, seiring kita terus membentuk masa depan keuangan yang lebih modular dan inovatif!

图片

Saluran kontak

Situs web resmi:

chainsight.network

X:

@Chainsight_

Github:

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

Sedang:

medium.com/@Chainsight_Network

Dokumen:

docs.chainsight.network

图片

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

Konten IC yang Anda minati

Kemajuan Teknologi |. Informasi Proyek |

Kumpulkan dan ikuti IC Binance Channel

Ikuti terus informasi terkini