⚡ بدء سريع (shreds خام)

يُسلّمُ Raw Shred Stream shreds Solana خامًا (raw shreds) إلى خادمِكَ كـ datagrams عبرَ UDP، مباشرةً إلى مُستقبِلِكَ الخاص. يربطُ هذا الدليلُ السريعُ مقبسَ UDP ويستقبلُ تلك الـ datagrams لتتأكدَ من تدفقِ البيانات. ومن هناك، يجري فكُّ الشذراتِ وإعادةُ التجميعِ وفكُّ ترميزِ المعاملاتِ في خطِّ المعالجةِ الخاصِّ بك — عبرَ مفكِّكِ ترميزٍ محسَّن، حفاظاً على ميزةِ زمنِ الاستجابة.

تريدُ الاستغناءَ عن مفكِّكِ الترميزِ كلياً؟ يُسلّمُكَ Decoded Shred Stream معاملاتٍ معادَ تجميعِها بالفعل بتنسيقِ wire القياسي. راجعْ بناء مستقبِل لخطِّ معالجةِ الشذراتِ الخام كاملاً.


📋 المتطلبات الأساسية

  1. أنشئ حساباً على ShredStream.com
  2. أطلق Raw Shred Stream واختر منطقتك
  3. أدخل عنوان IP لخادمك ومنفذ UDP الذي تريد استقبال الـ shreds عليه
  4. افتح firewall لحركة مرور UDP الواردة على ذلك المنفذ — راجع إعداد الشبكة

💻 اربطْ مقبسَ UDP واستقبلِ الشذرات

كل مثال يربط مقبس UDP على 0.0.0.0 ويستقبل shreds خامًا على المنفذ الذي كوّنته على ShredStream.com. الشذرات الواردة هي وحدات بايت Solana خام — مرّرها إلى خط فكّ التجميع وفكّ الترميز الخاص بك.

JavaScript / TypeScript

javascript
import dgram from 'node:dgram';
const PORT = parseInt(process.env.SHREDSTREAM_PORT || '8080');
const sock = dgram.createSocket('udp4');
sock.on('message', (shred) => {
// وحدات بايت shred سولانا الخام — مرّرها إلى أداة فك التجميع / فك الترميز لديك.
console.log(`shred: ${shred.length} bytes`);
});
sock.bind(PORT, '0.0.0.0');

Python

python
import os, socket
PORT = int(os.environ.get("SHREDSTREAM_PORT", 8080))
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(("0.0.0.0", PORT))
while True:
shred, _ = sock.recvfrom(65535)
# وحدات بايت shred سولانا الخام — مرّرها إلى أداة فك التجميع / فك الترميز لديك.
print(f"shred: {len(shred)} bytes")

Rust

rust
use std::net::UdpSocket;
fn main() -> std::io::Result<()> {
let port: u16 = std::env::var("SHREDSTREAM_PORT")
.ok().and_then(|v| v.parse().ok()).unwrap_or(8080);
let sock = UdpSocket::bind(("0.0.0.0", port))?;
let mut buf = [0u8; 65535];
loop {
let (n, _) = sock.recv_from(&mut buf)?;
// وحدات بايت shred سولانا الخام — مرّرها إلى أداة فك التجميع / فك الترميز لديك.
println!("shred: {} bytes", n);
}
}

Go

Gogo
package main
import (
"fmt"
"net"
"os"
"strconv"
)
func main() {
port, _ := strconv.Atoi(os.Getenv("SHREDSTREAM_PORT"))
if port == 0 {
port = 8080
}
sock, err := net.ListenUDP("udp", &net.UDPAddr{IP: net.IPv4zero, Port: port})
if err != nil {
panic(err)
}
defer sock.Close()
buf := make([]byte, 65535)
for {
n, _, _ := sock.ReadFromUDP(buf)
// وحدات بايت shred سولانا الخام — مرّرها إلى أداة فك التجميع / فك الترميز لديك.
fmt.Printf("shred: %d bytes\n", n)
}
}

عيّن SHREDSTREAM_PORT (أو عدّل القيمة الافتراضية 8080) على المنفذ الذي كوّنته لبثك في لوحة تحكم ShredStream.com.

هذه القصاصات تثبت وصول الـ datagrams فقط. الشذرات الخام لا تزال بحاجة إلى فكّ الشذرات (بنية FEC / Merkle) وإعادة تجميع الـ slots وفكّ ترميز المعاملات — وهذا خطُّ المعالجة الذي تبنيه أنت. للاستغناء عنه كلياً، راجع Decoded Shred Stream: تصلك المعاملات معاد تجميعها بالفعل.


🧩 العميل القديم: shredstream

تنبيه: لم يعد يُنصح باستخدام عميلنا في الحالات الحساسة لزمن الاستجابة. لذا فضّل استخدام عميل آخر، أو خدمتنا Decoded Shred Stream مباشرةً.

إن كنت بحاجة إلى حلّ يعمل اليوم، فالعميل القديم shredstream يربط المنفذ، ويفكّ الشذرات ويعيد تجميعها على جانب العميل، ويسلّمك معاملات Solana جاهزة. فكّ الشذرات على جانب العميل يكلّف زمن استجابة — مناسب للبدء، لا للمنافسة على زمن الاستجابة.

اللغةالتثبيتالحزمة
JavaScript / TypeScriptnpm install shredstreamnpm
Pythonpip install shredstreamPyPI
Rustcargo add shredstreamcrates.io
Gogo get github.com/shredstream/shredstream-sdk-go/v2GitHub
rust
// cargo add shredstream
use shredstream::ShredListener;
fn main() {
let port: u16 = std::env::var("SHREDSTREAM_PORT")
.ok().and_then(|v| v.parse().ok()).unwrap_or(8001);
let mut listener = ShredListener::bind(port).expect("bind");
// Client-side deshredding → ready Solana transactions
for (slot, transactions) in listener.transactions() {
for tx in &transactions {
println!("slot {}: {}", slot, tx.signatures[0]);
}
}
}

⚙️ ضبط buffer نظام التشغيل

مدققو Solana ينتجون الـ shreds بمعدل عالٍ. اطلب مخزن استقبال socket سخياً (25 ميغابايت على الأقل) في كود مستقبِلك، واسمح بهذا الحجم على مستوى نظام التشغيل:

bash
# Linux
sudo sysctl -w net.core.rmem_max=33554432
# macOS
sudo sysctl -w kern.ipc.maxsockbuf=33554432

راجع إعداد الشبكة لتكوين firewall وbuffer الكامل.


➡️ الخطوات التالية

بدء سريع (shreds خام) — Docs | ShredStream.com