No Description

mergify[bot] 4a70bc1e00 v1.17: add ca-certificates to docker image (backport of #1443) (#1444) 1 year ago
.buildkite 99e83102d1 v1.17: ci: add the ability to use GCS backend for sccache (backport of #33967) (#33984) 2 years ago
.github e9a0a1c9df v1.17: remove releng from CODEOWNERS (#1367) 1 year ago
account-decoder bbdce0f273 v1.17: spl: Bump token-2022 to v1 (backport of #34412) (#34572) 1 year ago
accounts-bench 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
accounts-cluster-bench af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
accounts-db 1390ec9ec0 v1.17: Adds more info to panic message in AccountsHashVerifier (backport of #35353) (#35358) 1 year ago
banking-bench 22f44d0518 v1.17: Initialize fork graph in program cache during bank_forks creation (backport of #33810) (#33817) 2 years ago
banks-client 22f44d0518 v1.17: Initialize fork graph in program cache during bank_forks creation (backport of #33810) (#33817) 2 years ago
banks-interface 936d2cf3c2 banks-client: Add `get_fee_for_message` (#31703) 2 years ago
banks-server 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
bench-streamer 6a46c0128b v1.17: BankingStage Forwarding Filter (backport of #685) (#696) 1 year ago
bench-tps af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
bloom 150a798d32 Fix - Upcoming `arithmetic_side_effects` lints (#33000) 2 years ago
bucket_map e088eb2be0 Code clean up (#33417) 2 years ago
cd e48456dbbc Create continuous delivery directory and add readme with canary details. (#27683) 3 years ago
ci 254eccdb41 v1.17: ci: don't self-update rustup when using the rust-version script (backport of #1209) (#1214) 1 year ago
clap-utils 4ec5ea6f7b replaces assert!(matches!(...)) with assert_matches!(...) (#33068) 2 years ago
clap-v3-utils ec36369e47 [clap-v3-utils] Deprecate input validators and add parsers to replace them (#33276) 2 years ago
cli 353aa6423f v1.17: CLI remove unwrap_or_default() on rpc calls (backport of #33782) (#34051) 2 years ago
cli-config df3ef111f7 chore: workspace inheritance (#29893) 2 years ago
cli-output 3b1cbaec72 Add csv output option to stake and vote account rewards (#32360) 2 years ago
client a7cfe9b86e v1.17: Parameterize max streams per ms (backport of #707) (#1105) 1 year ago
client-test bfab9bb3ae v1.17: Use program cache fork graph in extract() (backport of #33806) (#33862) 2 years ago
connection-cache 3fbfa0e0da Simplify code and use match to harden logic (#33409) 2 years ago
core f96f10c95e v1.17 - Add detailed metrics reporting for packet filtering (#1422) 1 year ago
cost-model 2332aee4a2 v1.17: add precompile signature metrics to cost tracker (backport of #133) (#142) 1 year ago
docs 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
dos af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
download-utils 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
entry 528a03f32a removes outdated matches crate from dependencies (#33172) 2 years ago
faucet af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
frozen-abi 8af823401a v1.17: Enable frozen_abi on banking trace file (backport of #33501) (#33578) 2 years ago
genesis 16ea141402 sdk: put AccountSharedData::set_data() behind feature="dev-context-only-utils" (#33086) 2 years ago
genesis-utils f4287d70bb Move accounts-db code to its own crate (#32766) 2 years ago
geyser-plugin-interface 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
geyser-plugin-manager 0ef1f6513a v1.17: Display error message while loading geyser plugins (#33990) (#97) 1 year ago
gossip 6a46c0128b v1.17: BankingStage Forwarding Filter (backport of #685) (#696) 1 year ago
install 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
keygen ec36369e47 [clap-v3-utils] Deprecate input validators and add parsers to replace them (#33276) 2 years ago
ledger d06a0a4632 v1.17: blockstore: relax parent slot meta check for clear_unconfirmed_slot (#67) 1 year ago
ledger-tool af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
local-cluster be83469a1b v1.17: default staked client in LocalCluster (backport of #716) (#723) 1 year ago
log-analyzer 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
logger af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
measure 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
memory-management 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
merkle-root-bench f4287d70bb Move accounts-db code to its own crate (#32766) 2 years ago
merkle-tree 528a03f32a removes outdated matches crate from dependencies (#33172) 2 years ago
metrics 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
multinode-demo 6234bc9432 [anza migration] v1.17: Use agave prefix in scripts for pre-installed binaries (backport of #155) (#349) 1 year ago
net 11d4156589 v1.17: [anza migration]: fix download link for net scripts (backport of #219) (#351) 1 year ago
net-shaper 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
net-utils 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
notifier 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
perf 8af823401a v1.17: Enable frozen_abi on banking trace file (backport of #33501) (#33578) 2 years ago
poh 528a03f32a removes outdated matches crate from dependencies (#33172) 2 years ago
poh-bench 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
program-runtime 77daab497d v1.17 - Adds error log for replacements in ProgramCache::assign_program(). (#1400) 1 year ago
program-test bbdce0f273 v1.17: spl: Bump token-2022 to v1 (backport of #34412) (#34572) 1 year ago
programs 063959c8ad Bump version to v1.17.35 (#1425) 1 year ago
pubsub-client 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
quic-client a7cfe9b86e v1.17: Parameterize max streams per ms (backport of #707) (#1105) 1 year ago
rayon-threadlimit df3ef111f7 chore: workspace inheritance (#29893) 2 years ago
rbpf-cli 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
remote-wallet 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
rpc 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
rpc-client 0e2bded0f6 v1.17: Allow to create HTTP Sender with custom Client (backport of #33580) (#33660) 2 years ago
rpc-client-api 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
rpc-client-nonce-utils df3ef111f7 chore: workspace inheritance (#29893) 2 years ago
rpc-test 9281ab7d97 separates out connection-cache metrics for different protocols (#31803) 2 years ago
runtime 77daab497d v1.17 - Adds error log for replacements in ProgramCache::assign_program(). (#1400) 1 year ago
scripts 11d4156589 v1.17: [anza migration]: fix download link for net scripts (backport of #219) (#351) 1 year ago
sdk 4a70bc1e00 v1.17: add ca-certificates to docker image (backport of #1443) (#1444) 1 year ago
send-transaction-service adc63fb3c0 v1.17: rpc-sts: add config options for stake-weighted qos (backport of #197) (#340) 1 year ago
stake-accounts 9e703f85de Upgrades Rust to 1.72.0 & nightly-2023-08-25 (#32961) 2 years ago
storage-bigtable 07acb46b6f v1.17: Bigtable: update google proto files and allow configuration of max_message_size (backport of #34740) (#34741) 1 year ago
storage-proto 1840fd7ab3 Feature - better error codes for tx lamport check (#33343) 2 years ago
streamer 58916d9192 Backport connection stream counter to v1.17 (#991) 1 year ago
system-test 8155a8cc4d v1.17: [anza migration] rename crates 1 year ago
test-validator 72706d6601 test validator write stake account to JSON (#33014) 2 years ago
thin-client 344e466e12 Async connection creation in connection cache (#33302) 2 years ago
tokens 01306a6e1e v1.17: tokens: fix url clap arg name (backport of #34371) (#34375) 1 year ago
tpu-client 01c02f2f57 v1.17: Change DEFAULT_TPU_CONNECTION_POOL_SIZE to 1 (backport of #1014) (#1042) 1 year ago
transaction-dos af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
transaction-status bbdce0f273 v1.17: spl: Bump token-2022 to v1 (backport of #34412) (#34572) 1 year ago
turbine b9aaedba6a v1.17: Add feature flag for LastIndex and Erasure duplicate proofs (backport of #34360) (#34541) 1 year ago
udp-client 344e466e12 Async connection creation in connection cache (#33302) 2 years ago
upload-perf df3ef111f7 chore: workspace inheritance (#29893) 2 years ago
validator adc63fb3c0 v1.17: rpc-sts: add config options for stake-weighted qos (backport of #197) (#340) 1 year ago
version 3809dc069a v1.17: [anza migration] Sets client id to Agave (backport of #163) (#205) 1 year ago
vote 4488cc241f Cleanup cargo deps in vote crate (#33407) 2 years ago
watchtower af153cba40 v1.17: [anza migration]: add 'agave=info' to default log level (backport of #223) (#242) 1 year ago
web3.js 18c22c7cef Add link to new web3.js repo (#30096) 2 years ago
zk-keygen 1452ed7044 [zk-token-sdk] Make `ElGamalKeypair` fields private (#32190) 2 years ago
zk-token-sdk 509b9b970b v1.17: [zk-token-sdk] Fix range proof transcript seed typo (backport of #34468) (#34470) 1 year ago
.clippy.toml 30f0c25b65 Fix all remaining clippy warnings 7 years ago
.codecov.yml 0b9c040fcf Add .codecov.yml with checks disabled (#30666) 2 years ago
.gitignore b36791956e Ingest duplicate proofs sent through Gossip (#29227) 2 years ago
.mergify.yml 3cc220cb62 v1.17: [anza migration] backport of #6, #8, #9 (#13) 1 year ago
CHANGELOG.md 8b2c1a547d v1.17: changelog: Adds --use-snapshot-archives-at-startup to v1.17.0 (backport of #34401) (#34438) 1 year ago
CONTRIBUTING.md 51b2b2d745 docs(contributing): fix syntax highlighting (#32928) 2 years ago
Cargo.lock 063959c8ad Bump version to v1.17.35 (#1425) 1 year ago
Cargo.toml 063959c8ad Bump version to v1.17.35 (#1425) 1 year ago
LICENSE c65605802a Correct LICENSE to conform with https://apache.org/licenses/LICENSE-2.0 (#31860) 2 years ago
README.md 326bd2435c v1.17: [anza migration] ci (backport of #5) (#11) 1 year ago
RELEASE.md 96d57e88dd v1.17: CI: add check for explicit spl-token-cli version (backport of #34430) (#34465) 1 year ago
SECURITY.md 18f321525a Update SECURITY.md (#33198) 2 years ago
cargo 6cd4bc5e60 Speed up net.sh builds (#16360) 4 years ago
cargo-build-bpf 49f4e2ae05 replace ./cargo with cargo in sbf/bpf build scripts (#29371) 2 years ago
cargo-build-sbf 49f4e2ae05 replace ./cargo with cargo in sbf/bpf build scripts (#29371) 2 years ago
cargo-test-bpf 49f4e2ae05 replace ./cargo with cargo in sbf/bpf build scripts (#29371) 2 years ago
cargo-test-sbf 49f4e2ae05 replace ./cargo with cargo in sbf/bpf build scripts (#29371) 2 years ago
fetch-perf-libs.sh 9393dce1ff Take v0.19.3 of perf libs which improves sigverify perf 2x (#11894) 5 years ago
fetch-spl.sh de38b05ad1 spl: Bump token-2022 and friends (#33453) 2 years ago
nextest.toml d4946ddfaa ci: move solana-cargo-build-sbf to nextest (#33257) 2 years ago
run.sh 5d11227088 Mark *.sh files with `#!` as executable (#33303) 2 years ago
rust-toolchain.toml 3cdee9bb83 v1.17: Upgrades Rust to 1.73.0 (backport of #33546) (#33563) 2 years ago
rustfmt.toml 70ebab2c82 Add rustfmt.toml and `cargo fmt` (#23238) 3 years ago
test-abi.sh a4956844bd Update frozen_abi hashes 5 years ago
vercel.json 1c36af158f removing the "autoJobCancelation": false 4 years ago

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/solana-labs/solana.git
$ cd solana

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!