Skip to main content

Protocol Specification

Solayer Chain uses gRPC to communicate for synchronization purposes, including streaming the latest slot information. gRPC is chosen over QUIC because it is better supported by SDN switches, which the sequencer uses for packet preprocessing, forwarding, and load balancing. In addition to gRPC streaming, Solayer Chain also uses HTTP to serve snapshots that allows for verifier and RPC nodes to sync. The HTTP service is expected to be exposed to public users, with CDN and PCDN enabled.

Protobuf Definition

The protobuf definition below specifies the gRPC service interface and message formats used for Solayer Chain synchronization. The protocol uses bincode+zstd for transaction data to optimize network bandwidth and includes detailed metadata to support both streaming and repair operations. Key methods and streaming endpoints:
  • GetLatestSlot: Retrieves current slot information for synchronization (equivalent to Solana RPC getSlot with confirmed finality).
  • StartReceivingSlots: Streams slot data from the leader node, including blockhash, parent blockhash, timestamp, and shred IDs (equivalent to Solana RPC getSlot with confirmed finality).
  • SubscribeTransactionBatches: Streams real-time transaction batch notifications containing slot number, timestamp, and all transactions with state changes (equivalent to Solana RPC getSlot with all transactions at processed finality).

HTTP endpoints

EndpointCachablePurposeResponse
GET /solayer/snapshotsNoList available snapshotsJSON array of snapshot file names
GET /solayer/files/<filename>YesDownload snapshotzstd compressed snapshot