
Gulf Stream Solana: Makin Banyak Mempool, Makin Banyak Masalah
Wawasan yang Dapat Ditindaklanjuti
- Istilah "Gulf Stream" secara umum dapat didefinisikan sebagai proses yang berlangsung sejak sebuah node mengambil transaksi di jaringan hingga transaksi tersebut mencapai pemimpin untuk slot saat ini dan diterima oleh Fetch Stage dari TPU (Transaction Processing Unit).
- Solana menonjol karena sejak awal dirancang untuk beroperasi tanpa mempool. Tidak seperti blockchain yang lebih tradisional, yang menggunakan protokol gossip untuk menyebarkan transaksi secara luas ke seluruh jaringan, Solana meneruskan semua transaksi ke validator utama yang telah ditentukan, yang disebut pemimpin, untuk setiap slot. Pemimpin berganti setiap 4 slot, dan jadwal pemimpin diketahui sebelumnya oleh semua node jaringan yang aktif sehingga penerusan transaksi berlangsung efisien.
- Secara default, transaksi Solana harus menyertakan blockhash terbaru, yang dapat diminta dengan mudah oleh developer melalui panggilan API sederhana. Blockhash terbaru berlaku hingga 150 slot (sekitar 1 menit). Setelah periode ini, blockhash menjadi kedaluwarsa dan transaksi yang merujuknya akan dibuang oleh jaringan. Hal ini memastikan transaksi yang belum diproses tidak terus tertahan. Blockhash terbaru juga membantu deduplikasi transaksi. Developer juga dapat menggunakan metode untuk menambahkan nonce yang tahan lama.
- Transaksi di Gulf Stream dienkode dan dikirim melalui stream QUIC kepada pemimpin. Adopsi QUIC pada akhir 2022 merupakan peningkatan jaringan yang signifikan dan menggantikan koneksi UDP yang sebelumnya digunakan. Pendorong utama perubahan ini adalah meningkatkan kemampuan jaringan dalam menyaring spam. Namun, peralihan ke QUIC cukup mengundang perdebatan karena Solana mengalami tingkat aktivitas yang belum pernah terjadi sebelumnya sepanjang 2024.
- Pengenalan Stake-weighted Quality of Service (SWQoS) pada awal 2024 menandai perubahan besar dalam cara transaksi mencapai pemimpin melalui Gulf Stream. Pemimpin kini memprioritaskan pesan transaksi yang diteruskan melalui validator lain yang memiliki stake. Secara khusus, 80% kapasitas pemimpin (2.000 koneksi) dicadangkan untuk peer yang memiliki stake, sedangkan 20% sisanya (500 koneksi) dialokasikan untuk pesan transaksi dari node tanpa stake.
- Saat ini, lebih dari 80% stake di Solana dikunci pada validator yang menjalankan klien Jito-Solana, alih-alih klien Agave asli. Jito memperkenalkan lelang ruang blok di luar protokol, yang menambah kerumitan pada cara transaksi mencapai pemimpin. Secara khusus, relayer Jito menambahkan “penghambat” selama 200 milidetik untuk memperlambat aliran pesan transaksi yang masuk, sehingga pencari memiliki cukup waktu untuk mengirimkan bundel.
Pendahuluan
Istilah "Gulf Stream" berasal dari serangkaian postingan blog pengantar yang ditulis oleh tim pendiri Solana pada 2019. Mereka memberikan judul bertema penerbangan pada banyak mekanisme Solana yang lebih inovatif. Dalam postingan tersebut, Gulf Stream didefinisikan sebagai “protokol penerusan transaksi tanpa mempool” milik Solana. Namun, pencarian istilah “Gulf Stream” di basis kode Solana saat ini hanya menghasilkan satu penyebutan yang tidak signifikan.
Dalam konteks siklus hidup transaksi Solana yang lebih luas, “Gulf Stream'' dapat dipahami sebagai seluruh proses yang berlangsung sejak sebuah transaksi diambil oleh node jaringan, biasanya RPC, hingga mencapai pemimpin untuk slot saat ini (yaitu saat transaksi diambil oleh “fetch stage” TPU). Gulf Stream juga dapat dipandang sebagai cerminan Turbine, mekanisme propagasi blok Solana, karena Gulf Stream merupakan cara transaksi mencapai pemimpin, sedangkan Turbine merupakan cara transaksi yang telah diproses meninggalkan pemimpin.
Pertama, akan berguna untuk mendefinisikan node RPC (Remote Procedure Call) dalam konteks Solana. Node ini dapat dianggap sebagai gerbang untuk berinteraksi dengan jaringan dan membaca data darinya. Node RPC bertindak sebagai perantara antara pengguna dan validator Solana. RPC menjalankan perangkat lunak yang sama dengan validator penuh, tetapi menggunakan pengaturan berbeda. Hal ini memungkinkan RPC menyimulasikan transaksi secara akurat dan mempertahankan gambaran terkini tentang state saat ini (bank). Namun, node RPC tidak memiliki stake sehingga tidak berpartisipasi dalam konsensus. Tanpa stake, node tersebut tidak dapat memberikan suara atau membangun blok. Konfigurasi ini berbeda dari banyak blockchain lain, tempat validator dan node RPC biasanya sama. Dalam konteks Gulf Stream, peran RPC dapat dirangkum sebagai menerima transaksi melalui HTTP, mengonversi transaksi ke QUIC (selengkapnya nanti), mencari alamat serta informasi port pemimpin saat ini menggunakan jadwal pemimpin, lalu meneruskan transaksi kepada pemimpin saat ini dan berikutnya.
Sejak jaringan diluncurkan, Gulf Stream telah mengalami setidaknya dua peningkatan besar, yaitu QUIC dan Stake-weighted QoS, yang akan dibahas secara mendetail nanti dalam artikel ini. Gulf Stream juga dapat dikatakan sebagai bagian protokol inti yang menghadapi tekanan paling besar dalam beberapa tahun terakhir akibat volume lalu lintas jaringan Solana yang belum pernah terjadi sebelumnya. Sebagai konteks, ketika sebuah validator menjadi pemimpin, lalu lintas masuk dapat melonjak hingga lebih dari satu gigabita per detik karena seluruh jaringan mengarahkan paket kepadanya. Menangani volume data masuk sebesar ini merupakan tantangan rekayasa yang sangat berat.
Makin Banyak Mempool, Makin Banyak Masalah
Definisi awal Gulf Stream dari tim pendiri menekankan tidak adanya mempool. Mempool (secara harfiah “kumpulan memori”) dapat didefinisikan sebagai sekumpulan transaksi yang telah dikirimkan oleh pengguna dan sedang menunggu untuk diproses oleh jaringan. Transaksi tersebut biasanya tidak dienkripsi atau dilindungi selama menunggu secara publik. Transaksi disebarkan ke seluruh jaringan menggunakan protokol gossip. Bergantung pada jaringannya, transaksi yang telah ditandatangani berpotensi tetap berada di mempool tanpa batas waktu hingga syarat eksekusinya terpenuhi. Hal ini terutama berlaku untuk transaksi yang menetapkan biaya transaksi (harga per unit komputasi) jauh di bawah kisaran harga pasar normal. Dalam kasus ekstrem, transaksi tersebut dapat memerlukan waktu berhari-hari atau berminggu-minggu untuk dieksekusi jika kondisi jaringan tidak mendukung penyertaannya dalam blok.
Skenario semacam itu tidak mungkin terjadi di Solana. Selain tidak memiliki konsep mempool bawaan, semua pesan transaksi harus menyertakan blockhash terbaru. Developer dapat dengan mudah meminta blockhash terbaru melalui panggilan JSON RPC API ke metode getLatestBlockhash. Blockhash ini disematkan dalam pesan transaksi dan berlaku hingga 150 slot, sekitar 1 menit, karena setiap slot memiliki target waktu 400 milidetik. Setelah 150 slot, blockhash menjadi kedaluwarsa dan transaksi yang merujuknya akan dibuang oleh jaringan. Secara default, RPC berupaya meneruskan transaksi setiap 2 detik. Namun, setelah blockhash terbaru kedaluwarsa, transaksi akan dibuang sehingga dijamin tidak akan pernah dieksekusi secara on-chain.
Blockhash terbaru juga menjadi cara untuk mendeteksi dan menghapus transaksi duplikat. Di jaringan lain, hal ini dilakukan dengan mewajibkan penyertaan nonce (angka yang hanya digunakan sekali). Meskipun tersedia metode bagi developer untuk menambahkan nonce yang tahan lama ke transaksi Solana dalam skenario khusus tertentu, nonce tidak wajib disertakan sebagai bagian dari transaksi Solana standar.
Sistem Gulf Stream Solana dimungkinkan karena jadwal pemimpin selalu diketahui sebelumnya oleh semua node aktif. Node memperbarui jadwal pemimpinnya setiap kali ketinggian slot melewati batas epoch, kira-kira setiap 2 hari. Jadwal pemimpin untuk suatu epoch dihitung berdasarkan state ledger pada awal epoch sebelumnya. Proses algoritmik untuk menghasilkan jadwal pemimpin adalah sebagai berikut:
- Secara berkala, gunakan ketinggian tick proof of history (PoH) (yaitu penghitung yang terus meningkat) sebagai seed bagi algoritma pseudorandom yang stabil.
- Pada ketinggian tersebut, ambil sampel bank untuk semua akun dengan stake dan identitas pemimpin yang telah memberikan suara dalam jumlah tick yang dikonfigurasi cluster. Sampel ini disebut set aktif.
- Urutkan set aktif berdasarkan bobot stake.
- Gunakan seed acak untuk memilih node berbobot stake guna membuat urutan berbobot stake.
- Urutan ini mulai berlaku setelah jumlah tick yang dikonfigurasi cluster.
Sumber: Dokumentasi resmi Solana
Pembobotan berdasarkan stake memastikan node tepercaya dengan stake lebih tinggi memiliki peluang lebih besar untuk lebih sering dipilih sebagai pemimpin, sedangkan node dengan stake lebih rendah lebih jarang dipilih atau tidak dipilih sama sekali.
Alokasi sumber daya berbobot stake merupakan tema yang berulang di seluruh protokol inti Solana, mencakup reward voting, pohon Turbine, jadwal pemimpin, dan jaringan gossip*. Bahkan Gulf Stream menggunakan pembobotan stake, seperti yang akan dibahas nanti dalam artikel ini.
*Solana juga memiliki jaringan gossip. Jaringan ini tidak digunakan untuk transaksi. Sebaliknya, jaringan ini berfungsi sebagai bidang kontrol yang mendistribusikan metadata tentang state blockchain, seperti informasi kontak node, daftar alamat, dan port yang tersedia.
Catatan tentang QUIC
Pembaruan besar pertama untuk Gulf Stream hadir pada akhir 2022 dengan diadopsinya protokol jaringan QUIC untuk menangani transmisi pesan transaksi kepada pemimpin. Peningkatan ini dipicu oleh gangguan jaringan akibat serangan DDoS dan transaksi spam yang membanjiri chain selama pencetakan NFT. Setelah QUIC terintegrasi sepenuhnya ke Mainnet-Beta melalui rilis 1.13.4, stabilitas jaringan meningkat.
Sebelumnya, Solana mengandalkan protokol jaringan UDP (User Datagram Protocol) untuk mengirim transaksi dari node RPC kepada pemimpin saat ini. Meskipun cepat dan efisien, UDP tidak berorientasi koneksi serta tidak memiliki kontrol aliran maupun konfirmasi penerimaan. Karena itu, tidak ada cara efektif untuk mencegah atau memitigasi perilaku abusif. Untuk mengendalikan lalu lintas jaringan, protokol penerimaan transaksi validator (yaitu Fetch Stage TPU) diimplementasikan ulang menggunakan QUIC.
QUIC awalnya dikembangkan oleh Google pada 2012 dan berupaya menawarkan keunggulan TCP sekaligus UDP. QUIC memfasilitasi komunikasi asinkron dan cepat seperti UDP, tetapi dilengkapi sesi aman serta strategi kontrol aliran canggih milik TCP. Hal ini memungkinkan penerapan batas pada setiap sumber lalu lintas sehingga jaringan dapat berfokus memproses transaksi yang autentik. QUIC juga memiliki konsep stream terpisah. Jadi, jika satu transaksi dibuang, transaksi lainnya tidak akan terblokir. Google menjadi pendorong utama adopsi QUIC di seluruh Web2. Koneksi ke server Google dibuat menggunakan QUIC, yang berarti banyak aplikasi di bawah naungan Google berbasis QUIC, seperti Hangouts, Gmail, dan YouTube. Sebagai catatan tambahan, QUIC bukan akronim, melainkan nama protokol tersebut.
Meski demikian, efektivitas implementasi QUIC di Solana masih terbuka untuk diperdebatkan. Saat lalu lintas jaringan melonjak, validator dapat kewalahan menangani handshake QUIC. Dapat dikatakan bahwa QUIC bukan solusi ampuh yang semula diharapkan sebagian pihak untuk mengatasi masalah kemacetan pada tingkat jaringan. Perlu dicatat bahwa tingkat adopsi QUIC di industri blockchain masih rendah di luar implementasinya pada Solana. Sejumlah anggota komunitas validator Solana secara terbuka mengkritik protokol ini karena menganggap adopsi QUIC sebagai langkah yang keliru.
Stake-Weighted Quality of Service (SWQoS)
Pada awal 2024, Stake-weighted Quality of Service (SWQoS) diadopsi sebagai mekanisme yang dirancang untuk mencegah spam dan meningkatkan ketahanan terhadap Sybil. Sistem ini memungkinkan pemimpin memprioritaskan pesan transaksi yang dirutekan melalui validator dengan stake. Validator dengan stake lebih tinggi mendapat kapasitas yang secara proporsional lebih besar untuk mengirim paket pesan transaksi kepada pemimpin. Hal ini secara efektif memitigasi serangan Sybil dari node tanpa stake atau dengan stake rendah di seluruh jaringan. Segmentasi ini dimungkinkan karena alamat IP dapat diverifikasi melalui QUIC sehingga validator dapat memprioritaskan dan membatasi lalu lintas untuk koneksi tertentu.
Dengan SWQoS, validator dapat menyewakan kapasitas berbobot stake miliknya kepada node RPC. Sebagai imbalannya, node RPC memperoleh bandwidth lebih besar sehingga dapat meningkatkan tingkat penyertaan transaksi dalam blok. Khususnya, 80% kapasitas pemimpin (2.000 koneksi) dicadangkan untuk Stake-weighted QoS, sedangkan 20% sisanya (500 koneksi) dialokasikan untuk pesan transaksi dari node lain. Strategi alokasi ini menyerupai sistem jalur prioritas di jalan tol, tempat pengemudi membayar tarif untuk menghindari kemacetan.
Jumlah minimum stake yang diperlukan agar memenuhi syarat sebagai peer dengan stake saat ini adalah 0,04% dari total stake. Saat artikel ini ditulis, total stake mencapai 384 juta SOL sehingga persyaratan minimumnya adalah 15.360 SOL.
SWQoS memberikan dampak signifikan pada ekosistem Solana dengan meningkatkan persyaratan untuk meneruskan transaksi kepada pemimpin dan mengurangi efektivitas serangan spam. Perubahan ini mendorong aplikasi dengan lalu lintas tinggi untuk mengintegrasikan operasinya secara vertikal. Dengan menjalankan node validator sendiri, aplikasi dapat memastikan akses istimewa kepada pemimpin sehingga meningkatkan kemampuan pemrosesan transaksinya. Di Helius, kami bangga mengoperasikan salah satu validator teratas berdasarkan jumlah stake di jaringan, yang memungkinkan kami mengamankan tingkat penyertaan transaksi lebih tinggi. Pelajari selengkapnya tentang staking bersama kami dalam panduan staking mendetail kami di sini.
Penghambat Jito
Artikel ini tidak akan lengkap tanpa menyebut Jito karena, saat artikel ini ditulis, lebih dari 80% stake jaringan menggunakan klien validator Jito. Klien ini menambah kerumitan pada cara transaksi biasanya mencapai pemimpin. Klien validator Jito-Solana (Github) merupakan fork dari klien Agave (Github), yang awalnya merupakan klien Solana Labs. Klien ini memperkenalkan lelang ruang blok di luar protokol dan memungkinkan validator menerima insentif ekonomi tambahan dalam bentuk tip.
Karena pembahasan menyeluruh mengenai klien Jito berada di luar cakupan artikel ini, kami akan membatasi analisis pada pengaruh klien Jito terhadap aliran transaksi normal melalui Gulf Stream. Transaksi memiliki dua kemungkinan rute—transaksi akan mengalir dari RPC ke validator yang dipasangkan, lalu diteruskan ke pemimpin saat ini (rute berbobot stake), atau diteruskan langsung kepada pemimpin (rute koneksi terbuka). Dalam kedua skenario tersebut, jika pemimpin menjalankan klien Jito-Solana, transaksi ini terlebih dahulu dikirim ke Jito-Relayer (Github), perangkat lunak sumber terbuka yang berfungsi sebagai router proksi transaksi.
Node jaringan lain tidak mengenal Jito-Relayer. Node tersebut hanya akan mengirim transaksi ke konfigurasi alamat dan port apa pun yang dipilih pemimpin untuk disiarkan melalui jaringan gossip sebagai ingress_socket miliknya. Relayer menunda transaksi selama 200 milidetik sebelum meneruskannya kepada pemimpin. Mekanisme “penghambat” ini memperlambat aliran pesan transaksi yang masuk dan memungkinkan lelang waktu diskret yang efisien. Setelah 200 milidetik, relayer secara optimistis melepaskan transaksi tanpa mempertimbangkan hasil lelang.
Jito sebelumnya mengoperasikan layanan mempool kanonis di luar protokol, yang kini telah dihentikan. Ketika validator Jito-Solana menjadi pemimpin, pencari masih dapat mengirimkan kelompok transaksi yang dieksekusi secara atomik, yang disebut bundel, untuk jenis transaksi MEV lain yang tidak bergantung pada mempool, seperti transaksi arbitrase dan likuidasi.
Untuk mempelajari lebih lanjut, lihat artikel blog Helius kami di sini, yang memberikan pengantar tentang MEV Solana.
Kesimpulan
Dalam artikel ini, kami telah membahas berbagai aspek Gulf Stream Solana, termasuk protokol jaringan QUIC, Stake-weighted QoS, dan konfigurasi validator Jito. Kami membandingkan Gulf Stream dengan arsitektur mempool yang lebih tradisional serta menguraikan manfaat pendekatan Solana dalam hal efisiensi yang lebih tinggi dan latensi yang lebih rendah.
Tidak diragukan lagi, Gulf Stream akan terus berkembang. Protokol Solana dan ekosistemnya yang lebih luas berkembang dengan pesat, dengan berbagai peningkatan signifikan yang diantisipasi. Sebagai contoh, salah satu pendiri Solana, Anatoly Yakovenko, merupakan pendukung kuat implementasi beberapa pemimpin serentak. Beberapa pemimpin serentak akan memungkinkan beberapa node di seluruh dunia mengurutkan transaksi pengguna secara bersamaan, mengurangi latensi, dan meniadakan kebutuhan perjalanan pulang-pergi global penuh dalam skenario terburuk sebelum transaksi ditambahkan ke blockchain.
Solana tidak akan berhenti berkembang, dan masa depan menarik menanti seluruh protokol, termasuk Gulf Stream. Karena itu, developer dapat menantikan lebih banyak pembaruan dan pengoptimalan di masa mendatang.
Jika Anda telah membaca sejauh ini, terima kasih! Pertimbangkan untuk bergabung dengan komunitas kami di Discord, mengikuti kami di X, atau berlangganan milis kami di bawah ini.
Terima kasih banyak kepada Jacob Creech dan 0xIchigo karena telah meninjau versi terdahulu artikel ini.
Referensi Tambahan
- Gulf Stream: Protokol Penerusan Transaksi Solana Tanpa Mempool
- QUIC, transport multipleks melalui UDP
- Panduan Komprehensif untuk HTTP/3 dan QUIC
- Kompilasi Tautan SWQoS
- Panduan Stake-weighted Quality of Service di Solana
- Edukasi Validator Solana - Stake Weighted QoS
- Dokumentasi Jito Relayer
- Eksekusi Asinkron, Arsitektur Akhir
Artikel Terkait
Berlangganan Helius
Ikuti perkembangan terbaru dalam pengembangan Solana dan dapatkan pembaruan saat kami memublikasikan postingan


