Crate solana_core[][src]

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
banking_stage

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.

bigtable_upload_service
broadcast_stage

A stage to broadcast data from a leader node to validators

cache_block_time_service
cluster_info

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.

cluster_info_vote_listener
cluster_slots
cluster_slots_service
commitment_service
completed_data_sets_service
consensus
contact_info
crds

This module implements Cluster Replicated Data Store for asynchronous updates in a distributed network.

crds_gossip

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_error
crds_gossip_pull

Crds Gossip Pull overlay This module implements the anti-entropy protocol for the network.

crds_gossip_push

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

crds_shards
crds_value
data_budget
duplicate_shred
epoch_slots
evm_rpc_impl
evm_services
fetch_stage

The fetch_stage batches input from a UDP socket and sends it to a channel.

fork_choice
gen_keys

The gen_keys module makes lots of keypairs

gossip_service

The gossip_service module implements the network control plane.

heaviest_subtree_fork_choice
ledger_cleanup_service

The ledger_cleanup_service drops older ledger data to limit disk space usage

max_slots
non_circulating_supply
optimistic_confirmation_verifier
optimistically_confirmed_bank_tracker

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

packet_hasher
ping_pong
poh_recorder

The poh_recorder module provides an object for synchronizing with Proof of History. It synchronizes PoH, bank’s register_tick and the ledger

poh_service

The poh_service module implements a service that records the passing of “ticks”, a measure of time in the PoH stream

progress_map
repair_response
repair_service

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

repair_weight
repair_weighted_traversal
replay_stage

The replay_stage replays transactions broadcast by the leader.

retransmit_stage

The retransmit_stage retransmits shreds between validators

rewards_recorder_service
rpc

The rpc module implements the Solana RPC interface.

rpc_health
rpc_pubsub

The pubsub module implements a threaded subscription service on client RPC request

rpc_pubsub_service

The pubsub module implements a threaded subscription service on client RPC request

rpc_service

The rpc_service module implements the Solana JSON RPC service.

rpc_subscriptions

The pubsub module implements a threaded subscription service on client RPC request

sample_performance_service
send_transaction_service
serve_repair
serve_repair_service
shred_fetch_stage

The shred_fetch_stage pulls shreds from UDP sockets and sends it to a channel.

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_shreds
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
test_validator
tpu

The tpu module implements the Transaction Processing Unit, a multi-stage transaction processing pipeline in software.

transaction_status_service
tree_diff
tvu

The tvu module implements the Transaction Validation Unit, a multi-stage transaction validation pipeline in software.

validator

The validator module hosts all the validator microservices.

verified_vote_packets
vote_stake_tracker
weighted_shuffle

The weighted_shuffle module provides an iterator over shuffled weights.

window_service

window_service handles the data plane incoming shreds, storing them in blockstore and retransmitting where required

Macros

socketaddr
socketaddr_any