syntax = "proto3";
package infinisvm.sync;
message StartReceivingSlotsRequest {
}
message SlotDataResponse {
uint64 slot = 1;
bytes blockhash = 2;
bytes parent_blockhash = 3;
uint64 timestamp = 4;
repeated uint64 job_ids = 5;
}
message GetLatestSlotRequest {
}
message GetLatestSlotResponse {
uint64 slot = 1;
bytes hash = 2;
bytes parent_blockhash = 3;
uint64 timestamp = 4;
repeated uint64 shred_ids = 5;
}
// Transaction batch notification messages
message TransactionBatchRequest {
}
message TransactionInfo {
bytes signature = 1;
uint64 slot = 2;
uint64 timestamp = 3;
bool success = 4;
optional string error_message = 5;
bytes accounts_involved = 6; // Compressed account keys
uint64 fee = 7;
uint32 compute_units_consumed = 8;
}
message CommitBatchNotification {
uint64 slot = 1;
uint64 timestamp = 2;
uint32 batch_size = 3;
bytes compressed_transactions = 4; // zstd compressed serialized transactions
uint64 compression_ratio = 5; // original_size / compressed_size * 100
}
service InfiniSVMService {
rpc StartReceivingSlots(StartReceivingSlotsRequest) returns (stream SlotDataResponse);
rpc GetLatestSlot(GetLatestSlotRequest) returns (GetLatestSlotResponse);
rpc SubscribeTransactionBatches(TransactionBatchRequest) returns (stream CommitBatchNotification);
}