syntax = "proto3"; package solana.storage.ConfirmedBlock; message ConfirmedBlock { string previous_blockhash = 1; string blockhash = 2; uint64 parent_slot = 3; repeated ConfirmedTransaction transactions = 4; repeated Reward rewards = 5; UnixTimestamp block_time = 6; BlockHeight block_height = 7; } message ConfirmedTransaction { Transaction transaction = 1; TransactionStatusMeta meta = 2; } message Transaction { repeated bytes signatures = 1; Message message = 2; } message Message { MessageHeader header = 1; repeated bytes account_keys = 2; bytes recent_blockhash = 3; repeated CompiledInstruction instructions = 4; } message MessageHeader { uint32 num_required_signatures = 1; uint32 num_readonly_signed_accounts = 2; uint32 num_readonly_unsigned_accounts = 3; } message TransactionStatusMeta { TransactionError err = 1; uint64 fee = 2; repeated uint64 pre_balances = 3; repeated uint64 post_balances = 4; repeated InnerInstructions inner_instructions = 5; repeated string log_messages = 6; repeated TokenBalance pre_token_balances = 7; repeated TokenBalance post_token_balances = 8; repeated Reward rewards = 9; } message TransactionError { bytes err = 1; } message InnerInstructions { uint32 index = 1; repeated CompiledInstruction instructions = 2; } message CompiledInstruction { uint32 program_id_index = 1; bytes accounts = 2; bytes data = 3; } message TokenBalance { uint32 account_index = 1; string mint = 2; UiTokenAmount ui_token_amount = 3; } message UiTokenAmount { double ui_amount = 1; uint32 decimals = 2; string amount = 3; string ui_amount_string = 4; } enum RewardType { Unspecified = 0; Fee = 1; Rent = 2; Staking = 3; Voting = 4; } message Reward { string pubkey = 1; int64 lamports = 2; uint64 post_balance = 3; RewardType reward_type = 4; } message Rewards { repeated Reward rewards = 1; } message UnixTimestamp { int64 timestamp = 1; } message BlockHeight { uint64 block_height = 1; }