Go to file
Gary Wang 661e77231d Reduce secondary index memory usage 2020-12-21 21:32:50 +08:00
.buildkite Don't reuse BPF target build artifacts 2020-10-26 12:01:38 -07:00
.cache/fontconfig Update development docs (#13661) 2020-11-18 09:27:11 +00:00
.github Github issues with 1 year of inactivity are now marked stale, and will be closed 7 days later. 2020-09-15 17:51:06 -07:00
.travis Update channel_restriction.sh 2020-10-04 10:18:42 -06:00
account-decoder Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
accounts-bench Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
banking-bench Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
banks-client Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
banks-interface Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
banks-server Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
bench-exchange Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
bench-streamer Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
bench-tps Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
ci Revert "Ignore RUSTSEC-2020-0077 until next 1.4 release" 2020-12-17 03:00:18 +00:00
clap-utils Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
cli Improved Transaction Forwarding (bp #13944) (#14194) 2020-12-17 18:13:41 -07:00
cli-config Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
cli-output Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
client Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
core Use get_filtered_spl_token_accounts_by_owner for get_program_accounts if applicable 2020-12-20 21:35:42 +08:00
crate-features Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
docs Terminology fixes (#14112) (#14114) 2020-12-14 21:15:12 +00:00
dos Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
download-utils Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
explorer Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
faucet Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
frozen-abi Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
genesis Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
gossip Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
install Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
keygen Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
ledger Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
ledger-tool Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
local-cluster Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
log-analyzer Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
logger Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
measure Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
merkle-tree Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
metrics Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
multinode-demo Add multinode-demo/setup-from-testnet.sh 2020-09-29 04:21:37 +00:00
net Add SSH key for buildkite-agent on achille (#13183) 2020-10-27 03:19:32 +00:00
net-shaper Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
net-utils Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
notifier Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
perf Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
poh-bench Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
program-test Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
programs Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
ramp-tps Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
rayon-threadlimit Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
remote-wallet Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
runtime Reduce secondary index memory usage 2020-12-21 21:32:50 +08:00
scripts Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
sdk Add mint index 2020-12-19 18:21:49 -08:00
stake-accounts Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
stake-monitor Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
stake-o-matic Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
storage-bigtable Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
storage-proto Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
streamer Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
sys-tuner Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
system-test Add wait for max stake command (#13532) (#14137) 2020-12-16 01:32:00 +00:00
tokens Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
transaction-status Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
upload-perf Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
validator Reject invalid --expected-shred-version (#14183) (#14201) 2020-12-18 19:19:32 +09:00
version Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
vote-signer Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
watchtower Update version to 1.4.19 (#14196) 2020-12-18 00:36:20 +00:00
web3.js Add stable program logging for BPF and native programs 2020-11-14 08:26:54 -08:00
.clippy.toml Fix all remaining clippy warnings 2018-07-12 09:40:40 -06:00
.codecov.yml Adjust settings 2018-12-20 12:32:25 -08:00
.gitignore Keep .DS_Store out of the tree 2020-08-04 16:34:45 -07:00
.mergify.yml Mergify backports: add v1.4, drop v1.1 2020-08-05 15:38:56 -06:00
.travis.yml Add PATH to GNU readlink 2020-11-07 11:28:28 -08:00
CONTRIBUTING.md Fix link (#11742) 2020-08-20 18:02:36 +00:00
Cargo.lock Stream RPC snapshot downloads (bp #14213) (#14214) 2020-12-20 01:25:16 +00:00
Cargo.toml Add cargo-test-bpf 2020-11-05 22:42:35 +00:00
LICENSE Change documentation introduction to indicate Foundation IP transfer (#10440) 2020-06-13 14:41:05 -07:00
README.md Make testnet section less ambiguous (#13504) (#13508) 2020-11-10 17:12:57 +00:00
RELEASE.md Fix typos (#12446) 2020-09-24 07:53:30 +00:00
cargo Support arbitrary toolchains with cargo wrapper script (#12926) 2020-10-15 20:26:35 +00:00
cargo-build-bpf Add cargo-test-bpf 2020-11-05 22:42:35 +00:00
cargo-test-bpf Add cargo-test-bpf 2020-11-05 22:42:35 +00:00
fetch-perf-libs.sh Take v0.19.3 of perf libs which improves sigverify perf 2x (#11894) 2020-08-28 12:34:25 -07:00
fetch-spl.sh Add SPL Feature Proposal program (#13683) 2020-11-19 23:04:38 +00:00
run.sh run.sh: Use default client keypair for the faucet (bp #13614) (#13618) 2020-11-17 02:23:01 +00:00
test-abi.sh Separate the "program" feature of `solana-sdk` into a new crate called `solana-program` (bp #12989) (#13131) 2020-10-24 17:25:22 +00:00

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

Please sure you are always using the latest stable rust version by running:

$ rustup update

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

$ sudo apt-get update
$ sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang

2. Download the source code.

$ git clone https://github.com/solana-labs/solana.git
$ cd solana

3. Build.

$ cargo build

4. Run a minimal local cluster.

$ ./run.sh

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 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!

Disclaimer

All claims, content, designs, algorithms, estimates, roadmaps, specifications, and performance measurements described in this project are done with the author's best effort. It is up to the reader to check and validate their accuracy and truthfulness. Furthermore nothing in this project constitutes a solicitation for investment.