> For the complete documentation index, see [llms.txt](https://docs.triton.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.triton.one/solana/rpc-methods/real-time-streaming/yellowstone-grpc/deshred.md).

# SubscribeDeshred

Stream transactions rebuilt from shreds over Dragon's Mouth gRPC SubscribeDeshred, before execution, filtered by vote flag and account keys.

## Filter

`SubscribeRequestFilterDeshredTransactions`, keyed by a filter label:

**`vote`** · optional bool: `true` delivers only vote transactions, `false` only non-vote transactions. Omit it to get both. Alpenglow blocks have none.

**`account_include`** · repeated string: Match transactions touching any of these accounts (static or ALT-loaded).

**`account_exclude`** · repeated string: Exclude transactions touching any of these accounts.

**`account_required`** · repeated string: Only match transactions touching all of these accounts.

**`include_update_parent`** · optional bool: `true` also sends `deshred_update_parent` updates. Omitted or `false` sends transactions only.

Alongside `deshred_transactions`, a `SubscribeDeshredRequest` also takes `slots` (the same map as [Slot updates](/solana/rpc-methods/real-time-streaming/yellowstone-grpc/slots.md); it adds slot status updates to this stream. This stream has no commitment level, so leave `filter_by_commitment` unset: `true` suppresses every slot update) and `ping` (`SubscribeRequestPing { id }`, answered with a `pong`).

## Subscribe request

{% tabs %}
{% tab title="grpcurl" %}

```bash
# <proto-dir>: a folder holding geyser.proto and solana-storage.proto (the server has no gRPC reflection)
grpcurl \
  -proto geyser.proto -import-path <proto-dir> \
  -d '{"deshred_transactions": {"client": {"account_include": ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"]}}}' \
  -H "x-token: <your-token>" \
  <your-endpoint>.mainnet.rpcpool.com:443 \
  geyser.Geyser/SubscribeDeshred
```

{% endtab %}
{% endtabs %}

## Update

Each arrives as a `SubscribeUpdateDeshred` with `deshred_transaction` set:

**`transaction`** · SubscribeUpdateDeshredTransactionInfo: `signature`, `is_vote`, the `transaction`, resolved `loaded_writable_addresses` / `loaded_readonly_addresses`, and the completed-data-set shred indices.

**`slot`** · uint64: Slot the transaction belongs to.

With `include_update_parent`, the stream also carries `deshred_update_parent` updates (`SubscribeUpdateDeshredUpdateParent`: `slot`, `update_parent_fec_set_index`, `parent_slot`, `parent_block_id`). Each one comes before the transactions of the data set that starts at that FEC-set boundary. These updates occur only where Alpenglow fast leader handover is active, when a leader switches to a different parent.

The same stream also carries `slot` updates when you set `slots`, the server's `ping` every 10 seconds, and `pong` replies. Each message has a `created_at` timestamp.

***

<i class="fa-life-ring">:life-ring:</i> Contact support by clicking the chat icon in your [customer dashboard](https://customers.triton.one)\ <i class="fa-briefcase">:briefcase:</i> Sales questions? [Contact us](https://triton.one/contact)\ <i class="fa-sparkles">:sparkles:</i> AI agent? Read [llms.txt](https://docs.triton.one/llms.txt)\ <i class="fa-rss">:rss:</i> Follow updates: [Blog](https://blog.triton.one) · [X](https://x.com/triton_one) · [YouTube](https://www.youtube.com/@triton_one_ltd) · [Telegram](https://t.me/tritonone) · [GitHub](https://github.com/rpcpool)
