BARU: Helius mengakuisisi Light Protocol
mendengarkan peristiwa onchain di solana
Blog/Dasar-Dasar

Mendengarkan Peristiwa Onchain di Solana

Pendiri Bersama & CEOMert Mumtaz di XMert Mumtaz di LinkedIn
Bacaan 7 menit

Pendahuluan

Salah satu bagian paling mendasar dalam menjadi developer di dunia kripto adalah menyiapkan sistem yang mendengarkan blockchain. Anda mungkin ingin mendengarkan konfirmasi pembayaran, penjualan NFT, transfer dana, atau sekadar memantau akun demi keamanan. Apa pun kasus penggunaan Anda, sangat penting untuk membangun sistem pemantauan blockchain yang toleran terhadap kegagalan, andal, dan dioptimalkan untuk latensi.

Dalam artikel ini, kita akan membahas beberapa cara untuk membangun sistem tersebut di Solana, contoh kasus penggunaannya, dan cara membangun sistem yang lebih baik ke depannya dengan Helius.

Mendengarkan Blockchain

Ada dua cara utama untuk mendengarkan peristiwa onchain:

  1. Polling
  2. Streaming

Polling adalah metode ketika klien atau aplikasi berulang kali memeriksa server atau sumber data untuk mencari data baru. Pemeriksaan ini dapat dilakukan pada interval tertentu atau sesuai permintaan. Saat permintaan dikirim ke server, server merespons dengan data terbaru, baik ada perubahan maupun tidak. Artinya, klien atau aplikasi dapat menerima data yang sama berulang kali meskipun tidak ada pembaruan.

Di sisi lain, streaming adalah teknik ketika server mengirim data ke klien atau aplikasi saat terjadi pembaruan. Artinya, klien tidak perlu meminta data berulang kali dan server hanya mengirim data ketika ada perubahan. Hasilnya adalah transfer data yang lebih efisien dan real-time karena server hanya mengirim data yang relevan.

Meskipun polling merupakan teknik yang sederhana dan banyak digunakan, metode ini dapat menyebabkan lalu lintas jaringan yang tinggi dan menghabiskan banyak sumber daya, terutama jika permintaan sering dilakukan. Di sisi lain, streaming lebih efisien karena server hanya mengirim pembaruan sehingga mengurangi jumlah data yang ditransfer dan lalu lintas jaringan.

Streaming biasanya digunakan dalam aplikasi yang sangat memerlukan pembaruan data real-time, seperti feed pasar saham, pembaruan media sosial, dan game online. Polling lebih umum digunakan dalam aplikasi dengan pembaruan data yang tidak terlalu sering atau tidak terlalu penting, seperti klien email atau situs berita.

Meskipun kedua teknik memiliki kelebihan dan kekurangan, streaming umumnya lebih efisien dan lebih disukai untuk pembaruan data real-time. Sementara itu, polling tetap berguna untuk aplikasi tertentu dengan pembaruan data yang lebih jarang.

Untuk sebagian besar jenis alur kerja di blockchain—terutama Solana—sebaiknya gunakan streaming. Ada beberapa alasannya, tetapi streaming jauh lebih mudah diterapkan dan lebih mudah menangani kasus penggunaan dengan lalu lintas tinggi, yang merupakan keunggulan Solana.

Cara Mendengarkan Peristiwa Onchain di Solana

Solana adalah blockchain yang sangat cepat. Solana menghasilkan blok baru setiap 400 milidetik dan blok-blok ini umumnya berisi ribuan transaksi. Hal yang luar biasa adalah ini merupakan kecepatan paling lambat yang akan terjadi. Seiring para engineer inti terus mengembangkan sistem, laju pemrosesan data baru oleh blockchain akan terus meningkat. Karena itu, sangat penting untuk merancang sistem Anda dengan mempertimbangkan skalabilitas.

Untungnya, Anda memiliki beberapa metode untuk mendengarkan data onchain di Solana:

  1. Polling
  2. WebSockets
  3. Geyser
  4. Helius Webhooks

Polling

Ini adalah cara yang paling tidak disarankan untuk mendengarkan peristiwa di Solana, meskipun secara konsep mungkin merupakan cara yang paling sederhana. 

Bergantung pada data yang ingin diperoleh, Anda cukup menyiapkan loop yang berulang kali memanggil metode JSON-RPC pada node RPC Solana. Kasus penggunaan umum mencakup melakukan polling pada metode getBlock untuk mendengarkan blok baru atau melakukan polling pada `getSignaturesForAddress` untuk memeriksa transaksi baru pada alamat tertentu.

Menariknya, metode ini juga mungkin menjadi pilihan terbaik untuk kasus penggunaan yang sangat canggih ketika Anda memiliki logika khusus untuk memicu pembaruan baru.

WebSockets

RPC Solana juga menyediakan WebSockets PubSub yang dapat digunakan oleh developer. Jenis peristiwa yang tersedia adalah:

Berikut contoh kode singkat dalam JavaScript untuk mendengarkan perubahan akun melalui RPC Helius, yang mendukung WebSockets:

