Go to file
GroovieGermanikus df46c3f598
RPC: allow IPv6 binding
2024-12-05 23:28:31 +01:00
.buildkite ci: stop all anzaxyz/ci in post-checkout (#929) 2024-04-23 12:34:09 +08:00
.github CI: Pin downstream SPL job to v2.0 branch (#3384) 2024-10-30 18:16:48 +00:00
account-decoder v2.0: EpochRewards: decode points and rewards fields as Strings (backport of #2501) (#2512) 2024-08-09 10:55:53 -06:00
accounts-bench Renames accounts hash calc fns (#1183) 2024-05-03 19:23:12 -04:00
accounts-cluster-bench consensus: add dev-context-only-utils to tower (#687) 2024-04-09 16:39:57 -07:00
accounts-db RPC: add method getProgramAccountsCompressed 2024-12-05 23:28:23 +01:00
banking-bench v2.0: scheduler opt-in forwarding (backport of #1801) (#2285) 2024-09-12 10:43:21 -05:00
banks-client v2.0: Remove deprecated BanksClient methods and dependent ProgramTest methods (backport of #1956) (#1963) 2024-07-02 16:18:42 -06:00
banks-interface v2.0: Remove deprecated BanksClient methods and dependent ProgramTest methods (backport of #1956) (#1963) 2024-07-02 16:18:42 -06:00
banks-server v2.0: Remove deprecated BanksClient methods and dependent ProgramTest methods (backport of #1956) (#1963) 2024-07-02 16:18:42 -06:00
bench-streamer BankingStage Forwarding Filter (#685) 2024-04-09 23:12:26 +00:00
bench-tps v2.0: Fix BankForks::new_rw_arc memory leak (backport of #1893) (#2066) 2024-07-17 16:11:40 -07:00
bloom Make solana-frozen-abi optional in all remaining crates (#1278) 2024-05-17 14:42:58 +02:00
bucket_map deps: Use bytemuck_derive explicitly instead of "derive" feature on bytemuck (#1799) 2024-06-21 12:50:36 +02:00
cargo-registry remove superfluous usage of allow(dead_code) (#1669) 2024-06-13 22:52:49 +08:00
cd
ci v2.0: ignore tonic audit report (#3051) 2024-10-02 23:56:43 +08:00
clap-utils clap-utils: Add more compute unit helpers (#440) 2024-03-28 01:58:20 +01:00
clap-v3-utils [clap-v3-utils] Add functions to directly parse from `SignerSource` (#1062) 2024-05-02 11:38:10 +09:00
cli v2.0: Deprecate RpcClient::get_stake_activation (backport of #1895) (#1925) 2024-07-01 10:56:06 -06:00
cli-config [docs] updated readme and fix links (#34565) 2024-01-03 09:06:06 -05:00
cli-output rpc: Include interest-bearing configuration for UI amount calculation (#1549) 2024-06-06 18:17:51 +02:00
client v2.0: Remove deprecated symbols from solana-client (mostly re-exports) (backport of #1992) (#2041) 2024-07-08 18:13:15 -06:00
client-test Use BankForks on tests - Part 3 (#34248) 2023-12-01 13:47:22 -03:00
compute-budget Reuse compute budget processing (#1700) 2024-06-20 19:22:19 +00:00
connection-cache don't sign X.509 certs (#34896) 2024-01-28 16:17:46 -08:00
core v2.0: Store epoch in MaxAge (backport of #3485) (#3501) 2024-11-07 09:01:18 -06:00
cost-model v2.0: increase writeable accounts cost hashmap size (backport of #3009) (#3019) 2024-10-01 10:49:23 -07:00
curves/curve25519 deps: Use bytemuck_derive explicitly instead of "derive" feature on bytemuck (#1799) 2024-06-21 12:50:36 +02:00
docs v2.0: Update latest release variable for agave docs (backport of #3220) (#3221) 2024-10-21 09:53:54 -05:00
dos v2.0: Remove deprecated symbols from solana-client (mostly re-exports) (backport of #1992) (#2041) 2024-07-08 18:13:15 -06:00
download-utils Use BankForks on tests - Part 3 (#34248) 2023-12-01 13:47:22 -03:00
entry v2.0: Cleanup PoH speed check error (backport of #2400) (#2458) 2024-08-06 14:34:55 -05:00
faucet [anza migration]: add 'agave=info' to default log level (#223) 2024-03-14 20:35:33 +08:00
frozen-abi chore: remove unused clippy attributes, unnecessary_wraps (#1514) 2024-05-29 11:09:29 +00:00
genesis chore: remove unused clippy attributes, float_cmp (#1515) 2024-05-29 12:39:30 +00:00
genesis-utils
geyser-plugin-interface v2.0: geyser: add num_partitions to block info (backport of #2158) (#2178) 2024-07-23 10:09:23 -06:00
geyser-plugin-manager v2.0: geyser: add num_partitions to block info (backport of #2158) (#2178) 2024-07-23 10:09:23 -06:00
gossip v2.0: reworks max number of outgoing push messages (backport of #3016) (#3038) 2024-10-01 01:01:37 +00:00
inline-spl Remove duplicated token ids and use a shared inline-spl crate (#456) 2024-04-01 14:31:04 +02:00
install Prefer explicitly using serde_derive instead of the "derive" feature of serde (#1329) 2024-05-15 01:11:31 +02:00
keygen docs: s/perfix/prefix/ (#1501) 2024-05-28 10:52:27 -06:00
ledger v2.0: replay: extend last fec set check for 32+ retransmitter signed shreds (backport of #2101) (#2192) 2024-08-28 00:24:08 -04:00
ledger-tool v2.0: ledger-tool: Fix create-snapshot default value for output_directory (backport of #3148) (#3153) 2024-10-15 10:41:18 -10:00
local-cluster v2.0: scheduler opt-in forwarding (backport of #1801) (#2285) 2024-09-12 10:43:21 -05:00
log-analyzer
logger [anza migration]: add 'agave=info' to default log level (#223) 2024-03-14 20:35:33 +08:00
measure
memory-management Moves a clippy attribute (#194) 2024-03-12 07:46:23 -04:00
merkle-root-bench
merkle-tree
metrics remove superfluous usage of allow(dead_code) (#1669) 2024-06-13 22:52:49 +08:00
multinode-demo v2.0: Removes deprecated --halt-on-known-validators-accounts-hash-mismatch cli arg (backport of #2154) (#2157) 2024-07-19 15:01:54 -04:00
net ledger-tool: Make verify --print-bank-hash support json (#1745) 2024-06-20 00:15:18 -05: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 2024-12-05 23:28:31 +01:00
notifier [anza migration] rename crates (#10) 2024-03-03 12:31:24 +08:00
perf chore: remove unused clippy attributes, needless_collect (#1517) 2024-06-03 13:24:20 +00:00
poh v2.0: replay: do not start leader for a block we already have shreds for (backport of #2416) (#2484) 2024-08-15 13:40:38 -04:00
poh-bench Share the threadpool for tx execution and entry verifification (#216) 2024-03-27 16:33:21 -05:00
poseidon Extract solana-poseidon crate from solana-program (#999) 2024-05-30 13:34:23 -05:00
program-runtime v2.0: Fix BankForks::new_rw_arc memory leak (backport of #1893) (#2066) 2024-07-17 16:11:40 -07:00
program-test v2.0: token-2022: Use mainnet-beta binary in all tools (backport of #3165) (#3166) 2024-10-15 18:52:21 +02:00
programs Bump version to v2.0.15 (#3210) 2024-10-18 21:19:04 +08:00
pubsub-client v2.0: Remove rpc- and pubsub-client version querying (backport of #2045) (#2052) 2024-07-10 03:07:07 +00:00
quic-client v2.0: Remove explicit stream finish (backport of #2760) (#2766) 2024-09-08 22:53:43 +07:00
rayon-threadlimit
rbpf-cli [anza migration] rename crates (#10) 2024-03-03 12:31:24 +08:00
remote-wallet remove superfluous usage of allow(dead_code) (#1669) 2024-06-13 22:52:49 +08:00
rpc RPC: allow IPv6 binding 2024-12-05 23:28:31 +01:00
rpc-client v2.0: Remove rpc- and pubsub-client version querying (backport of #2045) (#2052) 2024-07-10 03:07:07 +00:00
rpc-client-api RPC: add method getProgramAccountsCompressed 2024-12-05 23:28:23 +01:00
rpc-client-nonce-utils v2.0: Remove deprecated RpcClient methods (backport of #1899) (#1922) 2024-07-01 10:55:39 -06:00
rpc-test v2.0: Remove support for deprecated rpc endpoints (backport of #1809) (#1886) 2024-06-27 13:51:48 -06:00
runtime RPC: add method getProgramAccountsCompressed 2024-12-05 23:28:23 +01:00
runtime-transaction Add Compute Budget Crate (#1121) 2024-06-01 01:38:19 -05:00
scripts Pin SPL Token CLI version to v4.1.1 (#3344) 2024-10-30 22:13:17 +08:00
sdk RPC: add method getProgramAccountsCompressed 2024-12-05 23:28:23 +01:00
send-transaction-service v2.0: Remove deprecated symbols from solana-client (mostly re-exports) (backport of #1992) (#2041) 2024-07-08 18:13:15 -06:00
stake-accounts v2.0: Fix BankForks::new_rw_arc memory leak (backport of #1893) (#2066) 2024-07-17 16:11:40 -07:00
storage-bigtable v2.0: link openssl statically for Windows (backport of #3118) (#3156) 2024-10-15 13:15:34 +08:00
storage-proto Add num_partitions to Blockstore rewards (#1601) 2024-06-17 16:42:33 -06:00
streamer quic server: disable GSO, reduce reply data allocations 10x (#1647) 2024-06-13 01:20:09 +07:00
svm Feature - disable account loader special case (#3514) 2024-11-07 21:36:42 +01:00
system-test [anza migration] rename crates (#10) 2024-03-03 12:31:24 +08:00
test-validator v2.0: Remove assorted deprecated symbols (backport of #1995) (#2002) 2024-07-04 00:29:49 -06:00
thin-client v2.0: Bump ThinClient since version (backport of #1991) (#2001) 2024-07-04 00:28:09 -06:00
tokens chore: remove unused clippy attributes, needless_collect (#1517) 2024-06-03 13:24:20 +00:00
tps-client v2.0: chore: publish solana-tps-client (backport of #1845) (#1846) 2024-06-24 16:14:11 -05:00
tpu-client Remove `ThinClient` from `LocalCluster` (#1300) 2024-06-13 10:31:10 -07:00
transaction-dos Verify elf with active feature set before attempting deployment (#1654) 2024-06-17 18:25:25 -03:00
transaction-metrics-tracker v2.0: chore: remove publish=false from transaction-metrics-tracker/Cargo.toml (backport of #1828) (#1844) 2024-06-24 15:35:05 -05:00
transaction-status v2.0: geyser: add num_partitions to block info (backport of #2158) (#2178) 2024-07-23 10:09:23 -06:00
turbine v2.0: Revert "rolls back chained Merkle shreds for testnet downgrade (#3194)" (backport of #3503) (#3504) 2024-11-07 13:33:39 +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 clippy: missing_transmute_annotations (#1343) 2024-05-18 01:03:17 +08:00
unified-scheduler-pool v2.0: Fix BankForks::new_rw_arc memory leak (backport of #1893) (#2066) 2024-07-17 16:11:40 -07:00
upload-perf
validator v2.0: remove disable_block_production_forwarding cli flag (backport of #2687) (#2909) 2024-09-12 12:33:40 -05:00
version Make solana-frozen-abi optional in all remaining crates (#1278) 2024-05-17 14:42:58 +02:00
vote Vote: hoist vote sender types up to runtime (#1623) 2024-06-06 10:59:48 -05:00
watchtower [anza migration]: add 'agave=info' to default log level (#223) 2024-03-14 20:35:33 +08:00
web3.js
wen-restart wen_restart: Ignore Gossip messages from my own pubkey. (#1678) 2024-06-15 10:50:32 -07:00
zk-keygen [zk-keygen] Remove deprecated functions (#599) 2024-04-11 07:52:57 +09:00
zk-sdk deps: Use bytemuck_derive explicitly instead of "derive" feature on bytemuck (#1799) 2024-06-21 12:50:36 +02:00
zk-token-sdk v2.0: [zk-token-sdk] Specify version in deprecations in `zk-token-sdk` (backport of #2011) (#2014) 2024-07-08 20:55:59 +09:00
.clippy.toml
.codecov.yml
.gitignore chore: remove log-analyzer from gitignore (#1477) 2024-05-24 05:32:21 +00:00
.mergify.yml Retire stable-rust clippy for still buggy redundant_clone (#1661) 2024-06-10 15:05:04 +09:00
CHANGELOG.md v2.0: changelog: Lists removed validator args (backport of #2324) (#2336) 2024-07-30 13:11:32 -04:00
CONTRIBUTING.md Update cargo metadata to Anza (#635) 2024-04-10 14:29:48 +08:00
Cargo.lock Bump version to v2.0.15 (#3210) 2024-10-18 21:19:04 +08:00
Cargo.toml Bump version to v2.0.15 (#3210) 2024-10-18 21:19:04 +08:00
LICENSE
README.md [anza migration]: update repo path (#811) 2024-04-15 11:43:46 -06:00
RELEASE.md Update RELEASE.md to reflect current release process (#444) 2024-03-28 13:13:27 -05:00
SECURITY.md v2.0: Update security email to security@anza.xyz (backport of #2598) (#2619) 2024-08-16 09:49:18 -05:00
cargo
cargo-build-bpf
cargo-build-sbf
cargo-test-bpf
cargo-test-sbf
fetch-perf-libs.sh
fetch-spl.sh v2.0: token-2022: Use mainnet-beta binary in all tools (backport of #3165) (#3166) 2024-10-15 18:52:21 +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 chore: bump rust stable to v1.78.0, nightly to 2024-05-02 (#1309) 2024-05-29 11:58:31 +08: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!