syntax = "proto3"; import public "solana-storage-v1.10.40.proto"; package geyser; service Geyser { rpc Subscribe(stream SubscribeRequest) returns (stream SubscribeUpdate) {} } message SubscribeRequest { map accounts = 1; map slots = 2; map transactions = 3; map blocks = 4; } message SubscribeRequestFilterAccounts { repeated string account = 2; repeated string owner = 3; } message SubscribeRequestFilterSlots {} message SubscribeRequestFilterTransactions { optional bool vote = 1; optional bool failed = 2; repeated string account_include = 3; repeated string account_exclude = 4; } message SubscribeRequestFilterBlocks {} message SubscribeUpdate { repeated string filters = 1; oneof update_oneof { SubscribeUpdateAccount account = 2; SubscribeUpdateSlot slot = 3; SubscribeUpdateTransaction transaction = 4; SubscribeUpdateBlock block = 5; } } message SubscribeUpdateAccount { SubscribeUpdateAccountInfo account = 1; uint64 slot = 2; bool is_startup = 3; } message SubscribeUpdateAccountInfo { bytes pubkey = 1; uint64 lamports = 2; bytes owner = 3; bool executable = 4; uint64 rent_epoch = 5; bytes data = 6; uint64 write_version = 7; // bytes txn_signature = 8; } message SubscribeUpdateSlot { uint64 slot = 1; optional uint64 parent = 2; SubscribeUpdateSlotStatus status = 3; } enum SubscribeUpdateSlotStatus { PROCESSED = 0; CONFIRMED = 1; FINALIZED = 2; } message SubscribeUpdateTransaction { SubscribeUpdateTransactionInfo transaction = 1; uint64 slot = 2; } message SubscribeUpdateTransactionInfo { bytes signature = 1; bool is_vote = 2; solana.storage.ConfirmedBlock.Transaction transaction = 3; solana.storage.ConfirmedBlock.TransactionStatusMeta meta = 4; // uint64 index = 5; } message SubscribeUpdateBlock { uint64 slot = 1; string blockhash = 2; solana.storage.ConfirmedBlock.Rewards rewards = 3; solana.storage.ConfirmedBlock.UnixTimestamp block_time = 4; solana.storage.ConfirmedBlock.BlockHeight block_height = 5; }