Crate solana_sdk
source ·Expand description
The Solana host and client SDK.
This is the base library for all off-chain programs that interact with
Solana or otherwise operate on Solana data structures. On-chain programs
instead use the solana-program
crate, the modules of which are
re-exported by this crate, like the relationship between the Rust
core
and std
crates. As much of the functionality of this crate is
provided by solana-program
, see that crate’s documentation for an
overview.
Many of the modules in this crate are primarily of use to the Solana runtime
itself. Additional crates provide capabilities built on solana-sdk
, and
many programs will need to link to those crates as well, particularly for
clients communicating with Solana nodes over RPC.
Such crates include:
solana-client
- For interacting with a Solana node via the JSON-RPC API.solana-cli-config
- Loading and saving the Solana CLI configuration file.solana-clap-utils
- Routines for setting up the CLI usingclap
, as used by the Solana CLI. Includes functions for loading all types of signers supported by the CLI.
Re-exports
Modules
- The Solana
Account
type. - Account information.
- Useful extras for
Account
state. - The definition of address lookup table accounts.
- Hashing with the blake3 hash function.
- Utilities for the borsh serialization format.
- Utilities for the borsh serialization format, version 0.9.
- Utilities for the borsh serialization format, version 0.10.
- The latest BPF loader native program.
- The original and now deprecated Solana BPF loader.
- An upgradeable BPF loader native program.
- Defines traits for blocking (synchronous) and non-blocking (asynchronous) communication with a Solana server as well a a trait that encompasses both.
- Information about the network’s clock, ticks, slots, etc.
- Definitions of commitment levels.
- The compute budget native program.
- Debug-formatting of account data.
- Converting custom error codes to enums.
- BIP-44 derivation paths.
- Serde helpers.
- Instructions for the ed25519 native program.
- The Rust-based BPF program entrypoint supported by the latest BPF loader.
- The Rust-based BPF program entrypoint supported by the original BPF loader.
- Information about the current epoch.
- Configuration for epochs and slots.
- Used by validators to run events on exit.
- Methods for working with
Feature
accounts. - Collection of all runtime features.
- Fee structures.
- Calculation of transaction fees.
- The chain’s genesis config.
- The list of slot boundaries at which a hard fork should occur.
- A designated address for burning lamports.
- configuration for network inflation
- Types for directing the execution of Solana programs.
- Hashing with the keccak (SHA-3) hash function.
- Defines the
LamportsError
type. - Instructions for the non-upgradable BPF loader.
- Instructions for the upgradable BPF loader.
- The v3 built-in loader program.
- Instructions for the SBF loader.
- Sequences of
Instruction
s executed within a single transaction. - The native loader native program.
- Definitions for the native SOL token and its fractional lamports.
- Durable transaction nonces.
- Functions related to nonce accounts.
- Off-chain message container for storing non-transaction messages.
- The definition of a Solana network packet.
- Definitions of Solana’s proof of history.
- Solana precompiled programs.
- Cross-program invocation.
- The
ProgramError
type and related definitions. - Basic low-level memory operations.
- A C representation of Rust’s
Option
, used across the FFI boundary for Solana program interfaces. - The
Pack
serialization trait. - Implementations of syscalls used when
solana-program
is built for non-SBF targets. - Contains a single utility function for deserializing from bincode.
- Solana account addresses.
- Definitions related to Solana over QUIC.
- Helpers for the recent blockhashes sysvar.
- Configuration for network rent.
- Enumeration of reward types.
- RPC default port numbers.
- A trait for sanitizing values and members of over the wire messages.
- A vector of Solana SDK IDs.
- Instructions for the secp256k1 native program.
- Public key recovery from secp256k1 ECDSA signatures.
- Integers that serialize to variable size.
- Helpers for reading and writing bytes.
- Compact serde-encoding of vectors with small length.
- Calculation of shred versions.
- Functionality for public and private keys.
- Abstractions and implementations for transaction signers.
- A type to hold data for the
SlotHashes
sysvar. - A type to hold data for the
SlotHistory
sysvar. - The stake native program.
- A type to hold data for the
StakeHistory
sysvar. - Declarations of Solana program syscalls.
- Instructions and constructors for the system program.
- The
system_transaction
module provides functionality for creating system transactions. - Access to special accounts with dynamically-updated data.
- The
timing
module provides std::time utility functions. - Atomically-committed sequences of instructions.
- Data shared between program runtime and built-in programs as well as SBF programs.
- Defines the
TransportError
type. - The vote native program.
Macros
- Define the default global allocator.
- Define the default global panic handler.
- Same as
declare_id
except report that this id has been deprecated. - Same as
declare_sysvar_id
except that it reports that this ID has been deprecated. - Convenience macro to declare a static public key and functions to interact with it.
- Declares an ID that implements
SysvarId
. - entrypointDeprecated
- entrypoint_deprecatedDeprecated
- Implements the
Sysvar::get
method for both SBF and host targets. - Print a message to the log.
- program_stubsDeprecated
- Convenience macro to define a static public key.
- Convenience macro to define multiple static public keys.
- A proc-macro which respans the tokens in its first argument (a
Path
) to be resolved at the tokens of its second argument. For internal use only. - Convenience macro for
AddAssign
with saturating arithmetic. Replace bystd::num::Saturating
once stable - Convenience macro for doing integer division where the operation’s safety can be checked at compile-time.