RAIDEN
Vortex · Geyser gRPC
Geyser gRPC for Solana, straight from the validator edge.
Vortex serves a Geyser-compatible account and transaction stream in the Yellowstone wire format. If your stack already runs a Yellowstone or Dragon’s Mouth client, moving over is a change of endpoint, not a rewrite.
FRA · AMS · LND · NYC
$650 / month / region · authorised by source IP
01 / Drop-in
Keep your client. Change the endpoint.
Vortex speaks geyser.proto — the same Subscribe stream your Yellowstone client already opens, with the same request and the same updates coming back. Changing provider is one line.
−http://your-provider.example:10000
+http://fra.vortex.raiden.wtf:10001
Everything else — your filters, your decoders, your reconnect logic — stays where it is.
02 / What it serves
Accounts, transactions, slots.
Vortex streams at the account and transaction level. Block-level and entry-level subscriptions are not part of it, and you should read that here rather than discover it on your first connection.
✓accounts
✓transactions
✓slots
✕blocks
✕blocks_meta
✕entry
Many Geyser clients subscribe to every method by default. Remove those three from your SubscribeRequest before connecting.
03 / Regions
Four edges. One protocol.
Each region is a separate subscription, served from Raiden’s own machines next to the validators.
FRA Frankfurt
fra.vortex.raiden.wtf:10001
AMS Amsterdam
ams.vortex.raiden.wtf:10001
LND London
lnd.vortex.raiden.wtf:10001
NYC New York
nyc.vortex.raiden.wtf:10001
Access is authorised by source IP: the address you register in the dashboard is whitelisted on that region’s gateway, so connections from it are accepted without a per-request token. One subscription is one IP, and the address can be changed from the dashboard with a short cooldown between changes.
04 / Limits and price
What the standard plan carries.
20Concurrent connections
35Named filters per connection
5,000Account filters per named filter
Filtering happens server-side, so a filter that excludes traffic also saves you the bandwidth.
$650Per month, per region, per registered IP · paid in USDC on Solana
05 / Connect
Point it at a region and subscribe.
The same call you make today against any Yellowstone endpoint — in the three clients the docs carry. The filter reference and the full examples are there too.
// yellowstone-grpc-client — the client you already run
let mut client = GeyserGrpcClient::build_from_shared(
"http://fra.vortex.raiden.wtf:10001")?
.connect()
.await?;
let mut transactions = HashMap::new();
transactions.insert("pumpfun".to_owned(), SubscribeRequestFilterTransactions {
vote: Some(false),
failed: Some(false),
account_include: vec!["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P".to_owned()],
..Default::default()
});
// blocks, blocks_meta and entry are deliberately absent:
// Vortex serves accounts, transactions and slots.
let request = SubscribeRequest {
transactions,
commitment: Some(CommitmentLevel::Processed as i32),
..Default::default()
};
let (mut sink, mut stream) = client.subscribe().await?;
sink.send(request).await?;// @triton-one/yellowstone-grpc
import Client, { CommitmentLevel } from '@triton-one/yellowstone-grpc';
const client = new Client('http://fra.vortex.raiden.wtf:10001', undefined, undefined);
const stream = await client.subscribe();
stream.on('data', (update) => {
if (update.transaction) {
console.log(\`slot \${update.transaction.slot}\`);
}
});
stream.write({
accounts: {},
slots: {},
transactions: {
pumpfun: {
vote: false,
failed: false,
accountInclude: ['6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P'],
},
},
// blocks, blocksMeta and entry omitted: not served by Vortex
accountsDataSlice: [],
commitment: CommitmentLevel.PROCESSED,
});# grpcio + protobuf, from bindings generated out of geyser.proto
import grpc
from geyser_pb2 import SubscribeRequest, SubscribeRequestFilterTransactions
from geyser_pb2_grpc import GeyserStub
channel = grpc.insecure_channel("fra.vortex.raiden.wtf:10001")
stub = GeyserStub(channel)
def make_requests():
yield SubscribeRequest(
transactions={
"pumpfun": SubscribeRequestFilterTransactions(
vote=False,
failed=False,
account_include=["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"],
),
},
# blocks, blocks_meta and entry omitted: not served by Vortex
)
for update in stub.Subscribe(make_requests()):
if update.HasField("transaction"):
print(f"slot {update.transaction.slot}")06 / Questions
Before you connect.
Does Vortex work with my existing Yellowstone client?
Yes. Vortex speaks geyser.proto — the same protocol Yellowstone and Dragon’s Mouth clients use. If you already run one of those, moving over is a change of endpoint, not a rewrite.
Are blocks and entries available?
No. Vortex serves accounts, transactions and slots. blocks, blocks_meta and entry are not served, and many clients subscribe to every method by default, so remove those three from your SubscribeRequest before connecting.
How is access authorised?
By source IP. The address you register in the dashboard is whitelisted on that region’s gateway, so connections from it are accepted without a per-request token. One subscription is one IP; the address can be changed from the dashboard, with a short cooldown between changes.
Which regions are available?
Frankfurt, Amsterdam, London and New York. Each region is a separate subscription.
What does it cost?
$650 per month per region, paid in USDC on Solana. A free trial is available on request, and so is a custom plan above the standard limits.