Skip to main content
LaserStream memberikan jaminan pengiriman yang sama persis seperti node Geyser. Panduan ini menjelaskan perilaku pengiriman pesan yang dapat Anda harapkan dari stream LaserStream.
Jaminan ini berlaku untuk langganan standar (transaksi, akun, slot, blok). Transaksi yang telah diproses sebelumnya (bagian dari Shred Delivery) menggunakan jaminan pengiriman upaya terbaik yang terpisah.

Pengiriman tepat satu kali

LaserStream menjamin pengiriman tepat satu kali. Setiap pesan dikirimkan ke stream Anda tepat satu kali — Anda tidak akan pernah menerima pesan duplikat dan tidak ada pesan yang dilewatkan. LaserStream mencapai hal ini dengan terhubung ke beberapa node Solana secara bersamaan dan menghapus duplikasi data yang masuk sebelum meneruskannya ke stream Anda. Arsitektur multinode ini juga menghilangkan titik kegagalan tunggal, sehingga memastikan waktu aktif maksimum tanpa mengorbankan ketepatan pengiriman.

Urutan pesan berdasarkan tingkat komitmen

Urutan pengiriman bergantung pada tingkat komitmen pesan:

Confirmed dan finalized

Semua pesan confirmed dan finalized dikirimkan secara berurutan. Anda dapat mengandalkan tingkat komitmen ini untuk memberikan tampilan status on-chain yang konsisten dan berurutan.

Processed

Semua pesan processed dikirimkan dalam urutan slot menaik, kecuali jika terjadi fork. Jika terjadi fork, urutan slot dapat menyimpang untuk sementara saat jaringan melakukan reorganisasi di sekitar rantai kanonis. Setelah fork diselesaikan, urutan menaik dilanjutkan.
Pada tingkat komitmen processed, ada kemungkinan kecil bahwa slot yang telah diproses nantinya dilewati atau disingkirkan akibat fork. Geyser tidak mengirimkan notifikasi rollback secara eksplisit untuk pembaruan yang disingkirkan akibat fork. Jika aplikasi Anda menggunakan data tingkat processed, Anda harus memperhitungkan kemungkinan bahwa beberapa pembaruan mungkin berasal dari slot yang pada akhirnya ditinggalkan. Untuk aplikasi yang memerlukan kepastian, gunakan tingkat komitmen confirmed atau finalized.

Urutan dalam satu slot

Dalam satu slot, LaserStream mengirimkan pembaruan akun dan transaksi dengan jaminan berikut:

Pembaruan akun sebelum transaksi

Untuk setiap transaksi, pembaruan akun yang disebabkannya dikirimkan sebelum transaksi itu sendiri:

Urutan antartansaksi

LaserStream mempertahankan urutan yang sama seperti plugin Geyser milik Agave. Apakah pembaruan dari transaksi yang berbeda tiba dalam urutan deterministik bergantung pada kunci tulis transaksi tersebut:
  • Kunci tulis yang sama (misalnya, tiga perdagangan pada pool Raydium yang sama): selalu deterministik. Agave mengeksekusinya secara berurutan karena transaksi tersebut menulis ke akun yang sama.
  • Kunci tulis yang berbeda (misalnya, dua transaksi yang tidak terkait): belum tentu deterministik. Agave dapat mengeksekusinya secara paralel dan pembaruannya dapat tercampur dalam stream.
Untuk merekonstruksi urutan yang sepenuhnya deterministik tanpa bergantung pada kunci tulis, gunakan indeks blok/transaksi dari data transaksi.

Normalisasi versi penulisan

LaserStream menormalisasi versi penulisan di seluruh arsitektur multinode-nya. Tidak seperti Geyser mentah atau Yellowstone — yang versi penulisannya bersifat lokal untuk setiap node dan dapat berbeda — LaserStream menyediakan versi penulisan konsisten yang dapat Anda andalkan untuk mengurutkan pembaruan akun tingkat processed.
Pengecualian sementara: Akun berukuran lebih dari 512KB saat ini dimasukkan ke buffer di plugin Geyser karena alasan performa. Hal ini dapat memengaruhi urutan deterministik untuk akun tersebut. Batasan ini akan segera dihapus.

Notifikasi slot

Notifikasi slot processed tiba setelah semua pesan untuk slot tersebut dikirimkan. Artinya, saat Anda menerima notifikasi slot processed, Anda dapat yakin bahwa semua data transaksi dan pembaruan akun yang terkait dengan slot tersebut telah dikirimkan ke stream Anda. Anda dapat menggunakan notifikasi slot sebagai sinyal untuk mengosongkan atau melepaskan data dalam buffer untuk slot tersebut.

Kontinuitas data saat koneksi terputus

LaserStream menyimpan buffer data slot terbaru, sehingga memungkinkan pemutaran ulang historis untuk data hingga 48 jam sebelumnya (~691.200 slot pada kecepatan jaringan saat ini). Jika koneksi aplikasi Anda terputus, Anda dapat terhubung kembali dan melanjutkan dari slot terakhir yang telah diproses tanpa kehilangan data apa pun. Saat menggunakan klien SDK LaserStream, pemulihan ini ditangani secara otomatis — klien melacak posisi streaming Anda berdasarkan nomor slot dan menghubungkan kembali tanpa gangguan. Logika penyambungan kembali secara manual tidak diperlukan.

Referensi tingkat komitmen