VPS & VDS free for 3 days - $0 today. CLAIM TRIAL>

OpenInfra.shopeninfra.sh

Eventstream

Consume decoded program-event topics through the OpenInfra server-streaming gRPC service.

  1. Download the proto

    curl -fsS https://openinfra.sh/protos/stream_service.proto -o stream_service.proto
  2. Test a topic

    grpcurl \  -proto stream_service.proto \  -H "x-api-key: $OPENINFRA_API_KEY" \  -d '{"topic":"solana.pump_swaps.buy_event","format":"JSON"}' \  events.sol.openinfra.sh:443 nln.stream.v1.StreamService/Subscribe
  3. Build a Node.js consumer

    npm install @grpc/grpc-js @grpc/proto-loader
    import grpc from "@grpc/grpc-js";import protoLoader from "@grpc/proto-loader"; const definition = protoLoader.loadSync("stream_service.proto", {  longs: String,  enums: String,  defaults: true,  oneofs: true,});const service = grpc.loadPackageDefinition(definition).nln.stream.v1;const client = new service.StreamService(  "events.sol.openinfra.sh:443",  grpc.credentials.createSsl(),); const metadata = new grpc.Metadata();metadata.set("x-api-key", process.env.OPENINFRA_API_KEY!); const stream = client.Subscribe({  topic: "solana.pump_swaps.buy_event",  format: "JSON",}, metadata); stream.on("data", (message) => {  const payload = Buffer.isBuffer(message.payload)    ? message.payload    : Buffer.from(message.payload, "base64");  console.log(JSON.parse(payload.toString("utf8")));});stream.on("error", console.error);

Payload

The verified solana.pump_swaps.buy_event topic emits decoded JSON with accounts and args. Treat each topic as its own schema.