solana library implements the Solana high-performance blockchain architecture.
It includes a full Rust implementation of the architecture (see
Validator) as well as hooks to GPU implementations of its most
paralellizable components (i.e. SigVerify). It also includes
command-line tools to spin up validators and a Rust library
banking_stage processes Transaction messages. It is intended to be used
to contruct a software pipeline. The stage uses all available CPU cores and
can do its processing in parallel with signature verification on the GPU.
A stage to broadcast data from a leader node to validators
this service receives instruction ExecuteTimings from replay_stage, update cost_model which is shared with banking_stage to optimize packing transactions into block; it also triggers persisting cost table to blockstore.
fetch_stage batches input from a UDP socket and sends it to a channel.
gen_keys module makes lots of keypairs
ledger_cleanup_service drops older ledger data to limit disk space usage
ledger_metric_report_service periodically reports ledger store metrics.
Quality of service for block producer. Provides logic and functions to allow a Leader to prioritize how transactions are included in blocks, and optimize those blocks.
repair_service module implements the tools necessary to generate a thread which
regularly finds missing shreds in the ledger and sends repair requests for those shreds
replay_stage replays transactions broadcast by the leader.
retransmit_stage retransmits shreds between validators
shred_fetch_stage pulls shreds from UDP sockets and sends it to a channel.
sigverify module provides digital signature verification functions.
By default, signatures are verified in parallel using all available CPU
cores. When perf-libs are available signature verification is offloaded
to the GPU.
sigverify_stage implements the signature verification stage of the TPU. It
receives a list of lists of packets and outputs the same list, but tags each
top-level list with a list of booleans, telling the next stage whether the
signature in that packet is valid. It assumes each packet contains one
transaction. All processing is done on the CPU by default and on a GPU
if perf-libs are available
tpu module implements the Transaction Processing Unit, a
multi-stage transaction processing pipeline in software.
tvu module implements the Transaction Validation Unit, a multi-stage transaction
validation pipeline in software.
validator module hosts all the validator microservices.
window_service handles the data plane incoming shreds, storing them in
blockstore and retransmitting where required