{"id":743,"date":"2026-11-11T16:02:00","date_gmt":"2026-11-11T21:02:00","guid":{"rendered":"https:\/\/dolanduck.io\/blog\/?p=743"},"modified":"2026-11-10T13:21:35","modified_gmt":"2026-11-10T18:21:35","slug":"solana-turbine-gulf-stream","status":"publish","type":"post","link":"https:\/\/dolanduck.io\/blog\/solana-turbine-gulf-stream\/","title":{"rendered":"Solana Turbine and Gulf Stream: How Data Moves on Solana"},"content":{"rendered":"\n<p>Gulf Stream and Turbine are the two pipes that move data through Solana: Gulf Stream carries your transaction to the validators that will lead the next slots, and Turbine carries the finished block from that leader to everyone else. Neither uses a public mempool or a flat broadcast. On November 10, 2026, Solana&#8217;s public RPC listed 3,829 nodes in gossip and 656 active voting validators, and Turbine reaches all of them through a tree where each node forwards to at most 200 others.<\/p>\n\n\n<!--more-->\n\n\n<h2 class=\"wp-block-heading\">Key Facts<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Gulf Stream:<\/strong> no shared mempool; transactions go directly to the current and upcoming leaders, which are known in advance from the leader schedule.<\/li><li><strong>Forwarding rule:<\/strong> an Agave RPC node forwards each transaction to 2 leaders and retries every 2 seconds until it lands or its blockhash expires (Agave source, send-transaction-service).<\/li><li><strong>Expiry:<\/strong> a transaction is valid for 150 slots, about 32 seconds at the measured 213ms per slot (RPC, November 10, 2026).<\/li><li><strong>Turbine:<\/strong> the leader cuts each block into small pieces called shreds and sends them down a tree with a fanout of 200 (DATA_PLANE_FANOUT in Agave).<\/li><li><strong>Loss protection:<\/strong> shreds travel in sets of 32 data plus 32 recovery pieces, so half of a set can be lost without asking for a resend.<\/li><li><strong>Next step:<\/strong> Rotor, the Alpenglow component meant to replace Turbine, had no mainnet date as of November 2026.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Gulf Stream: How a Transaction Finds the Leader<\/h2>\n\n\n\n<p>On most chains a signed transaction sits in a public waiting room, the mempool, until a block producer picks it. Solana skips that room. Because every node knows in advance which validator leads each slot, the RPC node that receives your transaction sends it straight to the leaders of the next slots over QUIC connections.<\/p>\n\n\n\n<p>The Solana team described the design in a June 19, 2019 post. Today the default Agave behavior is simple: forward to 2 leaders, retry every 2 seconds, stop when the transaction is confirmed or its blockhash is too old. The blockhash window is 150 slots, which shrank from roughly 60 seconds to about 32 seconds after slot times dropped to 200ms in October 2026. Why old transactions fail is covered in <a href=\"\/blog\/solana-blockhash-transaction-expired\/\">Solana blockhash and transaction expired errors<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Step<\/th><th>What happens<\/th><th>Who does it<\/th><\/tr><\/thead><tbody><tr><td>1<\/td><td>Wallet signs and sends the transaction<\/td><td>You<\/td><\/tr><tr><td>2<\/td><td>RPC node looks up the next leaders<\/td><td>RPC provider<\/td><\/tr><tr><td>3<\/td><td>Transaction is pushed to 2 leaders<\/td><td>Gulf Stream<\/td><\/tr><tr><td>4<\/td><td>Leader orders and executes it in a block<\/td><td>Validator<\/td><\/tr><tr><td>5<\/td><td>Block is cut into shreds and spread out<\/td><td>Turbine<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Turbine: How a Block Reaches Everyone<\/h2>\n\n\n\n<p>Sending a full block to thousands of nodes one by one would exhaust the leader&#8217;s bandwidth, so Turbine uses a tree. The leader splits the block into shreds that fit in a single network packet, adds erasure-coded recovery shreds, and sends each shred to a root node. The root passes it to up to 200 nodes in the first layer, and each of those passes it to up to 200 more.<\/p>\n\n\n\n<p>With a fanout of 200, two layers below the root can hold 200 plus 40,000 nodes, far more than the 3,829 nodes gossip showed on November 10. Helius puts it as most validators being 2 or 3 hops from the leader. The tree is reshuffled for every shred and favors validators with more stake, so heavy voters get the block first.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why Erasure Coding Matters<\/h2>\n\n\n\n<p>Turbine sends shreds over UDP, which is fast but drops packets. In Anza&#8217;s design notes, 16 data plus 4 recovery shreds per set almost never delivers a whole block under stress, while 32 plus 32 gives about a 99% success rate. That is why a node can rebuild a set from any 32 of its 64 pieces without waiting for a resend.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What This Means When You Trade<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>No public mempool to watch:<\/strong> your swap is not broadcast to every node before it lands, but leaders and the infrastructure around them still see it first. How ordering gets sold is explained in <a href=\"\/blog\/mev-solana-sandwich-attacks\/\">MEV and sandwich attacks on Solana<\/a>.<\/li><li><strong>Retrying is built in:<\/strong> the RPC keeps trying the next leaders until expiry, so a &#8220;pending&#8221; swap resolves within about 30 seconds either way.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Limits of Gulf Stream and Turbine<\/h2>\n\n\n\n<p>Gulf Stream concentrates incoming traffic on a few known machines, which makes those leaders easy targets during spam waves; Solana&#8217;s congestion episodes are listed in <a href=\"\/blog\/solana-outages-history\/\">Solana outages history<\/a>. Turbine depends on a healthy tree: if many nodes in the first layer are slow, shreds arrive late and the next leader may build on an older block. Both favor stake, so unstaked senders get less priority. You can follow live slots and blocks on <a href=\"https:\/\/solscan.io\" target=\"_blank\" rel=\"nofollow noopener\">Solscan<\/a> or check validator data on <a href=\"https:\/\/solanabeach.io\" target=\"_blank\" rel=\"nofollow noopener\">Solana Beach<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Gulf Stream, Turbine and a $DOLAN Swap<\/h2>\n\n\n\n<p>When you buy DOLAN Duck ($DOLAN), a fair-launch SPL token with a fixed 98.3M supply and about 10,700 holders, Gulf Stream takes your signed swap to the next 2 leaders and Turbine spreads the block that includes it to the rest of the network. The token itself changes nothing in that path; what changes your speed is the fee you attach, which is explained in <a href=\"\/blog\/solana-transaction-fees-priority-fee\/\">Solana transaction fees and priority fees<\/a>.<\/p>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1794334739441\"><strong class=\"schema-faq-question\">What is Gulf Stream on Solana?<\/strong> <p class=\"schema-faq-answer\">Gulf Stream is Solana&#x27;s mempool-less forwarding protocol. RPC nodes send transactions directly to the current and upcoming leaders instead of a shared waiting pool.<\/p> <\/div><div class=\"schema-faq-section\" id=\"faq-question-1794334739442\"><strong class=\"schema-faq-question\">What is Turbine on Solana?<\/strong> <p class=\"schema-faq-answer\">Turbine is the block propagation protocol. The leader splits a block into shreds and sends them through a tree where each node forwards to at most 200 others.<\/p> <\/div><div class=\"schema-faq-section\" id=\"faq-question-1794334739443\"><strong class=\"schema-faq-question\">Does Solana have a mempool?<\/strong> <p class=\"schema-faq-answer\">Not a public one. Transactions wait only inside RPC nodes and leaders, which is why mempool-watching tools from Ethereum do not apply directly.<\/p> <\/div><div class=\"schema-faq-section\" id=\"faq-question-1794334739444\"><strong class=\"schema-faq-question\">How long does a Solana transaction keep retrying?<\/strong> <p class=\"schema-faq-answer\">Until its blockhash expires after 150 slots, which is about 32 seconds at the current slot time of roughly 213ms.<\/p> <\/div><div class=\"schema-faq-section\" id=\"faq-question-1794334739445\"><strong class=\"schema-faq-question\">What will replace Turbine?<\/strong> <p class=\"schema-faq-answer\">Rotor, part of the Alpenglow upgrade, is planned to replace Turbine. As of November 2026 it had no mainnet date.<\/p> <\/div><div class=\"schema-faq-section\" id=\"faq-question-1794334739446\"><strong class=\"schema-faq-question\">Why does Turbine use erasure coding?<\/strong> <p class=\"schema-faq-answer\">Because UDP drops packets. With 32 data and 32 recovery shreds per set, a node can rebuild the set from any 32 of the 64 pieces.<\/p> <\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Gulf Stream and Turbine are the two pipes that move data through Solana: Gulf Stream carries your transaction to the validators that will lead the&#8230;<\/p>\n","protected":false},"author":2,"featured_media":744,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-743","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain"],"_links":{"self":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts\/743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/comments?post=743"}],"version-history":[{"count":1,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts\/743\/revisions"}],"predecessor-version":[{"id":753,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts\/743\/revisions\/753"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/media\/744"}],"wp:attachment":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/media?parent=743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/categories?post=743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/tags?post=743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}