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§
- accounts_
hash_ verifier - Service to calculate accounts hashes
- admin_
rpc_ post_ init - banking_
stage - 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. - banking_
trace - cluster_
info_ vote_ listener - cluster_
slots_ service - commitment_
service - completed_
data_ sets_ service CompletedDataSetsService
is a hub, that runs different operations when a “completed data set”, also known as aVec<Entry>
, is received by the validator.- consensus
- cost_
update_ service - this service asynchronously reports CostTracker stats
- drop_
bank_ service - fetch_
stage - The
fetch_stage
batches input from a UDP socket and sends it to a channel. - forwarding_
stage ForwardingStage
is a stage parallel toBankingStage
that forwards packets to a node that is or will be leader soon.- gen_
keys - The
gen_keys
module makes lots of keypairs - next_
leader - optimistic_
confirmation_ verifier - repair
- replay_
stage - The
replay_stage
replays transactions broadcast by the leader. - sample_
performance_ service - sigverify
- The
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 - 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 available - snapshot_
packager_ service - staked_
nodes_ updater_ service - stats_
reporter_ service - system_
monitor_ service - tpu
- The
tpu
module implements the Transaction Processing Unit, a multi-stage transaction processing pipeline in software. - tvu
- The
tvu
module implements the Transaction Validation Unit, a multi-stage transaction validation pipeline in software. - unfrozen_
gossip_ verified_ vote_ hashes - validator
- The
validator
module hosts all the validator microservices. - voting_
service - warm_
quic_ cache_ service - window_
service window_service
handles the data plane incoming shreds, storing them in blockstore and retransmitting where required