Go to file
GroovieGermanikus 3407e182f2
RPC: allow IPv6 binding
2025-02-10 18:32:12 +01:00
.buildkite ci: split local-cluster test into 10 jobs (#2576) 2024-08-15 11:38:01 +08:00
.github v2.1: CI: Remove memo program from downstream job (backport of #3804) (#3865) 2024-12-05 18:39:04 +01:00
account-decoder Extract account-decoder-client-types (#2872) 2024-10-22 18:44:27 +08:00
account-decoder-client-types Extract account-decoder-client-types (#2872) 2024-10-22 18:44:27 +08:00
accounts-bench Consolidate AccountsDb parameters (#3324) 2024-10-28 12:36:55 -05:00
accounts-cluster-bench Consolidate AccountsDb parameters (#3324) 2024-10-28 12:36:55 -05:00
accounts-db CAUTION: disable geyer snapshot updates on validator startup 2025-02-10 18:31:43 +01:00
banking-bench sdk: Deprecate timing::duration_as_*() functions (#2586) 2024-08-14 15:16:31 -05:00
banks-client refactor: use less &mut self and more async-await in BanksClient (#2591) 2024-08-16 12:30:12 -04:00
banks-interface Remove deprecated BanksClient methods and dependent ProgramTest methods (#1956) 2024-07-02 00:01:20 -06:00
banks-server generic verify_precompiles (#3055) 2024-10-03 19:47:12 -05:00
bench-streamer BankingStage Forwarding Filter (#685) 2024-04-09 23:12:26 +00:00
bench-tps Extract feature-set crate (#2172) 2024-09-10 19:27:20 +02:00
bloom Remove frozen-abi build script (#2911) 2024-09-17 06:08:48 +00:00
bucket_map Advises kernel to use random access for disk bucket mmaps (#2140) 2024-10-15 13:49:27 -04:00
builtins-default-costs v2.1: Accounting migrating builtin programs default Compute Unit Limit with feature status (backport of #3975) (#4091) 2025-01-16 10:33:51 -06:00
cargo-registry Remove frozen-abi build script (#2911) 2024-09-17 06:08:48 +00:00
cd
ci v2.1: fix audit (backport of #4014) (#4022) 2024-12-11 13:53:35 -07:00
clap-utils Extract derivation-path crate (#2056) 2024-09-05 11:54:12 +00:00
clap-v3-utils Extract derivation-path crate (#2056) 2024-09-05 11:54:12 +00:00
cli v2.1: cli: show max vote credits in vote-account based on TVC activation epoch (backport of #3776) (#3780) 2024-12-04 11:44:49 -05:00
cli-config [docs] updated readme and fix links (#34565) 2024-01-03 09:06:06 -05:00
cli-output v2.1: cli: show max vote credits in vote-account based on TVC activation epoch (backport of #3776) (#3780) 2024-12-04 11:44:49 -05:00
client v2.1: SIMD-0075: Precompile for Secp256r1 (backport of #3152) (#3662) 2024-11-16 07:28:35 +09:00
client-test v2.1: Revert "remove test-only bool arg from calculate_fee (#3211)" (backport of #3367) (#3373) 2024-10-29 19:32:21 -05:00
compute-budget v2.1: Fix reserve minimal compute units for builtins (backport of #3799) (#3931) 2025-01-11 11:02:36 -06:00
connection-cache don't sign X.509 certs (#34896) 2024-01-28 16:17:46 -08:00
core v2.1: fix: use atomic to check if leader bank changed (backport of #4596) (#4612) 2025-01-24 22:11:40 -06:00
cost-model v2.1: Fix builtin default cost dependents on migration (backport of #3768) (#4415) 2025-01-14 22:40:08 -06:00
curves don't ignore doc examples in secp256k1-recover (#3229) 2024-10-20 09:52:46 +00:00
define-syscall bump rust to 1.80.1 / 2024-08-08 (#2487) 2024-08-16 11:55:08 +08:00
docs v2.1: Update docs URL in docusaurus config (backport of #4081) (#4087) 2024-12-13 13:59:12 -06:00
dos fix docs format (#2497) 2024-08-11 17:14:34 +08:00
download-utils Use BankForks on tests - Part 3 (#34248) 2023-12-01 13:47:22 -03:00
entry Cleanup entry threadpool usage in GPU case (#3111) 2024-10-08 16:36:26 -05:00
faucet [anza migration]: add 'agave=info' to default log level (#223) 2024-03-14 20:35:33 +08:00
fee v2.1: Revert "remove test-only bool arg from calculate_fee (#3211)" (backport of #3367) (#3373) 2024-10-29 19:32:21 -05:00
frozen-abi Fix frozen_abi for not-Bytes serde_with::serde_as (#3018) 2024-09-30 22:21:22 +09:00
genesis genesis: Make "cluster-type" aware of features (#2587) 2024-08-15 12:34:44 -04:00
genesis-utils Move accounts-db code to its own crate (#32766) 2023-08-09 13:03:36 -07:00
geyser-plugin-interface Support dead slot notification in geyser (#3163) 2024-10-28 15:55:37 -07:00
geyser-plugin-manager Support dead slot notification in geyser (#3163) 2024-10-28 15:55:37 -07:00
gossip removes ingesting (legacy) contact-info from incoming pull-requests (#3317) 2024-10-29 00:57:39 +00:00
inline-spl avoid solana-program in inline-spl (#3178) 2024-10-15 17:14:16 +00:00
install fix unused-must-use (#2490) 2024-08-09 15:12:45 +08:00
keygen Move `solana_sdk::pubkey` functions to solana-pubkey (#2980) 2024-10-15 12:27:09 +00:00
lattice-hash v2.1: add missing description for solana-lattice-hash (backport of #3358) (#3363) 2024-10-31 01:58:27 +08:00
ledger v2.1: Fix flaky test_transaction_result_does_not_affect_bankhash (backport of #3916) (#4578) 2025-01-23 15:46:05 -07:00
ledger-tool v2.1: Update ledger-tool --deactivate-feature-gate to deactivate feature gate in child bank (backport of #4465) (#4475) 2025-01-15 12:29:51 -06:00
local-cluster Consolidate AccountsDb parameters (#3324) 2024-10-28 12:36:55 -05:00
log-analyzer remove solana-program from solana-feature-set (#3140) 2024-10-15 14:21:56 +02:00
log-collector Extract log collector crate (#2025) 2024-07-09 11:32:57 +08:00
logger [anza migration]: add 'agave=info' to default log level (#223) 2024-03-14 20:35:33 +08:00
measure Adds meas_dur!() macro (#3043) 2024-10-01 17:01:12 -04:00
memory-management Moves a clippy attribute (#194) 2024-03-12 07:46:23 -04:00
merkle-root-bench Move accounts-db code to its own crate (#32766) 2023-08-09 13:03:36 -07:00
merkle-tree sdk: Extract hash and hasher crates (#2015) 2024-09-05 12:19:20 +02:00
metrics metrics: remove optimistic_slot_elapsed (#2717) 2024-09-04 18:44:58 +08:00
multinode-demo wen_restart: Add wen_restart_coordinator argument. (#2975) 2024-10-07 20:00:33 -07:00
net ci: introduce ci/docker/env.sh (#3774) 2024-11-27 09:35:47 -06:00
net-shaper Prefer explicitly using serde_derive instead of the "derive" feature of serde (#1329) 2024-05-15 01:11:31 +02:00
net-utils RPC: allow IPv6 binding 2025-02-10 18:32:12 +01:00
notifier [anza migration] rename crates (#10) 2024-03-03 12:31:24 +08:00
perf v2.1: ed25519_verify_cpu: remove allocation in hot path (backport of #3941) (#3945) 2025-01-08 11:22:12 -06:00
poh v2.1: fix: use atomic to check if leader bank changed (backport of #4596) (#4612) 2025-01-24 22:11:40 -06:00
poh-bench Share the threadpool for tx execution and entry verifification (#216) 2024-03-27 16:33:21 -05:00
poseidon bump rust to 1.80.1 / 2024-08-08 (#2487) 2024-08-16 11:55:08 +08:00
program-runtime v2.1: program-runtime: double program cache size (backport of #3481) (#3492) 2024-11-08 12:21:58 +07:00
program-test Consolidate AccountsDb parameters (#3324) 2024-10-28 12:36:55 -05:00
programs v2.1: Blockstore: Migrate ShredIndex type to more efficient data structure (backport of #3900) (#4428) 2025-01-22 11:00:22 -08:00
pubsub-client Remove rpc- and pubsub-client version querying (#2045) 2024-07-09 00:37:09 -06:00
quic-client v2.1: quic: disable send fairness (backport of #4586) (#4590) 2025-01-24 09:54:00 +11:00
rayon-threadlimit
rbpf-cli [anza migration] rename crates (#10) 2024-03-03 12:31:24 +08:00
remote-wallet remove outdated solana-ledger-udev binary (#2955) 2024-10-22 14:57:34 +02:00
rpc v2.1: [rpc] Fatal `getSignaturesForAddress()` when Bigtable errors (backport of #3700) (#4443) 2025-01-16 08:05:25 -08:00
rpc-client fix flaky test (#3295) 2024-10-24 15:13:28 -07:00
rpc-client-api v2.1: [rpc] Fatal `getSignaturesForAddress()` when Bigtable errors (backport of #3700) (#4443) 2025-01-16 08:05:25 -08:00
rpc-client-nonce-utils Extract account-decoder-client-types (#2872) 2024-10-22 18:44:27 +08:00
rpc-test v2.1: Revert "remove test-only bool arg from calculate_fee (#3211)" (backport of #3367) (#3373) 2024-10-29 19:32:21 -05:00
runtime v2.1: Fix flaky test_transaction_result_does_not_affect_bankhash (backport of #3916) (#4578) 2025-01-23 15:46:05 -07:00
runtime-transaction v2.1: Accounting migrating builtin programs default Compute Unit Limit with feature status (backport of #3975) (#4091) 2025-01-16 10:33:51 -06:00
scripts v2.1: CI: Remove memo program from downstream job (backport of #3804) (#3865) 2024-12-05 18:39:04 +01:00
sdk v2.1: quic: disable send fairness (backport of #4586) (#4590) 2025-01-24 09:54:00 +11:00
send-transaction-service replace solana-client with its constituent parts where possible (#2086) 2024-07-16 11:25:13 -06:00
short-vec Remove frozen-abi build script (#2911) 2024-09-17 06:08:48 +00:00
stake-accounts Fix BankForks::new_rw_arc memory leak (#1893) 2024-07-09 13:30:18 -07:00
storage-bigtable v2.1: [rpc] Fatal `getSignaturesForAddress()` when Bigtable errors (backport of #3700) (#4443) 2025-01-16 08:05:25 -08:00
storage-proto Add num_partitions to Blockstore rewards (#1601) 2024-06-17 16:42:33 -06:00
streamer v2.1: quic: disable send fairness (backport of #4586) (#4590) 2025-01-24 09:54:00 +11:00
svm Bump version to v2.1.11 (#4541) 2025-01-21 09:49:13 -06:00
svm-conformance v2.1: publish solana-svm-conformance (backport of #3359) (#3362) 2024-10-31 01:58:38 +08:00
svm-rent-collector SVM: add new `solana-svm-rent-collector` crate (#2688) 2024-08-23 14:14:20 -07:00
svm-transaction v2.1: Fix reserve minimal compute units for builtins (backport of #3799) (#3931) 2025-01-11 11:02:36 -06:00
system-test [anza migration] rename crates (#10) 2024-03-03 12:31:24 +08:00
test-validator v2.1: test-validator: Fix upgradeable programs at genesis (backport of #3692) (#3694) 2024-11-18 23:19:04 +01:00
thin-client sdk: Deprecate timing::duration_as_*() functions (#2586) 2024-08-14 15:16:31 -05:00
timings svm: introduce filter_executable_us metric (#3472) (#3482) 2024-11-05 23:39:16 +07:00
tokens v2.1: Revert "remove test-only bool arg from calculate_fee (#3211)" (backport of #3367) (#3373) 2024-10-29 19:32:21 -05:00
tps-client chore: publish solana-tps-client (#1845) 2024-06-25 03:49:31 +08:00
tpu-client v2.1: Add not unique leader discovery (backport of #3546) (#3658) 2024-11-22 23:01:57 +11:00
tpu-client-next v2.1: tpu-client-next: return receiver in scheduler::run (backport of #4454) (#4521) 2025-01-24 15:28:05 +01:00
transaction-dos Remove some unused deps (#1929) 2024-07-11 10:16:16 +02:00
transaction-metrics-tracker Move short_vec to its own crate (#1796) 2024-07-17 14:10:16 +00:00
transaction-status Extract account-decoder-client-types (#2872) 2024-10-22 18:44:27 +08:00
transaction-status-client-types Extract account-decoder-client-types (#2872) 2024-10-22 18:44:27 +08:00
transaction-view v2.1: Fix reserve minimal compute units for builtins (backport of #3799) (#3931) 2025-01-11 11:02:36 -06:00
turbine v2.1: rolls out chained Merkle shreds to ~21% of mainnet slots (backport of #4431) (#4435) 2025-01-14 02:13:58 +00:00
type-overrides Make futures crate optional in solana-type-overrides (#1792) 2024-06-20 07:49:10 -03:00
udp-client Quic update identity (#33865) 2023-12-08 14:53:19 +08:00
unified-scheduler-logic unified_scheduler_logic: replace get_account_locks_unchecked (#2554) 2024-08-13 10:37:19 -05:00
unified-scheduler-pool ReplayStage: No More Clone SanitizedTransaction (#3058) 2024-10-04 13:14:08 -05:00
upload-perf
validator v2.1: rpc: improve latency by not blocking worker threads polling IO notifications (backport of #3242) (#4412) 2025-01-14 11:07:05 +11:00
version remove unused deps from solana-version (#3025) 2024-10-03 15:20:11 +00:00
vote consensus: aggregate all slots in full tower votes for OC (#3136) 2024-10-23 13:29:55 -04:00
watchtower [anza migration]: add 'agave=info' to default log level (#223) 2024-03-14 20:35:33 +08:00
web3.js
wen-restart Only aggregate heaviest fork at the coordinator. (#3115) 2024-10-17 16:32:13 -07:00
zk-keygen Remove some unused deps (#1929) 2024-07-11 10:16:16 +02:00
zk-sdk v2.1: [zk-sdk] Expose ElGamal decryption and proof program to wasm target (backport of #3601) (#3630) 2024-11-19 12:11:44 +09:00
zk-token-sdk Extract derivation-path crate (#2056) 2024-09-05 11:54:12 +00:00
.clippy.toml
.codecov.yml
.gitignore Extract log collector crate (#2025) 2024-07-09 11:32:57 +08:00
.mergify.yml v2.1: CI: Remove memo program from downstream job (backport of #3804) (#3865) 2024-12-05 18:39:04 +01:00
CHANGELOG.md v2.1: Disallow --rocksdb-shred-compaction fifo in the validator (backport of #3451) (#3464) 2024-11-04 23:48:48 -06:00
CONTRIBUTING.md Update crate ownership transfer name (#1970) 2024-07-02 11:45:46 -05:00
Cargo.lock v2.1: Blockstore: Migrate ShredIndex type to more efficient data structure (backport of #3900) (#4428) 2025-01-22 11:00:22 -08:00
Cargo.toml Bump version to v2.1.11 (#4541) 2025-01-21 09:49:13 -06:00
LICENSE
README.md [anza migration]: update repo path (#811) 2024-04-15 11:43:46 -06:00
RELEASE.md Update RELEASE.md (#1901) 2024-07-17 16:09:39 -05:00
SECURITY.md Update security email to security@anza.xyz (#2598) 2024-08-15 21:34:23 -05:00
cargo
cargo-build-sbf
cargo-test-sbf
fetch-perf-libs.sh
fetch-spl.sh token-2022: Use mainnet-beta binary in all tools (#3165) 2024-10-15 11:55:39 +02:00
nextest.toml ci: move solana-cargo-build-sbf to nextest (#33257) 2023-09-15 14:24:43 +00:00
run.sh [docs] updated readme and fix links (#34565) 2024-01-03 09:06:06 -05:00
rust-toolchain.toml Revert "bump rust to 1.82.0 (#3308)" (#3320) 2024-10-28 14:11:59 -04:00
rustfmt.toml
test-abi.sh Make solana-frozen-abi optional in all remaining crates (#1278) 2024-05-17 14:42:58 +02:00
vercel.json

README.md

Solana

Solana crate Solana documentation Build status codecov

Building

1. Install rustc, cargo and rustfmt.

$ curl https://sh.rustup.rs -sSf | sh
$ source $HOME/.cargo/env
$ rustup component add rustfmt

When building the master branch, please make sure you are using the latest stable rust version by running:

$ rustup update

When building a specific release branch, you should check the rust version in ci/rust-version.sh and if necessary, install that version by running:

$ rustup install VERSION

Note that if this is not the latest rust version on your machine, cargo commands may require an override in order to use the correct version.

On Linux systems you may need to install libssl-dev, pkg-config, zlib1g-dev, protobuf etc.

On Ubuntu:

$ sudo apt-get update
$ sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler

On Fedora:

$ sudo dnf install openssl-devel systemd-devel pkg-config zlib-devel llvm clang cmake make protobuf-devel protobuf-compiler perl-core

2. Download the source code.

$ git clone https://github.com/anza-xyz/agave.git
$ cd agave

3. Build.

$ ./cargo build

Testing

Run the test suite:

$ ./cargo test

Starting a local testnet

Start your own testnet locally, instructions are in the online docs.

Accessing the remote development cluster

  • devnet - stable public cluster for development accessible via devnet.solana.com. Runs 24/7. Learn more about the public clusters

Benchmarking

First, install the nightly build of rustc. cargo bench requires the use of the unstable features only available in the nightly build.

$ rustup install nightly

Run the benchmarks:

$ cargo +nightly bench

Release Process

The release process for this project is described here.

Code coverage

To generate code coverage statistics:

$ scripts/coverage.sh
$ open target/cov/lcov-local/index.html

Why coverage? While most see coverage as a code quality metric, we see it primarily as a developer productivity metric. When a developer makes a change to the codebase, presumably it's a solution to some problem. Our unit-test suite is how we encode the set of problems the codebase solves. Running the test suite should indicate that your change didn't infringe on anyone else's solutions. Adding a test protects your solution from future changes. Say you don't understand why a line of code exists, try deleting it and running the unit-tests. The nearest test failure should tell you what problem was solved by that code. If no test fails, go ahead and submit a Pull Request that asks, "what problem is solved by this code?" On the other hand, if a test does fail and you can think of a better way to solve the same problem, a Pull Request with your solution would most certainly be welcome! Likewise, if rewriting a test can better communicate what code it's protecting, please send us that patch!