Compare commits

...

23 Commits

Author SHA1 Message Date
dc60c72c2d Disable |solana-install| check for edge/beta testnets (#4565)
The release tarball URL changes for these testnets, which causes the
normal |solana-install| check to fail and the testnet is unnecessarily
rebooted.
2019-06-05 15:31:33 -07:00
e59c74562f Be explicit about return status 2019-06-05 14:11:03 -07:00
eb4ce8e3b2 shift 2019-06-05 12:07:34 -07:00
e2a050f77d Avoid sudo in tune-system.sh unless requested by the user (#4556) (#4557)
automerge
2019-06-05 09:38:43 -07:00
74b97166a9 Sanity check that runs on the blockstreamer node now checks that node instead of the bootstrap leader 2019-06-05 07:53:04 -07:00
b13d5c3264 Wait for crate to be locatable on crates.io after uploading (#4526) (#4550)
automerge
2019-06-04 21:27:36 -07:00
72a44c58d9 Increment cargo tomls and lock to 0.15.2 (#4499) 2019-05-31 12:04:01 -06:00
f6e804b0a1 minor update 2019-05-31 07:37:19 -07:00
827e794b6f Fix clear-config.sh 2019-05-30 15:30:35 -07:00
d916ffeba5 publish-crate fixups 2019-05-30 15:14:33 -07:00
dd1ed323e7 v0.15: cherrypick crates.io-related fixes from master (#4486)
* Remove runtime dependency on storage (#4480)

* Break noop_program -> runtime dependency (#4481)

* Clean up crates.io publishing (#4478)

* Clean up crates.io publishing

* Cargo.lock
2019-05-30 13:40:42 -07:00
491f82bbcd Fix stable metrics dashboard for current channel use (#4483) (#4485) 2019-05-30 13:21:07 -06:00
c486d1af8c Update cargo.toml and testnet participation doc for 0.15.0 (#4465) 2019-05-28 21:58:28 -06:00
b4adb1c266 Cherry pick fix for freeze (#4459)
* check freeze before updating slot_hashes (#4448)

* check freeze before updating slot_hashes

* fixup

* add more information to dropped vote warning (#4449)

* add more information to dropped vote warning

* fixup
2019-05-28 20:35:54 -06:00
b9b541441b update book with passive staking (#4451) (#4455)
* update book with passive staking (#4451)

* undelete votestate etc
2019-05-28 16:01:53 -07:00
e510d4e272 Drop influxcloud (#4461) 2019-05-28 15:34:36 -07:00
9341e64ec7 Lock down blockexplorer version (#4462) 2019-05-28 15:26:53 -07:00
d934f94e05 Add commented correct future test lines 2019-05-28 09:59:07 -06:00
59dc123fa8 Add test indicating need for credit-only account handling 2019-05-28 09:58:57 -06:00
0faea87c84 Revert --retry-on-http-error usage, Travis CI's wget doesn't recognize it 2019-05-27 19:34:46 -07:00
19137ce3f4 Bump logging level of validator procsesing errors (#4444)
automerge
2019-05-27 15:36:35 -07:00
8bdeb2d1ed Use nohup and sleep a little to improve stability when launching a node 2019-05-27 14:00:24 -07:00
d29a45266b data_dir -> data-dir 2019-05-27 07:32:29 -07:00
75 changed files with 863 additions and 614 deletions

413
Cargo.lock generated
View File

@ -2167,7 +2167,7 @@ dependencies = [
[[package]] [[package]]
name = "solana" name = "solana"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2198,26 +2198,26 @@ dependencies = [
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-budget-api 0.15.0", "solana-budget-api 0.15.2",
"solana-budget-program 0.15.0", "solana-budget-program 0.15.2",
"solana-client 0.15.0", "solana-client 0.15.2",
"solana-config-program 0.15.0", "solana-config-program 0.15.2",
"solana-drone 0.15.0", "solana-drone 0.15.2",
"solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-exchange-program 0.15.0", "solana-exchange-program 0.15.2",
"solana-kvstore 0.15.0", "solana-kvstore 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-stake-api 0.15.0", "solana-stake-api 0.15.2",
"solana-stake-program 0.15.0", "solana-stake-program 0.15.2",
"solana-storage-api 0.15.0", "solana-storage-api 0.15.2",
"solana-storage-program 0.15.0", "solana-storage-program 0.15.2",
"solana-vote-api 0.15.0", "solana-vote-api 0.15.2",
"solana-vote-program 0.15.0", "solana-vote-program 0.15.2",
"solana-vote-signer 0.15.0", "solana-vote-signer 0.15.2",
"sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2226,7 +2226,7 @@ dependencies = [
[[package]] [[package]]
name = "solana-bench-exchange" name = "solana-bench-exchange"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2241,80 +2241,80 @@ dependencies = [
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-client 0.15.0", "solana-client 0.15.2",
"solana-drone 0.15.0", "solana-drone 0.15.2",
"solana-exchange-api 0.15.0", "solana-exchange-api 0.15.2",
"solana-exchange-program 0.15.0", "solana-exchange-program 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", "ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-bench-streamer" name = "solana-bench-streamer"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
] ]
[[package]] [[package]]
name = "solana-bench-tps" name = "solana-bench-tps"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-client 0.15.0", "solana-client 0.15.2",
"solana-drone 0.15.0", "solana-drone 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-bpf-programs" name = "solana-bpf-programs"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)", "elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpfloader 0.15.0", "solana-bpfloader 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-bpfloader" name = "solana-bpfloader"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-budget-api" name = "solana-budget-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2323,23 +2323,23 @@ dependencies = [
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-budget-program" name = "solana-budget-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-budget-api 0.15.0", "solana-budget-api 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-client" name = "solana-client"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2350,37 +2350,37 @@ dependencies = [
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-config-api" name = "solana-config-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-config-program" name = "solana-config-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-config-api 0.15.0", "solana-config-api 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-drone" name = "solana-drone"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2389,9 +2389,9 @@ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@ -2410,77 +2410,77 @@ dependencies = [
[[package]] [[package]]
name = "solana-exchange-api" name = "solana-exchange-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-exchange-program" name = "solana-exchange-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-exchange-api 0.15.0", "solana-exchange-api 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-failure-program" name = "solana-failure-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-genesis" name = "solana-genesis"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hashbrown 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "hashbrown 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-budget-api 0.15.0", "solana-budget-api 0.15.2",
"solana-budget-program 0.15.0", "solana-budget-program 0.15.2",
"solana-config-api 0.15.0", "solana-config-api 0.15.2",
"solana-config-program 0.15.0", "solana-config-program 0.15.2",
"solana-exchange-api 0.15.0", "solana-exchange-api 0.15.2",
"solana-exchange-program 0.15.0", "solana-exchange-program 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-stake-api 0.15.0", "solana-stake-api 0.15.2",
"solana-stake-program 0.15.0", "solana-stake-program 0.15.2",
"solana-storage-api 0.15.0", "solana-storage-api 0.15.2",
"solana-storage-program 0.15.0", "solana-storage-program 0.15.2",
"solana-token-api 0.15.0", "solana-token-api 0.15.2",
"solana-token-program 0.15.0", "solana-token-program 0.15.2",
"solana-vote-api 0.15.0", "solana-vote-api 0.15.2",
"solana-vote-program 0.15.0", "solana-vote-program 0.15.2",
] ]
[[package]] [[package]]
name = "solana-gossip" name = "solana-gossip"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-client 0.15.0", "solana-client 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-install" name = "solana-install"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2497,10 +2497,10 @@ dependencies = [
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-client 0.15.0", "solana-client 0.15.2",
"solana-config-api 0.15.0", "solana-config-api 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2508,16 +2508,16 @@ dependencies = [
[[package]] [[package]]
name = "solana-keygen" name = "solana-keygen"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", "dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-kvstore" name = "solana-kvstore"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2532,27 +2532,27 @@ dependencies = [
[[package]] [[package]]
name = "solana-ledger-tool" name = "solana-ledger-tool"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", "assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-logger" name = "solana-logger"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-metrics" name = "solana-metrics"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
"influx_db_client 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "influx_db_client 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2560,13 +2560,13 @@ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-netutil" name = "solana-netutil"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2574,34 +2574,33 @@ dependencies = [
"nix 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", "nix 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "solana-noop-program" name = "solana-noop-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-runtime 0.15.0", "solana-sdk 0.15.2",
"solana-sdk 0.15.0",
] ]
[[package]] [[package]]
name = "solana-replicator" name = "solana-replicator"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-runtime" name = "solana-runtime"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2617,21 +2616,19 @@ dependencies = [
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-noop-program 0.15.0", "solana-noop-program 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-stake-api 0.15.0", "solana-stake-api 0.15.2",
"solana-stake-program 0.15.0", "solana-stake-program 0.15.2",
"solana-storage-api 0.15.0", "solana-vote-api 0.15.2",
"solana-storage-program 0.15.0", "solana-vote-program 0.15.2",
"solana-vote-api 0.15.0",
"solana-vote-program 0.15.0",
] ]
[[package]] [[package]]
name = "solana-sdk" name = "solana-sdk"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2655,55 +2652,55 @@ dependencies = [
[[package]] [[package]]
name = "solana-stake-api" name = "solana-stake-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-vote-api 0.15.0", "solana-vote-api 0.15.2",
] ]
[[package]] [[package]]
name = "solana-stake-program" name = "solana-stake-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-stake-api 0.15.0", "solana-stake-api 0.15.2",
] ]
[[package]] [[package]]
name = "solana-storage-api" name = "solana-storage-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-storage-program" name = "solana-storage-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-storage-api 0.15.0", "solana-storage-api 0.15.2",
] ]
[[package]] [[package]]
name = "solana-token-api" name = "solana-token-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2711,73 +2708,73 @@ dependencies = [
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-token-program" name = "solana-token-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-token-api 0.15.0", "solana-token-api 0.15.2",
] ]
[[package]] [[package]]
name = "solana-upload-perf" name = "solana-upload-perf"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
] ]
[[package]] [[package]]
name = "solana-validator" name = "solana-validator"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-drone 0.15.0", "solana-drone 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-runtime 0.15.0", "solana-runtime 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-vote-api 0.15.0", "solana-vote-api 0.15.2",
"solana-vote-signer 0.15.0", "solana-vote-signer 0.15.2",
] ]
[[package]] [[package]]
name = "solana-vote-api" name = "solana-vote-api"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-vote-program" name = "solana-vote-program"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-vote-api 0.15.0", "solana-vote-api 0.15.2",
] ]
[[package]] [[package]]
name = "solana-vote-signer" name = "solana-vote-signer"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2787,13 +2784,13 @@ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-metrics 0.15.0", "solana-metrics 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
] ]
[[package]] [[package]]
name = "solana-wallet" name = "solana-wallet"
version = "0.15.0" version = "0.15.2"
dependencies = [ dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
@ -2803,18 +2800,18 @@ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.15.0", "solana 0.15.2",
"solana-budget-api 0.15.0", "solana-budget-api 0.15.2",
"solana-budget-program 0.15.0", "solana-budget-program 0.15.2",
"solana-client 0.15.0", "solana-client 0.15.2",
"solana-drone 0.15.0", "solana-drone 0.15.2",
"solana-logger 0.15.0", "solana-logger 0.15.2",
"solana-netutil 0.15.0", "solana-netutil 0.15.2",
"solana-sdk 0.15.0", "solana-sdk 0.15.2",
"solana-stake-api 0.15.0", "solana-stake-api 0.15.2",
"solana-storage-api 0.15.0", "solana-storage-api 0.15.2",
"solana-vote-api 0.15.0", "solana-vote-api 0.15.2",
"solana-vote-signer 0.15.0", "solana-vote-signer 0.15.2",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
] ]

