Langsung ke konten utama
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:

Finalized (alias kompatibilitas confirmed)

Semua pesan finalized dikirim secara berurutan. Di bawah Alpenglow, confirmed melaporkan status permanen yang sama dan tetap tersedia sebagai alias kompatibilitas, tetapi kode baru sebaiknya menggunakan finalized.

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, terdapat kemungkinan kecil bahwa slot yang telah diproses nantinya dilewati atau tersingkir akibat fork. Geyser tidak mengirimkan notifikasi rollback secara eksplisit untuk pembaruan yang tersingkir 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 finalized. Nilai confirmed saat ini memberikan jaminan yang sama, tetapi akan dihapus pada rilis mendatang.

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 mempertahankan buffer data slot terbaru, sehingga memungkinkan pemutaran ulang historis untuk data hingga 48 jam (~864.000 slot pada kecepatan jaringan saat ini). Jika koneksi aplikasi Anda terputus, Anda dapat menghubungkannya kembali dan melanjutkan dari slot terakhir yang 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