Compare commits

..

15 Commits

Author SHA1 Message Date
Dan Albert
281fd88ea7 Update testnet doc to use latest release (#5118) 2019-07-15 17:11:42 -06:00
mergify[bot]
ee6b625c13 fix transaction_count (bp #5110) (#5111)
automerge
2019-07-15 14:46:11 -07:00
mergify[bot]
4cc1b85376 Boot remote native loads, take 2 (#5106) (#5109)
automerge
2019-07-15 12:54:24 -07:00
mergify[bot]
f8312ce125 Keybase pubkey file instructions and verification for validators (#5090) (#5102)
automerge
2019-07-14 23:25:50 -07:00
mergify[bot]
6a4cd02f64 Add node zone and count to ENV (#5100) (#5101)
automerge
2019-07-14 22:13:50 -07:00
mergify[bot]
50f238d900 Pull testnet vars up to buildkite env (#5098) (#5099)
automerge
2019-07-14 19:56:59 -07:00
mergify[bot]
23e3f4e8a2 Plumb --no-snapshot in from CI (#5077) (#5095)
* Plumb --no-snapshot in from CI

(cherry picked from commit 440d006ec1)
2019-07-14 13:22:28 -06:00
mergify[bot]
27f70dfa49 Correctly decode update manifest (#5086) (#5087)
automerge
2019-07-12 23:25:15 -07:00
Michael Vines
72d366a84e Stop trying to publish crates that are unpublishable 2019-07-12 21:53:33 -07:00
Michael Vines
2da9de8861 Avoid trying to republish crates already on crates.io 2019-07-12 21:36:07 -07:00
Michael Vines
f4288961d5 Add epoch voting history to show-vote-account (#5080) 2019-07-12 21:23:15 -07:00
Michael Vines
143ad436cf Give publish-crate more time 2019-07-12 20:28:23 -07:00
mergify[bot]
0a9fbc3e4c Facility to generate a blocktree prune list using ledger tool (#5041) (#5081)
automerge
2019-07-12 17:49:29 -07:00
Jack May
7aa091bf8c Add rewards to is_syscall_id() (#5035) 2019-07-12 16:10:28 -07:00
Dan Albert
91d8bfa828 Increment cargo tomls to 0.16.4 (#5078) 2019-07-12 16:30:55 -06:00
79 changed files with 894 additions and 584 deletions

451
Cargo.lock generated
View File

@@ -2168,7 +2168,7 @@ dependencies = [
[[package]]
name = "solana"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2200,27 +2200,27 @@ dependencies = [
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-budget-api 0.16.3",
"solana-budget-program 0.16.3",
"solana-chacha-sys 0.16.3",
"solana-client 0.16.3",
"solana-config-program 0.16.3",
"solana-drone 0.16.3",
"solana-budget-api 0.16.4",
"solana-budget-program 0.16.4",
"solana-chacha-sys 0.16.4",
"solana-client 0.16.4",
"solana-config-program 0.16.4",
"solana-drone 0.16.4",
"solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-exchange-program 0.16.3",
"solana-kvstore 0.16.3",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-netutil 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-stake-api 0.16.3",
"solana-stake-program 0.16.3",
"solana-storage-api 0.16.3",
"solana-storage-program 0.16.3",
"solana-vote-api 0.16.3",
"solana-vote-program 0.16.3",
"solana-vote-signer 0.16.3",
"solana-exchange-program 0.16.4",
"solana-kvstore 0.16.4",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-netutil 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
"solana-stake-api 0.16.4",
"solana-stake-program 0.16.4",
"solana-storage-api 0.16.4",
"solana-storage-program 0.16.4",
"solana-vote-api 0.16.4",
"solana-vote-program 0.16.4",
"solana-vote-signer 0.16.4",
"sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2229,7 +2229,7 @@ dependencies = [
[[package]]
name = "solana-bench-exchange"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2245,33 +2245,33 @@ dependencies = [
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-client 0.16.3",
"solana-drone 0.16.3",
"solana-exchange-api 0.16.3",
"solana-exchange-program 0.16.3",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-netutil 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana 0.16.4",
"solana-client 0.16.4",
"solana-drone 0.16.4",
"solana-exchange-api 0.16.4",
"solana-exchange-program 0.16.4",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-netutil 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
"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)",
]
[[package]]
name = "solana-bench-streamer"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-logger 0.16.3",
"solana-netutil 0.16.3",
"solana 0.16.4",
"solana-logger 0.16.4",
"solana-netutil 0.16.4",
]
[[package]]
name = "solana-bench-tps"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2280,58 +2280,58 @@ dependencies = [
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-client 0.16.3",
"solana-drone 0.16.3",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-netutil 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana 0.16.4",
"solana-client 0.16.4",
"solana-drone 0.16.4",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-netutil 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-bpf-loader-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.58 (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.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
"solana_rbpf 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-bpf-loader-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-api 0.16.3",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-bpf-loader-api 0.16.4",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-bpf-programs"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-api 0.16.3",
"solana-logger 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-bpf-loader-api 0.16.4",
"solana-logger 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
"solana_rbpf 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-budget-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2340,30 +2340,30 @@ dependencies = [
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-budget-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-budget-api 0.16.3",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-budget-api 0.16.4",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-chacha-sys"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"cc 1.0.37 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-client"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2376,37 +2376,37 @@ dependencies = [
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-netutil 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-netutil 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-config-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-config-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-config-api 0.16.3",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-config-api 0.16.4",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-drone"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2415,9 +2415,9 @@ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-sdk 0.16.4",
"tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2436,40 +2436,40 @@ dependencies = [
[[package]]
name = "solana-exchange-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-exchange-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-exchange-api 0.16.3",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-exchange-api 0.16.4",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-failure-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-genesis"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2478,41 +2478,41 @@ dependencies = [
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-bpf-loader-api 0.16.3",
"solana-bpf-loader-program 0.16.3",
"solana-budget-api 0.16.3",
"solana-budget-program 0.16.3",
"solana-config-api 0.16.3",
"solana-config-program 0.16.3",
"solana-exchange-api 0.16.3",
"solana-exchange-program 0.16.3",
"solana-sdk 0.16.3",
"solana-stake-api 0.16.3",
"solana-stake-program 0.16.3",
"solana-storage-api 0.16.3",
"solana-storage-program 0.16.3",
"solana-token-api 0.16.3",
"solana-token-program 0.16.3",
"solana-vote-api 0.16.3",
"solana-vote-program 0.16.3",
"solana 0.16.4",
"solana-bpf-loader-api 0.16.4",
"solana-bpf-loader-program 0.16.4",
"solana-budget-api 0.16.4",
"solana-budget-program 0.16.4",
"solana-config-api 0.16.4",
"solana-config-program 0.16.4",
"solana-exchange-api 0.16.4",
"solana-exchange-program 0.16.4",
"solana-sdk 0.16.4",
"solana-stake-api 0.16.4",
"solana-stake-program 0.16.4",
"solana-storage-api 0.16.4",
"solana-storage-program 0.16.4",
"solana-token-api 0.16.4",
"solana-token-program 0.16.4",
"solana-vote-api 0.16.4",
"solana-vote-program 0.16.4",
]
[[package]]
name = "solana-gossip"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"solana 0.16.3",
"solana-client 0.16.3",
"solana-netutil 0.16.3",
"solana-sdk 0.16.3",
"solana 0.16.4",
"solana-client 0.16.4",
"solana-netutil 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-install"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2532,10 +2532,10 @@ dependencies = [
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (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.16.3",
"solana-config-api 0.16.3",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-client 0.16.4",
"solana-config-api 0.16.4",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
"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)",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2545,16 +2545,16 @@ dependencies = [
[[package]]
name = "solana-keygen"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dirs 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.16.3",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-kvstore"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2569,35 +2569,38 @@ dependencies = [
[[package]]
name = "solana-ledger-tool"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-logger 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.4",
"solana-logger 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-logger"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-merkle-tree"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.16.3",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-metrics"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2605,13 +2608,13 @@ dependencies = [
"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)",
"reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-sdk 0.16.3",
"solana-sdk 0.16.4",
"sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-netutil"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2619,33 +2622,33 @@ dependencies = [
"nix 0.14.1 (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)",
"solana-logger 0.16.3",
"solana-logger 0.16.4",
"tokio 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-noop-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-replicator"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-logger 0.16.3",
"solana-netutil 0.16.3",
"solana-sdk 0.16.3",
"solana 0.16.4",
"solana-logger 0.16.4",
"solana-netutil 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-runtime"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2663,23 +2666,23 @@ dependencies = [
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-bpf-loader-api 0.16.3",
"solana-bpf-loader-program 0.16.3",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-noop-program 0.16.3",
"solana-sdk 0.16.3",
"solana-stake-api 0.16.3",
"solana-stake-program 0.16.3",
"solana-storage-api 0.16.3",
"solana-vote-api 0.16.3",
"solana-vote-program 0.16.3",
"solana-bpf-loader-api 0.16.4",
"solana-bpf-loader-program 0.16.4",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-noop-program 0.16.4",
"solana-sdk 0.16.4",
"solana-stake-api 0.16.4",
"solana-stake-program 0.16.4",
"solana-storage-api 0.16.4",
"solana-vote-api 0.16.4",
"solana-vote-program 0.16.4",
"sys-info 0.5.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-sdk"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2700,38 +2703,38 @@ dependencies = [
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"sha2 0.8.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-logger 0.16.3",
"solana-logger 0.16.4",
"untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-stake-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-sdk 0.16.3",
"solana-vote-api 0.16.3",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-sdk 0.16.4",
"solana-vote-api 0.16.4",
]
[[package]]
name = "solana-stake-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-stake-api 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
"solana-stake-api 0.16.4",
]
[[package]]
name = "solana-storage-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2741,26 +2744,26 @@ dependencies = [
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-storage-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-storage-api 0.16.3",
"solana-logger 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
"solana-storage-api 0.16.4",
]
[[package]]
name = "solana-token-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2768,89 +2771,90 @@ dependencies = [
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-token-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-token-api 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
"solana-token-api 0.16.4",
]
[[package]]
name = "solana-upload-perf"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-metrics 0.16.3",
"solana-metrics 0.16.4",
]
[[package]]
name = "solana-validator"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-drone 0.16.3",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-netutil 0.16.3",
"solana-runtime 0.16.3",
"solana-sdk 0.16.3",
"solana-vote-api 0.16.3",
"solana-vote-signer 0.16.3",
"solana 0.16.4",
"solana-drone 0.16.4",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-netutil 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
"solana-vote-api 0.16.4",
"solana-vote-signer 0.16.4",
]
[[package]]
name = "solana-validator-info"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"dirs 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"reqwest 0.9.18 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-client 0.16.3",
"solana-config-api 0.16.3",
"solana-sdk 0.16.3",
"solana-client 0.16.4",
"solana-config-api 0.16.4",
"solana-sdk 0.16.4",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "solana-vote-api"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_derive 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-metrics 0.16.3",
"solana-sdk 0.16.3",
"solana-logger 0.16.4",
"solana-metrics 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-vote-program"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-logger 0.16.3",
"solana-sdk 0.16.3",
"solana-vote-api 0.16.3",
"solana-logger 0.16.4",
"solana-sdk 0.16.4",
"solana-vote-api 0.16.4",
]
[[package]]
name = "solana-vote-signer"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2860,13 +2864,13 @@ dependencies = [
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.94 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana-metrics 0.16.3",
"solana-sdk 0.16.3",
"solana-metrics 0.16.4",
"solana-sdk 0.16.4",
]
[[package]]
name = "solana-wallet"
version = "0.16.3"
version = "0.16.4"
dependencies = [
"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)",
@@ -2876,18 +2880,19 @@ dependencies = [
"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)",
"serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)",
"solana 0.16.3",
"solana-budget-api 0.16.3",
"solana-budget-program 0.16.3",
"solana-client 0.16.3",
"solana-drone 0.16.3",
"solana-logger 0.16.3",
"solana-netutil 0.16.3",
"solana-sdk 0.16.3",
"solana-stake-api 0.16.3",
"solana-storage-api 0.16.3",
"solana-vote-api 0.16.3",
"solana-vote-signer 0.16.3",
"solana 0.16.4",
"solana-budget-api 0.16.4",
"solana-budget-program 0.16.4",
"solana-client 0.16.4",
"solana-drone 0.16.4",
"solana-logger 0.16.4",
"solana-netutil 0.16.4",
"solana-runtime 0.16.4",
"solana-sdk 0.16.4",
"solana-stake-api 0.16.4",
"solana-storage-api 0.16.4",
"solana-vote-api 0.16.4",
"solana-vote-signer 0.16.4",
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
]

View File

@@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-exchange"
version = "0.16.3"
version = "0.16.4"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -24,16 +24,16 @@ serde_derive = "1.0.92"
serde_json = "1.0.39"
serde_yaml = "0.8.9"
# solana-runtime = { path = "../solana/runtime"}
solana = { path = "../core", version = "0.16.3" }
solana-client = { path = "../client", version = "0.16.3" }
solana-drone = { path = "../drone", version = "0.16.3" }
solana-exchange-api = { path = "../programs/exchange_api", version = "0.16.3" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.16.3" }
solana-logger = { path = "../logger", version = "0.16.3" }
solana-metrics = { path = "../metrics", version = "0.16.3" }
solana-netutil = { path = "../netutil", version = "0.16.3" }
solana-runtime = { path = "../runtime", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana = { path = "../core", version = "0.16.4" }
solana-client = { path = "../client", version = "0.16.4" }
solana-drone = { path = "../drone", version = "0.16.4" }
solana-exchange-api = { path = "../programs/exchange_api", version = "0.16.4" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.16.4" }
solana-logger = { path = "../logger", version = "0.16.4" }
solana-metrics = { path = "../metrics", version = "0.16.4" }
solana-netutil = { path = "../netutil", version = "0.16.4" }
solana-runtime = { path = "../runtime", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
untrusted = "0.6.2"
ws = "0.8.1"

View File

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

View File

@@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-tps"
version = "0.16.3"
version = "0.16.4"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -15,14 +15,14 @@ serde = "1.0.92"
serde_derive = "1.0.92"
serde_json = "1.0.39"
serde_yaml = "0.8.9"
solana = { path = "../core", version = "0.16.3" }
solana-client = { path = "../client", version = "0.16.3" }
solana-drone = { path = "../drone", version = "0.16.3" }
solana-logger = { path = "../logger", version = "0.16.3" }
solana-metrics = { path = "../metrics", version = "0.16.3" }
solana-netutil = { path = "../netutil", version = "0.16.3" }
solana-runtime = { path = "../runtime", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana = { path = "../core", version = "0.16.4" }
solana-client = { path = "../client", version = "0.16.4" }
solana-drone = { path = "../drone", version = "0.16.4" }
solana-logger = { path = "../logger", version = "0.16.4" }
solana-metrics = { path = "../metrics", version = "0.16.4" }
solana-netutil = { path = "../netutil", version = "0.16.4" }
solana-runtime = { path = "../runtime", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
[features]
cuda = ["solana/cuda"]

View File

@@ -74,8 +74,8 @@ The `solana-install` tool can be used to easily install and upgrade the cluster
software on Linux x86_64 and mac OS systems.
```bash
$ export SOLANA_RELEASE=v0.16.0 # skip this line to install the latest release
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.16.0/install/solana-install-init.sh | sh -s
$ export SOLANA_RELEASE=v0.16.4 # skip this line to install the latest release
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.16.4/install/solana-install-init.sh | sh -s
```
Alternatively build the `solana-install` program from source and run the
@@ -255,3 +255,20 @@ Available fields for VALIDATOR_INFO_ARGS:
* Website
* Keybase ID
* Details
##### Keybase
Including a Keybase ID allows client applications (like the Solana Network
Explorer) to automatically pull in your validator public profile, including
cryptographic proofs, brand identity, etc. To connect your validator pubkey with
Keybase:
1. Join https://keybase.io/ and complete the profile for your validator
2. Add your validator **identity pubkey** to Keybase:
* Create an empty file on your local computer called `solana_pubkey_<PUBKEY>`
* In Keybase, navigate to the Files section, and upload your pubkey file to
your public folder: `/keybase/public/<KEYBASE_ID>`
* To check your pubkey, ensure you can successfully browse to
`https://keybase.pub/<KEYBASE_ID>/solana_pubkey_<PUBKEY>`
3. Add or update your `solana-validator-info` with your Keybase ID. The CLI will
verify the `solana_pubkey_<PUBKEY>` file

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-chacha-sys"
version = "0.16.3"
version = "0.16.4"
description = "Solana chacha-sys"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"

View File

@@ -3,7 +3,7 @@ steps:
timeout_in_minutes: 20
name: "publish docker"
- command: "ci/publish-crate.sh"
timeout_in_minutes: 40
timeout_in_minutes: 60
name: "publish crate"
branches: "!master"
- command: "ci/publish-bpf-sdk.sh"

View File

@@ -36,6 +36,18 @@ for Cargo_toml in $Cargo_tomls; do
exit 1
}
crate_name=$(grep -m 1 '^name = ' "$Cargo_toml" | cut -f 3 -d ' ' | tr -d \")
if grep -q "^publish = false" "$Cargo_toml"; then
echo "$crate_name is is marked as unpublishable"
continue
fi
if [[ $(is_crate_version_uploaded "$crate_name" "$expectedCrateVersion") = True ]] ; then
echo "${crate_name} version ${expectedCrateVersion} is already on crates.io"
continue
fi
(
set -x
crate=$(dirname "$Cargo_toml")
@@ -45,13 +57,10 @@ for Cargo_toml in $Cargo_tomls; do
ci/docker-run.sh "$rust_stable_docker_image" 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
if [[ $(is_crate_version_uploaded "$crate_name" "$expectedCrateVersion") = True ]] ; then
echo "Found ${crate_name} version ${expectedCrateVersion} on crates.io"
break
fi

View File

@@ -29,6 +29,7 @@ maybeExternalPrimordialAccountsFile=
maybeLamports=
maybeLetsEncrypt=
maybeFullnodeAdditionalDiskSize=
maybeNoSnapshot=
usage() {
exitcode=0
@@ -82,7 +83,9 @@ Deploys a CD testnet
--letsencrypt [dns name]
- Attempt to generate a TLS certificate using this DNS name
--fullnode-additional-disk-size-gb [number]
- Size of additional disk in GB for all fullnodes
- Size of additional disk in GB for all fullnodes
--no-snapshot
- If set, disables booting validators from a snapshot
Note: the SOLANA_METRICS_CONFIG environment variable is used to configure
metrics
@@ -122,6 +125,9 @@ while [[ -n $1 ]]; do
elif [[ $1 == --machine-type* ]]; then # Bypass quoted long args for GPUs
shortArgs+=("$1")
shift
elif [[ $1 = --no-snapshot ]]; then
maybeNoSnapshot="$1"
shift 1
else
usage "Unknown long option: $1"
fi
@@ -396,6 +402,11 @@ if ! $skipStart; then
args+=($maybeLamports)
fi
if [[ -n $maybeNoSnapshot ]]; then
# shellcheck disable=SC2206
args+=($maybeNoSnapshot)
fi
time net/net.sh "${args[@]}"
) || ok=false

View File

@@ -158,7 +158,6 @@ testnet-demo)
tds)
CHANNEL_OR_TAG=beta
CHANNEL_BRANCH=$BETA_CHANNEL
: "${GCE_NODE_COUNT:=3}"
;;
*)
echo "Error: Invalid TESTNET=$TESTNET"
@@ -470,10 +469,74 @@ deploy() {
(
set -x
EXTERNAL_ACCOUNTS_FILE_URL=https://raw.githubusercontent.com/solana-labs/tour-de-sol/master/stage1/validator.yml
EXTERNAL_ACCOUNTS_FILE=/tmp/validator.yml
# Allow cluster configuration to be overridden from env vars
if [[ -z $TDS_ZONES ]]; then
TDS_ZONES="us-west1-a,us-central1-a,europe-west4-a"
fi
GCE_CLOUD_ZONES=(); while read -r -d, ; do GCE_CLOUD_ZONES+=( "$REPLY" ); done <<< "${TDS_ZONES},"
if [[ -z $TDS_NODE_COUNT ]]; then
TDS_NODE_COUNT="3"
fi
if [[ -z $TDS_CLIENT_COUNT ]]; then
TDS_CLIENT_COUNT="1"
fi
if [[ -z $ENABLE_GPU ]]; then
maybeGpu=(-G "--machine-type n1-standard-16 --accelerator count=2,type=nvidia-tesla-v100")
elif [[ $ENABLE_GPU == skip ]]; then
maybeGpu=()
else
maybeGpu=(-G "${ENABLE_GPU}")
fi
if [[ -z $HASHES_PER_TICK ]]; then
maybeHashesPerTick="--hashes-per-tick auto"
elif [[ $HASHES_PER_TICK == skip ]]; then
maybeHashesPerTick=""
else
maybeHashesPerTick="--hashes-per-tick ${HASHES_PER_TICK}"
fi
if [[ -z $STAKE_INTERNAL_NODES ]]; then
maybeStakeInternalNodes="--stake-internal-nodes 1000000000000"
elif [[ $STAKE_INTERNAL_NODES == skip ]]; then
maybeStakeInternalNodes=""
else
maybeStakeInternalNodes="--stake-internal-nodes ${STAKE_INTERNAL_NODES}"
fi
EXTERNAL_ACCOUNTS_FILE=/tmp/validator.yml
if [[ -z $EXTERNAL_ACCOUNTS_FILE_URL ]]; then
EXTERNAL_ACCOUNTS_FILE_URL=https://raw.githubusercontent.com/solana-labs/tour-de-sol/master/stage1/validator.yml
wget ${EXTERNAL_ACCOUNTS_FILE_URL} -O ${EXTERNAL_ACCOUNTS_FILE}
maybeExternalAccountsFile="--external-accounts-file ${EXTERNAL_ACCOUNTS_FILE}"
elif [[ $EXTERNAL_ACCOUNTS_FILE_URL == skip ]]; then
maybeExternalAccountsFile=""
else
EXTERNAL_ACCOUNTS_FILE_URL=https://raw.githubusercontent.com/solana-labs/tour-de-sol/master/stage1/validator.yml
wget ${EXTERNAL_ACCOUNTS_FILE_URL} -O ${EXTERNAL_ACCOUNTS_FILE}
maybeExternalAccountsFile="--external-accounts-file ${EXTERNAL_ACCOUNTS_FILE}"
fi
if [[ -z $LAMPORTS ]]; then
maybeLamports="--lamports 8589934592000000000"
elif [[ $LAMPORTS == skip ]]; then
maybeLamports=""
else
maybeLamports="--lamports ${LAMPORTS}"
fi
if [[ -z $ADDITIONAL_DISK_SIZE_GB ]]; then
maybeAdditionalDisk="--fullnode-additional-disk-size-gb 32000"
elif [[ $ADDITIONAL_DISK_SIZE_GB == skip ]]; then
maybeAdditionalDisk=""
else
maybeAdditionalDisk="--fullnode-additional-disk-size-gb ${ADDITIONAL_DISK_SIZE_GB}"
fi
wget ${EXTERNAL_ACCOUNTS_FILE_URL} -O ${EXTERNAL_ACCOUNTS_FILE}
# Multiple V100 GPUs are available in us-west1, us-central1 and europe-west4
# shellcheck disable=SC2068
@@ -481,24 +544,25 @@ deploy() {
NO_LEDGER_VERIFY=1 \
NO_VALIDATOR_SANITY=1 \
ci/testnet-deploy.sh -p tds-solana-com -C gce \
-G "--machine-type n1-standard-16 --accelerator count=2,type=nvidia-tesla-v100" \
"${maybeGpu[@]}" \
-d pd-ssd \
-z us-west1-a \
-z us-central1-a \
-z europe-west4-a \
-t "$CHANNEL_OR_TAG" -n "$GCE_NODE_COUNT" -c 1 -P -u \
${GCE_CLOUD_ZONES[@]/#/-z } \
-t "$CHANNEL_OR_TAG" \
-n ${TDS_NODE_COUNT} \
-c ${TDS_CLIENT_COUNT} \
-P -u \
-a tds-solana-com --letsencrypt tds.solana.com \
--hashes-per-tick auto \
${maybeHashesPerTick} \
${skipCreate:+-e} \
${skipStart:+-s} \
${maybeStop:+-S} \
${maybeDelete:+-D} \
--stake-internal-nodes 1000000000000 \
--external-accounts-file "$EXTERNAL_ACCOUNTS_FILE" \
--lamports 8589934592000000000 \
${maybeStakeInternalNodes} \
${maybeExternalAccountsFile} \
${maybeLamports} \
${maybeAdditionalDisk} \
--skip-deploy-update \
--fullnode-additional-disk-size-gb 32000
--no-snapshot
)
;;
*)

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-client"
version = "0.16.3"
version = "0.16.4"
description = "Solana Client"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -19,10 +19,10 @@ reqwest = "0.9.18"
serde = "1.0.92"
serde_derive = "1.0.92"
serde_json = "1.0.39"
solana-netutil = { path = "../netutil", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-netutil = { path = "../netutil", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
[dev-dependencies]
jsonrpc-core = "12.0.0"
jsonrpc-http-server = "12.0.0"
solana-logger = { path = "../logger", version = "0.16.3" }
solana-logger = { path = "../logger", version = "0.16.4" }

View File

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

View File

@@ -418,7 +418,7 @@ impl BankingStage {
// the likelihood of any single thread getting starved and processing old ids.
// TODO: Banking stage threads should be prioritized to complete faster then this queue
// expires.
let (loaded_accounts, results) =
let (loaded_accounts, results, tx_count, signature_count) =
bank.load_and_execute_transactions(txs, lock_results, MAX_RECENT_BLOCKHASHES / 2);
let load_execute_time = now.elapsed();
@@ -432,7 +432,7 @@ impl BankingStage {
let commit_time = {
let now = Instant::now();
bank.commit_transactions(txs, &loaded_accounts, &results);
bank.commit_transactions(txs, &loaded_accounts, &results, tx_count, signature_count);
now.elapsed()
};

View File

@@ -142,6 +142,7 @@ pub fn process_blocktree(
genesis_block: &GenesisBlock,
blocktree: &Blocktree,
account_paths: Option<String>,
verify_ledger: bool,
) -> result::Result<(BankForks, Vec<BankForksInfo>, LeaderScheduleCache), BlocktreeProcessorError> {
let now = Instant::now();
info!("processing ledger...");
@@ -204,7 +205,7 @@ pub fn process_blocktree(
}
if !entries.is_empty() {
if !entries.verify(&last_entry_hash) {
if verify_ledger && !entries.verify(&last_entry_hash) {
warn!(
"Ledger proof of history failed at slot: {}, entry: {}",
slot, entry_height
@@ -373,7 +374,7 @@ pub mod tests {
fill_blocktree_slot_with_ticks(&blocktree, ticks_per_slot, 2, 1, blockhash);
let (mut _bank_forks, bank_forks_info, _) =
process_blocktree(&genesis_block, &blocktree, None).unwrap();
process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
assert_eq!(bank_forks_info.len(), 1);
assert_eq!(
@@ -432,7 +433,7 @@ pub mod tests {
blocktree.set_roots(&[4, 1, 0]).unwrap();
let (bank_forks, bank_forks_info, _) =
process_blocktree(&genesis_block, &blocktree, None).unwrap();
process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
assert_eq!(bank_forks_info.len(), 1); // One fork, other one is ignored b/c not a descendant of the root
@@ -506,7 +507,7 @@ pub mod tests {
blocktree.set_roots(&[0, 1]).unwrap();
let (bank_forks, bank_forks_info, _) =
process_blocktree(&genesis_block, &blocktree, None).unwrap();
process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
assert_eq!(bank_forks_info.len(), 2); // There are two forks
assert_eq!(
@@ -587,7 +588,7 @@ pub mod tests {
// Check that we can properly restart the ledger / leader scheduler doesn't fail
let (bank_forks, bank_forks_info, _) =
process_blocktree(&genesis_block, &blocktree, None).unwrap();
process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
assert_eq!(bank_forks_info.len(), 1); // There is one fork
assert_eq!(
@@ -723,7 +724,7 @@ pub mod tests {
.unwrap();
let entry_height = genesis_block.ticks_per_slot + entries.len() as u64;
let (bank_forks, bank_forks_info, _) =
process_blocktree(&genesis_block, &blocktree, None).unwrap();
process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
assert_eq!(bank_forks_info.len(), 1);
assert_eq!(bank_forks.root(), 0);
@@ -754,7 +755,7 @@ pub mod tests {
let blocktree = Blocktree::open(&ledger_path).unwrap();
let (bank_forks, bank_forks_info, _) =
process_blocktree(&genesis_block, &blocktree, None).unwrap();
process_blocktree(&genesis_block, &blocktree, None, true).unwrap();
assert_eq!(bank_forks_info.len(), 1);
assert_eq!(

View File

@@ -176,6 +176,7 @@ impl LocalCluster {
&leader_voting_keypair,
&leader_storage_keypair,
None,
true,
&config.validator_configs[0],
);
@@ -308,6 +309,7 @@ impl LocalCluster {
&voting_keypair,
&storage_keypair,
Some(&self.entry_point_info),
true,
&validator_config,
);
@@ -561,6 +563,7 @@ impl Cluster for LocalCluster {
&fullnode_info.voting_keypair,
&fullnode_info.storage_keypair,
None,
true,
config,
);

View File

@@ -84,6 +84,7 @@ impl Validator {
voting_keypair: &Arc<Keypair>,
storage_keypair: &Arc<Keypair>,
entrypoint_info_option: Option<&ContactInfo>,
verify_ledger: bool,
config: &ValidatorConfig,
) -> Self {
warn!("CUDA is {}abled", if cfg!(cuda) { "en" } else { "dis" });
@@ -104,6 +105,7 @@ impl Validator {
ledger_path,
config.account_paths.clone(),
config.snapshot_path.clone(),
verify_ledger,
);
let leader_schedule_cache = Arc::new(leader_schedule_cache);
@@ -301,6 +303,7 @@ fn get_bank_forks(
blocktree: &Blocktree,
account_paths: Option<String>,
snapshot_path: Option<String>,
verify_ledger: bool,
) -> (BankForks, Vec<BankForksInfo>, LeaderScheduleCache) {
if snapshot_path.is_some() {
let bank_forks =
@@ -318,8 +321,13 @@ fn get_bank_forks(
}
}
let (mut bank_forks, bank_forks_info, leader_schedule_cache) =
blocktree_processor::process_blocktree(&genesis_block, &blocktree, account_paths)
.expect("process_blocktree failed");
blocktree_processor::process_blocktree(
&genesis_block,
&blocktree,
account_paths,
verify_ledger,
)
.expect("process_blocktree failed");
if snapshot_path.is_some() {
bank_forks.set_snapshot_config(snapshot_path);
let _ = bank_forks.add_snapshot(0, 0);
@@ -331,6 +339,7 @@ pub fn new_banks_from_blocktree(
blocktree_path: &str,
account_paths: Option<String>,
snapshot_path: Option<String>,
verify_ledger: bool,
) -> (
BankForks,
Vec<BankForksInfo>,
@@ -347,8 +356,13 @@ pub fn new_banks_from_blocktree(
Blocktree::open_with_signal(blocktree_path)
.expect("Expected to successfully open database ledger");
let (bank_forks, bank_forks_info, leader_schedule_cache) =
get_bank_forks(&genesis_block, &blocktree, account_paths, snapshot_path);
let (bank_forks, bank_forks_info, leader_schedule_cache) = get_bank_forks(
&genesis_block,
&blocktree,
account_paths,
snapshot_path,
verify_ledger,
);
(
bank_forks,
@@ -412,6 +426,7 @@ pub fn new_validator_for_tests() -> (Validator, ContactInfo, Keypair, String) {
&voting_keypair,
&storage_keypair,
None,
true,
&ValidatorConfig::default(),
);
discover_cluster(&contact_info.gossip, 1).expect("Node startup failed");
@@ -447,6 +462,7 @@ mod tests {
&voting_keypair,
&storage_keypair,
Some(&leader_node.info),
true,
&ValidatorConfig::default(),
);
validator.close().unwrap();
@@ -478,6 +494,7 @@ mod tests {
&voting_keypair,
&storage_keypair,
Some(&leader_node.info),
true,
&ValidatorConfig::default(),
)
})

View File

@@ -98,7 +98,7 @@ fn test_replay() {
completed_slots_receiver,
leader_schedule_cache,
_,
) = validator::new_banks_from_blocktree(&blocktree_path, None, None);
) = validator::new_banks_from_blocktree(&blocktree_path, None, None, true);
let working_bank = bank_forks.working_bank();
assert_eq!(
working_bank.get_balance(&mint_keypair.pubkey()),

View File

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

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-genesis"
description = "Blockchain, Rebuilt for Scale"
version = "0.16.3"
version = "0.16.4"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -15,24 +15,24 @@ serde = "1.0.92"
serde_derive = "1.0.92"
serde_json = "1.0.39"
serde_yaml = "0.8.9"
solana = { path = "../core", version = "0.16.3" }
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.16.3" }
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.16.3" }
solana-budget-api = { path = "../programs/budget_api", version = "0.16.3" }
solana-budget-program = { path = "../programs/budget_program", version = "0.16.3" }
solana-config-api = { path = "../programs/config_api", version = "0.16.3" }
solana-config-program = { path = "../programs/config_program", version = "0.16.3" }
solana-exchange-api = { path = "../programs/exchange_api", version = "0.16.3" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-stake-api = { path = "../programs/stake_api", version = "0.16.3" }
solana-stake-program = { path = "../programs/stake_program", version = "0.16.3" }
solana-storage-api = { path = "../programs/storage_api", version = "0.16.3" }
solana-storage-program = { path = "../programs/storage_program", version = "0.16.3" }
solana-token-api = { path = "../programs/token_api", version = "0.16.3" }
solana-token-program = { path = "../programs/token_program", version = "0.16.3" }
solana-vote-api = { path = "../programs/vote_api", version = "0.16.3" }
solana-vote-program = { path = "../programs/vote_program", version = "0.16.3" }
solana = { path = "../core", version = "0.16.4" }
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.16.4" }
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.16.4" }
solana-budget-api = { path = "../programs/budget_api", version = "0.16.4" }
solana-budget-program = { path = "../programs/budget_program", version = "0.16.4" }
solana-config-api = { path = "../programs/config_api", version = "0.16.4" }
solana-config-program = { path = "../programs/config_program", version = "0.16.4" }
solana-exchange-api = { path = "../programs/exchange_api", version = "0.16.4" }
solana-exchange-program = { path = "../programs/exchange_program", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
solana-stake-api = { path = "../programs/stake_api", version = "0.16.4" }
solana-stake-program = { path = "../programs/stake_program", version = "0.16.4" }
solana-storage-api = { path = "../programs/storage_api", version = "0.16.4" }
solana-storage-program = { path = "../programs/storage_program", version = "0.16.4" }
solana-token-api = { path = "../programs/token_api", version = "0.16.4" }
solana-token-program = { path = "../programs/token_program", version = "0.16.4" }
solana-vote-api = { path = "../programs/vote_api", version = "0.16.4" }
solana-vote-program = { path = "../programs/vote_program", version = "0.16.4" }
[dev-dependencies]
hashbrown = "0.3.0"

View File

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

View File

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

View File

@@ -245,7 +245,7 @@ fn get_update_manifest(
let mut data = rpc_client
.get_account_data(update_manifest_pubkey)
.map_err(|err| format!("Unable to fetch update manifest: {}", err))?;
data.split_off(ConfigKeys::serialized_size(vec![]));
let data = data.split_off(ConfigKeys::serialized_size(vec![]));
let signed_update_manifest =
SignedUpdateManifest::deserialize(update_manifest_pubkey, &data)

View File

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

View File

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

View File

@@ -3,18 +3,21 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-ledger-tool"
description = "Blockchain, Rebuilt for Scale"
version = "0.16.3"
version = "0.16.4"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
clap = "2.33.0"
serde_json = "1.0.39"
solana = { path = "../core", version = "0.16.3" }
solana-logger = { path = "../logger", version = "0.16.3" }
solana-runtime = { path = "../runtime", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
serde = "1.0.94"
serde_derive = "1.0.94"
serde_json = "1.0.40"
serde_yaml = "0.8.9"
solana = { path = "../core", version = "0.16.4" }
solana-logger = { path = "../logger", version = "0.16.4" }
solana-runtime = { path = "../runtime", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
[dev-dependencies]
assert_cmd = "0.11"

View File

@@ -2,8 +2,11 @@ use clap::{crate_description, crate_name, crate_version, value_t, App, Arg, SubC
use solana::blocktree::Blocktree;
use solana::blocktree_processor::process_blocktree;
use solana_sdk::genesis_block::GenesisBlock;
use std::collections::BTreeMap;
use std::fs::File;
use std::io::{stdout, Write};
use std::process::exit;
use std::str::FromStr;
#[derive(PartialEq)]
enum LedgerOutputMethod {
@@ -58,6 +61,7 @@ fn output_ledger(blocktree: Blocktree, starting_slot: u64, method: LedgerOutputM
}
fn main() {
const DEFAULT_ROOT_COUNT: &str = "1";
solana_logger::setup();
let matches = App::new(crate_name!())
.about(crate_description!())
@@ -82,6 +86,36 @@ fn main() {
.subcommand(SubCommand::with_name("print").about("Print the ledger"))
.subcommand(SubCommand::with_name("json").about("Print the ledger in JSON format"))
.subcommand(SubCommand::with_name("verify").about("Verify the ledger's PoH"))
.subcommand(SubCommand::with_name("prune").about("Prune the ledger at the block height").arg(
Arg::with_name("slot_list")
.long("slot-list")
.value_name("FILENAME")
.takes_value(true)
.help("The location of the YAML file with a list of rollback slot heights and hashes"),
))
.subcommand(SubCommand::with_name("list-roots").about("Output upto last <num-roots> root hashes and their heights starting at the given block height").arg(
Arg::with_name("max_height")
.long("max-height")
.value_name("NUM")
.takes_value(true)
.required(true)
.help("Maximum block height"),
).arg(
Arg::with_name("slot_list")
.long("slot-list")
.value_name("FILENAME")
.required(false)
.takes_value(true)
.help("The location of the output YAML file. A list of rollback slot heights and hashes will be written to the file."),
).arg(
Arg::with_name("num_roots")
.long("num-roots")
.value_name("NUM")
.takes_value(true)
.default_value(DEFAULT_ROOT_COUNT)
.required(false)
.help("Number of roots in the output"),
))
.get_matches();
let ledger_path = matches.value_of("ledger").unwrap();
@@ -113,7 +147,7 @@ fn main() {
}
("verify", _) => {
println!("Verifying ledger...");
match process_blocktree(&genesis_block, &blocktree, None) {
match process_blocktree(&genesis_block, &blocktree, None, true) {
Ok((_bank_forks, bank_forks_info, _)) => {
println!("{:?}", bank_forks_info);
}
@@ -123,6 +157,97 @@ fn main() {
}
}
}
("prune", Some(args_matches)) => {
if let Some(prune_file_path) = args_matches.value_of("slot_list") {
let prune_file = File::open(prune_file_path.to_string()).unwrap();
let slot_hashes: BTreeMap<u64, String> =
serde_yaml::from_reader(prune_file).unwrap();
let iter = blocktree
.rooted_slot_iterator(0)
.expect("Failed to get rooted slot");
let potential_hashes: Vec<_> = iter
.filter_map(|(slot, meta)| {
let blockhash = blocktree
.get_slot_entries(slot, meta.last_index, Some(1))
.unwrap()
.first()
.unwrap()
.hash
.to_string();
slot_hashes.get(&slot).and_then(|hash| {
if *hash == blockhash {
Some((slot, blockhash))
} else {
None
}
})
})
.collect();
let (target_slot, target_hash) = potential_hashes
.last()
.expect("Failed to find a valid slot");
println!("Prune at slot {:?} hash {:?}", target_slot, target_hash);
// ToDo: Do the actual pruning of the database
}
}
("list-roots", Some(args_matches)) => {
let max_height = if let Some(height) = args_matches.value_of("max_height") {
usize::from_str(height).expect("Maximum height must be a number")
} else {
panic!("Maximum height must be provided");
};
let num_roots = if let Some(roots) = args_matches.value_of("num_roots") {
usize::from_str(roots).expect("Number of roots must be a number")
} else {
usize::from_str(DEFAULT_ROOT_COUNT).unwrap()
};
let iter = blocktree
.rooted_slot_iterator(0)
.expect("Failed to get rooted slot");
let slot_hash: Vec<_> = iter
.filter_map(|(slot, meta)| {
if slot <= max_height as u64 {
let blockhash = blocktree
.get_slot_entries(slot, meta.last_index, Some(1))
.unwrap()
.first()
.unwrap()
.hash;
Some((slot, blockhash))
} else {
None
}
})
.collect();
let mut output_file: Box<Write> = if let Some(path) = args_matches.value_of("slot_list")
{
match File::create(path) {
Ok(file) => Box::new(file),
_ => Box::new(stdout()),
}
} else {
Box::new(stdout())
};
slot_hash
.into_iter()
.rev()
.enumerate()
.for_each(|(i, (slot, hash))| {
if i < num_roots {
output_file
.write_all(format!("{:?}: {:?}\n", slot, hash).as_bytes())
.expect("failed to write");
}
});
}
("", _) => {
eprintln!("{}", matches.usage());
exit(1);

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-merkle-tree"
version = "0.16.3"
version = "0.16.4"
description = "Solana Merkle Tree"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -9,7 +9,7 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
[dev-dependencies]
hex = "0.3.2"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-metrics"
version = "0.16.3"
version = "0.16.4"
description = "Solana Metrics"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -14,7 +14,7 @@ influx_db_client = "0.3.6"
lazy_static = "1.3.0"
log = "0.4.2"
reqwest = "0.9.18"
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
sys-info = "0.5.7"
[dev-dependencies]

View File

@@ -60,6 +60,8 @@ Operate a configured testnet
- Amount to stake internal nodes in genesis block. If set, airdrops are disabled.
--external-accounts-file FILE_PATH
- A YML file with a list of account pubkeys and corresponding stakes for external nodes
--no-snapshot
- If set, disables booting validators from a snapshot
sanity/start/update-specific options:
-F - Discard validator nodes that didn't bootup successfully
-o noLedgerVerify - Skip ledger verification
@@ -97,6 +99,7 @@ numFullnodesRequested=
externalPrimordialAccountsFile=
remoteExternalPrimordialAccountsFile=
stakeNodesInGenesisBlock=
maybeNoSnapshot=""
command=$1
[[ -n $command ]] || usage
@@ -114,6 +117,9 @@ while [[ -n $1 ]]; do
elif [[ $1 = --lamports ]]; then
genesisOptions="$genesisOptions $1 $2"
shift 2
elif [[ $1 = --no-snapshot ]]; then
maybeNoSnapshot="$1"
shift 1
elif [[ $1 = --deploy-update ]]; then
updatePlatforms="$updatePlatforms $2"
shift 2
@@ -353,6 +359,7 @@ startBootstrapLeader() {
$numBenchTpsClients \"$benchTpsExtraArgs\" \
$numBenchExchangeClients \"$benchExchangeExtraArgs\" \
\"$genesisOptions\" \
$maybeNoSnapshot \
"
) >> "$logFile" 2>&1 || {
cat "$logFile"
@@ -402,6 +409,7 @@ startNode() {
\"$stakeNodesInGenesisBlock\" \
$nodeIndex \
\"$genesisOptions\" \
$maybeNoSnapshot \
"
) >> "$logFile" 2>&1 &
declare pid=$!

View File

@@ -19,6 +19,7 @@ benchTpsExtraArgs="${12}"
numBenchExchangeClients="${13}"
benchExchangeExtraArgs="${14}"
genesisOptions="${15}"
noSnapshot="${16}"
set +x
export RUST_LOG
@@ -170,6 +171,7 @@ local|tar)
args+=(--no-airdrop)
fi
args+=(--init-complete-file "$initCompleteFile")
args+=("$noSnapshot")
nohup ./multinode-demo/validator.sh --bootstrap-leader "${args[@]}" > fullnode.log 2>&1 &
waitForNodeToInit
;;
@@ -247,6 +249,7 @@ local|tar)
fi
args+=(--init-complete-file "$initCompleteFile")
args+=("$noSnapshot")
nohup ./multinode-demo/validator.sh "${args[@]}" > fullnode.log 2>&1 &
waitForNodeToInit
;;
@@ -264,6 +267,7 @@ local|tar)
if [[ $skipSetup != true ]]; then
./multinode-demo/clear-config.sh
fi
args+=("$noSnapshot")
nohup ./multinode-demo/replicator.sh "${args[@]}" > fullnode.log 2>&1 &
sleep 1
;;

View File

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

View File

@@ -1,7 +1,7 @@
[package]
name = "solana-bpf-programs"
description = "Blockchain, Rebuilt for Scale"
version = "0.16.3"
version = "0.16.4"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "README.md"
@@ -9,6 +9,7 @@ repository = "https://github.com/solana-labs/solana"
authors = ["Solana Maintainers <maintainers@solana.com>"]
license = "Apache-2.0"
edition = "2018"
publish = false
[features]
bpf_c = []
@@ -21,10 +22,10 @@ walkdir = "2"
bincode = "1.1.4"
byteorder = "1.3.2"
elf = "0.0.10"
solana-bpf-loader-api = { path = "../bpf_loader_api", version = "0.16.3" }
solana-logger = { path = "../../logger", version = "0.16.3" }
solana-runtime = { path = "../../runtime", version = "0.16.3" }
solana-sdk = { path = "../../sdk", version = "0.16.3" }
solana-bpf-loader-api = { path = "../bpf_loader_api", version = "0.16.4" }
solana-logger = { path = "../../logger", version = "0.16.4" }
solana-runtime = { path = "../../runtime", version = "0.16.4" }
solana-sdk = { path = "../../sdk", version = "0.16.4" }
solana_rbpf = "=0.1.13"
[[bench]]

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-dep-crate"
version = "0.16.3"
version = "0.16.4"
description = "Solana BPF dep-crate program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -13,7 +13,7 @@ edition = "2018"
[dependencies]
byteorder = { version = "1", default-features = false }
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.16.3" }
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.16.4" }
[workspace]
members = []

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-tick-height"
version = "0.16.3"
version = "0.16.4"
description = "Solana BPF noop program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -14,7 +14,7 @@ edition = "2018"
[dependencies]
byteorder = { version = "1", default-features = false }
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.16.3" }
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust/rust-utils", version = "0.16.4" }
[workspace]
members = []

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-bpf-loader-api"
version = "0.16.3"
version = "0.16.4"
description = "Solana BPF Loader"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -14,8 +14,8 @@ byteorder = "1.3.2"
libc = "0.2.58"
log = "0.4.2"
serde = "1.0.92"
solana-logger = { path = "../../logger", version = "0.16.3" }
solana-sdk = { path = "../../sdk", version = "0.16.3" }
solana-logger = { path = "../../logger", version = "0.16.4" }
solana-sdk = { path = "../../sdk", version = "0.16.4" }
solana_rbpf = "=0.1.13"
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-bpf-loader-program"
version = "0.16.3"
version = "0.16.4"
description = "Solana BPF Loader"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -10,9 +10,9 @@ edition = "2018"
[dependencies]
log = "0.4.2"
solana-logger = { path = "../../logger", version = "0.16.3" }
solana-sdk = { path = "../../sdk", version = "0.16.3" }
solana-bpf-loader-api = { path = "../bpf_loader_api", version = "0.16.3" }
solana-logger = { path = "../../logger", version = "0.16.4" }
solana-sdk = { path = "../../sdk", version = "0.16.4" }
solana-bpf-loader-api = { path = "../bpf_loader_api", version = "0.16.4" }
[lib]
crate-type = ["lib", "cdylib"]

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,24 +1,23 @@
use solana_runtime::bank::Bank;
use solana_runtime::bank_client::BankClient;
use solana_runtime::loader_utils::{create_invoke_instruction, load_program};
use solana_runtime::loader_utils::create_invoke_instruction;
use solana_sdk::client::SyncClient;
use solana_sdk::genesis_block::create_genesis_block;
use solana_sdk::instruction::InstructionError;
use solana_sdk::native_loader;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::KeypairUtil;
use solana_sdk::transaction::TransactionError;
#[test]
fn test_program_native_failure() {
let (genesis_block, alice_keypair) = create_genesis_block(50);
let program_id = Pubkey::new_rand();
let bank = Bank::new(&genesis_block);
let bank_client = BankClient::new(bank);
let program = "solana_failure_program".as_bytes().to_vec();
let program_id = load_program(&bank_client, &alice_keypair, &native_loader::id(), program);
bank.register_native_instruction_processor("solana_failure_program", &program_id);
// Call user program
let instruction = create_invoke_instruction(alice_keypair.pubkey(), program_id, &1u8);
let bank_client = BankClient::new(bank);
assert_eq!(
bank_client
.send_instruction(&alice_keypair, instruction)

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-stake-api"
version = "0.16.3"
version = "0.16.4"
description = "Solana Stake program API"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -14,10 +14,10 @@ log = "0.4.2"
rand = "0.6.5"
serde = "1.0.92"
serde_derive = "1.0.92"
solana-logger = { path = "../../logger", version = "0.16.3" }
solana-metrics = { path = "../../metrics", version = "0.16.3" }
solana-sdk = { path = "../../sdk", version = "0.16.3" }
solana-vote-api = { path = "../vote_api", version = "0.16.3" }
solana-logger = { path = "../../logger", version = "0.16.4" }
solana-metrics = { path = "../../metrics", version = "0.16.4" }
solana-sdk = { path = "../../sdk", version = "0.16.4" }
solana-vote-api = { path = "../vote_api", version = "0.16.4" }
[lib]
crate-type = ["lib"]

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-storage-api"
version = "0.16.3"
version = "0.16.4"
description = "Solana Storage program API"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -17,8 +17,8 @@ num-derive = "0.2"
num-traits = "0.2"
serde = "1.0.92"
serde_derive = "1.0.92"
solana-logger = { path = "../../logger", version = "0.16.3" }
solana-sdk = { path = "../../sdk", version = "0.16.3" }
solana-logger = { path = "../../logger", version = "0.16.4" }
solana-sdk = { path = "../../sdk", version = "0.16.4" }
[lib]
crate-type = ["lib"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-storage-program"
version = "0.16.3"
version = "0.16.4"
description = "Solana storage program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -10,12 +10,12 @@ edition = "2018"
[dependencies]
log = "0.4.2"
solana-logger = { path = "../../logger", version = "0.16.3" }
solana-sdk = { path = "../../sdk", version = "0.16.3" }
solana-storage-api = { path = "../storage_api", version = "0.16.3" }
solana-logger = { path = "../../logger", version = "0.16.4" }
solana-sdk = { path = "../../sdk", version = "0.16.4" }
solana-storage-api = { path = "../storage_api", version = "0.16.4" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.16.3" }
solana-runtime = { path = "../../runtime", version = "0.16.4" }
assert_matches = "1.3.0"
bincode = "1.1.4"

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-runtime"
version = "0.16.3"
version = "0.16.4"
description = "Solana runtime"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -25,17 +25,17 @@ rayon = "1.1.0"
serde = "1.0.92"
serde_derive = "1.0.92"
serde_json = "1.0.38"
solana-logger = { path = "../logger", version = "0.16.3" }
solana-metrics = { path = "../metrics", version = "0.16.3" }
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.16.3" }
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.16.3" }
solana-noop-program = { path = "../programs/noop_program", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-stake-api = { path = "../programs/stake_api", version = "0.16.3" }
solana-stake-program = { path = "../programs/stake_program", version = "0.16.3" }
solana-storage-api = { path = "../programs/storage_api", version = "0.16.3" }
solana-vote-api = { path = "../programs/vote_api", version = "0.16.3" }
solana-vote-program = { path = "../programs/vote_program", version = "0.16.3" }
solana-logger = { path = "../logger", version = "0.16.4" }
solana-metrics = { path = "../metrics", version = "0.16.4" }
solana-bpf-loader-api = { path = "../programs/bpf_loader_api", version = "0.16.4" }
solana-bpf-loader-program = { path = "../programs/bpf_loader_program", version = "0.16.4" }
solana-noop-program = { path = "../programs/noop_program", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
solana-stake-api = { path = "../programs/stake_api", version = "0.16.4" }
solana-stake-program = { path = "../programs/stake_program", version = "0.16.4" }
solana-storage-api = { path = "../programs/storage_api", version = "0.16.4" }
solana-vote-api = { path = "../programs/vote_api", version = "0.16.4" }
solana-vote-program = { path = "../programs/vote_program", version = "0.16.4" }
sys-info = "0.5.7"
[lib]

View File

@@ -5,13 +5,12 @@ extern crate test;
use log::*;
use solana_runtime::bank::*;
use solana_runtime::bank_client::BankClient;
use solana_runtime::loader_utils::{create_invoke_instruction, load_program};
use solana_runtime::loader_utils::create_invoke_instruction;
use solana_sdk::account::KeyedAccount;
use solana_sdk::client::AsyncClient;
use solana_sdk::client::SyncClient;
use solana_sdk::genesis_block::create_genesis_block;
use solana_sdk::instruction::InstructionError;
use solana_sdk::native_loader;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::{Keypair, KeypairUtil};
use solana_sdk::transaction::Transaction;
@@ -25,6 +24,11 @@ const BUILTIN_PROGRAM_ID: [u8; 32] = [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
];
const NOOP_PROGRAM_ID: [u8; 32] = [
098, 117, 105, 108, 116, 105, 110, 095, 112, 114, 111, 103, 114, 097, 109, 095, 105, 100, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
];
fn process_instruction(
_program_id: &Pubkey,
_keyed_accounts: &mut [KeyedAccount],
@@ -59,8 +63,7 @@ pub fn create_native_loader_transactions(
bank_client: &BankClient,
mint_keypair: &Keypair,
) -> Vec<Transaction> {
let program = "solana_noop_program".as_bytes().to_vec();
let program_id = load_program(&bank_client, &mint_keypair, &native_loader::id(), program);
let program_id = Pubkey::new(&NOOP_PROGRAM_ID);
(0..4096)
.into_iter()
@@ -120,6 +123,10 @@ fn do_bench_transactions(
let (genesis_block, mint_keypair) = create_genesis_block(100_000_000);
let mut bank = Bank::new(&genesis_block);
bank.add_instruction_processor(Pubkey::new(&BUILTIN_PROGRAM_ID), process_instruction);
bank.register_native_instruction_processor(
"solana_noop_program",
&Pubkey::new(&NOOP_PROGRAM_ID),
);
let bank = Arc::new(bank);
let bank_client = BankClient::new_shared(&bank);
let transactions = create_transactions(&bank_client, &mint_keypair);

View File

@@ -18,7 +18,8 @@ use crate::stakes::Stakes;
use crate::status_cache::StatusCache;
use crate::storage_utils;
use crate::storage_utils::StorageAccounts;
use bincode::{deserialize_from, serialize, serialize_into, serialized_size};
use bincode::{deserialize_from, serialize_into, serialized_size};
use byteorder::{ByteOrder, LittleEndian};
use log::*;
use serde::{Deserialize, Serialize};
use solana_metrics::{
@@ -27,7 +28,7 @@ use solana_metrics::{
use solana_sdk::account::Account;
use solana_sdk::fee_calculator::FeeCalculator;
use solana_sdk::genesis_block::GenesisBlock;
use solana_sdk::hash::{extend_and_hash, Hash};
use solana_sdk::hash::{hashv, Hash};
use solana_sdk::inflation::Inflation;
use solana_sdk::native_loader;
use solana_sdk::pubkey::Pubkey;
@@ -918,6 +919,8 @@ impl Bank {
) -> (
Vec<Result<(InstructionAccounts, InstructionLoaders, InstructionCredits)>>,
Vec<Result<()>>,
usize,
usize,
) {
debug!("processing transactions: {}", txs.len());
let mut error_counters = ErrorCounters::default();
@@ -977,13 +980,8 @@ impl Bank {
inc_new_counter_error!("bank-process_transactions-error_count", err_count, 0, 1000);
}
self.increment_transaction_count(tx_count);
self.increment_signature_count(signature_count);
inc_new_counter_info!("bank-process_transactions-txs", tx_count, 0, 1000);
inc_new_counter_info!("bank-process_transactions-sigs", signature_count, 0, 1000);
Self::update_error_counters(&error_counters);
(loaded_accounts, executed)
(loaded_accounts, executed, tx_count, signature_count)
}
fn filter_program_errors_and_collect_fee(
@@ -1031,11 +1029,19 @@ impl Bank {
txs: &[Transaction],
loaded_accounts: &[Result<(InstructionAccounts, InstructionLoaders, InstructionCredits)>],
executed: &[Result<()>],
tx_count: usize,
signature_count: usize,
) -> Vec<Result<()>> {
if self.is_frozen() {
warn!("=========== FIXME: commit_transactions() working on a frozen bank! ================");
}
self.increment_transaction_count(tx_count);
self.increment_signature_count(signature_count);
inc_new_counter_info!("bank-process_transactions-txs", tx_count, 0, 1000);
inc_new_counter_info!("bank-process_transactions-sigs", signature_count, 0, 1000);
if executed.iter().any(|res| Self::can_commit(res)) {
self.is_delta.store(true, Ordering::Relaxed);
}
@@ -1068,10 +1074,10 @@ impl Bank {
lock_results: &LockedAccountsResults,
max_age: usize,
) -> Vec<Result<()>> {
let (loaded_accounts, executed) =
let (loaded_accounts, executed, tx_count, signature_count) =
self.load_and_execute_transactions(txs, lock_results, max_age);
self.commit_transactions(txs, &loaded_accounts, &executed)
self.commit_transactions(txs, &loaded_accounts, &executed, tx_count, signature_count)
}
#[must_use]
@@ -1227,7 +1233,14 @@ impl Bank {
// If there are no accounts, return the same hash as we did before
// checkpointing.
if let Some(accounts_delta_hash) = self.rc.accounts.hash_internal_state(self.slot()) {
extend_and_hash(&self.parent_hash, &serialize(&accounts_delta_hash).unwrap())
let mut signature_count_buf = [0u8; 8];
LittleEndian::write_u64(&mut signature_count_buf[..], self.signature_count() as u64);
hashv(&[
&self.parent_hash.as_ref(),
&accounts_delta_hash.as_ref(),
&signature_count_buf,
])
} else {
self.parent_hash
}
@@ -1720,7 +1733,7 @@ mod tests {
fn goto_end_of_slot(bank: &mut Bank) {
let mut tick_hash = bank.last_blockhash();
loop {
tick_hash = extend_and_hash(&tick_hash, &[42]);
tick_hash = hashv(&[&tick_hash.as_ref(), &[42]]);
bank.register_tick(&tick_hash);
if tick_hash == bank.last_blockhash() {
bank.freeze();

View File

@@ -1,6 +1,5 @@
//! Native loader
use crate::message_processor::SymbolCache;
use bincode::deserialize;
#[cfg(unix)]
use libloading::os::unix::*;
#[cfg(windows)]
@@ -9,7 +8,6 @@ use log::*;
use solana_sdk::account::KeyedAccount;
use solana_sdk::instruction::InstructionError;
use solana_sdk::instruction_processor_utils;
use solana_sdk::loader_instruction::LoaderInstruction;
use solana_sdk::pubkey::Pubkey;
use std::env;
use std::path::PathBuf;
@@ -109,45 +107,15 @@ pub fn entrypoint(
.write()
.unwrap()
.insert(name_vec.to_vec(), entrypoint);
return ret;
ret
},
Err(e) => {
warn!("Unable to load: {:?}", e);
return Err(InstructionError::GenericError);
}
}
} else if let Ok(instruction) = deserialize(ix_data) {
if keyed_accounts[0].signer_key().is_none() {
warn!("key[0] did not sign the transaction");
return Err(InstructionError::GenericError);
}
match instruction {
LoaderInstruction::Write { offset, bytes } => {
trace!("NativeLoader::Write offset {} bytes {:?}", offset, bytes);
let offset = offset as usize;
if keyed_accounts[0].account.data.len() < offset + bytes.len() {
warn!(
"Error: Overflow, {} < {}",
keyed_accounts[0].account.data.len(),
offset + bytes.len()
);
return Err(InstructionError::GenericError);
}
// native loader takes a name and we assume it all comes in at once
keyed_accounts[0].account.data = bytes;
}
LoaderInstruction::Finalize => {
keyed_accounts[0].account.executable = true;
trace!(
"NativeLoader::Finalize prog: {:?}",
keyed_accounts[0].signer_key().unwrap()
);
Err(InstructionError::GenericError)
}
}
} else {
warn!("Invalid data in instruction: {:?}", ix_data);
return Err(InstructionError::GenericError);
Err(InstructionError::GenericError)
}
Ok(())
}

View File

@@ -1,9 +1,9 @@
use solana_runtime::bank::Bank;
use solana_runtime::bank_client::BankClient;
use solana_runtime::loader_utils::{create_invoke_instruction, load_program};
use solana_runtime::loader_utils::create_invoke_instruction;
use solana_sdk::client::SyncClient;
use solana_sdk::genesis_block::create_genesis_block;
use solana_sdk::native_loader;
use solana_sdk::pubkey::Pubkey;
use solana_sdk::signature::KeypairUtil;
#[test]
@@ -11,14 +11,13 @@ fn test_program_native_noop() {
solana_logger::setup();
let (genesis_block, alice_keypair) = create_genesis_block(50);
let program_id = Pubkey::new_rand();
let bank = Bank::new(&genesis_block);
let bank_client = BankClient::new(bank);
let program = "solana_noop_program".as_bytes().to_vec();
let program_id = load_program(&bank_client, &alice_keypair, &native_loader::id(), program);
bank.register_native_instruction_processor("solana_noop_program", &program_id);
// Call user program
let instruction = create_invoke_instruction(alice_keypair.pubkey(), program_id, &1u8);
let bank_client = BankClient::new(bank);
bank_client
.send_instruction(&alice_keypair, instruction)
.unwrap();

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-sdk"
version = "0.16.3"
version = "0.16.4"
description = "Solana SDK"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -28,5 +28,5 @@ serde_derive = "1.0.92"
serde_json = "1.0.39"
sha2 = "0.8.0"
solana-ed25519-dalek = "0.2.0"
solana-logger = { path = "../logger", version = "0.16.3" }
solana-logger = { path = "../logger", version = "0.16.4" }
untrusted = "0.6.2"

View File

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

View File

@@ -11,6 +11,7 @@ pub mod tick_height;
pub fn is_syscall_id(id: &Pubkey) -> bool {
current::check_id(id)
|| fees::check_id(id)
|| rewards::check_id(id)
|| slot_hashes::check_id(id)
|| tick_height::check_id(id)
}

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-upload-perf"
version = "0.16.3"
version = "0.16.4"
description = "Metrics Upload Utility"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,7 +12,7 @@ publish = false
[dependencies]
log = "0.4.2"
serde_json = "1.0.39"
solana-metrics = { path = "../metrics", version = "0.16.3" }
solana-metrics = { path = "../metrics", version = "0.16.4" }
[[bin]]
name = "solana-upload-perf"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-validator-info"
version = "0.16.3"
version = "0.16.4"
description = "Solana validator registration tool"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -16,12 +16,13 @@ cuda = []
bincode = "1.1.4"
clap = "2.33"
dirs = "2.0.1"
reqwest = "0.9.18"
serde = "1.0.94"
serde_derive = "1.0.94"
serde_json = "1.0.40"
solana-client = { path = "../client", version = "0.16.3" }
solana-config-api = { path = "../programs/config_api", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-client = { path = "../client", version = "0.16.4" }
solana-config-api = { path = "../programs/config_api", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
url = "1.7.2"
[[bin]]

View File

@@ -2,6 +2,7 @@ use bincode::deserialize;
use clap::{
crate_description, crate_name, crate_version, App, AppSettings, Arg, ArgMatches, SubCommand,
};
use reqwest::Client;
use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};
use solana_client::rpc_client::RpcClient;
@@ -99,7 +100,30 @@ fn check_details_length(string: String) -> Result<(), String> {
}
}
fn parse_args(matches: &ArgMatches<'_>) -> Result<String, Box<dyn error::Error>> {
fn verify_keybase(
validator_pubkey: &Pubkey,
keybase_id: &Value,
) -> Result<(), Box<dyn error::Error>> {
if let Some(keybase_id) = keybase_id.as_str() {
let url = format!(
"https://keybase.pub/{}/solana_pubkey_{:?}",
keybase_id, validator_pubkey
);
let client = Client::new();
if client.head(&url).send()?.status().is_success() {
Ok(())
} else {
Err(format!("keybase_id could not be confirmed at: {}. Please add this pubkey file to your keybase profile to connect", url))?
}
} else {
Err(format!(
"keybase_id could not be parsed as String: {}",
keybase_id
))?
}
}
fn parse_args(matches: &ArgMatches<'_>) -> Value {
let mut map = Map::new();
map.insert(
"name".to_string(),
@@ -117,8 +141,7 @@ fn parse_args(matches: &ArgMatches<'_>) -> Result<String, Box<dyn error::Error>>
Value::String(keybase_id.to_string()),
);
}
let string = serde_json::to_string(&Value::Object(map))?;
Ok(string)
Value::Object(map)
}
fn parse_validator_info(account_data: &[u8]) -> Result<(Pubkey, String), Box<dyn error::Error>> {
@@ -271,9 +294,13 @@ fn main() -> Result<(), Box<dyn error::Error>> {
// Prepare validator info
let keys = vec![(id(), false), (validator_keypair.pubkey(), true)];
let validator_info = parse_args(&matches)?;
let validator_info = parse_args(&matches);
if let Some(string) = validator_info.get("keybaseId") {
verify_keybase(&validator_keypair.pubkey(), &string)?;
}
let validator_string = serde_json::to_string(&validator_info)?;
let validator_info = ValidatorInfo {
info: validator_info,
info: validator_string,
};
// Check existence of validator-info account
@@ -400,12 +427,11 @@ mod tests {
.arg(Arg::with_name("keybase_id").short("k").takes_value(true))
.arg(Arg::with_name("details").short("d").takes_value(true))
.get_matches_from(vec!["test", "-n", "Alice", "-k", "464bb0f2956f7e83"]);
let expected_string = serde_json::to_string(&json!({
let expected = json!({
"name": "Alice",
"keybaseId": "464bb0f2956f7e83",
}))
.unwrap();
assert_eq!(parse_args(&matches).unwrap(), expected_string);
});
assert_eq!(parse_args(&matches), expected);
}
#[test]

View File

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

View File

@@ -162,6 +162,12 @@ fn main() {
.value_name("PATHS")
.takes_value(true)
.help("Snapshot path"),
)
.arg(
clap::Arg::with_name("skip_ledger_verify")
.long("skip-ledger-verify")
.takes_value(false)
.help("Skip ledger verification at node bootup"),
)
.get_matches();
@@ -267,6 +273,8 @@ fn main() {
node.info.rpc_pubsub = SocketAddr::new(gossip_addr.ip(), port_number + 1);
};
let verify_ledger = !matches.is_present("skip_ledger_verify");
let validator = Validator::new(
node,
&keypair,
@@ -275,6 +283,7 @@ fn main() {
&Arc::new(voting_keypair),
&Arc::new(storage_keypair),
cluster_entrypoint.as_ref(),
verify_ledger,
&validator_config,
);

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-vote-signer"
description = "Solana Vote Signing Service"
version = "0.16.3"
version = "0.16.4"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -17,8 +17,8 @@ jsonrpc-http-server = "12.0.0"
log = "0.4.2"
serde = "1.0.92"
serde_json = "1.0.39"
solana-metrics = { path = "../metrics", version = "0.16.3" }
solana-sdk = { path = "../sdk", version = "0.16.3" }
solana-metrics = { path = "../metrics", version = "0.16.4" }
solana-sdk = { path = "../sdk", version = "0.16.4" }
[lib]
crate-type = ["lib"]

View File

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

View File

@@ -540,13 +540,31 @@ fn process_show_vote_account(
}
);
if !vote_state.votes.is_empty() {
println!("votes:");
for vote in vote_state.votes {
println!("recent votes:");
for vote in &vote_state.votes {
println!(
"- slot={}, confirmation count={}",
"- slot: {}\n confirmation count: {}",
vote.slot, vote.confirmation_count
);
}
// TODO: Use the real GenesisBlock from the cluster.
let genesis_block = solana_sdk::genesis_block::GenesisBlock::default();
let epoch_schedule = solana_runtime::epoch_schedule::EpochSchedule::new(
genesis_block.slots_per_epoch,
genesis_block.stakers_slot_offset,
genesis_block.epoch_warmup,
);
println!("epoch voting history:");
for (epoch, credits, prev_credits) in vote_state.epoch_credits() {
let credits_earned = credits - prev_credits;
let slots_in_epoch = epoch_schedule.get_slots_in_epoch(*epoch);
println!(
"- epoch: {}\n slots in epoch: {}\n credits earned: {}",
epoch, slots_in_epoch, credits_earned,
);
}
}
Ok("".to_string())
}