ERPC, UDP Shreds 처리와 gRPC 연결 복구를 개선한 Solana Stream SDK v4.0.0 공개

ELSOUL LABO B.V.와 Validators DAO는 Solana 스트리밍 데이터를 처리하는 오픈 소스 SDK인 Solana Stream SDK v4.0.0을 2026년 11월 6일 공식 공개했습니다. 로컬 벤치마크에서 Rust UDP Shreds 내부 처리 속도는 기존의 약 108배, TypeScript 이벤트 큐 처리량은 약 4배를 기록했습니다. Geyser gRPC도 연결이 끊긴 뒤 더 빠르게 업데이트 수신을 재개합니다. SDK는 무료로 사용할 수 있으며, 개발을 시작할 수 있도록 Rust와 TypeScript 예제를 제공합니다.
애플리케이션에서 지연 시간이 짧은 데이터 전달의 이점을 활용하려면 들어온 데이터를 얼마나 빠르게 처리하는지도 중요합니다. v4.0.0은 데이터 도착 이후의 내부 처리를 효율화하고, 연결이 끊긴 뒤의 복구를 개선했습니다. ERPC Shreds UDP Forwarding Premium과 함께 사용하면 Solana 애플리케이션의 데이터 전달 경로와 수신 측 구현을 모두 개선할 수 있습니다.
세 가지 테스트로 측정한 처리 및 복구 성능 개선

Rust UDP 수신 경로에서는 데이터그램 디코딩, 내부 버퍼 삽입, Shreds에서 데이터를 재구성하는 deshred 처리를 가속했습니다. 패킷마다 반복하던 내부 상태 정리와 시계 읽기 작업을 조정해, 데이터 보존 기간을 유지하면서 처리 부담을 줄였습니다. 비교 테스트에서 데이터그램당 내부 처리 시간은 94,236 ns에서 855–881 ns로 줄어들어, 처리 속도가 기존의 약 108배로 높아졌습니다.
이 벤치마크는 Apple M 시리즈 Mac에서 수행했으며, 실행할 때마다 300개 슬롯에 걸친 403,200개의 데이터그램을 처리했습니다. 결과는 5회 실행의 중앙값으로 비교했습니다. 측정 대상은 decode→insert→deshred 내부 처리 경로이며, 네트워크 전달 시간이나 사용자 애플리케이션의 후속 처리는 포함하지 않습니다. 수신한 Shreds를 재구성하는 데 필요한 작업을 줄여, 개발자가 애플리케이션 로직에 더 많은 컴퓨팅 자원을 사용할 수 있도록 돕는 개선입니다.
TypeScript Geyser gRPC 예제와 스타터는 큐에 이벤트가 남아 있는 동안의 대기를 줄여, 수신한 데이터를 더 효율적으로 꺼낼 수 있도록 했습니다. Node.js 24에서 200만 개 이벤트를 처리한 큐 단독 테스트에서는 처리량이 초당 570만–740만 개 이벤트에서 2,480만–2,940만 개 이벤트로 증가해, 기존의 약 4배를 기록했습니다.
Geyser gRPC에서는 재연결을 처리하는 클라이언트와 최초 재시도 간격을 업데이트했습니다. 로컬 tonic 서버에서 연결 끊김을 20회 발생시킨 테스트에서는, 각 연결 끊김 전후에 수신한 업데이트 사이의 간격 중앙값이 3.0 runner의 552 ms에서 4.0 runner의 103 ms로 줄었습니다. 이는 로컬 테스트 환경에서 업데이트 수신이 재개될 때까지의 간격을 측정한 결과입니다.
이 세 가지 결과는 측정 범위와 조건이 서로 다른 테스트에서 얻었습니다. 각각 Rust 내부 처리, TypeScript 이벤트 큐, gRPC 재연결의 개선 폭을 보여줍니다. 구현 세부 사항과 테스트 조건은 관련 링크에 있는 PR #129에 공개되어 있습니다.
Alpenglow 지원을 유지하고 클라이언트 업데이트
Alpenglow 지원은 v3.0.0에서 도입되었습니다. v4.0.0에서도 블록 헤더, 푸터, 부모 블록의 업데이트를 나타내는 블록 마커와 트랜잭션을 포함하는 entries를 구분하는 구조를 유지합니다. 애플리케이션은 블록 구조에 관한 정보와 처리해야 할 entries를 분리해서 다룰 수 있습니다.
v4.0.0은 클라이언트를 Agave 4.4.1과 Yellowstone gRPC 17.x로 업데이트했습니다. 재연결 시
Disconnected 이벤트를 통해 부분적으로 수신된 데이터를 식별하는 정보와 수신 재개 위치를 알릴 수 있습니다. 애플리케이션은 이 정보를 바탕으로 중복 재전송된 데이터와 일부만 수신된 데이터를 처리하는 로직을 직접 구현할 수 있습니다.v3에서 v4로 마이그레이션할 때 Geyser의 protobuf 정의는 유지되며, 재연결 이벤트와 Rust에서 사용하는 Solana message 및 transaction 타입이 업데이트됩니다. 공개된 마이그레이션 가이드에서 이벤트 핸들러와 의존성 버전의 변경 사항을 확인할 수 있습니다.
UDP는 Rust, gRPC는 Rust와 TypeScript로 이용
공개된 Rust 패키지 solana-stream-sdk와 TypeScript 패키지 @validators-dao/solana-stream-sdk는 모두 v4.0.0을 제공합니다. 연결 방식별 지원 언어는 다음과 같습니다.
| 연결 방식 | 지원 언어 |
|---|---|
| Shreds UDP | Rust |
| Geyser gRPC | Rust와 TypeScript |
| Shreds gRPC | Rust와 TypeScript |
UDP로 Shreds를 수신할 때는 Rust 클라이언트를 사용합니다. Rust UDP 예제와 스타터는 공개된 SDK v4.0.0을 사용하며, 데이터 수신, Shreds로부터의 데이터 재구성, 모니터링할 프로그램의 명령어 감지를 시험할 수 있습니다. 모니터링 대상과 감지 후 처리 로직을 변경해, 자체 애플리케이션을 구현하는 출발점으로 활용할 수 있습니다.
TypeScript로 개발할 때는 Geyser gRPC 또는 Shreds gRPC를 사용할 수 있습니다. 이번 릴리스의 이벤트 큐 개선은 Geyser gRPC 예제와 스타터에 포함되어 있습니다. 사용하는 언어와 데이터 전달 방식에 맞는 공개 구현을 선택하면 됩니다.
Shreds UDP Forwarding Premium의 데이터 전달 활용
ERPC Shreds UDP Forwarding Premium은 각 리전 내 여러 노드를 메시로 연결하고, 각 Shred에 대해 이 메시가 가장 먼저 수신한 복사본을 전달합니다. 전달 경로에서의 도착 시간과 도착 후 SDK 내부의 재구성 시간은 모두 수신 데이터를 사용할 수 있게 되는 시점에 영향을 줍니다. Rust UDP 수신 처리 개선은 Premium이 전달한 데이터를 처리하는 수신 측에 적용할 수 있습니다.
2026년 10월 30일 프랑크푸르트에서 진행한 비교에서는 같은 머신과 같은 시계를 사용해 Standard와 Premium의 데이터를 120초 동안 동시에 캡처했습니다. pcap에서 내용이 동일한 UDP 페이로드를 서로 매칭했습니다. 이렇게 매칭된 집합에서는 Premium이 98%의 경우 먼저 도착했으며, 도착 시간 차이의 중앙값은 1.78 ms였습니다. Standard에서 관측된 페이로드 중 93.9%는 Premium에서도 관측되었습니다.

