Crate solana_core[−][src]
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 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
The cluster_info
module defines a data structure that is shared by all the nodes in the network over
a gossip control plane. The goal is to share small bits of off-chain information and detect and
repair partitions.
This module implements Cluster Replicated Data Store for asynchronous updates in a distributed network.
Crds Gossip This module ties together Crds and the push and pull gossip overlays. The interface is designed to run with a simulator or over a UDP network connection with messages up to a packet::PACKET_DATA_SIZE size.
Crds Gossip Pull overlay This module implements the anti-entropy protocol for the network.
Crds Gossip Push overlay This module is used to propagate recently created CrdsValues across the network Eager push strategy is based on Plumtree http://asc.di.fct.unl.pt/~jleitao/pdf/srds07-leitao.pdf
The fetch_stage
batches input from a UDP socket and sends it to a channel.
The gen_keys
module makes lots of keypairs
The gossip_service
module implements the network control plane.
The ledger_cleanup_service
drops older ledger data to limit disk space usage
The optimistically_confirmed_bank_tracker
module implements a threaded service to track the
most recent optimistically confirmed bank for use in rpc services, and triggers gossip
subscription notifications
The poh_recorder
module provides an object for synchronizing with Proof of History.
It synchronizes PoH, bank’s register_tick and the ledger
The poh_service
module implements a service that records the passing of
“ticks”, a measure of time in the PoH stream
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 shreds
The replay_stage
replays transactions broadcast by the leader.
The retransmit_stage
retransmits shreds between validators
The rpc
module implements the Solana RPC interface.
The pubsub
module implements a threaded subscription service on client RPC request
The pubsub
module implements a threaded subscription service on client RPC request
The rpc_service
module implements the Solana JSON RPC service.
The pubsub
module implements a threaded subscription service on client RPC request
The shred_fetch_stage
pulls shreds from UDP sockets and sends it to a channel.
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.
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
The 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.
The weighted_shuffle
module provides an iterator over shuffled weights.
window_service
handles the data plane incoming shreds, storing them in
blockstore and retransmitting where required