View File

@ -2,10 +2,11 @@
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-bench-exchange" name = "solana-bench-exchange"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
publish = false
[dependencies] [dependencies]
bs58 = "0.2.0" bs58 = "0.2.0"
@ -22,16 +23,16 @@ serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
serde_json = "1.0.38" serde_json = "1.0.38"
# solana-runtime = { path = "../solana/runtime"} # solana-runtime = { path = "../solana/runtime"}
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-client = { path = "../client", version = "0.15.0" } solana-client = { path = "../client", version = "0.15.2" }
solana-drone = { path = "../drone", version = "0.15.0" } solana-drone = { path = "../drone", version = "0.15.2" }
solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.0" } solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.2" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" } solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-runtime = { path = "../runtime", version = "0.15.0" } solana-runtime = { path = "../runtime", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
ws = "0.8.1" ws = "0.8.1"
untrusted = "0.6.2" untrusted = "0.6.2"

View File

@ -2,16 +2,16 @@
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-bench-streamer" name = "solana-bench-streamer"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
[dependencies] [dependencies]
clap = "2.33.0" clap = "2.33.0"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
[features] [features]
cuda = ["solana/cuda"] cuda = ["solana/cuda"]

View File

@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-bench-tps" name = "solana-bench-tps"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -12,14 +12,14 @@ clap = "2.33.0"
log = "0.4.6" log = "0.4.6"
rayon = "1.0.3" rayon = "1.0.3"
serde_json = "1.0.39" serde_json = "1.0.39"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-client = { path = "../client", version = "0.15.0" } solana-client = { path = "../client", version = "0.15.2" }
solana-drone = { path = "../drone", version = "0.15.0" } solana-drone = { path = "../drone", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-runtime = { path = "../runtime", version = "0.15.0" } solana-runtime = { path = "../runtime", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
[features] [features]
cuda = ["solana/cuda"] cuda = ["solana/cuda"]

View File

@ -1,7 +1,8 @@
BOB_SRCS=$(wildcard art/*.bob) BOB_SRCS=$(wildcard art/*.bob)
MSC_SRCS=$(wildcard art/*.msc)
MD_SRCS=$(wildcard src/*.md) MD_SRCS=$(wildcard src/*.md)
SVG_IMGS=$(BOB_SRCS:art/%.bob=src/img/%.svg) SVG_IMGS=$(BOB_SRCS:art/%.bob=src/img/%.svg) $(MSC_SRCS:art/%.msc=src/img/%.svg)
all: html/index.html all: html/index.html
@ -17,6 +18,10 @@ src/img/%.svg: art/%.bob
@mkdir -p $(@D) @mkdir -p $(@D)
svgbob < $< > $@ svgbob < $< > $@
src/img/%.svg: art/%.msc
@mkdir -p $(@D)
mscgen -T svg -i $< -o $@
src/%.md: %.md src/%.md: %.md
@mkdir -p $(@D) @mkdir -p $(@D)
@cp $< $@ @cp $< $@

View File

@ -19,7 +19,7 @@
- [Data Plane Fanout](data-plane-fanout.md) - [Data Plane Fanout](data-plane-fanout.md)
- [Ledger Replication](ledger-replication.md) - [Ledger Replication](ledger-replication.md)
- [Secure Vote Signing](vote-signing.md) - [Secure Vote Signing](vote-signing.md)
- [Staking Delegation and Rewards](stake-delegation-and-rewards.md) - [Stake Delegation and Rewards](stake-delegation-and-rewards.md)
- [Performance Metrics](performance-metrics.md) - [Performance Metrics](performance-metrics.md)
- [Anatomy of a Validator](validator.md) - [Anatomy of a Validator](validator.md)
@ -39,7 +39,6 @@
- [Ledger Replication](ledger-replication-to-implement.md) - [Ledger Replication](ledger-replication-to-implement.md)
- [Secure Vote Signing](vote-signing-to-implement.md) - [Secure Vote Signing](vote-signing-to-implement.md)
- [Staking Rewards](staking-rewards.md) - [Staking Rewards](staking-rewards.md)
- [Passive Stake Delegation and Rewards](passive-stake-delegation-and-rewards.md)
- [Cluster Economics](ed_overview.md) - [Cluster Economics](ed_overview.md)
- [Validation-client Economics](ed_validation_client_economics.md) - [Validation-client Economics](ed_validation_client_economics.md)
- [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.md) - [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.md)
@ -67,3 +66,4 @@
- [Reliable Vote Transmission](reliable-vote-transmission.md) - [Reliable Vote Transmission](reliable-vote-transmission.md)
- [Persistent Account Storage](persistent-account-storage.md) - [Persistent Account Storage](persistent-account-storage.md)
- [Cluster Software Installation and Updates](installer.md) - [Cluster Software Installation and Updates](installer.md)
- [Passive Stake Delegation and Rewards](passive-stake-delegation-and-rewards.md)

View File

@ -1,68 +1,195 @@
# Stake Delegation and Rewards # Stake Delegation and Rewards
Stakers are rewarded for helping validate the ledger. They do it by delegating Stakers are rewarded for helping to validate the ledger. They do this by
their stake to fullnodes. Those fullnodes do the legwork and send votes to the delegating their stake to validator nodes. Those validators do the legwork of
stakers' staking accounts. The rest of the cluster uses those stake-weighted replaying the ledger and send votes to a per-node vote account to which stakers
votes to select a block when forks arise. Both the fullnode and staker need can delegate their stakes. The rest of the cluster uses those stake-weighted
some economic incentive to play their part. The fullnode needs to be votes to select a block when forks arise. Both the validator and staker need
compensated for its hardware and the staker needs to be compensated for risking some economic incentive to play their part. The validator needs to be
getting its stake slashed. The economics are covered in [staking compensated for its hardware and the staker needs to be compensated for the risk
of getting its stake slashed. The economics are covered in [staking
rewards](staking-rewards.md). This chapter, on the other hand, describes the rewards](staking-rewards.md). This chapter, on the other hand, describes the
underlying mechanics of its implementation. underlying mechanics of its implementation.
## Vote and Rewards accounts ## Basic Besign
The rewards process is split into two on-chain programs. The Vote program The general idea is that the validator owns a Vote account. The Vote account
solves the problem of making stakes slashable. The Rewards account acts as tracks validator votes, counts validator generated credits, and provides any
custodian of the rewards pool. It is responsible for paying out each staker additional validator specific state. The Vote account is not aware of any
once the staker proves to the Rewards program that it participated in stakes delegated to it and has no staking weight.
validating the ledger.
The Vote account contains the following state information: A separate Stake account (created by a staker) names a Vote account to which the
stake is delegated. Rewards generated are proportional to the amount of
lamports staked. The Stake account is owned by the staker only. Lamports
stored in this account are the stake.
* votes - The submitted votes. ## Passive Delegation
* `delegate_pubkey` - An identity that may operate with the weight of this Any number of Stake accounts can delegate to a single
account's stake. It is typically the identity of a fullnode, but may be any Vote account without an interactive action from the identity controlling
identity involved in stake-weighted computations. the Vote account or submitting votes to the account.
* `authorized_voter_pubkey` - Only this identity is authorized to submit votes. The total stake allocated to a Vote account can be calculated by the sum of
all the Stake accounts that have the Vote account pubkey as the
`StakeState::Delegate::voter_pubkey`.
* `credits` - The amount of unclaimed rewards. ## Vote and Stake accounts
* `root_slot` - The last slot to reach the full lockout commitment necessary The rewards process is split into two on-chain programs. The Vote program solves
for rewards. the problem of making stakes slashable. The Stake account acts as custodian of
the rewards pool, and provides passive delegation. The Stake program is
responsible for paying out each staker once the staker proves to the Stake
program that its delegate has participated in validating the ledger.
The Rewards program is stateless and pays out reward when a staker submits its ### VoteState
Vote account to the program. Claiming a reward requires a transaction that
includes the following instructions:
1. `RewardsInstruction::RedeemVoteCredits` VoteState is the current state of all the votes the validator has submitted to
2. `VoteInstruction::ClearCredits` the network. VoteState contains the following state information:
The Rewards program transfers lamports from the Rewards account to the Vote * votes - The submitted votes data structure.
account's public key. The Rewards program also ensures that the `ClearCredits`
instruction follows the `RedeemVoteCredits` instruction, such that a staker may * credits - The total number of rewards this vote program has generated over its
not claim rewards for the same work more than once. lifetime.
* root\_slot - The last slot to reach the full lockout commitment necessary for
rewards.
* commission - The commission taken by this VoteState for any rewards claimed by
staker's Stake accounts. This is the percentage ceiling of the reward.
* Account::lamports - The accumulated lamports from the commission. These do not
count as stakes.
* `authorized_vote_signer` - Only this identity is authorized to submit votes. This field can only modified by this identity.
### VoteInstruction::Initialize
* `account[0]` - RW - The VoteState
`VoteState::authorized_vote_signer` is initialized to `account[0]`
other VoteState members defaulted
### VoteInstruction::AuthorizeVoteSigner(Pubkey)
* `account[0]` - RW - The VoteState
`VoteState::authorized_vote_signer` is set to to `Pubkey`, instruction must by
signed by Pubkey
### VoteInstruction::Vote(Vec<Vote>)
* `account[0]` - RW - The VoteState
`VoteState::lockouts` and `VoteState::credits` are updated according to voting lockout rules see [Fork Selection](fork-selection.md)
### Delegating Stake * `account[1]` - RO - A list of some N most recent slots and their hashes for the vote to be verified against.
`VoteInstruction::DelegateStake` allows the staker to choose a fullnode to
validate the ledger on its behalf. By being a delegate, the fullnode is
entitled to collect transaction fees when its is leader. The larger the stake,
the more often the fullnode will be able to collect those fees.
### Authorizing a Vote Signer ### StakeState
A StakeState takes one of two forms, StakeState::Delegate and StakeState::MiningPool.
### StakeState::Delegate
StakeState is the current delegation preference of the **staker**. StakeState
contains the following state information:
* Account::lamports - The staked lamports.
* `voter_pubkey` - The pubkey of the VoteState instance the lamports are
delegated to.
* `credits_observed` - The total credits claimed over the lifetime of the
program.
### StakeState::MiningPool
There are two approaches to the mining pool. The bank could allow the
StakeState program to bypass the token balance check, or a program representing
the mining pool could run on the network. To avoid a single network wide lock,
the pool can be split into several mining pools. This design focuses on using
StakeState::MiningPool instances as the cluster wide mining pools.
* 256 StakeState::MiningPool are initialized, each with 1/256 number of mining pool
tokens stored as `Account::lamports`.
The stakes and the MiningPool are accounts that are owned by the same `Stake`
program.
### StakeInstruction::Initialize
* `account[0]` - RW - The StakeState::Delegate instance.
`StakeState::Delegate::credits_observed` is initialized to `VoteState::credits`.
`StakeState::Delegate::voter_pubkey` is initialized to `account[1]`
* `account[1]` - R - The VoteState instance.
### StakeInstruction::RedeemVoteCredits
The Staker or the owner of the Stake account sends a transaction with this
instruction to claim rewards.
The Vote account and the Stake account pair maintain a lifetime counter
of total rewards generated and claimed. When claiming rewards, the total lamports
deposited into the Stake account and as validator commission is proportional to
`VoteState::credits - StakeState::credits_observed`.
* `account[0]` - RW - The StakeState::MiningPool instance that will fulfill the
reward.
* `account[1]` - RW - The StakeState::Delegate instance that is redeeming votes
credits.
* `account[2]` - R - The VoteState instance, must be the same as
`StakeState::voter_pubkey`
Reward is paid out for the difference between `VoteState::credits` to
`StakeState::Delgate.credits_observed`, and `credits_observed` is updated to
`VoteState::credits`. The commission is deposited into the Vote account token
balance, and the reward is deposited to the Stake account token balance.
The total lamports paid is a percentage-rate of the lamports staked muiltplied by
the ratio of rewards being redeemed to rewards that could have been generated
during the rate period.
Any random MiningPool can be used to redeem the credits.
```rust,ignore
let credits_to_claim = vote_state.credits - stake_state.credits_observed;
stake_state.credits_observed = vote_state.credits;
```
`credits_to_claim` is used to compute the reward and commission, and
`StakeState::Delegate::credits_observed` is updated to the latest
`VoteState::credits` value.
## Collecting network fees into the MiningPool
At the end of the block, before the bank is frozen, but after it processed all
the transactions for the block, a virtual instruction is executed to collect
the transaction fees.
* A portion of the fees are deposited into the leader's account.
* A portion of the fees are deposited into the smallest StakeState::MiningPool
account.
## Authorizing a Vote Signer
`VoteInstruction::AuthorizeVoter` allows a staker to choose a signing service `VoteInstruction::AuthorizeVoter` allows a staker to choose a signing service
for its votes. That service is responsible for ensuring the vote won't cause for its votes. That service is responsible for ensuring the vote won't cause
the staker to be slashed. the staker to be slashed.
## Limitations ## Benefits of the design
Many stakers may delegate their stakes to the same fullnode. The fullnode must * Single vote for all the stakers.
send a separate vote to each staking account. If there are far more stakers
than fullnodes, that's a lot of network traffic. An alternative design might * Clearing of the credit variable is not necessary for claiming rewards.
have fullnodes submit each vote to just one account and then have each staker
submit that account along with their own to collect its reward. * Each delegated stake can claim its rewards independently.
* Commission for the work is deposited when a reward is claimed by the delegated
stake.
This proposal would benefit from the `read-only` accounts proposal to allow for
many rewards to be claimed concurrently.
## Example Callflow
<img alt="Passive Staking Callflow" src="img/passive-staking-callflow.svg" class="center"/>

View File

@ -1,8 +1,8 @@
# Staking Rewards # Staking Rewards
Initial Proof of Stake (PoS) (i.e. using in-protocol asset, SOL, to provide A Proof of Stake (PoS), (i.e. using in-protocol asset, SOL, to provide
secure consensus) design ideas outlined here. Solana will implement a proof of secure consensus) design is outlined here. Solana implements a proof of
stake reward/security scheme for node validators in the cluster. The purpose is stake reward/security scheme for validator nodes in the cluster. The purpose is
threefold: threefold:
- Align validator incentives with that of the greater cluster through - Align validator incentives with that of the greater cluster through
@ -64,7 +64,7 @@ capital-at-risk to prevent a logical/optimal strategy of multiple chain voting.
We intend to implement slashing rules which, if broken, result some amount of We intend to implement slashing rules which, if broken, result some amount of
the offending validator's deposited stake to be removed from circulation. Given the offending validator's deposited stake to be removed from circulation. Given
the ordering properties of the PoH data structure, we believe we can simplify the ordering properties of the PoH data structure, we believe we can simplify
our slashing rules to the level of a voting lockout time assigned per vote. our slashing rules to the level of a voting lockout time assigned per vote.
I.e. Each vote has an associated lockout time (PoH duration) that represents a I.e. Each vote has an associated lockout time (PoH duration) that represents a
duration by any additional vote from that validator must be in a PoH that duration by any additional vote from that validator must be in a PoH that
@ -110,7 +110,7 @@ in a slashable amount as a function of either:
1. the fraction of validators, out of the total validator pool, that were also 1. the fraction of validators, out of the total validator pool, that were also
slashed during the same time period (ala Casper) slashed during the same time period (ala Casper)
2. the amount of time since the vote was cast (e.g. a linearly increasing % of 2. the amount of time since the vote was cast (e.g. a linearly increasing % of
total deposited as slashable amount over time), or both. total deposited as slashable amount over time), or both.
This is an area currently under exploration This is an area currently under exploration

View File

@ -32,7 +32,7 @@ traversal issues. A cloud-hosted machine works best. **Ensure that IP ports
Prebuilt binaries are available for Linux x86_64 (Ubuntu 18.04 recommended). Prebuilt binaries are available for Linux x86_64 (Ubuntu 18.04 recommended).
MacOS or WSL users may build from source. MacOS or WSL users may build from source.
For a performance testnet with many transactions we have some preliminary recomended setups: For a performance testnet with many transactions we have some preliminary recommended setups:
| | Low end | Medium end | High end | Notes | | | Low end | Medium end | High end | Notes |
| --- | ---------|------------|----------| -- | | --- | ---------|------------|----------| -- |
@ -67,7 +67,7 @@ The `solana-install` tool can be used to easily install and upgrade the cluster
software on Linux x86_64 systems. software on Linux x86_64 systems.
```bash ```bash
$ export SOLANA_RELEASE=v0.14.2 # skip this line to install the latest release $ export SOLANA_RELEASE=v0.15.0 # skip this line to install the latest release
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.14.0/install/solana-install-init.sh | sh -s $ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.14.0/install/solana-install-init.sh | sh -s
``` ```
@ -176,7 +176,7 @@ $ solana-gossip --entrypoint testnet.solana.com:8001 spy
Provide the **vote pubkey** to the `solana-wallet show-vote-account` command to view Provide the **vote pubkey** to the `solana-wallet show-vote-account` command to view
the recent voting activity from your validator: the recent voting activity from your validator:
```bash ```bash
$ solana-wallet -n testnet.solana.com show-vote-account 2ozWvfaXQd1X6uKh8jERoRGApDqSqcEy6fF1oN13LL2G $ solana-wallet show-vote-account 2ozWvfaXQd1X6uKh8jERoRGApDqSqcEy6fF1oN13LL2G
``` ```
The vote pubkey for the validator can also be found by running: The vote pubkey for the validator can also be found by running:

View File

@ -0,0 +1,65 @@
#!/usr/bin/env python
#
# This script figures the order in which workspace crates must be published to
# crates.io. Along the way it also ensures there are no circular dependencies
# that would cause a |cargo publish| to fail.
#
# On success an ordered list of Cargo.toml files is written to stdout
#
import os
import json
import subprocess
import sys;
def load_metadata():
return json.loads(subprocess.Popen(
'cargo metadata --no-deps --format-version=1',
shell=True, stdout=subprocess.PIPE).communicate()[0])
def get_packages():
metadata = load_metadata()
manifest_path = dict()
# Build dictionary of packages and their immediate solana-only dependencies
dependency_graph = dict()
for pkg in metadata['packages']:
manifest_path[pkg['name']] = pkg['manifest_path'];
dependency_graph[pkg['name']] = [x['name'] for x in pkg['dependencies'] if x['name'].startswith('solana')];
# Check for direct circular dependencies
circular_dependencies = set()
for package, dependencies in dependency_graph.items():
for dependency in dependencies:
if dependency in dependency_graph and package in dependency_graph[dependency]:
circular_dependencies.add(' <--> '.join(sorted([package, dependency])))
for dependency in circular_dependencies:
sys.stderr.write('Error: Circular dependency: {}\n'.format(dependency))
if len(circular_dependencies) != 0:
sys.exit(1)
# Order dependencies
sorted_dependency_graph = []
max_iterations = pow(len(dependency_graph),2)
while dependency_graph:
if max_iterations == 0:
# TODO: Be more helpful and find the actual cycle for the user
sys.exit('Error: Circular dependency suspected between these packages: {}\n'.format(' '.join(dependency_graph.keys())))
max_iterations -= 1
for package, dependencies in dependency_graph.items():
for dependency in dependencies:
if dependency in dependency_graph:
break
else:
del dependency_graph[package]
sorted_dependency_graph.append((package, manifest_path[package]))
return sorted_dependency_graph
for package, manifest in get_packages():
print os.path.relpath(manifest)

View File

@ -3,35 +3,13 @@ set -e
cd "$(dirname "$0")/.." cd "$(dirname "$0")/.."
source ci/semver_bash/semver.sh source ci/semver_bash/semver.sh
# List of internal crates to publish # shellcheck disable=SC2086
# is_crate_version_uploaded() {
# IMPORTANT: the order of the CRATES *is* significant. Crates must be published name=$1
# before the crates that depend on them. Note that this information is already version=$2
# expressed in the various Cargo.toml files, and ideally would not be duplicated curl https://crates.io/api/v1/crates/${name}/${version} | \
# here. (TODO: figure the crate ordering dynamically) python3 -c "import sys,json; print('version' in json.load(sys.stdin));"
# }
CRATES=(
kvstore
logger
netutil
sdk
keygen
metrics
client
drone
programs/{budget_api,config_api,stake_api,storage_api,token_api,vote_api,exchange_api}
programs/{vote_program,budget_program,bpf_loader,config_program,exchange_program,failure_program}
programs/{noop_program,stake_program,storage_program,token_program}
runtime
vote-signer
core
validator
genesis
gossip
ledger-tool
wallet
install
)
# Only package/publish if this is a tagged release # Only package/publish if this is a tagged release
[[ -n $TRIGGERED_BUILDKITE_TAG ]] || { [[ -n $TRIGGERED_BUILDKITE_TAG ]] || {
@ -49,25 +27,37 @@ expectedCrateVersion="$MAJOR.$MINOR.$PATCH$SPECIAL"
cargoCommand="cargo publish --token $CRATES_IO_TOKEN" cargoCommand="cargo publish --token $CRATES_IO_TOKEN"
for crate in "${CRATES[@]}"; do Cargo_tomls=$(ci/order-crates-for-publishing.py)
if [[ ! -r $crate/Cargo.toml ]]; then
echo "Error: $crate/Cargo.toml does not exist" for Cargo_toml in $Cargo_tomls; do
exit 1 echo "-- $Cargo_toml"
fi grep -q "^version = \"$expectedCrateVersion\"$" "$Cargo_toml" || {
echo "-- $crate" echo "Error: $Cargo_toml version is not $expectedCrateVersion"
grep -q "^version = \"$expectedCrateVersion\"$" "$crate"/Cargo.toml || {
echo "Error: $crate/Cargo.toml version is not $expectedCrateVersion"
exit 1 exit 1
} }
( (
set -x set -x
crate=$(dirname "$Cargo_toml")
# TODO: the rocksdb package does not build with the stock rust docker image, # TODO: the rocksdb package does not build with the stock rust docker image,
# so use the solana rust docker image until this is resolved upstream # so use the solana rust docker image until this is resolved upstream
source ci/rust-version.sh source ci/rust-version.sh
ci/docker-run.sh "$rust_stable_docker_image" bash -exc "cd $crate; $cargoCommand" ci/docker-run.sh "$rust_stable_docker_image" bash -exc "cd $crate; $cargoCommand"
#ci/docker-run.sh rust bash -exc "cd $crate; $cargoCommand" ) || true # <-- Don't fail. We want to be able to retry the job in cases when a publish fails halfway due to network/cloud issues
)
# shellcheck disable=SC2086
crate_name=$(grep -m 1 '^name = ' $Cargo_toml | cut -f 3 -d ' ' | tr -d \")
numRetries=30
for ((i = 1 ; i <= numRetries ; i++)); do
echo "Attempt ${i} of ${numRetries}"
# shellcheck disable=SC2086
if [[ $(is_crate_version_uploaded $crate_name $expectedCrateVersion) = True ]] ; then
echo "Found ${crate_name} version ${expectedCrateVersion} on crates.io"
break
fi
echo "Did not find ${crate_name} version ${expectedCrateVersion} on crates.io. Sleeping for 2 seconds."
sleep 2
done
done done
exit 0 exit 0

View File

@ -45,7 +45,9 @@ beta)
CHANNEL_BRANCH=$BETA_CHANNEL CHANNEL_BRANCH=$BETA_CHANNEL
;; ;;
stable) stable)
CHANNEL_BRANCH=$STABLE_CHANNEL # Set to whatever branch 'testnet' is on.
# TODO: Revert to $STABLE_CHANNEL for TdS
CHANNEL_BRANCH=$BETA_CHANNEL
;; ;;
*) *)
echo "Error: Invalid PUBLISH_CHANNEL=$PUBLISH_CHANNEL" echo "Error: Invalid PUBLISH_CHANNEL=$PUBLISH_CHANNEL"

View File

@ -88,7 +88,7 @@ EOF
set -e set -e
cd "$(dirname "$0")"/.. cd "$(dirname "$0")"/..
export USE_INSTALL=1 export USE_INSTALL=1
exec multinode-demo/clear-validator-config.sh "$@" exec multinode-demo/clear-config.sh "$@"
EOF EOF
chmod +x solana-release/bin/clear-config.sh chmod +x solana-release/bin/clear-config.sh

View File

@ -14,6 +14,7 @@ _ cargo +"$rust_stable" clippy --all -- --version
_ cargo +"$rust_stable" clippy --all -- --deny=warnings _ cargo +"$rust_stable" clippy --all -- --deny=warnings
_ cargo +"$rust_stable" audit _ cargo +"$rust_stable" audit
_ ci/nits.sh _ ci/nits.sh
_ ci/order-crates-for-publishing.py
_ book/build.sh _ book/build.sh
echo --- ok echo --- ok

View File

@ -311,6 +311,9 @@ if ! $skipStart; then
if [[ -n $NO_LEDGER_VERIFY ]]; then if [[ -n $NO_LEDGER_VERIFY ]]; then
args+=(-o noLedgerVerify) args+=(-o noLedgerVerify)
fi fi
if [[ -n $NO_INSTALL_CHECK ]]; then
args+=(-o noInstallCheck)
fi
if [[ -n $maybeHashesPerTick ]]; then if [[ -n $maybeHashesPerTick ]]; then
# shellcheck disable=SC2206 # Do not want to quote $maybeHashesPerTick # shellcheck disable=SC2206 # Do not want to quote $maybeHashesPerTick
args+=($maybeHashesPerTick) args+=($maybeHashesPerTick)

View File

@ -132,19 +132,16 @@ case $TESTNET in
testnet-edge|testnet-edge-perf) testnet-edge|testnet-edge-perf)
CHANNEL_OR_TAG=edge CHANNEL_OR_TAG=edge
CHANNEL_BRANCH=$EDGE_CHANNEL CHANNEL_BRANCH=$EDGE_CHANNEL
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
;; ;;
testnet-beta|testnet-beta-perf) testnet-beta|testnet-beta-perf)
CHANNEL_OR_TAG=beta CHANNEL_OR_TAG=beta
CHANNEL_BRANCH=$BETA_CHANNEL CHANNEL_BRANCH=$BETA_CHANNEL
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
;; ;;
testnet) testnet)
CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG
CHANNEL_BRANCH=$STABLE_CHANNEL CHANNEL_BRANCH=$STABLE_CHANNEL
: "${EC2_NODE_COUNT:=10}" : "${EC2_NODE_COUNT:=10}"
: "${GCE_NODE_COUNT:=}" : "${GCE_NODE_COUNT:=}"
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
;; ;;
testnet-perf) testnet-perf)
CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG
@ -155,7 +152,6 @@ testnet-demo)
CHANNEL_BRANCH=$BETA_CHANNEL CHANNEL_BRANCH=$BETA_CHANNEL
: "${GCE_NODE_COUNT:=150}" : "${GCE_NODE_COUNT:=150}"
: "${GCE_LOW_QUOTA_NODE_COUNT:=70}" : "${GCE_LOW_QUOTA_NODE_COUNT:=70}"
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
;; ;;
*) *)
echo "Error: Invalid TESTNET=$TESTNET" echo "Error: Invalid TESTNET=$TESTNET"
@ -216,6 +212,7 @@ sanity() {
testnet-edge) testnet-edge)
( (
set -x set -x
NO_INSTALL_CHECK=1 \
NO_LEDGER_VERIFY=1 \ NO_LEDGER_VERIFY=1 \
ci/testnet-sanity.sh edge-testnet-solana-com ec2 us-west-1a ci/testnet-sanity.sh edge-testnet-solana-com ec2 us-west-1a
) )
@ -232,6 +229,7 @@ sanity() {
testnet-beta) testnet-beta)
( (
set -x set -x
NO_INSTALL_CHECK=1 \
NO_LEDGER_VERIFY=1 \ NO_LEDGER_VERIFY=1 \
ci/testnet-sanity.sh beta-testnet-solana-com ec2 us-west-1a ci/testnet-sanity.sh beta-testnet-solana-com ec2 us-west-1a
) )

View File

@ -64,6 +64,7 @@ for zone in "$@"; do
${NO_LEDGER_VERIFY:+-o noLedgerVerify} \ ${NO_LEDGER_VERIFY:+-o noLedgerVerify} \
${NO_VALIDATOR_SANITY:+-o noValidatorSanity} \ ${NO_VALIDATOR_SANITY:+-o noValidatorSanity} \
${REJECT_EXTRA_NODES:+-o rejectExtraNodes} \ ${REJECT_EXTRA_NODES:+-o rejectExtraNodes} \
${NO_INSTALL_CHECK:+-o noInstallCheck} \
$zone || ok=false $zone || ok=false
net/net.sh logs net/net.sh logs

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-client" name = "solana-client"
version = "0.15.0" version = "0.15.2"
description = "Solana Client" description = "Solana Client"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -17,10 +17,10 @@ reqwest = "0.9.17"
serde = "1.0.89" serde = "1.0.89"
serde_derive = "1.0.91" serde_derive = "1.0.91"
serde_json = "1.0.39" serde_json = "1.0.39"
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
jsonrpc-core = "10.1.0" jsonrpc-core = "10.1.0"
jsonrpc-http-server = "10.1.0" jsonrpc-http-server = "10.1.0"
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana" name = "solana"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
documentation = "https://docs.rs/solana" documentation = "https://docs.rs/solana"
homepage = "https://solana.com/" homepage = "https://solana.com/"
readme = "../README.md" readme = "../README.md"
@ -47,26 +47,26 @@ rocksdb = "0.11.0"
serde = "1.0.89" serde = "1.0.89"
serde_derive = "1.0.91" serde_derive = "1.0.91"
serde_json = "1.0.39" serde_json = "1.0.39"
solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" } solana-budget-api = { path = "../programs/budget_api", version = "0.15.2" }
solana-budget-program = { path = "../programs/budget_program", version = "0.15.0" } solana-budget-program = { path = "../programs/budget_program", version = "0.15.2" }
solana-client = { path = "../client", version = "0.15.0" } solana-client = { path = "../client", version = "0.15.2" }
solana-drone = { path = "../drone", version = "0.15.0" } solana-drone = { path = "../drone", version = "0.15.2" }
solana-ed25519-dalek = "0.2.0" solana-ed25519-dalek = "0.2.0"
solana-kvstore = { path = "../kvstore", version = "0.15.0" , optional = true } solana-kvstore = { path = "../kvstore", version = "0.15.2" , optional = true }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-runtime = { path = "../runtime", version = "0.15.0" } solana-runtime = { path = "../runtime", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" } solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" } solana-stake-program = { path = "../programs/stake_program", version = "0.15.2" }
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" } solana-storage-api = { path = "../programs/storage_api", version = "0.15.2" }
solana-storage-program = { path = "../programs/storage_program", version = "0.15.0" } solana-storage-program = { path = "../programs/storage_program", version = "0.15.2" }
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" } solana-vote-program = { path = "../programs/vote_program", version = "0.15.2" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" } solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.2" }
solana-config-program = { path = "../programs/config_program", version = "0.15.0" } solana-config-program = { path = "../programs/config_program", version = "0.15.2" }
solana-vote-signer = { path = "../vote-signer", version = "0.15.0" } solana-vote-signer = { path = "../vote-signer", version = "0.15.2" }
sys-info = "0.5.6" sys-info = "0.5.6"
tokio = "0.1" tokio = "0.1"
tokio-codec = "0.1" tokio-codec = "0.1"

View File

@ -3,7 +3,7 @@ use crate::blocktree::Blocktree;
use crate::entry::{Entry, EntrySlice}; use crate::entry::{Entry, EntrySlice};
use crate::leader_schedule_cache::LeaderScheduleCache; use crate::leader_schedule_cache::LeaderScheduleCache;
use rayon::prelude::*; use rayon::prelude::*;
use solana_metrics::{datapoint, inc_new_counter_debug}; use solana_metrics::{datapoint, datapoint_error, inc_new_counter_debug};
use solana_runtime::bank::Bank; use solana_runtime::bank::Bank;
use solana_runtime::locked_accounts_results::LockedAccountsResults; use solana_runtime::locked_accounts_results::LockedAccountsResults;
use solana_sdk::genesis_block::GenesisBlock; use solana_sdk::genesis_block::GenesisBlock;
@ -45,7 +45,7 @@ fn par_execute_entries(
} }
if !Bank::can_commit(&r) { if !Bank::can_commit(&r) {
warn!("Unexpected validator error: {:?}, tx: {:?}", e, tx); warn!("Unexpected validator error: {:?}, tx: {:?}", e, tx);
datapoint!( datapoint_error!(
"validator_process_entry_error", "validator_process_entry_error",
("error", format!("error: {:?}, tx: {:?}", e, tx), String) ("error", format!("error: {:?}, tx: {:?}", e, tx), String)
); );

View File

@ -21,6 +21,7 @@ use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
use solana_sdk::transaction::Transaction; use solana_sdk::transaction::Transaction;
use solana_stake_api::stake_instruction; use solana_stake_api::stake_instruction;
use solana_storage_api::storage_instruction; use solana_storage_api::storage_instruction;
use solana_storage_program::genesis_block_util::GenesisBlockUtil;
use solana_vote_api::vote_instruction; use solana_vote_api::vote_instruction;
use solana_vote_api::vote_state::VoteState; use solana_vote_api::vote_state::VoteState;
use std::collections::HashMap; use std::collections::HashMap;
@ -124,12 +125,13 @@ impl LocalCluster {
mut genesis_block, mut genesis_block,
mint_keypair, mint_keypair,
voting_keypair, voting_keypair,
storage_keypair,
} = create_genesis_block_with_leader( } = create_genesis_block_with_leader(
config.cluster_lamports, config.cluster_lamports,
&leader_pubkey, &leader_pubkey,
config.node_stakes[0], config.node_stakes[0],
); );
let storage_keypair = Keypair::new();
genesis_block.add_storage_program(&storage_keypair.pubkey());
genesis_block.ticks_per_slot = config.ticks_per_slot; genesis_block.ticks_per_slot = config.ticks_per_slot;
genesis_block.slots_per_epoch = config.slots_per_epoch; genesis_block.slots_per_epoch = config.slots_per_epoch;
genesis_block.stakers_slot_offset = config.stakers_slot_offset; genesis_block.stakers_slot_offset = config.stakers_slot_offset;

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-drone" name = "solana-drone"
version = "0.15.0" version = "0.15.2"
description = "Solana Drone" description = "Solana Drone"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -20,9 +20,9 @@ clap = "2.33"
log = "0.4.2" log = "0.4.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
tokio = "0.1" tokio = "0.1"
tokio-codec = "0.1" tokio-codec = "0.1"

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-genesis" name = "solana-genesis"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -11,22 +11,22 @@ homepage = "https://solana.com/"
[dependencies] [dependencies]
clap = "2.33.0" clap = "2.33.0"
serde_json = "1.0.39" serde_json = "1.0.39"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" } solana-budget-api = { path = "../programs/budget_api", version = "0.15.2" }
solana-budget-program = { path = "../programs/budget_program", version = "0.15.0" } solana-budget-program = { path = "../programs/budget_program", version = "0.15.2" }
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" } solana-vote-program = { path = "../programs/vote_program", version = "0.15.2" }
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" } solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" } solana-stake-program = { path = "../programs/stake_program", version = "0.15.2" }
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" } solana-storage-api = { path = "../programs/storage_api", version = "0.15.2" }
solana-storage-program = { path = "../programs/storage_program", version = "0.15.0" } solana-storage-program = { path = "../programs/storage_program", version = "0.15.2" }
solana-token-api = { path = "../programs/token_api", version = "0.15.0" } solana-token-api = { path = "../programs/token_api", version = "0.15.2" }
solana-token-program = { path = "../programs/token_program", version = "0.15.0" } solana-token-program = { path = "../programs/token_program", version = "0.15.2" }
solana-config-api = { path = "../programs/config_api", version = "0.15.0" } solana-config-api = { path = "../programs/config_api", version = "0.15.2" }
solana-config-program = { path = "../programs/config_program", version = "0.15.0" } solana-config-program = { path = "../programs/config_program", version = "0.15.2" }
solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.0" } solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.2" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" } solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
hashbrown = "0.3.0" hashbrown = "0.3.0"

View File

@ -6,8 +6,6 @@ extern crate solana_stake_program;
#[macro_use] #[macro_use]
extern crate solana_budget_program; extern crate solana_budget_program;
#[macro_use] #[macro_use]
extern crate solana_storage_program;
#[macro_use]
extern crate solana_token_program; extern crate solana_token_program;
#[macro_use] #[macro_use]
extern crate solana_config_program; extern crate solana_config_program;
@ -25,7 +23,7 @@ use solana_sdk::signature::{read_keypair, KeypairUtil};
use solana_sdk::system_program; use solana_sdk::system_program;
use solana_sdk::timing; use solana_sdk::timing;
use solana_stake_api::stake_state; use solana_stake_api::stake_state;
use solana_storage_api::storage_contract; use solana_storage_program::genesis_block_util::GenesisBlockUtil;
use solana_vote_api::vote_state; use solana_vote_api::vote_state;
use std::error; use std::error;
use std::time::{Duration, Instant}; use std::time::{Duration, Instant};
@ -213,22 +211,18 @@ fn main() -> Result<(), Box<dyn error::Error>> {
bootstrap_leader_stake_lamports, bootstrap_leader_stake_lamports,
), ),
), ),
// storage account
(
bootstrap_storage_keypair.pubkey(),
storage_contract::create_validator_storage_account(1),
),
], ],
&[ &[
solana_vote_program!(), solana_vote_program!(),
solana_stake_program!(), solana_stake_program!(),
solana_budget_program!(), solana_budget_program!(),
solana_storage_program!(),
solana_token_program!(), solana_token_program!(),
solana_config_program!(), solana_config_program!(),
solana_exchange_program!(), solana_exchange_program!(),
], ],
); );
genesis_block.add_storage_program(&bootstrap_storage_keypair.pubkey());
genesis_block.fee_calculator.lamports_per_signature = genesis_block.fee_calculator.lamports_per_signature =
value_t_or_exit!(matches, "lamports_per_signature", u64); value_t_or_exit!(matches, "lamports_per_signature", u64);
genesis_block.ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64); genesis_block.ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64);

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-gossip" name = "solana-gossip"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -11,10 +11,10 @@ homepage = "https://solana.com/"
[dependencies] [dependencies]
clap = "2.33.0" clap = "2.33.0"
env_logger = "0.6.1" env_logger = "0.6.1"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-client = { path = "../client", version = "0.15.0" } solana-client = { path = "../client", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
[features] [features]
chacha = [] chacha = []

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-install" name = "solana-install"
description = "The solana cluster software installer" description = "The solana cluster software installer"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -28,10 +28,10 @@ ring = "0.13.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
serde_yaml = "0.8.9" serde_yaml = "0.8.9"
solana-client = { path = "../client", version = "0.15.0" } solana-client = { path = "../client", version = "0.15.2" }
solana-config-api = { path = "../programs/config_api", version = "0.15.0" } solana-config-api = { path = "../programs/config_api", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
tar = "0.4.26" tar = "0.4.26"
tempdir = "0.3.7" tempdir = "0.3.7"
url = "1.7.2" url = "1.7.2"

View File

@ -58,7 +58,7 @@ fn main() -> Result<(), String> {
.arg({ .arg({
let arg = Arg::with_name("data_dir") let arg = Arg::with_name("data_dir")
.short("d") .short("d")
.long("data_dir") .long("data-dir")
.value_name("PATH") .value_name("PATH")
.takes_value(true) .takes_value(true)
.required(true) .required(true)

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-keygen" name = "solana-keygen"
version = "0.15.0" version = "0.15.2"
description = "Solana key generation utility" description = "Solana key generation utility"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -15,7 +15,7 @@ erasure = []
[dependencies] [dependencies]
dirs = "1.0.5" dirs = "1.0.5"
clap = "2.33" clap = "2.33"
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
[[bin]] [[bin]]
name = "solana-keygen" name = "solana-keygen"

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-kvstore" name = "solana-kvstore"
description = "Embedded Key-Value store for solana" description = "Embedded Key-Value store for solana"
version = "0.15.0" version = "0.15.2"
homepage = "https://solana.com/" homepage = "https://solana.com/"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-ledger-tool" name = "solana-ledger-tool"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -11,10 +11,10 @@ homepage = "https://solana.com/"
[dependencies] [dependencies]
clap = "2.33.0" clap = "2.33.0"
serde_json = "1.0.39" serde_json = "1.0.39"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-runtime = { path = "../runtime", version = "0.15.0" } solana-runtime = { path = "../runtime", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
assert_cmd = "0.11" assert_cmd = "0.11"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-logger" name = "solana-logger"
version = "0.15.0" version = "0.15.2"
description = "Solana Logger" description = "Solana Logger"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-metrics" name = "solana-metrics"
version = "0.15.0" version = "0.15.2"
description = "Solana Metrics" description = "Solana Metrics"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -15,7 +15,7 @@ log = "0.4.2"
reqwest = "0.9.17" reqwest = "0.9.17"
lazy_static = "1.3.0" lazy_static = "1.3.0"
sys-info = "0.5.6" sys-info = "0.5.6"
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
rand = "0.6.5" rand = "0.6.5"

View File

@ -17,7 +17,6 @@ usage: $0 [-e] [-d] [-c] [username]
Creates a testnet dev metrics database Creates a testnet dev metrics database
username InfluxDB user with access to create a new database username InfluxDB user with access to create a new database
-c Use Influx Cloud instance
-d Delete the database instead of creating it -d Delete the database instead of creating it
-e Assume database already exists and SOLANA_METRICS_CONFIG is -e Assume database already exists and SOLANA_METRICS_CONFIG is
defined in the environment already defined in the environment already
@ -31,15 +30,12 @@ loadConfigFile
useEnv=false useEnv=false
delete=false delete=false
host="https://metrics.solana.com:8086" host="https://metrics.solana.com:8086"
while getopts "hcde" opt; do while getopts "hde" opt; do
case $opt in case $opt in
h|\?) h|\?)
usage usage
exit 0 exit 0
;; ;;
c)
host="https://clocktower-f1d56615.influxcloud.net:8086"
;;
d) d)
delete=true delete=true
;; ;;

View File

@ -58,6 +58,7 @@ Operate a configured testnet
-F - Discard validator nodes that didn't bootup successfully -F - Discard validator nodes that didn't bootup successfully
-o noLedgerVerify - Skip ledger verification -o noLedgerVerify - Skip ledger verification
-o noValidatorSanity - Skip fullnode sanity -o noValidatorSanity - Skip fullnode sanity
-o noInstallCheck - Skip solana-install sanity
-o rejectExtraNodes - Require the exact number of nodes -o rejectExtraNodes - Require the exact number of nodes
stop-specific options: stop-specific options:
@ -150,7 +151,7 @@ while getopts "h?T:t:o:f:rD:i:c:Fn:" opt "${shortArgs[@]}"; do
;; ;;
o) o)
case $OPTARG in case $OPTARG in
noLedgerVerify|noValidatorSanity|rejectExtraNodes) noLedgerVerify|noValidatorSanity|rejectExtraNodes|noInstallCheck)
sanityExtraArgs="$sanityExtraArgs -o $OPTARG" sanityExtraArgs="$sanityExtraArgs -o $OPTARG"
;; ;;
*) *)
@ -392,7 +393,7 @@ sanity() {
set -x set -x
# shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally # shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally
ssh "${sshOptions[@]}" "$bootstrapLeader" \ ssh "${sshOptions[@]}" "$bootstrapLeader" \
"./solana/net/remote/remote-sanity.sh $sanityExtraArgs \"$RUST_LOG\"" "./solana/net/remote/remote-sanity.sh $bootstrapLeader $sanityExtraArgs \"$RUST_LOG\""
) || ok=false ) || ok=false
$ok || exit 1 $ok || exit 1
@ -403,7 +404,7 @@ sanity() {
set -x set -x
# shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally # shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally
ssh "${sshOptions[@]}" "$blockstreamer" \ ssh "${sshOptions[@]}" "$blockstreamer" \
"./solana/net/remote/remote-sanity.sh $sanityExtraArgs -o noLedgerVerify -o noValidatorSanity \"$RUST_LOG\"" "./solana/net/remote/remote-sanity.sh $blockstreamer $sanityExtraArgs -o noLedgerVerify -o noValidatorSanity \"$RUST_LOG\""
) || ok=false ) || ok=false
$ok || exit 1 $ok || exit 1
fi fi

View File

@ -61,6 +61,7 @@ local|tar)
./fetch-perf-libs.sh ./fetch-perf-libs.sh
# shellcheck source=/dev/null # shellcheck source=/dev/null
source ./target/perf-libs/env.sh source ./target/perf-libs/env.sh
SUDO_OK=1 source scripts/tune-system.sh
( (
sudo scripts/oom-monitor.sh sudo scripts/oom-monitor.sh
@ -89,7 +90,8 @@ local|tar)
--gossip-port "$entrypointIp":8001 --gossip-port "$entrypointIp":8001
) )
./multinode-demo/validator.sh --bootstrap-leader "${args[@]}" > fullnode.log 2>&1 & nohup ./multinode-demo/validator.sh --bootstrap-leader "${args[@]}" > fullnode.log 2>&1 &
sleep 1
;; ;;
validator|blockstreamer) validator|blockstreamer)
net/scripts/rsync-retry.sh -vPrc "$entrypointIp":~/.cargo/bin/ ~/.cargo/bin/ net/scripts/rsync-retry.sh -vPrc "$entrypointIp":~/.cargo/bin/ ~/.cargo/bin/
@ -129,7 +131,7 @@ local|tar)
./multinode-demo/drone.sh > drone.log 2>&1 & ./multinode-demo/drone.sh > drone.log 2>&1 &
export BLOCKEXPLORER_GEOIP_WHITELIST=$PWD/net/config/geoip.yml export BLOCKEXPLORER_GEOIP_WHITELIST=$PWD/net/config/geoip.yml
npm install @solana/blockexplorer@1 npm install @solana/blockexplorer@1.8.12
npx solana-blockexplorer > blockexplorer.log 2>&1 & npx solana-blockexplorer > blockexplorer.log 2>&1 &
# Confirm the blockexplorer is accessible # Confirm the blockexplorer is accessible
@ -144,7 +146,8 @@ local|tar)
curl --head "$(curl ifconfig.io)" curl --head "$(curl ifconfig.io)"
fi fi
./multinode-demo/validator.sh "${args[@]}" > fullnode.log 2>&1 & nohup ./multinode-demo/validator.sh "${args[@]}" > fullnode.log 2>&1 &
sleep 1
;; ;;
*) *)
echo "Error: unknown node type: $nodeType" echo "Error: unknown node type: $nodeType"

View File

@ -6,6 +6,9 @@ set -e
cd "$(dirname "$0")"/../.. cd "$(dirname "$0")"/../..
sanityTargetIp="$1"
shift
deployMethod= deployMethod=
entrypointIp= entrypointIp=
numNodes= numNodes=
@ -23,6 +26,7 @@ missing() {
exit 1 exit 1
} }
[[ -n $sanityTargetIp ]] || missing sanityTargetIp
[[ -n $deployMethod ]] || missing deployMethod [[ -n $deployMethod ]] || missing deployMethod
[[ -n $entrypointIp ]] || missing entrypointIp [[ -n $entrypointIp ]] || missing entrypointIp
[[ -n $numNodes ]] || missing numNodes [[ -n $numNodes ]] || missing numNodes
@ -30,6 +34,7 @@ missing() {
ledgerVerify=true ledgerVerify=true
validatorSanity=true validatorSanity=true
installCheck=true
rejectExtraNodes=false rejectExtraNodes=false
while [[ $1 = -o ]]; do while [[ $1 = -o ]]; do
opt="$2" opt="$2"
@ -41,6 +46,9 @@ while [[ $1 = -o ]]; do
noValidatorSanity) noValidatorSanity)
validatorSanity=false validatorSanity=false
;; ;;
noInstallCheck)
installCheck=false
;;
rejectExtraNodes) rejectExtraNodes)
rejectExtraNodes=true rejectExtraNodes=true
;; ;;
@ -66,7 +74,7 @@ local|tar)
source target/perf-libs/env.sh source target/perf-libs/env.sh
fi fi
entrypointRsyncUrl="$entrypointIp:~/solana" entrypointRsyncUrl="$sanityTargetIp:~/solana"
solana_gossip=solana-gossip solana_gossip=solana-gossip
solana_install=solana-install solana_install=solana-install
@ -91,7 +99,7 @@ else
fi fi
fi fi
echo "+++ $entrypointIp: node count ($numSanityNodes expected)" echo "+++ $sanityTargetIp: node count ($numSanityNodes expected)"
( (
set -x set -x
$solana_keygen -o "$client_id" $solana_keygen -o "$client_id"
@ -101,26 +109,26 @@ echo "+++ $entrypointIp: node count ($numSanityNodes expected)"
nodeArg="num-nodes-exactly" nodeArg="num-nodes-exactly"
fi fi
timeout 2m $solana_gossip --entrypoint "$entrypointIp:8001" \ timeout 2m $solana_gossip --entrypoint "$sanityTargetIp:8001" \
spy --$nodeArg "$numSanityNodes" \ spy --$nodeArg "$numSanityNodes" \
) )
echo "--- RPC API: getTransactionCount" echo "--- $sanityTargetIp: RPC API: getTransactionCount"
( (
set -x set -x
curl --retry 5 --retry-delay 2 --retry-connrefused \ curl --retry 5 --retry-delay 2 --retry-connrefused \
-X POST -H 'Content-Type: application/json' \ -X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \ -d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \
http://"$entrypointIp":8899 http://"$sanityTargetIp":8899
) )
echo "--- $entrypointIp: wallet sanity" echo "--- $sanityTargetIp: wallet sanity"
( (
set -x set -x
scripts/wallet-sanity.sh --url http://"$entrypointIp":8899 scripts/wallet-sanity.sh --url http://"$sanityTargetIp":8899
) )
echo "--- $entrypointIp: verify ledger" echo "--- $sanityTargetIp: verify ledger"
if $ledgerVerify; then if $ledgerVerify; then
if [[ -d $ledger ]]; then if [[ -d $ledger ]]; then
( (
@ -140,13 +148,13 @@ else
fi fi
echo "--- $entrypointIp: validator sanity" echo "--- $sanityTargetIp: validator sanity"
if $validatorSanity; then if $validatorSanity; then
( (
set -x -o pipefail set -x -o pipefail
timeout 10s ./multinode-demo/validator-x.sh --stake 0 \ timeout 10s ./multinode-demo/validator-x.sh --stake 0 \
"$entrypointRsyncUrl" \ "$entrypointRsyncUrl" \
"$entrypointIp:8001" 2>&1 | tee validator-sanity.log "$sanityTargetIp:8001" 2>&1 | tee validator-sanity.log
) || { ) || {
exitcode=$? exitcode=$?
[[ $exitcode -eq 124 ]] || exit $exitcode [[ $exitcode -eq 124 ]] || exit $exitcode
@ -164,8 +172,8 @@ else
echo "Note: validator sanity disabled" echo "Note: validator sanity disabled"
fi fi
if [[ -r update_manifest_keypair.json ]]; then if $installCheck && [[ -r update_manifest_keypair.json ]]; then
echo "--- $entrypointIp: solana-install test" echo "--- $sanityTargetIp: solana-install test"
( (
set -x set -x
@ -174,7 +182,7 @@ if [[ -r update_manifest_keypair.json ]]; then
$solana_install init \ $solana_install init \
--no-modify-path \ --no-modify-path \
--data-dir install-data-dir \ --data-dir install-data-dir \
--url http://"$entrypointIp":8899 \ --url http://"$sanityTargetIp":8899 \
--pubkey "$update_manifest_pubkey" --pubkey "$update_manifest_pubkey"
$solana_install info $solana_install info

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-netutil" name = "solana-netutil"
version = "0.15.0" version = "0.15.2"
description = "Solana Network Utilities" description = "Solana Network Utilities"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -15,7 +15,7 @@ log = "0.4.2"
nix = "0.14.0" nix = "0.14.0"
rand = "0.6.1" rand = "0.6.1"
socket2 = "0.3.9" socket2 = "0.3.9"
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
tokio = "0.1" tokio = "0.1"
[lib] [lib]

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-bpf-programs" name = "solana-bpf-programs"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
documentation = "https://docs.rs/solana" documentation = "https://docs.rs/solana"
homepage = "https://solana.com/" homepage = "https://solana.com/"
readme = "README.md" readme = "README.md"
@ -22,10 +22,10 @@ bincode = "1.1.4"
byteorder = "1.3.1" byteorder = "1.3.1"
elf = "0.0.10" elf = "0.0.10"
solana_rbpf = "=0.1.12" solana_rbpf = "=0.1.12"
solana-bpfloader = { path = "../bpf_loader", version = "0.15.0" } solana-bpfloader = { path = "../bpf_loader", version = "0.15.2" }
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-runtime = { path = "../../runtime", version = "0.15.0" } solana-runtime = { path = "../../runtime", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[[bench]] [[bench]]
name = "bpf_loader" name = "bpf_loader"

View File

@ -3,7 +3,7 @@
[package] [package]
name = "solana-bpf-rust-alloc" name = "solana-bpf-rust-alloc"
version = "0.15.0" version = "0.15.2"
description = "Solana BPF alloc program written in Rust" description = "Solana BPF alloc program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -12,7 +12,7 @@ homepage = "https://solana.com/"
edition = "2018" edition = "2018"
[dependencies] [dependencies]
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.0" } solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.2" }
[workspace] [workspace]
members = [] members = []

View File

@ -3,7 +3,7 @@
[package] [package]
name = "solana-bpf-rust-iter" name = "solana-bpf-rust-iter"
version = "0.15.0" version = "0.15.2"
description = "Solana BPF iter program written in Rust" description = "Solana BPF iter program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -12,7 +12,7 @@ homepage = "https://solana.com/"
edition = "2018" edition = "2018"
[dependencies] [dependencies]
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.0" } solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.2" }
[workspace] [workspace]
members = [] members = []

View File

@ -3,7 +3,7 @@
[package] [package]
name = "solana-bpf-rust-noop" name = "solana-bpf-rust-noop"
version = "0.15.0" version = "0.15.2"
description = "Solana BPF noop program written in Rust" description = "Solana BPF noop program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -12,7 +12,7 @@ homepage = "https://solana.com/"
edition = "2018" edition = "2018"
[dependencies] [dependencies]
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.0" } solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.2" }
[workspace] [workspace]
members = [] members = []

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-bpfloader" name = "solana-bpfloader"
version = "0.15.0" version = "0.15.2"
description = "Solana BPF Loader" description = "Solana BPF Loader"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -15,8 +15,8 @@ libc = "0.2.55"
log = "0.4.2" log = "0.4.2"
solana_rbpf = "=0.1.12" solana_rbpf = "=0.1.12"
serde = "1.0.91" serde = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[lib] [lib]
name = "solana_bpf_loader" name = "solana_bpf_loader"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-budget-api" name = "solana-budget-api"
version = "0.15.0" version = "0.15.2"
description = "Solana Budget program API" description = "Solana Budget program API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -16,10 +16,10 @@ num-derive = "0.2"
num-traits = "0.2" num-traits = "0.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.15.0" } solana-runtime = { path = "../../runtime", version = "0.15.2" }
[lib] [lib]
name = "solana_budget_api" name = "solana_budget_api"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-budget-program" name = "solana-budget-program"
version = "0.15.0" version = "0.15.2"
description = "Solana budget program" description = "Solana budget program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-budget-api = { path = "../budget_api", version = "0.15.0" } solana-budget-api = { path = "../budget_api", version = "0.15.2" }
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[lib] [lib]
name = "solana_budget_program" name = "solana_budget_program"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-config-api" name = "solana-config-api"
version = "0.15.0" version = "0.15.2"
description = "config program API" description = "config program API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -13,11 +13,11 @@ bincode = "1.1.4"
log = "0.4.2" log = "0.4.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.15.0" } solana-runtime = { path = "../../runtime", version = "0.15.2" }
[lib] [lib]
name = "solana_config_api" name = "solana_config_api"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-config-program" name = "solana-config-program"
version = "0.15.0" version = "0.15.2"
description = "config program" description = "config program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-config-api = { path = "../config_api", version = "0.15.0" } solana-config-api = { path = "../config_api", version = "0.15.2" }
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[lib] [lib]
name = "solana_config_program" name = "solana_config_program"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-exchange-api" name = "solana-exchange-api"
version = "0.15.0" version = "0.15.2"
description = "Solana Exchange program API" description = "Solana Exchange program API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -13,12 +13,12 @@ log = "0.4.2"
bincode = "1.1.4" bincode = "1.1.4"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-metrics = { path = "../../metrics", version = "0.15.0" } solana-metrics = { path = "../../metrics", version = "0.15.2" }
[dev-dependencies] [dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.15.0" } solana-runtime = { path = "../../runtime", version = "0.15.2" }
[lib] [lib]
name = "solana_exchange_api" name = "solana_exchange_api"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-exchange-program" name = "solana-exchange-program"
version = "0.15.0" version = "0.15.2"
description = "Solana exchange program" description = "Solana exchange program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-exchange-api = { path = "../exchange_api", version = "0.15.0" } solana-exchange-api = { path = "../exchange_api", version = "0.15.2" }
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[lib] [lib]
name = "solana_exchange_program" name = "solana_exchange_program"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-failure-program" name = "solana-failure-program"
version = "0.15.0" version = "0.15.2"
description = "Solana failure program" description = "Solana failure program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -9,11 +9,11 @@ homepage = "https://solana.com/"
edition = "2018" edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
log = "0.4.2" log = "0.4.2"
[dev-dependencies] [dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.15.0" } solana-runtime = { path = "../../runtime", version = "0.15.2" }
[lib] [lib]
name = "solana_failure_program" name = "solana_failure_program"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-noop-program" name = "solana-noop-program"
version = "0.15.0" version = "0.15.2"
description = "Solana noop program" description = "Solana noop program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -9,13 +9,10 @@ homepage = "https://solana.com/"
edition = "2018" edition = "2018"
[dependencies] [dependencies]
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
log = "0.4.2" log = "0.4.2"
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.15.0" }
[lib] [lib]
name = "solana_noop_program" name = "solana_noop_program"
crate-type = ["cdylib"] crate-type = ["cdylib"]

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-stake-api" name = "solana-stake-api"
version = "0.15.0" version = "0.15.2"
description = "Solana Stake program API" description = "Solana Stake program API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -13,10 +13,10 @@ bincode = "1.1.4"
log = "0.4.2" log = "0.4.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-metrics = { path = "../../metrics", version = "0.15.0" } solana-metrics = { path = "../../metrics", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-vote-api = { path = "../vote_api", version = "0.15.0" } solana-vote-api = { path = "../vote_api", version = "0.15.2" }
[lib] [lib]
name = "solana_stake_api" name = "solana_stake_api"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-stake-program" name = "solana-stake-program"
version = "0.15.0" version = "0.15.2"
description = "Solana stake program" description = "Solana stake program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-stake-api = { path = "../stake_api", version = "0.15.0" } solana-stake-api = { path = "../stake_api", version = "0.15.2" }
[lib] [lib]
name = "solana_stake_program" name = "solana_stake_program"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-storage-api" name = "solana-storage-api"
version = "0.15.0" version = "0.15.2"
description = "Solana Storage program API" description = "Solana Storage program API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -13,12 +13,12 @@ bincode = "1.1.4"
log = "0.4.2" log = "0.4.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
assert_matches = "1.3.0" assert_matches = "1.3.0"
[dev-dependencies] [dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.15.0" } solana-runtime = { path = "../../runtime", version = "0.15.2" }
[lib] [lib]
name = "solana_storage_api" name = "solana_storage_api"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-storage-program" name = "solana-storage-program"
version = "0.15.0" version = "0.15.2"
description = "Solana storage program" description = "Solana storage program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-storage-api = { path = "../storage_api", version = "0.15.0" } solana-storage-api = { path = "../storage_api", version = "0.15.2" }
[lib] [lib]
name = "solana_storage_program" name = "solana_storage_program"

View File

@ -0,0 +1,19 @@
use crate::solana_storage_program;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::pubkey::Pubkey;
use solana_storage_api::storage_contract;
pub trait GenesisBlockUtil {
fn add_storage_program(&mut self, validator_storage_pubkey: &Pubkey);
}
impl GenesisBlockUtil for GenesisBlock {
fn add_storage_program(&mut self, validator_storage_pubkey: &Pubkey) {
self.accounts.push((
*validator_storage_pubkey,
storage_contract::create_validator_storage_account(1),
));
self.native_instruction_processors
.push(solana_storage_program!());
}
}

View File

@ -1,3 +1,5 @@
pub mod genesis_block_util;
#[macro_export] #[macro_export]
macro_rules! solana_storage_program { macro_rules! solana_storage_program {
() => { () => {

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-token-api" name = "solana-token-api"
version = "0.15.0" version = "0.15.2"
description = "Solana Token API" description = "Solana Token API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -15,8 +15,8 @@ num-derive = "0.2"
num-traits = "0.2" num-traits = "0.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[lib] [lib]
name = "solana_token_api" name = "solana_token_api"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-token-program" name = "solana-token-program"
version = "0.15.0" version = "0.15.2"
description = "Solana token program" description = "Solana token program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-token-api = { path = "../token_api", version = "0.15.0" } solana-token-api = { path = "../token_api", version = "0.15.2" }
[lib] [lib]
name = "solana_token_program" name = "solana_token_program"

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-vote-api" name = "solana-vote-api"
version = "0.15.0" version = "0.15.2"
description = "Solana Vote program API" description = "Solana Vote program API"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -13,9 +13,9 @@ bincode = "1.1.4"
log = "0.4.2" log = "0.4.2"
serde = "1.0.91" serde = "1.0.91"
serde_derive = "1.0.91" serde_derive = "1.0.91"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-metrics = { path = "../../metrics", version = "0.15.0" } solana-metrics = { path = "../../metrics", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
[lib] [lib]
name = "solana_vote_api" name = "solana_vote_api"

View File

@ -145,10 +145,22 @@ impl VoteState {
.iter() .iter()
.any(|(slot, hash)| vote.slot == *slot && vote.hash == *hash) .any(|(slot, hash)| vote.slot == *slot && vote.hash == *hash)
{ {
warn!( if log_enabled!(log::Level::Warn) {
"dropping vote {:?}, no matching slot/hash combination", for (slot, hash) in slot_hashes {
vote if vote.slot == *slot {
); warn!(
"dropped vote {:?} matched slot {}, but not hash {:?}",
vote, *slot, *hash
);
}
if vote.hash == *hash {
warn!(
"dropped vote {:?} matched hash {:?}, but not slot {}",
vote, *hash, *slot,
);
}
}
}
return; return;
} }

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-vote-program" name = "solana-vote-program"
version = "0.15.0" version = "0.15.2"
description = "Solana Vote program" description = "Solana Vote program"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -10,9 +10,9 @@ edition = "2018"
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
solana-logger = { path = "../../logger", version = "0.15.0" } solana-logger = { path = "../../logger", version = "0.15.2" }
solana-sdk = { path = "../../sdk", version = "0.15.0" } solana-sdk = { path = "../../sdk", version = "0.15.2" }
solana-vote-api = { path = "../vote_api", version = "0.15.0" } solana-vote-api = { path = "../vote_api", version = "0.15.2" }
[lib] [lib]
name = "solana_vote_program" name = "solana_vote_program"

View File

@ -2,17 +2,17 @@
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-replicator" name = "solana-replicator"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
[dependencies] [dependencies]
clap = "2.33.0" clap = "2.33.0"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
[features] [features]
chacha = ["solana/chacha"] chacha = ["solana/chacha"]

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-runtime" name = "solana-runtime"
version = "0.15.0" version = "0.15.2"
description = "Solana runtime" description = "Solana runtime"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
@ -23,16 +23,14 @@ rayon = "1.0.0"
serde = "1.0.88" serde = "1.0.88"
serde_derive = "1.0.91" serde_derive = "1.0.91"
serde_json = "1.0.38" serde_json = "1.0.38"
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" } solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } solana-vote-program = { path = "../programs/vote_program", version = "0.15.2" }
solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" } solana-stake-program = { path = "../programs/stake_program", version = "0.15.2" }
solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" } solana-noop-program = { path = "../programs/noop_program", version = "0.15.2" }
solana-storage-program = { path = "../programs/storage_program", version = "0.15.0" }
solana-noop-program = { path = "../programs/noop_program", version = "0.15.0" }
[lib] [lib]
name = "solana_runtime" name = "solana_runtime"

View File

@ -215,18 +215,22 @@ impl Bank {
self.store(&slot_hashes::id(), &account); self.store(&slot_hashes::id(), &account);
} }
fn set_hash(&self) { fn set_hash(&self) -> bool {
let mut hash = self.hash.write().unwrap(); let mut hash = self.hash.write().unwrap();
if *hash == Hash::default() { if *hash == Hash::default() {
// freeze is a one-way trip, idempotent // freeze is a one-way trip, idempotent
*hash = self.hash_internal_state(); *hash = self.hash_internal_state();
true
} else {
false
} }
} }
pub fn freeze(&self) { pub fn freeze(&self) {
self.set_hash(); if self.set_hash() {
self.update_slot_hashes(); self.update_slot_hashes();
}
} }
pub fn epoch_schedule(&self) -> &EpochSchedule { pub fn epoch_schedule(&self) -> &EpochSchedule {
@ -1347,6 +1351,36 @@ mod tests {
assert_eq!(bank.transaction_count(), 1); assert_eq!(bank.transaction_count(), 1);
} }
#[test]
fn test_need_credit_only_accounts() {
let (genesis_block, mint_keypair) = create_genesis_block(10);
let bank = Bank::new(&genesis_block);
let payer0 = Keypair::new();
let payer1 = Keypair::new();
let recipient = Pubkey::new_rand();
// Fund additional payers
bank.transfer(3, &mint_keypair, &payer0.pubkey()).unwrap();
bank.transfer(3, &mint_keypair, &payer1.pubkey()).unwrap();
let tx0 = system_transaction::transfer(&mint_keypair, &recipient, 1, genesis_block.hash());
let tx1 = system_transaction::transfer(&payer0, &recipient, 1, genesis_block.hash());
let tx2 = system_transaction::transfer(&payer1, &recipient, 1, genesis_block.hash());
let txs = vec![tx0, tx1, tx2];
let results = bank.process_transactions(&txs);
// If multiple transactions attempt to deposit into the same account, only the first will
// succeed, even though such atomic adds are safe. A System Transfer `To` account should be
// given credit-only handling
assert_eq!(results[0], Ok(()));
assert_eq!(results[1], Err(TransactionError::AccountInUse));
assert_eq!(results[2], Err(TransactionError::AccountInUse));
// After credit-only account handling is implemented, the following checks should pass instead:
// assert_eq!(results[0], Ok(()));
// assert_eq!(results[1], Ok(()));
// assert_eq!(results[2], Ok(()));
}
#[test] #[test]
fn test_interleaving_locks() { fn test_interleaving_locks() {
let (genesis_block, mint_keypair) = create_genesis_block(3); let (genesis_block, mint_keypair) = create_genesis_block(3);

View File

@ -4,7 +4,6 @@ use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::system_program; use solana_sdk::system_program;
use solana_stake_api::stake_state; use solana_stake_api::stake_state;
use solana_storage_api::storage_contract;
use solana_vote_api::vote_state; use solana_vote_api::vote_state;
// The default stake placed with the bootstrap leader // The default stake placed with the bootstrap leader
@ -14,7 +13,6 @@ pub struct GenesisBlockInfo {
pub genesis_block: GenesisBlock, pub genesis_block: GenesisBlock,
pub mint_keypair: Keypair, pub mint_keypair: Keypair,
pub voting_keypair: Keypair, pub voting_keypair: Keypair,
pub storage_keypair: Keypair,
} }
pub fn create_genesis_block_with_leader( pub fn create_genesis_block_with_leader(
@ -25,7 +23,6 @@ pub fn create_genesis_block_with_leader(
let mint_keypair = Keypair::new(); let mint_keypair = Keypair::new();
let voting_keypair = Keypair::new(); let voting_keypair = Keypair::new();
let staking_keypair = Keypair::new(); let staking_keypair = Keypair::new();
let storage_keypair = Keypair::new();
// TODO: de-duplicate the stake once passive staking // TODO: de-duplicate the stake once passive staking
// is fully implemented // is fully implemented
@ -61,23 +58,13 @@ pub fn create_genesis_block_with_leader(
bootstrap_leader_stake_lamports, bootstrap_leader_stake_lamports,
), ),
), ),
// storage account
(
storage_keypair.pubkey(),
storage_contract::create_validator_storage_account(1),
),
],
&[
solana_vote_program!(),
solana_stake_program!(),
solana_storage_program!(), // TODO: storage program is only needed by core/, move this line into core/src/genesis_utils.rs
], ],
&[solana_vote_program!(), solana_stake_program!()],
); );
GenesisBlockInfo { GenesisBlockInfo {
genesis_block, genesis_block,
mint_keypair, mint_keypair,
voting_keypair, voting_keypair,
storage_keypair,
} }
} }

View File

@ -25,8 +25,5 @@ extern crate solana_vote_program;
#[macro_use] #[macro_use]
extern crate solana_stake_program; extern crate solana_stake_program;
#[macro_use]
extern crate solana_storage_program;
#[macro_use] #[macro_use]
extern crate serde_derive; extern crate serde_derive;

View File

@ -6,35 +6,46 @@
# shellcheck source=scripts/ulimit-n.sh # shellcheck source=scripts/ulimit-n.sh
source "$(dirname "${BASH_SOURCE[0]}")"/ulimit-n.sh source "$(dirname "${BASH_SOURCE[0]}")"/ulimit-n.sh
# Reference: https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360 sysctl_write() {
if [[ $(uname) = Linux ]]; then declare name=$1
( declare new_value=$2
set -x +e
# test the existence of the sysctls before trying to set them
# go ahead and return true and don't exit if these calls fail
sysctl net.core.rmem_max 2>/dev/null 1>/dev/null &&
sudo sysctl -w net.core.rmem_max=161061273 1>/dev/null 2>/dev/null
sysctl net.core.rmem_default 2>/dev/null 1>/dev/null && # Test the existence of the sysctl before trying to set it
sudo sysctl -w net.core.rmem_default=161061273 1>/dev/null 2>/dev/null sysctl "$name" 2>/dev/null 1>/dev/null || return 0
sysctl net.core.wmem_max 2>/dev/null 1>/dev/null && declare current_value
sudo sysctl -w net.core.wmem_max=161061273 1>/dev/null 2>/dev/null current_value=$(sysctl -n "$name")
[[ $current_value != "$new_value" ]] || return 0
sysctl net.core.wmem_default 2>/dev/null 1>/dev/null && declare cmd="sysctl -w $name=$new_value"
sudo sysctl -w net.core.wmem_default=161061273 1>/dev/null 2>/dev/null if [[ -n $SUDO_OK ]]; then
) || true cmd="sudo $cmd"
fi fi
if [[ $(uname) = Darwin ]]; then echo "$ $cmd"
( $cmd
if [[ $(sysctl net.inet.udp.maxdgram | cut -d\ -f2) != 65535 ]]; then
echo "Adjusting maxdgram to allow for large UDP packets, see BLOB_SIZE in src/packet.rs:"
set -x
sudo sysctl net.inet.udp.maxdgram=65535
fi
)
fi # Some versions of sysctl exit with 0 on permission denied errors
current_value=$(sysctl -n "$name")
if [[ $current_value != "$new_value" ]]; then
echo "==> Failed to set $name. Try running: \"SUDO_OK=1 source ${BASH_SOURCE[0]}\""
fi
}
case $(uname) in
Linux)
# Reference: https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360
sysctl_write net.core.rmem_max 161061273
sysctl_write net.core.rmem_default 161061273
sysctl_write net.core.wmem_max 161061273
sysctl_write net.core.wmem_default 161061273
;;
Darwin)
# Adjusting maxdgram to allow for large UDP packets, see BLOB_SIZE in core/src/packet.rs
sysctl_write net.inet.udp.maxdgram 65535
;;
*)
;;
esac

View File

@ -1,6 +1,6 @@
[package] [package]
name = "solana-sdk" name = "solana-sdk"
version = "0.15.0" version = "0.15.2"
description = "Solana SDK" description = "Solana SDK"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-sdk-bpf-utils" name = "solana-sdk-bpf-utils"
version = "0.15.0" version = "0.15.2"
description = "Solana BPF SDK Rust Utils" description = "Solana BPF SDK Rust Utils"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"

View File

@ -19,9 +19,6 @@ download() {
"--retry-connrefused" "--retry-connrefused"
"--read-timeout=30" "--read-timeout=30"
) )
# Github release URLs 302 to AWS S3. Sometimes that S3 URL returns 403
args+=("--retry-on-http-error=403")
wget "${args[@]}" wget "${args[@]}"
} }
@ -36,7 +33,7 @@ if [[ ! -r criterion-$machine-$version.md ]]; then
mkdir criterion mkdir criterion
cd criterion cd criterion
base=https://github.com/Snaipe/Criterion/releases/ base=https://github.com/Snaipe/Criterion/releases
download $base/download/$version/$filename $filename mega download $base/download/$version/$filename $filename mega
tar --strip-components 1 -jxf $filename tar --strip-components 1 -jxf $filename
rm -rf $filename rm -rf $filename

View File

@ -1,17 +1,18 @@
[package] [package]
name = "solana-upload-perf" name = "solana-upload-perf"
version = "0.15.0" version = "0.15.2"
description = "Metrics Upload Utility" description = "Metrics Upload Utility"
authors = ["Solana Maintainers <maintainers@solana.com>"] authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
edition = "2018" edition = "2018"
homepage = "https://solana.com/" homepage = "https://solana.com/"
publish = false
[dependencies] [dependencies]
log = "0.4.2" log = "0.4.2"
serde_json = "1.0.39" serde_json = "1.0.39"
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
[[bin]] [[bin]]
name = "solana-upload-perf" name = "solana-upload-perf"

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-validator" name = "solana-validator"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -12,15 +12,15 @@ homepage = "https://solana.com/"
clap = "2.33.0" clap = "2.33.0"
log = "0.4.2" log = "0.4.2"
serde_json = "1.0.39" serde_json = "1.0.39"
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
solana-drone = { path = "../drone", version = "0.15.0" } solana-drone = { path = "../drone", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
solana-runtime = { path = "../runtime", version = "0.15.0" } solana-runtime = { path = "../runtime", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
solana-vote-signer = { path = "../vote-signer", version = "0.15.0" } solana-vote-signer = { path = "../vote-signer", version = "0.15.2" }
[features] [features]
chacha = ["solana/chacha"] chacha = ["solana/chacha"]

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-vote-signer" name = "solana-vote-signer"
description = "Solana Vote Signing Service" description = "Solana Vote Signing Service"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -17,8 +17,8 @@ jsonrpc-derive = "11.0.0"
jsonrpc-http-server = "11.0.0" jsonrpc-http-server = "11.0.0"
serde = "1.0.91" serde = "1.0.91"
serde_json = "1.0.39" serde_json = "1.0.39"
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-metrics = { path = "../metrics", version = "0.15.0" } solana-metrics = { path = "../metrics", version = "0.15.2" }
[lib] [lib]
name = "solana_vote_signer" name = "solana_vote_signer"

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018" edition = "2018"
name = "solana-wallet" name = "solana-wallet"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
version = "0.15.0" version = "0.15.2"
repository = "https://github.com/solana-labs/solana" repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0" license = "Apache-2.0"
homepage = "https://solana.com/" homepage = "https://solana.com/"
@ -17,21 +17,21 @@ dirs = "1.0.5"
log = "0.4.2" log = "0.4.2"
num-traits = "0.2" num-traits = "0.2"
serde_json = "1.0.39" serde_json = "1.0.39"
solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" } solana-budget-api = { path = "../programs/budget_api", version = "0.15.2" }
solana-client = { path = "../client", version = "0.15.0" } solana-client = { path = "../client", version = "0.15.2" }
solana-drone = { path = "../drone", version = "0.15.0" } solana-drone = { path = "../drone", version = "0.15.2" }
solana-logger = { path = "../logger", version = "0.15.0" } solana-logger = { path = "../logger", version = "0.15.2" }
solana-netutil = { path = "../netutil", version = "0.15.0" } solana-netutil = { path = "../netutil", version = "0.15.2" }
solana-sdk = { path = "../sdk", version = "0.15.0" } solana-sdk = { path = "../sdk", version = "0.15.2" }
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" } solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" } solana-storage-api = { path = "../programs/storage_api", version = "0.15.2" }
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" } solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
solana-vote-signer = { path = "../vote-signer", version = "0.15.0" } solana-vote-signer = { path = "../vote-signer", version = "0.15.2" }
url = "1.7.2" url = "1.7.2"
[dev-dependencies] [dev-dependencies]
solana-budget-program = { path = "../programs/budget_program", version = "0.15.0" } solana-budget-program = { path = "../programs/budget_program", version = "0.15.2" }
solana = { path = "../core", version = "0.15.0" } solana = { path = "../core", version = "0.15.2" }
[features] [features]
cuda = [] cuda = []