Premium 도표는 전달 경로 간 도착 시간 차이를 보여주며, SDK 도표는 수신 측 내부 처리와 연결 복구를 보여줍니다. 실제 애플리케이션에서 패킷 도착 시각과 관련 명령어를 감지한 시각을 함께 기록하면, 전달 단계에서 확보한 시간상의 이점이 처리 결과에 얼마나 이어지는지 확인할 수 있습니다.
시간제 과금과 예제로 자체 환경에서 비교
Shreds UDP Forwarding Premium은 시간당 €1.39의 시간제 과금으로 이용할 수 있습니다. 대시보드에서 서비스를 시작하고 Rust UDP 스타터로 수신을 확인할 수 있습니다. 리전, 수신 서버, 애플리케이션 워크로드를 동일하게 유지하면 도착 시간 차이와 수신 후 처리 시간을 각각 평가할 수 있습니다.
먼저 대시보드에 공인 IPv4 주소와 UDP 포트를 등록하고, 표시된 송신원에서 들어오는 트래픽을 허용합니다. Rust UDP 스타터로 패킷 수신과 데이터 재구성을 확인한 뒤, 모니터링할 프로그램과 애플리케이션의 실제 처리 로직을 평가에 포함하세요. 예제와 데이터 전달 서비스를 함께 사용해 자체 환경에서 수신부터 감지까지 걸리는 시간을 측정할 수 있습니다.
관련 링크
- Rust UDP 예제와 스타터: https://github.com/ValidatorsDAO/solana-stream/tree/main/temp-release/shreds-udp-rs
- Solana Stream SDK v4 마이그레이션 가이드: https://github.com/ValidatorsDAO/solana-stream/blob/main/docs/migration-v4.md
- SDK 성능 개선과 테스트 기록: https://github.com/ValidatorsDAO/solana-stream/pull/129
- Shreds UDP Forwarding 문서: https://erpc.global/ko/doc/shredstream/udp-forwarding/
- Shreds UDP Forwarding Premium 이용: https://dashboard.erpc.global/ko/user/shreds?plan=udp
- ERPC 요금: https://erpc.global/ko/price/