Kode
const solanaWeb3 = require(‘@solana/web3.js’)
const connection = new solanaWeb3.Connection(“https://rpc.helius.xyz?api-key=“);
(async () => {  
connection.onAccountChange(
new solanaWeb3.PublicKey(“5yv6Vh8FNx93TXeSS94xy8VLZMbTqx4vXp7Zg5bDLZtE”),
(updatedAccountInfo, context) => console.log(“Updated account info: “, updatedAccountInfo),“confirmed”  );
})();

‍Satu hal penting yang perlu diperhatikan terkait WebSockets adalah meskipun sangat berguna untuk membuat prototipe, dalam praktiknya kami mendapati WebSockets cukup rapuh dan tidak andal. Kami sangat menyarankan agar Anda tidak menggunakannya untuk alur kerja yang sangat penting karena Anda akan melewatkan sejumlah peristiwa.

Geyser

TL;DR—Anda dapat membuat node di Solana melakukan streaming data langsung kepada Anda melalui antarmuka plugin yang menyesuaikan cara Anda menerima data tersebut. Ini adalah cara tercepat dan berlatensi paling rendah untuk melakukan streaming data di Solana serta mutlak diperlukan untuk kebutuhan seperti likuidasi DeFi dan aplikasi yang sensitif terhadap latensi.

Validator dan RPC Solana memiliki cara unik yang bersifat native di Solana untuk melakukan streaming data: Plugin Geyser.

Validator telah ditingkatkan untuk mendukung mekanisme plugin yang disebut plugin "Geyser". Melalui mekanisme ini, informasi tentang akun, slot, blok, dan transaksi dapat dikirim ke penyimpanan data eksternal seperti basis data relasional, basis data NoSQL, atau Kafka. Layanan RPC kemudian dapat dikembangkan untuk menggunakan data dari penyimpanan eksternal tersebut, dengan kemungkinan optimasi yang lebih fleksibel dan tertarget seperti caching dan pengindeksan.

Sayangnya, menyiapkan Geyser bisa cukup rumit dan mahal. Bahkan setelah selesai menyiapkannya, Anda masih memerlukan banyak pekerjaan DevOps untuk memastikan sistem berjalan lancar. Untungnya, di Helius kami telah mengembangkan sesuatu yang disebut GeyserVM—Anda dapat mengunggah plugin dan menjalankannya hanya dalam hitungan detik. Klaster kami yang sangat tersedia dan redundan memastikan Anda tidak perlu mengkhawatirkan masalah data. Karena sumber dayanya digunakan bersama, Anda juga dapat menghemat lebih dari 200% biaya bulanan!

Jika Anda menginginkan Geyser-as-a-Service khusus, tentu saja kami juga menawarkannya. Klik di sini untuk mempelajarinya lebih lanjut.

Webhooks

Konsep Webhooks sangat sederhana. Singkatnya, Webhooks mendengarkan peristiwa dan mengirimkannya ke server yang telah Anda siapkan saat peristiwa tersebut terjadi. Misalnya, Anda mungkin ingin mengirim notifikasi ke server Discord setiap kali terjadi penjualan NFT—webhook dapat melakukannya dengan mudah. 

Untuk sebagian besar alur kerja yang mendengarkan peristiwa di Solana, Webhooks merupakan metode yang paling mudah, paling fleksibel, dan paling hemat biaya. Webhooks hanya perlu dipertimbangkan kembali untuk kasus penggunaan berlatensi sangat rendah, ketika selisih 5 milidetik dapat menentukan keberhasilan atau kegagalan aplikasi Anda—seperti perdagangan frekuensi tinggi.

Di Helius, kami telah membangun layanan webhook paling andal di seluruh dunia kripto. 

Anda dapat mendengarkan hingga 100.000 alamat per webhook, mengonfigurasi jenis peristiwa yang ingin didengarkan—kami menguraikannya untuk Anda—dan cukup memasukkan URL server Anda. Hanya itu yang Anda perlukan untuk memulai secara gratis.

Salah satu dari banyak manfaat layanan seperti ini adalah Anda tidak hanya dapat menghemat waktu dan upaya developer selama berminggu-minggu atau berbulan-bulan, tetapi juga memperoleh backend elastis yang dapat terus diskalakan seiring pertumbuhan Anda. 

Untuk membaca informasi selengkapnya tentang Webhooks, klik di sini.

Kasus Penggunaan

Baik, sekarang Anda sudah mengetahui cara mendengarkan peristiwa onchain di Solana. Lalu, apa langkah berikutnya? Berikut beberapa kasus penggunaan yang mungkin menarik:

Bot

  • Saat NFT terdaftar di marketplace X, picu tindakan "beli nft".
  • Saat posisi margin bermasalah, picu tindakan "likuidasi".

Pemantauan & Peringatan

  • Saat program menghasilkan log tertentu, picu integrasi PagerDuty.
  • Saat saldo akun token berubah lebih dari X%, gunakan Dialect untuk menyampaikan peringatan.

Pengindeksan Berbasis Peristiwa

  • Saat transaksi apa pun terjadi pada program tertentu, kirim transaksi tersebut langsung ke basis data atau backend Anda.

Notifikasi & Pelacakan Aktivitas

  • Saat terjadi transfer dari dompet X ke dompet Y—kirim notifikasi Slack atau email.

Analitik & Log

  • Saat peristiwa X terjadi, kirim ke pipeline ETL atau simpan langsung di Helius untuk melihat tren dari waktu ke waktu.

Otomatisasi Alur Kerja

  • Saat peristiwa X terjadi, picu serangkaian tindakan apa pun.

Kesimpulan

Dalam artikel ini, kita telah membahas perbedaan antara polling dan streaming, berbagai cara untuk mendengarkan blockchain Solana, serta beberapa contoh kasus penggunaan.

Kesimpulannya, Anda dapat mendengarkan peristiwa onchain di Solana melalui polling, WebSockets, Geyser, atau Helius Webhooks. Masing-masing memiliki kelebihan dan kekurangan. Karena itu, penting untuk mempertimbangkan kebutuhan sistem Anda sebelum memutuskan pendekatan yang akan diterapkan. Terima kasih telah membaca!

Untuk mempelajari lebih lanjut tentang penawaran Helius, termasuk RPC Solana, API Solana, Solana Webhooks, dan Infrastruktur Solana, silakan kunjungi situs web kami.

‍

Berlangganan Helius

Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan