V4.1 transition next#801
Merged
Merged
Conversation
Introduces `SubscribeDeshred`, a new RPC endpoint for subscribing to deshred transactions. These are transactions received when entries are formed from shreds, before execution occurs. At this stage, no `TransactionStatusMeta` is available. Address lookup tables are resolved during deshred, making both static and dynamically loaded account keys available for filtering (`account_include`, `account_exclude`, `account_required`). The new endpoint uses a separate `SubscribeUpdateDeshred` response type with its own `FilteredUpdateDeshred` server-side encoding, keeping deshred streams fully independent from the main `Subscribe` RPC. On the plugin side, implements the `notify_deshred_transaction` hook from the geyser plugin interface and adds configuration to enable these notifications. Includes comprehensive filter tests for vote filtering, account include/exclude with static and loaded (ALT) addresses, account required, and pong generation.
lvboudre
requested review from
Ozodimgba,
WilfredAlmeida,
Copilot and
leafaar
and removed request for
Ozodimgba
July 2, 2026 15:36
leafaar
reviewed
Jul 2, 2026
leafaar
reviewed
Jul 2, 2026
leafaar
reviewed
Jul 2, 2026
There was a problem hiding this comment.
Pull request overview
Updates the Yellowstone gRPC stack for the Solana/Agave 4.1 transition, adding a dedicated “deshred” (pre-execution) subscription stream and extending protobuf payloads to support new transaction/message features.
Changes:
- Add a separate
SubscribeDeshredserver stream with its own filter path, message types, and broadcast channel (including metrics + tests). - Extend protobuf schemas/encoders for Transaction V1 message config (SIMD-0385) and new reward type (
DeactivatedStake). - Migrate serialization and dependencies for the 4.1 transition (rand 0.10 API updates, move tx error (de)serialization to
wincode, toolchain bump).
Reviewed changes
Copilot reviewed 24 out of 25 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| yellowstone-grpc-proto/src/cuckoo/filter.rs | Update tests for rand 0.10 generation APIs. |
| yellowstone-grpc-proto/proto/solana-storage.proto | Add TransactionConfig to messages and extend RewardType. |
| yellowstone-grpc-geyser/src/plugin/message.rs | Introduce deshred transaction message structs and Message::DeshredTransaction. |
| yellowstone-grpc-geyser/src/plugin/filter/mod.rs | Export DeshredFilter alongside existing filter types. |
| yellowstone-grpc-geyser/src/plugin/filter/message.rs | Add server-side encoded FilteredUpdateDeshred* message types. |
| yellowstone-grpc-geyser/src/plugin/filter/limits.rs | Add configurable limits for deshred transaction filters. |
| yellowstone-grpc-geyser/src/plugin/filter/filter.rs | Implement DeshredFilter and deshred transaction filtering logic + tests. |
| yellowstone-grpc-geyser/src/plugin/entry.rs | Wire a dedicated deshred broadcast channel into the plugin and enable notifications. |
| yellowstone-grpc-geyser/src/plugin/convert_to.rs | Encode V1 message config; switch tx error serialization to wincode; map new reward type. |
| yellowstone-grpc-geyser/src/plugin/convert_from.rs | Switch tx error deserialization to wincode; map new reward type. |
| yellowstone-grpc-geyser/src/metrics.rs | Add deshred_queue_size gauge helpers. |
| yellowstone-grpc-geyser/src/grpc.rs | Implement subscribe_deshred end-to-end (sessions, filter updates, stream loop, tests). |
| yellowstone-grpc-geyser/src/block_reconstruction.rs | Minor cleanup in replay event handling block. |
| yellowstone-grpc-geyser/src/auth.rs | Minor type simplification for separator constant. |
| yellowstone-grpc-geyser/Cargo.toml | Version bump and dependency/feature updates for 4.1 + wincode. |
| yellowstone-grpc-geyser/build.rs | Route SubscribeDeshred output through server-side encoding type. |
| yellowstone-grpc-client-nodejs/napi/src/lib.rs | Add dead-code allowances for N-API stream fields/methods. |
| yellowstone-grpc-client-nodejs/napi/src/encoding.rs | Remove prost 0.11 usage; standardize decoding on prost 0.14. |
| yellowstone-grpc-client-nodejs/napi/Cargo.toml | Drop prost 0.11 dependency and simplify Solana error deps. |
| rust-toolchain.toml | Bump Rust toolchain version. |
| examples/rust/src/bin/client.rs | Improve deshred CLI progress accounting for slot updates. |
| examples/rust/Cargo.toml | Remove bincode dependency (no longer used). |
| CHANGELOG.md | Document deshred support / Triton extension patch notes. |
| Cargo.toml | Update workspace dependency versions for Solana/Agave 4.1 transition. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
leafaar
approved these changes
Jul 2, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.