Crate solana_core
source ·Expand description
The 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
Modules
The
banking_stage
processes Transaction messages. It is intended to be used
to construct 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 asynchronously reports CostTracker stats
The
fetch_stage
batches input from a UDP socket and sends it to a channel.The
gen_keys
module makes lots of keypairsThe
ledger_cleanup_service
drops older ledger data to limit disk space usage.
The service works by counting the number of live data shreds in the ledger; this
can be done quickly and should have a fairly stable correlation to actual bytes.
Once the shred count (and thus roughly the byte count) reaches a threshold,
the services begins removing data in FIFO order.The
ledger_metric_report_service
periodically reports ledger store metrics.Provides an iterator interface that create non-conflicting batches of elements to process.
Deserializes packets from sigverify stage. Owned by banking stage.
PohTimingReportService module
A poh_timing_reporter module implement poh timing point and timing reporter
structs.
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.
The
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 shredsThe
replay_stage
replays transactions broadcast by the leader.The
retransmit_stage
retransmits shreds between validatorsThe
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.The
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 availableThe
tpu
module implements the Transaction Processing Unit, a
multi-stage transaction processing pipeline in software.The
tvu
module implements the Transaction Validation Unit, a multi-stage transaction
validation pipeline in software.The
validator
module hosts all the validator microservices.window_service
handles the data plane incoming shreds, storing them in
blockstore and retransmitting where required