Solana Stream SDK อัปเดตเต็มรูปแบบเพื่อรองรับการอัปเกรด Solana v3 แล้ว

ELSOUL LABO B.V. (สำนักงานใหญ่: อัมสเตอร์ดัม ประเทศเนเธอร์แลนด์; CEO: Fumitake Kawasaki) และ Validators DAO เปิดตัว Solana Stream SDK แบบโอเพนซอร์สเวอร์ชันใหม่ ซึ่งอัปเดตเต็มรูปแบบเพื่อรองรับการอัปเกรด Solana v3 ทั้งรุ่น Rust และ TypeScript ได้รับการอัปเกรดเพื่อให้เข้าถึงสตรีมข้อมูลแบบเรียลไทม์ของ Solana รวมถึง Shreds และ Geyser gRPC ได้อย่างน่าเชื่อถือและมีประสิทธิภาพสูงในยุค Alpenglow ที่กำลังจะมาถึง
Rust Crate
solana-stream-sdk รองรับ Solana v3 แล้วในเวอร์ชัน 0.6.1 ส่วนแพ็กเกจ TypeScript / Node.js @validators-dao/solana-stream-sdk ได้รับการอัปเดตเป็นเวอร์ชัน 0.12.0 ทั้งสองรุ่นร่วมกันมอบรากฐานแบบรวมสำหรับการประมวลผลสตรีมประสิทธิภาพสูง ขณะที่ Solana เปลี่ยนผ่านไปสู่สถาปัตยกรรมรุ่นถัดไปที่มา – เหตุผลที่ Solana v3 และ Alpenglow ต้องการการอัปเดตฝั่ง Client
Solana v3 เป็นการเปลี่ยนผ่านครั้งสำคัญสู่สถาปัตยกรรม Consensus ใหม่ของ Alpenglow โดย Alpenglow จะเข้ามาแทนที่การผสาน TowerBFT + Proof of History ที่ใช้อยู่ ด้วยเส้นทาง Consensus ที่ออกแบบใหม่เพื่อยกระดับการตอบสนองของเครือข่ายอย่างมาก ภายใต้ Alpenglow คาดว่า Finality จะลดจากประมาณ 12 วินาทีในปัจจุบันเหลือราว 100–150 มิลลิวินาที
การเปลี่ยนแปลงนี้ทำให้จังหวะการสร้าง Block และคุณลักษณะการเผยแพร่ข้อมูลแบบเรียลไทม์ทั่วเครือข่ายเปลี่ยนไปอย่างสิ้นเชิง
ในขณะเดียวกัน Validator และผู้ให้บริการ RPC ต้องรองรับภาระด้านการดำเนินงานที่เพิ่มขึ้นภายใต้ v3 ทั้งรอบ Build และการอัปเดตการกำหนดค่าที่ถี่ขึ้น Validators DAO กำลังปรับสภาพแวดล้อมฝั่งเซิร์ฟเวอร์ให้ทันสมัยผ่านเครื่องมืออย่าง SLV แต่การเปลี่ยนผ่านนี้ยังเน้นย้ำประเด็นสำคัญว่า:
ซอฟต์แวร์ฝั่ง Client ต้องอัปเดตเป็น v3 เช่นกัน มิฉะนั้นจะไม่สามารถใช้ประโยชน์จากประสิทธิภาพที่เครือข่ายเพิ่มขึ้นได้อย่างเต็มที่
เรื่องนี้สำคัญอย่างยิ่งกับสตรีมแบบเรียลไทม์อย่าง Shreds และ Geyser gRPC Client ที่ไม่รองรับข้อกำหนดหรือคุณลักษณะ Runtime ใหม่มีแนวโน้มที่จะสะสม latency หรือสูญเสียความสอดคล้องเมื่อเวลาผ่านไป เมื่อโหนด RPC และ Validator ย้ายไปใช้ v3 ซอฟต์แวร์ฝั่ง Client จึงต้องย้ายระบบควบคู่กัน
เป้าหมายของการอัปเดต Solana Stream SDK ครั้งนี้คือเชื่อมช่องว่างดังกล่าว และมอบรากฐานพร้อมใช้งานสำหรับแอปพลิเคชันแบบเรียลไทม์ในยุค Alpenglow
สิ่งใหม่ใน Solana Stream SDK v0.6.1 (Rust) และ v0.12.0 (TypeScript)
Solana Stream SDK ออกแบบมาตั้งแต่แรกให้รองรับทั้ง Shreds และ Geyser gRPC ในรุ่นนี้ SDK ได้รับการปรับปรุงหลายด้าน เพื่อให้ทำงานบน Solana v3 ได้อย่างเสถียรและพร้อมสำหรับ Runtime ที่ใช้ Alpenglow
Rust Crate v0.6.1
รุ่น Rust ออกแบบมาเป็น Reference Implementation ประสิทธิภาพสูงสำหรับนักเทรด, Indexer และทุกเวิร์กโหลดแบบเรียลไทม์ที่ต้องการ Throughput สูงสุด การอัปเดตสำคัญ ได้แก่:
- รองรับการเปลี่ยนแปลงโปรโตคอลใน Solana v3 Series
- ประมวลผลสตรีม Shreds และ Geyser gRPC อย่างมีประสิทธิภาพผ่าน Asynchronous Runtime ของ Rust
- ปรับปรุง Wrapper สำหรับนิยาม Protobuf ที่เกี่ยวข้องกับ Shreds ทำให้ Implement Logic การประมวลผลสตรีมได้ง่ายขึ้น
- เส้นทางการทำงานแบบ Multi-thread ที่ปรับให้ลดการสะสมของ latency แม้ประมวลผล Throughput สูงอย่างต่อเนื่อง
รุ่น Rust เหมาะสำหรับผู้ใช้ที่ต้องการใช้ประโยชน์จาก Shreds และ Geyser gRPC อย่างเต็มที่ในระดับประสิทธิภาพสูงสุดเท่าที่เป็นไปได้
TypeScript / Node.js v0.12.0
รุ่น TypeScript ออกแบบมาเพื่อรักษาความสะดวกในการพัฒนาด้วย Node.js พร้อมใช้การประมวลผลสตรีมที่ขับเคลื่อนด้วย Rust ภายใน ใน v0.12.0 มีการปรับปรุงดังนี้:
- รักษา Interface แบบ Event-driven ที่มีอยู่เดิมไว้อย่างครบถ้วน (เช่น
emitter.on) เพื่อหลีกเลี่ยง Breaking Change - ผสาน Rust และ NAPI-RS สำหรับจัดการสตรีมภายใน ทำให้ Node.js ประมวลผล Shreds ได้อย่างน่าเชื่อถือในจุดที่
@grpc/grpc-jsเคยถึงขีดจำกัด - อัปเดตการจัดการทั้งสตรีม Geyser gRPC และ Shreds เพื่อให้รองรับ Solana v3
สำหรับผู้ใช้ส่วนใหญ่ การอัปเกรดเป็น v0.12.0 เพียงปรับเวอร์ชันใน package.json โดยไม่ต้องแก้ไขโค้ด
เหตุผลที่ Node.js เพียงอย่างเดียวตาม Shreds ไม่ทัน
ShredStream เป็นแหล่งข้อมูลที่มี latency ต่ำที่สุดและความถี่สูงที่สุดในระบบนิเวศ Solana แม้ Shreds จะเปิดให้เห็นกิจกรรมบนเครือข่ายแบบเรียลไทม์ได้เร็วกว่าวิธีอื่น แต่ก็ต้องอาศัย Throughput การประมวลผลฝั่ง Client ที่สูงมาก
Client ของ Node.js ที่สร้างบน
@grpc/grpc-js พบคอขวดเชิงโครงสร้างดังนี้:- Event Loop เป็น Single-thread ดังนั้นการ Deserialize Protobuf และ Callback ของผู้ใช้จึง Block ซึ่งกันและกัน
- เมื่อ Message มาถึงอย่างรวดเร็ว Thread ของ JavaScript จะอิ่มตัวและ Queue การประมวลผลเริ่มสะสม
- Flow Control ของ HTTP/2 ลด Receiving Window เมื่อ Buffer เต็ม จนท้ายที่สุดหยุดสตรีมชั่วคราวและทำให้ดูเหมือนว่า “เครือข่ายช้าลง” หรือ “ไม่มีข้อมูล”
ในหลายกรณีที่สังเกตพบ ปัญหาไม่ได้อยู่ที่เครือข่ายหรือเซิร์ฟเวอร์ ShredStream แต่คือ Client ของ Node.js ประมวลผลตามไม่ทันจากภายใน
ข้อจำกัดนี้เป็นคุณลักษณะโดยธรรมชาติของ Node.js เมื่อต้องจัดการ Shreds ที่ไม่ผ่านการกรองในระดับใหญ่
Rust + NAPI-RS แก้ข้อจำกัดนี้ได้
วิธีที่ Rust + NAPI-RS เร่งการประมวลผลสตรีมของ Node.js
Solana Stream SDK รุ่น TypeScript โอนงานหนักไปประมวลผลใน Rust ขณะยังคง API ของ JavaScript ที่คุ้นเคยไว้
- การจัดการการเชื่อมต่อ gRPC, การรับสตรีม และการ Deserialize Protobuf ทำงานแบบ Asynchronous ใน Rust
- Node.js รับข้อมูลที่ประมวลผลแล้วในรูปสตรีมมาตรฐานหรือ Event Emitter ทำให้โค้ดเดิมทำงานต่อได้โดยไม่ต้องเปลี่ยน
- NAPI-RS ลด Overhead ระหว่าง Rust กับ Node.js และทำให้ได้ Throughput แบบ Multi-thread อย่างแท้จริงเบื้องหลัง Interface ของ JavaScript
ผลลัพธ์คือแอปพลิเคชันที่เขียนด้วย Solana Stream SDK รองรับ Throughput ของ Shreds และ Geyser gRPC ได้สูงกว่าแนวทางที่ใช้เฉพาะ Node.js ร่วมกับ
@grpc/grpc-js อย่างมีนัยสำคัญ พร้อมรักษาคุณลักษณะด้าน latency ให้เสถียรแม้อยู่ภายใต้ Traffic หนักเหตุผลที่การรองรับทั้ง Shreds และ Geyser gRPC ใน SDK เดียวมีความสำคัญ
ข้อมูลแบบเรียลไทม์ของ Solana มองได้เป็นสองเลเยอร์ที่เกื้อหนุนกัน:
- Shreds: Fragment ที่มี latency ต่ำเป็นพิเศษซึ่งส่งออกจาก Leader โดยตรง ทำให้มองเห็นกิจกรรมบน Chain ได้ในจังหวะแรกสุด
- Geyser gRPC: สตรีมที่มีโครงสร้างของ Slot, ธุรกรรม และการอัปเดต Account ซึ่งมอบโมเดลข้อมูลที่ชัดเจนและคาดการณ์ได้
Solana Stream SDK ช่วยให้นักพัฒนาเริ่มจาก Geyser gRPC เพื่อทำความเข้าใจโครงสร้างข้อมูล แล้วเปลี่ยนไปใช้ Shreds ในกรณีที่ต้องการ latency ต่ำเป็นพิเศษ โดยไม่ต้องเปลี่ยนเครื่องมือหรือเขียน Pipeline ใหม่
เมื่อ Alpenglow เร่งการสร้างและการยืนยัน Block แนวทางแบบสองเลเยอร์นี้จะยิ่งมีคุณค่ามากขึ้น
เริ่มต้นใช้งาน: แหล่งข้อมูลและสภาพแวดล้อมทดสอบ
Solana Stream SDK เป็นโอเพนซอร์สเต็มรูปแบบ และมีโค้ดตัวอย่างสำหรับทั้ง Shreds และ Geyser gRPC บน GitHub
Rust Crate (v0.6.1): https://crates.io/crates/solana-stream-sdk
npm (TypeScript, v0.12.0): https://www.npmjs.com/package/@validators-dao/solana-stream-sdk
GitHub - Solana Stream SDK: https://github.com/ValidatorsDAO/solana-stream
สำหรับการทดสอบในสภาพแวดล้อมจริง ERPC มี Trial ฟรีหนึ่งวันสำหรับ Endpoint ShredStream และ Geyser gRPC ประสิทธิภาพสูง ช่วยให้นักพัฒนาตรวจสอบพฤติกรรมของ v3 ภายใต้เงื่อนไขระดับ Production
เว็บไซต์อย่างเป็นทางการของ ERPC: https://erpc.global/th/
เข้าร่วมชุมชน Validators DAO
ยินดีต้อนรับคำถาม ข้อเสนอแนะ และการแลกเปลี่ยนเกี่ยวกับ Solana v3, Alpenglow, การออกแบบสตรีมแบบเรียลไทม์ หรือการปรับปรุง SDK ในชุมชน Validators DAO
Discord อย่างเป็นทางการของ Validators DAO: https://discord.gg/C7ZQSrCkYR
ขณะที่ Solana เปลี่ยนผ่านเข้าสู่ยุค Alpenglow เครือข่ายจะมีประสิทธิภาพแบบเรียลไทม์ในระดับที่ไม่เคยมีมาก่อน Validators DAO และ ELSOUL LABO จะเดินหน้ามอบเครื่องมือโอเพนซอร์สคุณภาพสูง เพื่อช่วยนักพัฒนาสร้างแอปพลิเคชันแบบเรียลไทม์รุ่นถัดไปบน Solana
ขอขอบคุณสำหรับการสนับสนุนอย่างต่อเนื่อง


