Compare commits
23 Commits
Author | SHA1 | Date | |
---|---|---|---|
dc60c72c2d | |||
e59c74562f | |||
eb4ce8e3b2 | |||
e2a050f77d | |||
74b97166a9 | |||
b13d5c3264 | |||
72a44c58d9 | |||
f6e804b0a1 | |||
827e794b6f | |||
d916ffeba5 | |||
dd1ed323e7 | |||
491f82bbcd | |||
c486d1af8c | |||
b4adb1c266 | |||
b9b541441b | |||
e510d4e272 | |||
9341e64ec7 | |||
d934f94e05 | |||
59dc123fa8 | |||
0faea87c84 | |||
19137ce3f4 | |||
8bdeb2d1ed | |||
d29a45266b |
413
Cargo.lock
generated
413
Cargo.lock
generated
@ -2167,7 +2167,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana"
|
name = "solana"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2198,26 +2198,26 @@ dependencies = [
|
|||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-budget-api 0.15.0",
|
"solana-budget-api 0.15.2",
|
||||||
"solana-budget-program 0.15.0",
|
"solana-budget-program 0.15.2",
|
||||||
"solana-client 0.15.0",
|
"solana-client 0.15.2",
|
||||||
"solana-config-program 0.15.0",
|
"solana-config-program 0.15.2",
|
||||||
"solana-drone 0.15.0",
|
"solana-drone 0.15.2",
|
||||||
"solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana-ed25519-dalek 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-exchange-program 0.15.0",
|
"solana-exchange-program 0.15.2",
|
||||||
"solana-kvstore 0.15.0",
|
"solana-kvstore 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-stake-api 0.15.0",
|
"solana-stake-api 0.15.2",
|
||||||
"solana-stake-program 0.15.0",
|
"solana-stake-program 0.15.2",
|
||||||
"solana-storage-api 0.15.0",
|
"solana-storage-api 0.15.2",
|
||||||
"solana-storage-program 0.15.0",
|
"solana-storage-program 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
"solana-vote-program 0.15.0",
|
"solana-vote-program 0.15.2",
|
||||||
"solana-vote-signer 0.15.0",
|
"solana-vote-signer 0.15.2",
|
||||||
"sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2226,7 +2226,7 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-bench-exchange"
|
name = "solana-bench-exchange"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2241,80 +2241,80 @@ dependencies = [
|
|||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-client 0.15.0",
|
"solana-client 0.15.2",
|
||||||
"solana-drone 0.15.0",
|
"solana-drone 0.15.2",
|
||||||
"solana-exchange-api 0.15.0",
|
"solana-exchange-api 0.15.2",
|
||||||
"solana-exchange-program 0.15.0",
|
"solana-exchange-program 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"ws 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-bench-streamer"
|
name = "solana-bench-streamer"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-bench-tps"
|
name = "solana-bench-tps"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rayon 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-client 0.15.0",
|
"solana-client 0.15.2",
|
||||||
"solana-drone 0.15.0",
|
"solana-drone 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-bpf-programs"
|
name = "solana-bpf-programs"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
"elf 0.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-bpfloader 0.15.0",
|
"solana-bpfloader 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"walkdir 2.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-bpfloader"
|
name = "solana-bpfloader"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)",
|
"libc 0.2.55 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
"solana_rbpf 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-budget-api"
|
name = "solana-budget-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"chrono 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2323,23 +2323,23 @@ dependencies = [
|
|||||||
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-budget-program"
|
name = "solana-budget-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-budget-api 0.15.0",
|
"solana-budget-api 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-client"
|
name = "solana-client"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2350,37 +2350,37 @@ dependencies = [
|
|||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-config-api"
|
name = "solana-config-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-config-program"
|
name = "solana-config-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-config-api 0.15.0",
|
"solana-config-api 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-drone"
|
name = "solana-drone"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2389,9 +2389,9 @@ dependencies = [
|
|||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
@ -2410,77 +2410,77 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-exchange-api"
|
name = "solana-exchange-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-exchange-program"
|
name = "solana-exchange-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-exchange-api 0.15.0",
|
"solana-exchange-api 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-failure-program"
|
name = "solana-failure-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-genesis"
|
name = "solana-genesis"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"hashbrown 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"hashbrown 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-budget-api 0.15.0",
|
"solana-budget-api 0.15.2",
|
||||||
"solana-budget-program 0.15.0",
|
"solana-budget-program 0.15.2",
|
||||||
"solana-config-api 0.15.0",
|
"solana-config-api 0.15.2",
|
||||||
"solana-config-program 0.15.0",
|
"solana-config-program 0.15.2",
|
||||||
"solana-exchange-api 0.15.0",
|
"solana-exchange-api 0.15.2",
|
||||||
"solana-exchange-program 0.15.0",
|
"solana-exchange-program 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-stake-api 0.15.0",
|
"solana-stake-api 0.15.2",
|
||||||
"solana-stake-program 0.15.0",
|
"solana-stake-program 0.15.2",
|
||||||
"solana-storage-api 0.15.0",
|
"solana-storage-api 0.15.2",
|
||||||
"solana-storage-program 0.15.0",
|
"solana-storage-program 0.15.2",
|
||||||
"solana-token-api 0.15.0",
|
"solana-token-api 0.15.2",
|
||||||
"solana-token-program 0.15.0",
|
"solana-token-program 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
"solana-vote-program 0.15.0",
|
"solana-vote-program 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-gossip"
|
name = "solana-gossip"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-client 0.15.0",
|
"solana-client 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-install"
|
name = "solana-install"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2497,10 +2497,10 @@ dependencies = [
|
|||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-client 0.15.0",
|
"solana-client 0.15.2",
|
||||||
"solana-config-api 0.15.0",
|
"solana-config-api 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2508,16 +2508,16 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-keygen"
|
name = "solana-keygen"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-kvstore"
|
name = "solana-kvstore"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2532,27 +2532,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-ledger-tool"
|
name = "solana-ledger-tool"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-logger"
|
name = "solana-logger"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-metrics"
|
name = "solana-metrics"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
"env_logger 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"influx_db_client 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"influx_db_client 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2560,13 +2560,13 @@ dependencies = [
|
|||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"reqwest 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
"reqwest 0.9.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"sys-info 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-netutil"
|
name = "solana-netutil"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2574,34 +2574,33 @@ dependencies = [
|
|||||||
"nix 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"nix 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
"rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
"socket2 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
"tokio 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-noop-program"
|
name = "solana-noop-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-replicator"
|
name = "solana-replicator"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-runtime"
|
name = "solana-runtime"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2617,21 +2616,19 @@ dependencies = [
|
|||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-noop-program 0.15.0",
|
"solana-noop-program 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-stake-api 0.15.0",
|
"solana-stake-api 0.15.2",
|
||||||
"solana-stake-program 0.15.0",
|
"solana-stake-program 0.15.2",
|
||||||
"solana-storage-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
"solana-storage-program 0.15.0",
|
"solana-vote-program 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
|
||||||
"solana-vote-program 0.15.0",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-sdk"
|
name = "solana-sdk"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2655,55 +2652,55 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-stake-api"
|
name = "solana-stake-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-stake-program"
|
name = "solana-stake-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-stake-api 0.15.0",
|
"solana-stake-api 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-storage-api"
|
name = "solana-storage-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-storage-program"
|
name = "solana-storage-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-storage-api 0.15.0",
|
"solana-storage-api 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-token-api"
|
name = "solana-token-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2711,73 +2708,73 @@ dependencies = [
|
|||||||
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-token-program"
|
name = "solana-token-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-token-api 0.15.0",
|
"solana-token-api 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-upload-perf"
|
name = "solana-upload-perf"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-validator"
|
name = "solana-validator"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-drone 0.15.0",
|
"solana-drone 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-runtime 0.15.0",
|
"solana-runtime 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
"solana-vote-signer 0.15.0",
|
"solana-vote-signer 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-vote-api"
|
name = "solana-vote-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_derive 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-vote-program"
|
name = "solana-vote-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-vote-signer"
|
name = "solana-vote-signer"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
"clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2787,13 +2784,13 @@ dependencies = [
|
|||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde 1.0.91 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana-metrics 0.15.0",
|
"solana-metrics 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "solana-wallet"
|
name = "solana-wallet"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bincode 1.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"bs58 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
@ -2803,18 +2800,18 @@ dependencies = [
|
|||||||
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
"log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
"num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
"serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
"solana 0.15.0",
|
"solana 0.15.2",
|
||||||
"solana-budget-api 0.15.0",
|
"solana-budget-api 0.15.2",
|
||||||
"solana-budget-program 0.15.0",
|
"solana-budget-program 0.15.2",
|
||||||
"solana-client 0.15.0",
|
"solana-client 0.15.2",
|
||||||
"solana-drone 0.15.0",
|
"solana-drone 0.15.2",
|
||||||
"solana-logger 0.15.0",
|
"solana-logger 0.15.2",
|
||||||
"solana-netutil 0.15.0",
|
"solana-netutil 0.15.2",
|
||||||
"solana-sdk 0.15.0",
|
"solana-sdk 0.15.2",
|
||||||
"solana-stake-api 0.15.0",
|
"solana-stake-api 0.15.2",
|
||||||
"solana-storage-api 0.15.0",
|
"solana-storage-api 0.15.2",
|
||||||
"solana-vote-api 0.15.0",
|
"solana-vote-api 0.15.2",
|
||||||
"solana-vote-signer 0.15.0",
|
"solana-vote-signer 0.15.2",
|
||||||
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
"url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -2,10 +2,11 @@
|
|||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-bench-exchange"
|
name = "solana-bench-exchange"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
|
publish = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bs58 = "0.2.0"
|
bs58 = "0.2.0"
|
||||||
@ -22,16 +23,16 @@ serde = "1.0.91"
|
|||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
serde_json = "1.0.38"
|
serde_json = "1.0.38"
|
||||||
# solana-runtime = { path = "../solana/runtime"}
|
# solana-runtime = { path = "../solana/runtime"}
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-client = { path = "../client", version = "0.15.0" }
|
solana-client = { path = "../client", version = "0.15.2" }
|
||||||
solana-drone = { path = "../drone", version = "0.15.0" }
|
solana-drone = { path = "../drone", version = "0.15.2" }
|
||||||
solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.0" }
|
solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.2" }
|
||||||
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" }
|
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-runtime = { path = "../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../runtime", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
ws = "0.8.1"
|
ws = "0.8.1"
|
||||||
untrusted = "0.6.2"
|
untrusted = "0.6.2"
|
||||||
|
|
||||||
|
@ -2,16 +2,16 @@
|
|||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-bench-streamer"
|
name = "solana-bench-streamer"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33.0"
|
clap = "2.33.0"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
cuda = ["solana/cuda"]
|
cuda = ["solana/cuda"]
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-bench-tps"
|
name = "solana-bench-tps"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -12,14 +12,14 @@ clap = "2.33.0"
|
|||||||
log = "0.4.6"
|
log = "0.4.6"
|
||||||
rayon = "1.0.3"
|
rayon = "1.0.3"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-client = { path = "../client", version = "0.15.0" }
|
solana-client = { path = "../client", version = "0.15.2" }
|
||||||
solana-drone = { path = "../drone", version = "0.15.0" }
|
solana-drone = { path = "../drone", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-runtime = { path = "../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../runtime", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
cuda = ["solana/cuda"]
|
cuda = ["solana/cuda"]
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
BOB_SRCS=$(wildcard art/*.bob)
|
BOB_SRCS=$(wildcard art/*.bob)
|
||||||
|
MSC_SRCS=$(wildcard art/*.msc)
|
||||||
MD_SRCS=$(wildcard src/*.md)
|
MD_SRCS=$(wildcard src/*.md)
|
||||||
|
|
||||||
SVG_IMGS=$(BOB_SRCS:art/%.bob=src/img/%.svg)
|
SVG_IMGS=$(BOB_SRCS:art/%.bob=src/img/%.svg) $(MSC_SRCS:art/%.msc=src/img/%.svg)
|
||||||
|
|
||||||
all: html/index.html
|
all: html/index.html
|
||||||
|
|
||||||
@ -17,6 +18,10 @@ src/img/%.svg: art/%.bob
|
|||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
svgbob < $< > $@
|
svgbob < $< > $@
|
||||||
|
|
||||||
|
src/img/%.svg: art/%.msc
|
||||||
|
@mkdir -p $(@D)
|
||||||
|
mscgen -T svg -i $< -o $@
|
||||||
|
|
||||||
src/%.md: %.md
|
src/%.md: %.md
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
@cp $< $@
|
@cp $< $@
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
- [Data Plane Fanout](data-plane-fanout.md)
|
- [Data Plane Fanout](data-plane-fanout.md)
|
||||||
- [Ledger Replication](ledger-replication.md)
|
- [Ledger Replication](ledger-replication.md)
|
||||||
- [Secure Vote Signing](vote-signing.md)
|
- [Secure Vote Signing](vote-signing.md)
|
||||||
- [Staking Delegation and Rewards](stake-delegation-and-rewards.md)
|
- [Stake Delegation and Rewards](stake-delegation-and-rewards.md)
|
||||||
- [Performance Metrics](performance-metrics.md)
|
- [Performance Metrics](performance-metrics.md)
|
||||||
|
|
||||||
- [Anatomy of a Validator](validator.md)
|
- [Anatomy of a Validator](validator.md)
|
||||||
@ -39,7 +39,6 @@
|
|||||||
- [Ledger Replication](ledger-replication-to-implement.md)
|
- [Ledger Replication](ledger-replication-to-implement.md)
|
||||||
- [Secure Vote Signing](vote-signing-to-implement.md)
|
- [Secure Vote Signing](vote-signing-to-implement.md)
|
||||||
- [Staking Rewards](staking-rewards.md)
|
- [Staking Rewards](staking-rewards.md)
|
||||||
- [Passive Stake Delegation and Rewards](passive-stake-delegation-and-rewards.md)
|
|
||||||
- [Cluster Economics](ed_overview.md)
|
- [Cluster Economics](ed_overview.md)
|
||||||
- [Validation-client Economics](ed_validation_client_economics.md)
|
- [Validation-client Economics](ed_validation_client_economics.md)
|
||||||
- [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.md)
|
- [State-validation Protocol-based Rewards](ed_vce_state_validation_protocol_based_rewards.md)
|
||||||
@ -67,3 +66,4 @@
|
|||||||
- [Reliable Vote Transmission](reliable-vote-transmission.md)
|
- [Reliable Vote Transmission](reliable-vote-transmission.md)
|
||||||
- [Persistent Account Storage](persistent-account-storage.md)
|
- [Persistent Account Storage](persistent-account-storage.md)
|
||||||
- [Cluster Software Installation and Updates](installer.md)
|
- [Cluster Software Installation and Updates](installer.md)
|
||||||
|
- [Passive Stake Delegation and Rewards](passive-stake-delegation-and-rewards.md)
|
||||||
|
@ -1,68 +1,195 @@
|
|||||||
# Stake Delegation and Rewards
|
# Stake Delegation and Rewards
|
||||||
|
|
||||||
Stakers are rewarded for helping validate the ledger. They do it by delegating
|
Stakers are rewarded for helping to validate the ledger. They do this by
|
||||||
their stake to fullnodes. Those fullnodes do the legwork and send votes to the
|
delegating their stake to validator nodes. Those validators do the legwork of
|
||||||
stakers' staking accounts. The rest of the cluster uses those stake-weighted
|
replaying the ledger and send votes to a per-node vote account to which stakers
|
||||||
votes to select a block when forks arise. Both the fullnode and staker need
|
can delegate their stakes. The rest of the cluster uses those stake-weighted
|
||||||
some economic incentive to play their part. The fullnode needs to be
|
votes to select a block when forks arise. Both the validator and staker need
|
||||||
compensated for its hardware and the staker needs to be compensated for risking
|
some economic incentive to play their part. The validator needs to be
|
||||||
getting its stake slashed. The economics are covered in [staking
|
compensated for its hardware and the staker needs to be compensated for the risk
|
||||||
|
of getting its stake slashed. The economics are covered in [staking
|
||||||
rewards](staking-rewards.md). This chapter, on the other hand, describes the
|
rewards](staking-rewards.md). This chapter, on the other hand, describes the
|
||||||
underlying mechanics of its implementation.
|
underlying mechanics of its implementation.
|
||||||
|
|
||||||
## Vote and Rewards accounts
|
## Basic Besign
|
||||||
|
|
||||||
The rewards process is split into two on-chain programs. The Vote program
|
The general idea is that the validator owns a Vote account. The Vote account
|
||||||
solves the problem of making stakes slashable. The Rewards account acts as
|
tracks validator votes, counts validator generated credits, and provides any
|
||||||
custodian of the rewards pool. It is responsible for paying out each staker
|
additional validator specific state. The Vote account is not aware of any
|
||||||
once the staker proves to the Rewards program that it participated in
|
stakes delegated to it and has no staking weight.
|
||||||
validating the ledger.
|
|
||||||
|
|
||||||
The Vote account contains the following state information:
|
A separate Stake account (created by a staker) names a Vote account to which the
|
||||||
|
stake is delegated. Rewards generated are proportional to the amount of
|
||||||
|
lamports staked. The Stake account is owned by the staker only. Lamports
|
||||||
|
stored in this account are the stake.
|
||||||
|
|
||||||
* votes - The submitted votes.
|
## Passive Delegation
|
||||||
|
|
||||||
* `delegate_pubkey` - An identity that may operate with the weight of this
|
Any number of Stake accounts can delegate to a single
|
||||||
account's stake. It is typically the identity of a fullnode, but may be any
|
Vote account without an interactive action from the identity controlling
|
||||||
identity involved in stake-weighted computations.
|
the Vote account or submitting votes to the account.
|
||||||
|
|
||||||
* `authorized_voter_pubkey` - Only this identity is authorized to submit votes.
|
The total stake allocated to a Vote account can be calculated by the sum of
|
||||||
|
all the Stake accounts that have the Vote account pubkey as the
|
||||||
|
`StakeState::Delegate::voter_pubkey`.
|
||||||
|
|
||||||
* `credits` - The amount of unclaimed rewards.
|
## Vote and Stake accounts
|
||||||
|
|
||||||
* `root_slot` - The last slot to reach the full lockout commitment necessary
|
The rewards process is split into two on-chain programs. The Vote program solves
|
||||||
for rewards.
|
the problem of making stakes slashable. The Stake account acts as custodian of
|
||||||
|
the rewards pool, and provides passive delegation. The Stake program is
|
||||||
|
responsible for paying out each staker once the staker proves to the Stake
|
||||||
|
program that its delegate has participated in validating the ledger.
|
||||||
|
|
||||||
The Rewards program is stateless and pays out reward when a staker submits its
|
### VoteState
|
||||||
Vote account to the program. Claiming a reward requires a transaction that
|
|
||||||
includes the following instructions:
|
|
||||||
|
|
||||||
1. `RewardsInstruction::RedeemVoteCredits`
|
VoteState is the current state of all the votes the validator has submitted to
|
||||||
2. `VoteInstruction::ClearCredits`
|
the network. VoteState contains the following state information:
|
||||||
|
|
||||||
The Rewards program transfers lamports from the Rewards account to the Vote
|
* votes - The submitted votes data structure.
|
||||||
account's public key. The Rewards program also ensures that the `ClearCredits`
|
|
||||||
instruction follows the `RedeemVoteCredits` instruction, such that a staker may
|
* credits - The total number of rewards this vote program has generated over its
|
||||||
not claim rewards for the same work more than once.
|
lifetime.
|
||||||
|
|
||||||
|
* root\_slot - The last slot to reach the full lockout commitment necessary for
|
||||||
|
rewards.
|
||||||
|
|
||||||
|
* commission - The commission taken by this VoteState for any rewards claimed by
|
||||||
|
staker's Stake accounts. This is the percentage ceiling of the reward.
|
||||||
|
|
||||||
|
* Account::lamports - The accumulated lamports from the commission. These do not
|
||||||
|
count as stakes.
|
||||||
|
|
||||||
|
* `authorized_vote_signer` - Only this identity is authorized to submit votes. This field can only modified by this identity.
|
||||||
|
|
||||||
|
### VoteInstruction::Initialize
|
||||||
|
|
||||||
|
* `account[0]` - RW - The VoteState
|
||||||
|
`VoteState::authorized_vote_signer` is initialized to `account[0]`
|
||||||
|
other VoteState members defaulted
|
||||||
|
|
||||||
|
### VoteInstruction::AuthorizeVoteSigner(Pubkey)
|
||||||
|
|
||||||
|
* `account[0]` - RW - The VoteState
|
||||||
|
`VoteState::authorized_vote_signer` is set to to `Pubkey`, instruction must by
|
||||||
|
signed by Pubkey
|
||||||
|
|
||||||
|
### VoteInstruction::Vote(Vec<Vote>)
|
||||||
|
|
||||||
|
* `account[0]` - RW - The VoteState
|
||||||
|
`VoteState::lockouts` and `VoteState::credits` are updated according to voting lockout rules see [Fork Selection](fork-selection.md)
|
||||||
|
|
||||||
|
|
||||||
### Delegating Stake
|
* `account[1]` - RO - A list of some N most recent slots and their hashes for the vote to be verified against.
|
||||||
|
|
||||||
`VoteInstruction::DelegateStake` allows the staker to choose a fullnode to
|
|
||||||
validate the ledger on its behalf. By being a delegate, the fullnode is
|
|
||||||
entitled to collect transaction fees when its is leader. The larger the stake,
|
|
||||||
the more often the fullnode will be able to collect those fees.
|
|
||||||
|
|
||||||
### Authorizing a Vote Signer
|
### StakeState
|
||||||
|
|
||||||
|
A StakeState takes one of two forms, StakeState::Delegate and StakeState::MiningPool.
|
||||||
|
|
||||||
|
### StakeState::Delegate
|
||||||
|
|
||||||
|
StakeState is the current delegation preference of the **staker**. StakeState
|
||||||
|
contains the following state information:
|
||||||
|
|
||||||
|
* Account::lamports - The staked lamports.
|
||||||
|
|
||||||
|
* `voter_pubkey` - The pubkey of the VoteState instance the lamports are
|
||||||
|
delegated to.
|
||||||
|
|
||||||
|
* `credits_observed` - The total credits claimed over the lifetime of the
|
||||||
|
program.
|
||||||
|
|
||||||
|
### StakeState::MiningPool
|
||||||
|
|
||||||
|
There are two approaches to the mining pool. The bank could allow the
|
||||||
|
StakeState program to bypass the token balance check, or a program representing
|
||||||
|
the mining pool could run on the network. To avoid a single network wide lock,
|
||||||
|
the pool can be split into several mining pools. This design focuses on using
|
||||||
|
StakeState::MiningPool instances as the cluster wide mining pools.
|
||||||
|
|
||||||
|
* 256 StakeState::MiningPool are initialized, each with 1/256 number of mining pool
|
||||||
|
tokens stored as `Account::lamports`.
|
||||||
|
|
||||||
|
The stakes and the MiningPool are accounts that are owned by the same `Stake`
|
||||||
|
program.
|
||||||
|
|
||||||
|
### StakeInstruction::Initialize
|
||||||
|
|
||||||
|
* `account[0]` - RW - The StakeState::Delegate instance.
|
||||||
|
`StakeState::Delegate::credits_observed` is initialized to `VoteState::credits`.
|
||||||
|
`StakeState::Delegate::voter_pubkey` is initialized to `account[1]`
|
||||||
|
|
||||||
|
* `account[1]` - R - The VoteState instance.
|
||||||
|
|
||||||
|
### StakeInstruction::RedeemVoteCredits
|
||||||
|
|
||||||
|
The Staker or the owner of the Stake account sends a transaction with this
|
||||||
|
instruction to claim rewards.
|
||||||
|
|
||||||
|
The Vote account and the Stake account pair maintain a lifetime counter
|
||||||
|
of total rewards generated and claimed. When claiming rewards, the total lamports
|
||||||
|
deposited into the Stake account and as validator commission is proportional to
|
||||||
|
`VoteState::credits - StakeState::credits_observed`.
|
||||||
|
|
||||||
|
|
||||||
|
* `account[0]` - RW - The StakeState::MiningPool instance that will fulfill the
|
||||||
|
reward.
|
||||||
|
* `account[1]` - RW - The StakeState::Delegate instance that is redeeming votes
|
||||||
|
credits.
|
||||||
|
* `account[2]` - R - The VoteState instance, must be the same as
|
||||||
|
`StakeState::voter_pubkey`
|
||||||
|
|
||||||
|
Reward is paid out for the difference between `VoteState::credits` to
|
||||||
|
`StakeState::Delgate.credits_observed`, and `credits_observed` is updated to
|
||||||
|
`VoteState::credits`. The commission is deposited into the Vote account token
|
||||||
|
balance, and the reward is deposited to the Stake account token balance.
|
||||||
|
|
||||||
|
The total lamports paid is a percentage-rate of the lamports staked muiltplied by
|
||||||
|
the ratio of rewards being redeemed to rewards that could have been generated
|
||||||
|
during the rate period.
|
||||||
|
|
||||||
|
Any random MiningPool can be used to redeem the credits.
|
||||||
|
|
||||||
|
```rust,ignore
|
||||||
|
let credits_to_claim = vote_state.credits - stake_state.credits_observed;
|
||||||
|
stake_state.credits_observed = vote_state.credits;
|
||||||
|
```
|
||||||
|
|
||||||
|
`credits_to_claim` is used to compute the reward and commission, and
|
||||||
|
`StakeState::Delegate::credits_observed` is updated to the latest
|
||||||
|
`VoteState::credits` value.
|
||||||
|
|
||||||
|
## Collecting network fees into the MiningPool
|
||||||
|
|
||||||
|
At the end of the block, before the bank is frozen, but after it processed all
|
||||||
|
the transactions for the block, a virtual instruction is executed to collect
|
||||||
|
the transaction fees.
|
||||||
|
|
||||||
|
* A portion of the fees are deposited into the leader's account.
|
||||||
|
* A portion of the fees are deposited into the smallest StakeState::MiningPool
|
||||||
|
account.
|
||||||
|
|
||||||
|
## Authorizing a Vote Signer
|
||||||
|
|
||||||
`VoteInstruction::AuthorizeVoter` allows a staker to choose a signing service
|
`VoteInstruction::AuthorizeVoter` allows a staker to choose a signing service
|
||||||
for its votes. That service is responsible for ensuring the vote won't cause
|
for its votes. That service is responsible for ensuring the vote won't cause
|
||||||
the staker to be slashed.
|
the staker to be slashed.
|
||||||
|
|
||||||
## Limitations
|
## Benefits of the design
|
||||||
|
|
||||||
Many stakers may delegate their stakes to the same fullnode. The fullnode must
|
* Single vote for all the stakers.
|
||||||
send a separate vote to each staking account. If there are far more stakers
|
|
||||||
than fullnodes, that's a lot of network traffic. An alternative design might
|
* Clearing of the credit variable is not necessary for claiming rewards.
|
||||||
have fullnodes submit each vote to just one account and then have each staker
|
|
||||||
submit that account along with their own to collect its reward.
|
* Each delegated stake can claim its rewards independently.
|
||||||
|
|
||||||
|
* Commission for the work is deposited when a reward is claimed by the delegated
|
||||||
|
stake.
|
||||||
|
|
||||||
|
This proposal would benefit from the `read-only` accounts proposal to allow for
|
||||||
|
many rewards to be claimed concurrently.
|
||||||
|
|
||||||
|
## Example Callflow
|
||||||
|
|
||||||
|
<img alt="Passive Staking Callflow" src="img/passive-staking-callflow.svg" class="center"/>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
# Staking Rewards
|
# Staking Rewards
|
||||||
|
|
||||||
Initial Proof of Stake (PoS) (i.e. using in-protocol asset, SOL, to provide
|
A Proof of Stake (PoS), (i.e. using in-protocol asset, SOL, to provide
|
||||||
secure consensus) design ideas outlined here. Solana will implement a proof of
|
secure consensus) design is outlined here. Solana implements a proof of
|
||||||
stake reward/security scheme for node validators in the cluster. The purpose is
|
stake reward/security scheme for validator nodes in the cluster. The purpose is
|
||||||
threefold:
|
threefold:
|
||||||
|
|
||||||
- Align validator incentives with that of the greater cluster through
|
- Align validator incentives with that of the greater cluster through
|
||||||
@ -64,7 +64,7 @@ capital-at-risk to prevent a logical/optimal strategy of multiple chain voting.
|
|||||||
We intend to implement slashing rules which, if broken, result some amount of
|
We intend to implement slashing rules which, if broken, result some amount of
|
||||||
the offending validator's deposited stake to be removed from circulation. Given
|
the offending validator's deposited stake to be removed from circulation. Given
|
||||||
the ordering properties of the PoH data structure, we believe we can simplify
|
the ordering properties of the PoH data structure, we believe we can simplify
|
||||||
our slashing rules to the level of a voting lockout time assigned per vote.
|
our slashing rules to the level of a voting lockout time assigned per vote.
|
||||||
|
|
||||||
I.e. Each vote has an associated lockout time (PoH duration) that represents a
|
I.e. Each vote has an associated lockout time (PoH duration) that represents a
|
||||||
duration by any additional vote from that validator must be in a PoH that
|
duration by any additional vote from that validator must be in a PoH that
|
||||||
@ -110,7 +110,7 @@ in a slashable amount as a function of either:
|
|||||||
1. the fraction of validators, out of the total validator pool, that were also
|
1. the fraction of validators, out of the total validator pool, that were also
|
||||||
slashed during the same time period (ala Casper)
|
slashed during the same time period (ala Casper)
|
||||||
2. the amount of time since the vote was cast (e.g. a linearly increasing % of
|
2. the amount of time since the vote was cast (e.g. a linearly increasing % of
|
||||||
total deposited as slashable amount over time), or both.
|
total deposited as slashable amount over time), or both.
|
||||||
|
|
||||||
This is an area currently under exploration
|
This is an area currently under exploration
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ traversal issues. A cloud-hosted machine works best. **Ensure that IP ports
|
|||||||
Prebuilt binaries are available for Linux x86_64 (Ubuntu 18.04 recommended).
|
Prebuilt binaries are available for Linux x86_64 (Ubuntu 18.04 recommended).
|
||||||
MacOS or WSL users may build from source.
|
MacOS or WSL users may build from source.
|
||||||
|
|
||||||
For a performance testnet with many transactions we have some preliminary recomended setups:
|
For a performance testnet with many transactions we have some preliminary recommended setups:
|
||||||
|
|
||||||
| | Low end | Medium end | High end | Notes |
|
| | Low end | Medium end | High end | Notes |
|
||||||
| --- | ---------|------------|----------| -- |
|
| --- | ---------|------------|----------| -- |
|
||||||
@ -67,7 +67,7 @@ The `solana-install` tool can be used to easily install and upgrade the cluster
|
|||||||
software on Linux x86_64 systems.
|
software on Linux x86_64 systems.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ export SOLANA_RELEASE=v0.14.2 # skip this line to install the latest release
|
$ export SOLANA_RELEASE=v0.15.0 # skip this line to install the latest release
|
||||||
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.14.0/install/solana-install-init.sh | sh -s
|
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v0.14.0/install/solana-install-init.sh | sh -s
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -176,7 +176,7 @@ $ solana-gossip --entrypoint testnet.solana.com:8001 spy
|
|||||||
Provide the **vote pubkey** to the `solana-wallet show-vote-account` command to view
|
Provide the **vote pubkey** to the `solana-wallet show-vote-account` command to view
|
||||||
the recent voting activity from your validator:
|
the recent voting activity from your validator:
|
||||||
```bash
|
```bash
|
||||||
$ solana-wallet -n testnet.solana.com show-vote-account 2ozWvfaXQd1X6uKh8jERoRGApDqSqcEy6fF1oN13LL2G
|
$ solana-wallet show-vote-account 2ozWvfaXQd1X6uKh8jERoRGApDqSqcEy6fF1oN13LL2G
|
||||||
```
|
```
|
||||||
|
|
||||||
The vote pubkey for the validator can also be found by running:
|
The vote pubkey for the validator can also be found by running:
|
||||||
|
65
ci/order-crates-for-publishing.py
Executable file
65
ci/order-crates-for-publishing.py
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
#
|
||||||
|
# This script figures the order in which workspace crates must be published to
|
||||||
|
# crates.io. Along the way it also ensures there are no circular dependencies
|
||||||
|
# that would cause a |cargo publish| to fail.
|
||||||
|
#
|
||||||
|
# On success an ordered list of Cargo.toml files is written to stdout
|
||||||
|
#
|
||||||
|
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import subprocess
|
||||||
|
import sys;
|
||||||
|
|
||||||
|
def load_metadata():
|
||||||
|
return json.loads(subprocess.Popen(
|
||||||
|
'cargo metadata --no-deps --format-version=1',
|
||||||
|
shell=True, stdout=subprocess.PIPE).communicate()[0])
|
||||||
|
|
||||||
|
def get_packages():
|
||||||
|
metadata = load_metadata()
|
||||||
|
|
||||||
|
manifest_path = dict()
|
||||||
|
|
||||||
|
# Build dictionary of packages and their immediate solana-only dependencies
|
||||||
|
dependency_graph = dict()
|
||||||
|
for pkg in metadata['packages']:
|
||||||
|
manifest_path[pkg['name']] = pkg['manifest_path'];
|
||||||
|
dependency_graph[pkg['name']] = [x['name'] for x in pkg['dependencies'] if x['name'].startswith('solana')];
|
||||||
|
|
||||||
|
# Check for direct circular dependencies
|
||||||
|
circular_dependencies = set()
|
||||||
|
for package, dependencies in dependency_graph.items():
|
||||||
|
for dependency in dependencies:
|
||||||
|
if dependency in dependency_graph and package in dependency_graph[dependency]:
|
||||||
|
circular_dependencies.add(' <--> '.join(sorted([package, dependency])))
|
||||||
|
|
||||||
|
for dependency in circular_dependencies:
|
||||||
|
sys.stderr.write('Error: Circular dependency: {}\n'.format(dependency))
|
||||||
|
|
||||||
|
if len(circular_dependencies) != 0:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Order dependencies
|
||||||
|
sorted_dependency_graph = []
|
||||||
|
max_iterations = pow(len(dependency_graph),2)
|
||||||
|
while dependency_graph:
|
||||||
|
if max_iterations == 0:
|
||||||
|
# TODO: Be more helpful and find the actual cycle for the user
|
||||||
|
sys.exit('Error: Circular dependency suspected between these packages: {}\n'.format(' '.join(dependency_graph.keys())))
|
||||||
|
|
||||||
|
max_iterations -= 1
|
||||||
|
for package, dependencies in dependency_graph.items():
|
||||||
|
for dependency in dependencies:
|
||||||
|
if dependency in dependency_graph:
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
del dependency_graph[package]
|
||||||
|
sorted_dependency_graph.append((package, manifest_path[package]))
|
||||||
|
|
||||||
|
|
||||||
|
return sorted_dependency_graph
|
||||||
|
|
||||||
|
for package, manifest in get_packages():
|
||||||
|
print os.path.relpath(manifest)
|
@ -3,35 +3,13 @@ set -e
|
|||||||
cd "$(dirname "$0")/.."
|
cd "$(dirname "$0")/.."
|
||||||
source ci/semver_bash/semver.sh
|
source ci/semver_bash/semver.sh
|
||||||
|
|
||||||
# List of internal crates to publish
|
# shellcheck disable=SC2086
|
||||||
#
|
is_crate_version_uploaded() {
|
||||||
# IMPORTANT: the order of the CRATES *is* significant. Crates must be published
|
name=$1
|
||||||
# before the crates that depend on them. Note that this information is already
|
version=$2
|
||||||
# expressed in the various Cargo.toml files, and ideally would not be duplicated
|
curl https://crates.io/api/v1/crates/${name}/${version} | \
|
||||||
# here. (TODO: figure the crate ordering dynamically)
|
python3 -c "import sys,json; print('version' in json.load(sys.stdin));"
|
||||||
#
|
}
|
||||||
CRATES=(
|
|
||||||
kvstore
|
|
||||||
logger
|
|
||||||
netutil
|
|
||||||
sdk
|
|
||||||
keygen
|
|
||||||
metrics
|
|
||||||
client
|
|
||||||
drone
|
|
||||||
programs/{budget_api,config_api,stake_api,storage_api,token_api,vote_api,exchange_api}
|
|
||||||
programs/{vote_program,budget_program,bpf_loader,config_program,exchange_program,failure_program}
|
|
||||||
programs/{noop_program,stake_program,storage_program,token_program}
|
|
||||||
runtime
|
|
||||||
vote-signer
|
|
||||||
core
|
|
||||||
validator
|
|
||||||
genesis
|
|
||||||
gossip
|
|
||||||
ledger-tool
|
|
||||||
wallet
|
|
||||||
install
|
|
||||||
)
|
|
||||||
|
|
||||||
# Only package/publish if this is a tagged release
|
# Only package/publish if this is a tagged release
|
||||||
[[ -n $TRIGGERED_BUILDKITE_TAG ]] || {
|
[[ -n $TRIGGERED_BUILDKITE_TAG ]] || {
|
||||||
@ -49,25 +27,37 @@ expectedCrateVersion="$MAJOR.$MINOR.$PATCH$SPECIAL"
|
|||||||
|
|
||||||
cargoCommand="cargo publish --token $CRATES_IO_TOKEN"
|
cargoCommand="cargo publish --token $CRATES_IO_TOKEN"
|
||||||
|
|
||||||
for crate in "${CRATES[@]}"; do
|
Cargo_tomls=$(ci/order-crates-for-publishing.py)
|
||||||
if [[ ! -r $crate/Cargo.toml ]]; then
|
|
||||||
echo "Error: $crate/Cargo.toml does not exist"
|
for Cargo_toml in $Cargo_tomls; do
|
||||||
exit 1
|
echo "-- $Cargo_toml"
|
||||||
fi
|
grep -q "^version = \"$expectedCrateVersion\"$" "$Cargo_toml" || {
|
||||||
echo "-- $crate"
|
echo "Error: $Cargo_toml version is not $expectedCrateVersion"
|
||||||
grep -q "^version = \"$expectedCrateVersion\"$" "$crate"/Cargo.toml || {
|
|
||||||
echo "Error: $crate/Cargo.toml version is not $expectedCrateVersion"
|
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
|
crate=$(dirname "$Cargo_toml")
|
||||||
# TODO: the rocksdb package does not build with the stock rust docker image,
|
# TODO: the rocksdb package does not build with the stock rust docker image,
|
||||||
# so use the solana rust docker image until this is resolved upstream
|
# so use the solana rust docker image until this is resolved upstream
|
||||||
source ci/rust-version.sh
|
source ci/rust-version.sh
|
||||||
ci/docker-run.sh "$rust_stable_docker_image" bash -exc "cd $crate; $cargoCommand"
|
ci/docker-run.sh "$rust_stable_docker_image" bash -exc "cd $crate; $cargoCommand"
|
||||||
#ci/docker-run.sh rust bash -exc "cd $crate; $cargoCommand"
|
) || true # <-- Don't fail. We want to be able to retry the job in cases when a publish fails halfway due to network/cloud issues
|
||||||
)
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
crate_name=$(grep -m 1 '^name = ' $Cargo_toml | cut -f 3 -d ' ' | tr -d \")
|
||||||
|
numRetries=30
|
||||||
|
for ((i = 1 ; i <= numRetries ; i++)); do
|
||||||
|
echo "Attempt ${i} of ${numRetries}"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
if [[ $(is_crate_version_uploaded $crate_name $expectedCrateVersion) = True ]] ; then
|
||||||
|
echo "Found ${crate_name} version ${expectedCrateVersion} on crates.io"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
echo "Did not find ${crate_name} version ${expectedCrateVersion} on crates.io. Sleeping for 2 seconds."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -45,7 +45,9 @@ beta)
|
|||||||
CHANNEL_BRANCH=$BETA_CHANNEL
|
CHANNEL_BRANCH=$BETA_CHANNEL
|
||||||
;;
|
;;
|
||||||
stable)
|
stable)
|
||||||
CHANNEL_BRANCH=$STABLE_CHANNEL
|
# Set to whatever branch 'testnet' is on.
|
||||||
|
# TODO: Revert to $STABLE_CHANNEL for TdS
|
||||||
|
CHANNEL_BRANCH=$BETA_CHANNEL
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Invalid PUBLISH_CHANNEL=$PUBLISH_CHANNEL"
|
echo "Error: Invalid PUBLISH_CHANNEL=$PUBLISH_CHANNEL"
|
||||||
|
@ -88,7 +88,7 @@ EOF
|
|||||||
set -e
|
set -e
|
||||||
cd "$(dirname "$0")"/..
|
cd "$(dirname "$0")"/..
|
||||||
export USE_INSTALL=1
|
export USE_INSTALL=1
|
||||||
exec multinode-demo/clear-validator-config.sh "$@"
|
exec multinode-demo/clear-config.sh "$@"
|
||||||
EOF
|
EOF
|
||||||
chmod +x solana-release/bin/clear-config.sh
|
chmod +x solana-release/bin/clear-config.sh
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@ _ cargo +"$rust_stable" clippy --all -- --version
|
|||||||
_ cargo +"$rust_stable" clippy --all -- --deny=warnings
|
_ cargo +"$rust_stable" clippy --all -- --deny=warnings
|
||||||
_ cargo +"$rust_stable" audit
|
_ cargo +"$rust_stable" audit
|
||||||
_ ci/nits.sh
|
_ ci/nits.sh
|
||||||
|
_ ci/order-crates-for-publishing.py
|
||||||
_ book/build.sh
|
_ book/build.sh
|
||||||
|
|
||||||
echo --- ok
|
echo --- ok
|
||||||
|
@ -311,6 +311,9 @@ if ! $skipStart; then
|
|||||||
if [[ -n $NO_LEDGER_VERIFY ]]; then
|
if [[ -n $NO_LEDGER_VERIFY ]]; then
|
||||||
args+=(-o noLedgerVerify)
|
args+=(-o noLedgerVerify)
|
||||||
fi
|
fi
|
||||||
|
if [[ -n $NO_INSTALL_CHECK ]]; then
|
||||||
|
args+=(-o noInstallCheck)
|
||||||
|
fi
|
||||||
if [[ -n $maybeHashesPerTick ]]; then
|
if [[ -n $maybeHashesPerTick ]]; then
|
||||||
# shellcheck disable=SC2206 # Do not want to quote $maybeHashesPerTick
|
# shellcheck disable=SC2206 # Do not want to quote $maybeHashesPerTick
|
||||||
args+=($maybeHashesPerTick)
|
args+=($maybeHashesPerTick)
|
||||||
|
@ -132,19 +132,16 @@ case $TESTNET in
|
|||||||
testnet-edge|testnet-edge-perf)
|
testnet-edge|testnet-edge-perf)
|
||||||
CHANNEL_OR_TAG=edge
|
CHANNEL_OR_TAG=edge
|
||||||
CHANNEL_BRANCH=$EDGE_CHANNEL
|
CHANNEL_BRANCH=$EDGE_CHANNEL
|
||||||
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
|
|
||||||
;;
|
;;
|
||||||
testnet-beta|testnet-beta-perf)
|
testnet-beta|testnet-beta-perf)
|
||||||
CHANNEL_OR_TAG=beta
|
CHANNEL_OR_TAG=beta
|
||||||
CHANNEL_BRANCH=$BETA_CHANNEL
|
CHANNEL_BRANCH=$BETA_CHANNEL
|
||||||
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
|
|
||||||
;;
|
;;
|
||||||
testnet)
|
testnet)
|
||||||
CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG
|
CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG
|
||||||
CHANNEL_BRANCH=$STABLE_CHANNEL
|
CHANNEL_BRANCH=$STABLE_CHANNEL
|
||||||
: "${EC2_NODE_COUNT:=10}"
|
: "${EC2_NODE_COUNT:=10}"
|
||||||
: "${GCE_NODE_COUNT:=}"
|
: "${GCE_NODE_COUNT:=}"
|
||||||
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
|
|
||||||
;;
|
;;
|
||||||
testnet-perf)
|
testnet-perf)
|
||||||
CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG
|
CHANNEL_OR_TAG=$STABLE_CHANNEL_LATEST_TAG
|
||||||
@ -155,7 +152,6 @@ testnet-demo)
|
|||||||
CHANNEL_BRANCH=$BETA_CHANNEL
|
CHANNEL_BRANCH=$BETA_CHANNEL
|
||||||
: "${GCE_NODE_COUNT:=150}"
|
: "${GCE_NODE_COUNT:=150}"
|
||||||
: "${GCE_LOW_QUOTA_NODE_COUNT:=70}"
|
: "${GCE_LOW_QUOTA_NODE_COUNT:=70}"
|
||||||
: "${TESTNET_DB_HOST:=https://clocktower-f1d56615.influxcloud.net:8086}"
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: Invalid TESTNET=$TESTNET"
|
echo "Error: Invalid TESTNET=$TESTNET"
|
||||||
@ -216,6 +212,7 @@ sanity() {
|
|||||||
testnet-edge)
|
testnet-edge)
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
|
NO_INSTALL_CHECK=1 \
|
||||||
NO_LEDGER_VERIFY=1 \
|
NO_LEDGER_VERIFY=1 \
|
||||||
ci/testnet-sanity.sh edge-testnet-solana-com ec2 us-west-1a
|
ci/testnet-sanity.sh edge-testnet-solana-com ec2 us-west-1a
|
||||||
)
|
)
|
||||||
@ -232,6 +229,7 @@ sanity() {
|
|||||||
testnet-beta)
|
testnet-beta)
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
|
NO_INSTALL_CHECK=1 \
|
||||||
NO_LEDGER_VERIFY=1 \
|
NO_LEDGER_VERIFY=1 \
|
||||||
ci/testnet-sanity.sh beta-testnet-solana-com ec2 us-west-1a
|
ci/testnet-sanity.sh beta-testnet-solana-com ec2 us-west-1a
|
||||||
)
|
)
|
||||||
|
@ -64,6 +64,7 @@ for zone in "$@"; do
|
|||||||
${NO_LEDGER_VERIFY:+-o noLedgerVerify} \
|
${NO_LEDGER_VERIFY:+-o noLedgerVerify} \
|
||||||
${NO_VALIDATOR_SANITY:+-o noValidatorSanity} \
|
${NO_VALIDATOR_SANITY:+-o noValidatorSanity} \
|
||||||
${REJECT_EXTRA_NODES:+-o rejectExtraNodes} \
|
${REJECT_EXTRA_NODES:+-o rejectExtraNodes} \
|
||||||
|
${NO_INSTALL_CHECK:+-o noInstallCheck} \
|
||||||
$zone || ok=false
|
$zone || ok=false
|
||||||
|
|
||||||
net/net.sh logs
|
net/net.sh logs
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-client"
|
name = "solana-client"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Client"
|
description = "Solana Client"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -17,10 +17,10 @@ reqwest = "0.9.17"
|
|||||||
serde = "1.0.89"
|
serde = "1.0.89"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
jsonrpc-core = "10.1.0"
|
jsonrpc-core = "10.1.0"
|
||||||
jsonrpc-http-server = "10.1.0"
|
jsonrpc-http-server = "10.1.0"
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana"
|
name = "solana"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
documentation = "https://docs.rs/solana"
|
documentation = "https://docs.rs/solana"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
readme = "../README.md"
|
readme = "../README.md"
|
||||||
@ -47,26 +47,26 @@ rocksdb = "0.11.0"
|
|||||||
serde = "1.0.89"
|
serde = "1.0.89"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" }
|
solana-budget-api = { path = "../programs/budget_api", version = "0.15.2" }
|
||||||
solana-budget-program = { path = "../programs/budget_program", version = "0.15.0" }
|
solana-budget-program = { path = "../programs/budget_program", version = "0.15.2" }
|
||||||
solana-client = { path = "../client", version = "0.15.0" }
|
solana-client = { path = "../client", version = "0.15.2" }
|
||||||
solana-drone = { path = "../drone", version = "0.15.0" }
|
solana-drone = { path = "../drone", version = "0.15.2" }
|
||||||
solana-ed25519-dalek = "0.2.0"
|
solana-ed25519-dalek = "0.2.0"
|
||||||
solana-kvstore = { path = "../kvstore", version = "0.15.0" , optional = true }
|
solana-kvstore = { path = "../kvstore", version = "0.15.2" , optional = true }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-runtime = { path = "../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../runtime", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
|
||||||
solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" }
|
solana-stake-program = { path = "../programs/stake_program", version = "0.15.2" }
|
||||||
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" }
|
solana-storage-api = { path = "../programs/storage_api", version = "0.15.2" }
|
||||||
solana-storage-program = { path = "../programs/storage_program", version = "0.15.0" }
|
solana-storage-program = { path = "../programs/storage_program", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
|
||||||
solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" }
|
solana-vote-program = { path = "../programs/vote_program", version = "0.15.2" }
|
||||||
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" }
|
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.2" }
|
||||||
solana-config-program = { path = "../programs/config_program", version = "0.15.0" }
|
solana-config-program = { path = "../programs/config_program", version = "0.15.2" }
|
||||||
solana-vote-signer = { path = "../vote-signer", version = "0.15.0" }
|
solana-vote-signer = { path = "../vote-signer", version = "0.15.2" }
|
||||||
sys-info = "0.5.6"
|
sys-info = "0.5.6"
|
||||||
tokio = "0.1"
|
tokio = "0.1"
|
||||||
tokio-codec = "0.1"
|
tokio-codec = "0.1"
|
||||||
|
@ -3,7 +3,7 @@ use crate::blocktree::Blocktree;
|
|||||||
use crate::entry::{Entry, EntrySlice};
|
use crate::entry::{Entry, EntrySlice};
|
||||||
use crate::leader_schedule_cache::LeaderScheduleCache;
|
use crate::leader_schedule_cache::LeaderScheduleCache;
|
||||||
use rayon::prelude::*;
|
use rayon::prelude::*;
|
||||||
use solana_metrics::{datapoint, inc_new_counter_debug};
|
use solana_metrics::{datapoint, datapoint_error, inc_new_counter_debug};
|
||||||
use solana_runtime::bank::Bank;
|
use solana_runtime::bank::Bank;
|
||||||
use solana_runtime::locked_accounts_results::LockedAccountsResults;
|
use solana_runtime::locked_accounts_results::LockedAccountsResults;
|
||||||
use solana_sdk::genesis_block::GenesisBlock;
|
use solana_sdk::genesis_block::GenesisBlock;
|
||||||
@ -45,7 +45,7 @@ fn par_execute_entries(
|
|||||||
}
|
}
|
||||||
if !Bank::can_commit(&r) {
|
if !Bank::can_commit(&r) {
|
||||||
warn!("Unexpected validator error: {:?}, tx: {:?}", e, tx);
|
warn!("Unexpected validator error: {:?}, tx: {:?}", e, tx);
|
||||||
datapoint!(
|
datapoint_error!(
|
||||||
"validator_process_entry_error",
|
"validator_process_entry_error",
|
||||||
("error", format!("error: {:?}, tx: {:?}", e, tx), String)
|
("error", format!("error: {:?}, tx: {:?}", e, tx), String)
|
||||||
);
|
);
|
||||||
|
@ -21,6 +21,7 @@ use solana_sdk::timing::DEFAULT_TICKS_PER_SLOT;
|
|||||||
use solana_sdk::transaction::Transaction;
|
use solana_sdk::transaction::Transaction;
|
||||||
use solana_stake_api::stake_instruction;
|
use solana_stake_api::stake_instruction;
|
||||||
use solana_storage_api::storage_instruction;
|
use solana_storage_api::storage_instruction;
|
||||||
|
use solana_storage_program::genesis_block_util::GenesisBlockUtil;
|
||||||
use solana_vote_api::vote_instruction;
|
use solana_vote_api::vote_instruction;
|
||||||
use solana_vote_api::vote_state::VoteState;
|
use solana_vote_api::vote_state::VoteState;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
@ -124,12 +125,13 @@ impl LocalCluster {
|
|||||||
mut genesis_block,
|
mut genesis_block,
|
||||||
mint_keypair,
|
mint_keypair,
|
||||||
voting_keypair,
|
voting_keypair,
|
||||||
storage_keypair,
|
|
||||||
} = create_genesis_block_with_leader(
|
} = create_genesis_block_with_leader(
|
||||||
config.cluster_lamports,
|
config.cluster_lamports,
|
||||||
&leader_pubkey,
|
&leader_pubkey,
|
||||||
config.node_stakes[0],
|
config.node_stakes[0],
|
||||||
);
|
);
|
||||||
|
let storage_keypair = Keypair::new();
|
||||||
|
genesis_block.add_storage_program(&storage_keypair.pubkey());
|
||||||
genesis_block.ticks_per_slot = config.ticks_per_slot;
|
genesis_block.ticks_per_slot = config.ticks_per_slot;
|
||||||
genesis_block.slots_per_epoch = config.slots_per_epoch;
|
genesis_block.slots_per_epoch = config.slots_per_epoch;
|
||||||
genesis_block.stakers_slot_offset = config.stakers_slot_offset;
|
genesis_block.stakers_slot_offset = config.stakers_slot_offset;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-drone"
|
name = "solana-drone"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Drone"
|
description = "Solana Drone"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -20,9 +20,9 @@ clap = "2.33"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
tokio = "0.1"
|
tokio = "0.1"
|
||||||
tokio-codec = "0.1"
|
tokio-codec = "0.1"
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-genesis"
|
name = "solana-genesis"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -11,22 +11,22 @@ homepage = "https://solana.com/"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33.0"
|
clap = "2.33.0"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" }
|
solana-budget-api = { path = "../programs/budget_api", version = "0.15.2" }
|
||||||
solana-budget-program = { path = "../programs/budget_program", version = "0.15.0" }
|
solana-budget-program = { path = "../programs/budget_program", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
|
||||||
solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" }
|
solana-vote-program = { path = "../programs/vote_program", version = "0.15.2" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
|
||||||
solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" }
|
solana-stake-program = { path = "../programs/stake_program", version = "0.15.2" }
|
||||||
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" }
|
solana-storage-api = { path = "../programs/storage_api", version = "0.15.2" }
|
||||||
solana-storage-program = { path = "../programs/storage_program", version = "0.15.0" }
|
solana-storage-program = { path = "../programs/storage_program", version = "0.15.2" }
|
||||||
solana-token-api = { path = "../programs/token_api", version = "0.15.0" }
|
solana-token-api = { path = "../programs/token_api", version = "0.15.2" }
|
||||||
solana-token-program = { path = "../programs/token_program", version = "0.15.0" }
|
solana-token-program = { path = "../programs/token_program", version = "0.15.2" }
|
||||||
solana-config-api = { path = "../programs/config_api", version = "0.15.0" }
|
solana-config-api = { path = "../programs/config_api", version = "0.15.2" }
|
||||||
solana-config-program = { path = "../programs/config_program", version = "0.15.0" }
|
solana-config-program = { path = "../programs/config_program", version = "0.15.2" }
|
||||||
solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.0" }
|
solana-exchange-api = { path = "../programs/exchange_api", version = "0.15.2" }
|
||||||
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.0" }
|
solana-exchange-program = { path = "../programs/exchange_program", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
hashbrown = "0.3.0"
|
hashbrown = "0.3.0"
|
||||||
|
@ -6,8 +6,6 @@ extern crate solana_stake_program;
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate solana_budget_program;
|
extern crate solana_budget_program;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate solana_storage_program;
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_token_program;
|
extern crate solana_token_program;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate solana_config_program;
|
extern crate solana_config_program;
|
||||||
@ -25,7 +23,7 @@ use solana_sdk::signature::{read_keypair, KeypairUtil};
|
|||||||
use solana_sdk::system_program;
|
use solana_sdk::system_program;
|
||||||
use solana_sdk::timing;
|
use solana_sdk::timing;
|
||||||
use solana_stake_api::stake_state;
|
use solana_stake_api::stake_state;
|
||||||
use solana_storage_api::storage_contract;
|
use solana_storage_program::genesis_block_util::GenesisBlockUtil;
|
||||||
use solana_vote_api::vote_state;
|
use solana_vote_api::vote_state;
|
||||||
use std::error;
|
use std::error;
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
@ -213,22 +211,18 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||||||
bootstrap_leader_stake_lamports,
|
bootstrap_leader_stake_lamports,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// storage account
|
|
||||||
(
|
|
||||||
bootstrap_storage_keypair.pubkey(),
|
|
||||||
storage_contract::create_validator_storage_account(1),
|
|
||||||
),
|
|
||||||
],
|
],
|
||||||
&[
|
&[
|
||||||
solana_vote_program!(),
|
solana_vote_program!(),
|
||||||
solana_stake_program!(),
|
solana_stake_program!(),
|
||||||
solana_budget_program!(),
|
solana_budget_program!(),
|
||||||
solana_storage_program!(),
|
|
||||||
solana_token_program!(),
|
solana_token_program!(),
|
||||||
solana_config_program!(),
|
solana_config_program!(),
|
||||||
solana_exchange_program!(),
|
solana_exchange_program!(),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
genesis_block.add_storage_program(&bootstrap_storage_keypair.pubkey());
|
||||||
|
|
||||||
genesis_block.fee_calculator.lamports_per_signature =
|
genesis_block.fee_calculator.lamports_per_signature =
|
||||||
value_t_or_exit!(matches, "lamports_per_signature", u64);
|
value_t_or_exit!(matches, "lamports_per_signature", u64);
|
||||||
genesis_block.ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64);
|
genesis_block.ticks_per_slot = value_t_or_exit!(matches, "ticks_per_slot", u64);
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-gossip"
|
name = "solana-gossip"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -11,10 +11,10 @@ homepage = "https://solana.com/"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33.0"
|
clap = "2.33.0"
|
||||||
env_logger = "0.6.1"
|
env_logger = "0.6.1"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-client = { path = "../client", version = "0.15.0" }
|
solana-client = { path = "../client", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
chacha = []
|
chacha = []
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-install"
|
name = "solana-install"
|
||||||
description = "The solana cluster software installer"
|
description = "The solana cluster software installer"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -28,10 +28,10 @@ ring = "0.13.2"
|
|||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
serde_yaml = "0.8.9"
|
serde_yaml = "0.8.9"
|
||||||
solana-client = { path = "../client", version = "0.15.0" }
|
solana-client = { path = "../client", version = "0.15.2" }
|
||||||
solana-config-api = { path = "../programs/config_api", version = "0.15.0" }
|
solana-config-api = { path = "../programs/config_api", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
tar = "0.4.26"
|
tar = "0.4.26"
|
||||||
tempdir = "0.3.7"
|
tempdir = "0.3.7"
|
||||||
url = "1.7.2"
|
url = "1.7.2"
|
||||||
|
@ -58,7 +58,7 @@ fn main() -> Result<(), String> {
|
|||||||
.arg({
|
.arg({
|
||||||
let arg = Arg::with_name("data_dir")
|
let arg = Arg::with_name("data_dir")
|
||||||
.short("d")
|
.short("d")
|
||||||
.long("data_dir")
|
.long("data-dir")
|
||||||
.value_name("PATH")
|
.value_name("PATH")
|
||||||
.takes_value(true)
|
.takes_value(true)
|
||||||
.required(true)
|
.required(true)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-keygen"
|
name = "solana-keygen"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana key generation utility"
|
description = "Solana key generation utility"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -15,7 +15,7 @@ erasure = []
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
dirs = "1.0.5"
|
dirs = "1.0.5"
|
||||||
clap = "2.33"
|
clap = "2.33"
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "solana-keygen"
|
name = "solana-keygen"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-kvstore"
|
name = "solana-kvstore"
|
||||||
description = "Embedded Key-Value store for solana"
|
description = "Embedded Key-Value store for solana"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-ledger-tool"
|
name = "solana-ledger-tool"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -11,10 +11,10 @@ homepage = "https://solana.com/"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33.0"
|
clap = "2.33.0"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-runtime = { path = "../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../runtime", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
assert_cmd = "0.11"
|
assert_cmd = "0.11"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-logger"
|
name = "solana-logger"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Logger"
|
description = "Solana Logger"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-metrics"
|
name = "solana-metrics"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Metrics"
|
description = "Solana Metrics"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -15,7 +15,7 @@ log = "0.4.2"
|
|||||||
reqwest = "0.9.17"
|
reqwest = "0.9.17"
|
||||||
lazy_static = "1.3.0"
|
lazy_static = "1.3.0"
|
||||||
sys-info = "0.5.6"
|
sys-info = "0.5.6"
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
rand = "0.6.5"
|
rand = "0.6.5"
|
||||||
|
@ -17,7 +17,6 @@ usage: $0 [-e] [-d] [-c] [username]
|
|||||||
Creates a testnet dev metrics database
|
Creates a testnet dev metrics database
|
||||||
|
|
||||||
username InfluxDB user with access to create a new database
|
username InfluxDB user with access to create a new database
|
||||||
-c Use Influx Cloud instance
|
|
||||||
-d Delete the database instead of creating it
|
-d Delete the database instead of creating it
|
||||||
-e Assume database already exists and SOLANA_METRICS_CONFIG is
|
-e Assume database already exists and SOLANA_METRICS_CONFIG is
|
||||||
defined in the environment already
|
defined in the environment already
|
||||||
@ -31,15 +30,12 @@ loadConfigFile
|
|||||||
useEnv=false
|
useEnv=false
|
||||||
delete=false
|
delete=false
|
||||||
host="https://metrics.solana.com:8086"
|
host="https://metrics.solana.com:8086"
|
||||||
while getopts "hcde" opt; do
|
while getopts "hde" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
h|\?)
|
h|\?)
|
||||||
usage
|
usage
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
c)
|
|
||||||
host="https://clocktower-f1d56615.influxcloud.net:8086"
|
|
||||||
;;
|
|
||||||
d)
|
d)
|
||||||
delete=true
|
delete=true
|
||||||
;;
|
;;
|
||||||
|
@ -58,6 +58,7 @@ Operate a configured testnet
|
|||||||
-F - Discard validator nodes that didn't bootup successfully
|
-F - Discard validator nodes that didn't bootup successfully
|
||||||
-o noLedgerVerify - Skip ledger verification
|
-o noLedgerVerify - Skip ledger verification
|
||||||
-o noValidatorSanity - Skip fullnode sanity
|
-o noValidatorSanity - Skip fullnode sanity
|
||||||
|
-o noInstallCheck - Skip solana-install sanity
|
||||||
-o rejectExtraNodes - Require the exact number of nodes
|
-o rejectExtraNodes - Require the exact number of nodes
|
||||||
|
|
||||||
stop-specific options:
|
stop-specific options:
|
||||||
@ -150,7 +151,7 @@ while getopts "h?T:t:o:f:rD:i:c:Fn:" opt "${shortArgs[@]}"; do
|
|||||||
;;
|
;;
|
||||||
o)
|
o)
|
||||||
case $OPTARG in
|
case $OPTARG in
|
||||||
noLedgerVerify|noValidatorSanity|rejectExtraNodes)
|
noLedgerVerify|noValidatorSanity|rejectExtraNodes|noInstallCheck)
|
||||||
sanityExtraArgs="$sanityExtraArgs -o $OPTARG"
|
sanityExtraArgs="$sanityExtraArgs -o $OPTARG"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@ -392,7 +393,7 @@ sanity() {
|
|||||||
set -x
|
set -x
|
||||||
# shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally
|
# shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally
|
||||||
ssh "${sshOptions[@]}" "$bootstrapLeader" \
|
ssh "${sshOptions[@]}" "$bootstrapLeader" \
|
||||||
"./solana/net/remote/remote-sanity.sh $sanityExtraArgs \"$RUST_LOG\""
|
"./solana/net/remote/remote-sanity.sh $bootstrapLeader $sanityExtraArgs \"$RUST_LOG\""
|
||||||
) || ok=false
|
) || ok=false
|
||||||
$ok || exit 1
|
$ok || exit 1
|
||||||
|
|
||||||
@ -403,7 +404,7 @@ sanity() {
|
|||||||
set -x
|
set -x
|
||||||
# shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally
|
# shellcheck disable=SC2029 # remote-client.sh args are expanded on client side intentionally
|
||||||
ssh "${sshOptions[@]}" "$blockstreamer" \
|
ssh "${sshOptions[@]}" "$blockstreamer" \
|
||||||
"./solana/net/remote/remote-sanity.sh $sanityExtraArgs -o noLedgerVerify -o noValidatorSanity \"$RUST_LOG\""
|
"./solana/net/remote/remote-sanity.sh $blockstreamer $sanityExtraArgs -o noLedgerVerify -o noValidatorSanity \"$RUST_LOG\""
|
||||||
) || ok=false
|
) || ok=false
|
||||||
$ok || exit 1
|
$ok || exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -61,6 +61,7 @@ local|tar)
|
|||||||
./fetch-perf-libs.sh
|
./fetch-perf-libs.sh
|
||||||
# shellcheck source=/dev/null
|
# shellcheck source=/dev/null
|
||||||
source ./target/perf-libs/env.sh
|
source ./target/perf-libs/env.sh
|
||||||
|
SUDO_OK=1 source scripts/tune-system.sh
|
||||||
|
|
||||||
(
|
(
|
||||||
sudo scripts/oom-monitor.sh
|
sudo scripts/oom-monitor.sh
|
||||||
@ -89,7 +90,8 @@ local|tar)
|
|||||||
--gossip-port "$entrypointIp":8001
|
--gossip-port "$entrypointIp":8001
|
||||||
)
|
)
|
||||||
|
|
||||||
./multinode-demo/validator.sh --bootstrap-leader "${args[@]}" > fullnode.log 2>&1 &
|
nohup ./multinode-demo/validator.sh --bootstrap-leader "${args[@]}" > fullnode.log 2>&1 &
|
||||||
|
sleep 1
|
||||||
;;
|
;;
|
||||||
validator|blockstreamer)
|
validator|blockstreamer)
|
||||||
net/scripts/rsync-retry.sh -vPrc "$entrypointIp":~/.cargo/bin/ ~/.cargo/bin/
|
net/scripts/rsync-retry.sh -vPrc "$entrypointIp":~/.cargo/bin/ ~/.cargo/bin/
|
||||||
@ -129,7 +131,7 @@ local|tar)
|
|||||||
./multinode-demo/drone.sh > drone.log 2>&1 &
|
./multinode-demo/drone.sh > drone.log 2>&1 &
|
||||||
|
|
||||||
export BLOCKEXPLORER_GEOIP_WHITELIST=$PWD/net/config/geoip.yml
|
export BLOCKEXPLORER_GEOIP_WHITELIST=$PWD/net/config/geoip.yml
|
||||||
npm install @solana/blockexplorer@1
|
npm install @solana/blockexplorer@1.8.12
|
||||||
npx solana-blockexplorer > blockexplorer.log 2>&1 &
|
npx solana-blockexplorer > blockexplorer.log 2>&1 &
|
||||||
|
|
||||||
# Confirm the blockexplorer is accessible
|
# Confirm the blockexplorer is accessible
|
||||||
@ -144,7 +146,8 @@ local|tar)
|
|||||||
curl --head "$(curl ifconfig.io)"
|
curl --head "$(curl ifconfig.io)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
./multinode-demo/validator.sh "${args[@]}" > fullnode.log 2>&1 &
|
nohup ./multinode-demo/validator.sh "${args[@]}" > fullnode.log 2>&1 &
|
||||||
|
sleep 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Error: unknown node type: $nodeType"
|
echo "Error: unknown node type: $nodeType"
|
||||||
|
@ -6,6 +6,9 @@ set -e
|
|||||||
|
|
||||||
cd "$(dirname "$0")"/../..
|
cd "$(dirname "$0")"/../..
|
||||||
|
|
||||||
|
sanityTargetIp="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
deployMethod=
|
deployMethod=
|
||||||
entrypointIp=
|
entrypointIp=
|
||||||
numNodes=
|
numNodes=
|
||||||
@ -23,6 +26,7 @@ missing() {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[ -n $sanityTargetIp ]] || missing sanityTargetIp
|
||||||
[[ -n $deployMethod ]] || missing deployMethod
|
[[ -n $deployMethod ]] || missing deployMethod
|
||||||
[[ -n $entrypointIp ]] || missing entrypointIp
|
[[ -n $entrypointIp ]] || missing entrypointIp
|
||||||
[[ -n $numNodes ]] || missing numNodes
|
[[ -n $numNodes ]] || missing numNodes
|
||||||
@ -30,6 +34,7 @@ missing() {
|
|||||||
|
|
||||||
ledgerVerify=true
|
ledgerVerify=true
|
||||||
validatorSanity=true
|
validatorSanity=true
|
||||||
|
installCheck=true
|
||||||
rejectExtraNodes=false
|
rejectExtraNodes=false
|
||||||
while [[ $1 = -o ]]; do
|
while [[ $1 = -o ]]; do
|
||||||
opt="$2"
|
opt="$2"
|
||||||
@ -41,6 +46,9 @@ while [[ $1 = -o ]]; do
|
|||||||
noValidatorSanity)
|
noValidatorSanity)
|
||||||
validatorSanity=false
|
validatorSanity=false
|
||||||
;;
|
;;
|
||||||
|
noInstallCheck)
|
||||||
|
installCheck=false
|
||||||
|
;;
|
||||||
rejectExtraNodes)
|
rejectExtraNodes)
|
||||||
rejectExtraNodes=true
|
rejectExtraNodes=true
|
||||||
;;
|
;;
|
||||||
@ -66,7 +74,7 @@ local|tar)
|
|||||||
source target/perf-libs/env.sh
|
source target/perf-libs/env.sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
entrypointRsyncUrl="$entrypointIp:~/solana"
|
entrypointRsyncUrl="$sanityTargetIp:~/solana"
|
||||||
|
|
||||||
solana_gossip=solana-gossip
|
solana_gossip=solana-gossip
|
||||||
solana_install=solana-install
|
solana_install=solana-install
|
||||||
@ -91,7 +99,7 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "+++ $entrypointIp: node count ($numSanityNodes expected)"
|
echo "+++ $sanityTargetIp: node count ($numSanityNodes expected)"
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
$solana_keygen -o "$client_id"
|
$solana_keygen -o "$client_id"
|
||||||
@ -101,26 +109,26 @@ echo "+++ $entrypointIp: node count ($numSanityNodes expected)"
|
|||||||
nodeArg="num-nodes-exactly"
|
nodeArg="num-nodes-exactly"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
timeout 2m $solana_gossip --entrypoint "$entrypointIp:8001" \
|
timeout 2m $solana_gossip --entrypoint "$sanityTargetIp:8001" \
|
||||||
spy --$nodeArg "$numSanityNodes" \
|
spy --$nodeArg "$numSanityNodes" \
|
||||||
)
|
)
|
||||||
|
|
||||||
echo "--- RPC API: getTransactionCount"
|
echo "--- $sanityTargetIp: RPC API: getTransactionCount"
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
curl --retry 5 --retry-delay 2 --retry-connrefused \
|
curl --retry 5 --retry-delay 2 --retry-connrefused \
|
||||||
-X POST -H 'Content-Type: application/json' \
|
-X POST -H 'Content-Type: application/json' \
|
||||||
-d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \
|
-d '{"jsonrpc":"2.0","id":1, "method":"getTransactionCount"}' \
|
||||||
http://"$entrypointIp":8899
|
http://"$sanityTargetIp":8899
|
||||||
)
|
)
|
||||||
|
|
||||||
echo "--- $entrypointIp: wallet sanity"
|
echo "--- $sanityTargetIp: wallet sanity"
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
scripts/wallet-sanity.sh --url http://"$entrypointIp":8899
|
scripts/wallet-sanity.sh --url http://"$sanityTargetIp":8899
|
||||||
)
|
)
|
||||||
|
|
||||||
echo "--- $entrypointIp: verify ledger"
|
echo "--- $sanityTargetIp: verify ledger"
|
||||||
if $ledgerVerify; then
|
if $ledgerVerify; then
|
||||||
if [[ -d $ledger ]]; then
|
if [[ -d $ledger ]]; then
|
||||||
(
|
(
|
||||||
@ -140,13 +148,13 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
echo "--- $entrypointIp: validator sanity"
|
echo "--- $sanityTargetIp: validator sanity"
|
||||||
if $validatorSanity; then
|
if $validatorSanity; then
|
||||||
(
|
(
|
||||||
set -x -o pipefail
|
set -x -o pipefail
|
||||||
timeout 10s ./multinode-demo/validator-x.sh --stake 0 \
|
timeout 10s ./multinode-demo/validator-x.sh --stake 0 \
|
||||||
"$entrypointRsyncUrl" \
|
"$entrypointRsyncUrl" \
|
||||||
"$entrypointIp:8001" 2>&1 | tee validator-sanity.log
|
"$sanityTargetIp:8001" 2>&1 | tee validator-sanity.log
|
||||||
) || {
|
) || {
|
||||||
exitcode=$?
|
exitcode=$?
|
||||||
[[ $exitcode -eq 124 ]] || exit $exitcode
|
[[ $exitcode -eq 124 ]] || exit $exitcode
|
||||||
@ -164,8 +172,8 @@ else
|
|||||||
echo "Note: validator sanity disabled"
|
echo "Note: validator sanity disabled"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -r update_manifest_keypair.json ]]; then
|
if $installCheck && [[ -r update_manifest_keypair.json ]]; then
|
||||||
echo "--- $entrypointIp: solana-install test"
|
echo "--- $sanityTargetIp: solana-install test"
|
||||||
|
|
||||||
(
|
(
|
||||||
set -x
|
set -x
|
||||||
@ -174,7 +182,7 @@ if [[ -r update_manifest_keypair.json ]]; then
|
|||||||
$solana_install init \
|
$solana_install init \
|
||||||
--no-modify-path \
|
--no-modify-path \
|
||||||
--data-dir install-data-dir \
|
--data-dir install-data-dir \
|
||||||
--url http://"$entrypointIp":8899 \
|
--url http://"$sanityTargetIp":8899 \
|
||||||
--pubkey "$update_manifest_pubkey"
|
--pubkey "$update_manifest_pubkey"
|
||||||
|
|
||||||
$solana_install info
|
$solana_install info
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-netutil"
|
name = "solana-netutil"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Network Utilities"
|
description = "Solana Network Utilities"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -15,7 +15,7 @@ log = "0.4.2"
|
|||||||
nix = "0.14.0"
|
nix = "0.14.0"
|
||||||
rand = "0.6.1"
|
rand = "0.6.1"
|
||||||
socket2 = "0.3.9"
|
socket2 = "0.3.9"
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
tokio = "0.1"
|
tokio = "0.1"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-bpf-programs"
|
name = "solana-bpf-programs"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
documentation = "https://docs.rs/solana"
|
documentation = "https://docs.rs/solana"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
@ -22,10 +22,10 @@ bincode = "1.1.4"
|
|||||||
byteorder = "1.3.1"
|
byteorder = "1.3.1"
|
||||||
elf = "0.0.10"
|
elf = "0.0.10"
|
||||||
solana_rbpf = "=0.1.12"
|
solana_rbpf = "=0.1.12"
|
||||||
solana-bpfloader = { path = "../bpf_loader", version = "0.15.0" }
|
solana-bpfloader = { path = "../bpf_loader", version = "0.15.2" }
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../../runtime", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[[bench]]
|
[[bench]]
|
||||||
name = "bpf_loader"
|
name = "bpf_loader"
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "solana-bpf-rust-alloc"
|
name = "solana-bpf-rust-alloc"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana BPF alloc program written in Rust"
|
description = "Solana BPF alloc program written in Rust"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -12,7 +12,7 @@ homepage = "https://solana.com/"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.0" }
|
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.2" }
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = []
|
members = []
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "solana-bpf-rust-iter"
|
name = "solana-bpf-rust-iter"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana BPF iter program written in Rust"
|
description = "Solana BPF iter program written in Rust"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -12,7 +12,7 @@ homepage = "https://solana.com/"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.0" }
|
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.2" }
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = []
|
members = []
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "solana-bpf-rust-noop"
|
name = "solana-bpf-rust-noop"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana BPF noop program written in Rust"
|
description = "Solana BPF noop program written in Rust"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -12,7 +12,7 @@ homepage = "https://solana.com/"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.0" }
|
solana-sdk-bpf-utils = { path = "../../../../sdk/bpf/rust-utils", version = "0.15.2" }
|
||||||
|
|
||||||
[workspace]
|
[workspace]
|
||||||
members = []
|
members = []
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-bpfloader"
|
name = "solana-bpfloader"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana BPF Loader"
|
description = "Solana BPF Loader"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -15,8 +15,8 @@ libc = "0.2.55"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana_rbpf = "=0.1.12"
|
solana_rbpf = "=0.1.12"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_bpf_loader"
|
name = "solana_bpf_loader"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-budget-api"
|
name = "solana-budget-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Budget program API"
|
description = "Solana Budget program API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -16,10 +16,10 @@ num-derive = "0.2"
|
|||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../../runtime", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_budget_api"
|
name = "solana_budget_api"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-budget-program"
|
name = "solana-budget-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana budget program"
|
description = "Solana budget program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-budget-api = { path = "../budget_api", version = "0.15.0" }
|
solana-budget-api = { path = "../budget_api", version = "0.15.2" }
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_budget_program"
|
name = "solana_budget_program"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-config-api"
|
name = "solana-config-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "config program API"
|
description = "config program API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -13,11 +13,11 @@ bincode = "1.1.4"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../../runtime", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_config_api"
|
name = "solana_config_api"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-config-program"
|
name = "solana-config-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "config program"
|
description = "config program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-config-api = { path = "../config_api", version = "0.15.0" }
|
solana-config-api = { path = "../config_api", version = "0.15.2" }
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_config_program"
|
name = "solana_config_program"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-exchange-api"
|
name = "solana-exchange-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Exchange program API"
|
description = "Solana Exchange program API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -13,12 +13,12 @@ log = "0.4.2"
|
|||||||
bincode = "1.1.4"
|
bincode = "1.1.4"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../../metrics", version = "0.15.2" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../../runtime", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_exchange_api"
|
name = "solana_exchange_api"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-exchange-program"
|
name = "solana-exchange-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana exchange program"
|
description = "Solana exchange program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-exchange-api = { path = "../exchange_api", version = "0.15.0" }
|
solana-exchange-api = { path = "../exchange_api", version = "0.15.2" }
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_exchange_program"
|
name = "solana_exchange_program"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-failure-program"
|
name = "solana-failure-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana failure program"
|
description = "Solana failure program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -9,11 +9,11 @@ homepage = "https://solana.com/"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../../runtime", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_failure_program"
|
name = "solana_failure_program"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-noop-program"
|
name = "solana-noop-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana noop program"
|
description = "Solana noop program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -9,13 +9,10 @@ homepage = "https://solana.com/"
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
|
|
||||||
[dev-dependencies]
|
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_noop_program"
|
name = "solana_noop_program"
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-stake-api"
|
name = "solana-stake-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Stake program API"
|
description = "Solana Stake program API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -13,10 +13,10 @@ bincode = "1.1.4"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../../metrics", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../vote_api", version = "0.15.0" }
|
solana-vote-api = { path = "../vote_api", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_stake_api"
|
name = "solana_stake_api"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-stake-program"
|
name = "solana-stake-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana stake program"
|
description = "Solana stake program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-stake-api = { path = "../stake_api", version = "0.15.0" }
|
solana-stake-api = { path = "../stake_api", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_stake_program"
|
name = "solana_stake_program"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-storage-api"
|
name = "solana-storage-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Storage program API"
|
description = "Solana Storage program API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -13,12 +13,12 @@ bincode = "1.1.4"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
assert_matches = "1.3.0"
|
assert_matches = "1.3.0"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
solana-runtime = { path = "../../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../../runtime", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_storage_api"
|
name = "solana_storage_api"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-storage-program"
|
name = "solana-storage-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana storage program"
|
description = "Solana storage program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-storage-api = { path = "../storage_api", version = "0.15.0" }
|
solana-storage-api = { path = "../storage_api", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_storage_program"
|
name = "solana_storage_program"
|
||||||
|
19
programs/storage_program/src/genesis_block_util.rs
Normal file
19
programs/storage_program/src/genesis_block_util.rs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
use crate::solana_storage_program;
|
||||||
|
use solana_sdk::genesis_block::GenesisBlock;
|
||||||
|
use solana_sdk::pubkey::Pubkey;
|
||||||
|
use solana_storage_api::storage_contract;
|
||||||
|
|
||||||
|
pub trait GenesisBlockUtil {
|
||||||
|
fn add_storage_program(&mut self, validator_storage_pubkey: &Pubkey);
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GenesisBlockUtil for GenesisBlock {
|
||||||
|
fn add_storage_program(&mut self, validator_storage_pubkey: &Pubkey) {
|
||||||
|
self.accounts.push((
|
||||||
|
*validator_storage_pubkey,
|
||||||
|
storage_contract::create_validator_storage_account(1),
|
||||||
|
));
|
||||||
|
self.native_instruction_processors
|
||||||
|
.push(solana_storage_program!());
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,5 @@
|
|||||||
|
pub mod genesis_block_util;
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! solana_storage_program {
|
macro_rules! solana_storage_program {
|
||||||
() => {
|
() => {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-token-api"
|
name = "solana-token-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Token API"
|
description = "Solana Token API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -15,8 +15,8 @@ num-derive = "0.2"
|
|||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_token_api"
|
name = "solana_token_api"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-token-program"
|
name = "solana-token-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana token program"
|
description = "Solana token program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-token-api = { path = "../token_api", version = "0.15.0" }
|
solana-token-api = { path = "../token_api", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_token_program"
|
name = "solana_token_program"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-vote-api"
|
name = "solana-vote-api"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Vote program API"
|
description = "Solana Vote program API"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -13,9 +13,9 @@ bincode = "1.1.4"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../../metrics", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_vote_api"
|
name = "solana_vote_api"
|
||||||
|
@ -145,10 +145,22 @@ impl VoteState {
|
|||||||
.iter()
|
.iter()
|
||||||
.any(|(slot, hash)| vote.slot == *slot && vote.hash == *hash)
|
.any(|(slot, hash)| vote.slot == *slot && vote.hash == *hash)
|
||||||
{
|
{
|
||||||
warn!(
|
if log_enabled!(log::Level::Warn) {
|
||||||
"dropping vote {:?}, no matching slot/hash combination",
|
for (slot, hash) in slot_hashes {
|
||||||
vote
|
if vote.slot == *slot {
|
||||||
);
|
warn!(
|
||||||
|
"dropped vote {:?} matched slot {}, but not hash {:?}",
|
||||||
|
vote, *slot, *hash
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if vote.hash == *hash {
|
||||||
|
warn!(
|
||||||
|
"dropped vote {:?} matched hash {:?}, but not slot {}",
|
||||||
|
vote, *hash, *slot,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-vote-program"
|
name = "solana-vote-program"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana Vote program"
|
description = "Solana Vote program"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -10,9 +10,9 @@ edition = "2018"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
solana-logger = { path = "../../logger", version = "0.15.0" }
|
solana-logger = { path = "../../logger", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../../sdk", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../vote_api", version = "0.15.0" }
|
solana-vote-api = { path = "../vote_api", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_vote_program"
|
name = "solana_vote_program"
|
||||||
|
@ -2,17 +2,17 @@
|
|||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-replicator"
|
name = "solana-replicator"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33.0"
|
clap = "2.33.0"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
chacha = ["solana/chacha"]
|
chacha = ["solana/chacha"]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-runtime"
|
name = "solana-runtime"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana runtime"
|
description = "Solana runtime"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
@ -23,16 +23,14 @@ rayon = "1.0.0"
|
|||||||
serde = "1.0.88"
|
serde = "1.0.88"
|
||||||
serde_derive = "1.0.91"
|
serde_derive = "1.0.91"
|
||||||
serde_json = "1.0.38"
|
serde_json = "1.0.38"
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
|
||||||
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" }
|
solana-vote-program = { path = "../programs/vote_program", version = "0.15.2" }
|
||||||
solana-vote-program = { path = "../programs/vote_program", version = "0.15.0" }
|
solana-stake-program = { path = "../programs/stake_program", version = "0.15.2" }
|
||||||
solana-stake-program = { path = "../programs/stake_program", version = "0.15.0" }
|
solana-noop-program = { path = "../programs/noop_program", version = "0.15.2" }
|
||||||
solana-storage-program = { path = "../programs/storage_program", version = "0.15.0" }
|
|
||||||
solana-noop-program = { path = "../programs/noop_program", version = "0.15.0" }
|
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_runtime"
|
name = "solana_runtime"
|
||||||
|
@ -215,18 +215,22 @@ impl Bank {
|
|||||||
self.store(&slot_hashes::id(), &account);
|
self.store(&slot_hashes::id(), &account);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn set_hash(&self) {
|
fn set_hash(&self) -> bool {
|
||||||
let mut hash = self.hash.write().unwrap();
|
let mut hash = self.hash.write().unwrap();
|
||||||
|
|
||||||
if *hash == Hash::default() {
|
if *hash == Hash::default() {
|
||||||
// freeze is a one-way trip, idempotent
|
// freeze is a one-way trip, idempotent
|
||||||
*hash = self.hash_internal_state();
|
*hash = self.hash_internal_state();
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn freeze(&self) {
|
pub fn freeze(&self) {
|
||||||
self.set_hash();
|
if self.set_hash() {
|
||||||
self.update_slot_hashes();
|
self.update_slot_hashes();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn epoch_schedule(&self) -> &EpochSchedule {
|
pub fn epoch_schedule(&self) -> &EpochSchedule {
|
||||||
@ -1347,6 +1351,36 @@ mod tests {
|
|||||||
assert_eq!(bank.transaction_count(), 1);
|
assert_eq!(bank.transaction_count(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_need_credit_only_accounts() {
|
||||||
|
let (genesis_block, mint_keypair) = create_genesis_block(10);
|
||||||
|
let bank = Bank::new(&genesis_block);
|
||||||
|
let payer0 = Keypair::new();
|
||||||
|
let payer1 = Keypair::new();
|
||||||
|
let recipient = Pubkey::new_rand();
|
||||||
|
// Fund additional payers
|
||||||
|
bank.transfer(3, &mint_keypair, &payer0.pubkey()).unwrap();
|
||||||
|
bank.transfer(3, &mint_keypair, &payer1.pubkey()).unwrap();
|
||||||
|
let tx0 = system_transaction::transfer(&mint_keypair, &recipient, 1, genesis_block.hash());
|
||||||
|
let tx1 = system_transaction::transfer(&payer0, &recipient, 1, genesis_block.hash());
|
||||||
|
let tx2 = system_transaction::transfer(&payer1, &recipient, 1, genesis_block.hash());
|
||||||
|
let txs = vec![tx0, tx1, tx2];
|
||||||
|
let results = bank.process_transactions(&txs);
|
||||||
|
|
||||||
|
// If multiple transactions attempt to deposit into the same account, only the first will
|
||||||
|
// succeed, even though such atomic adds are safe. A System Transfer `To` account should be
|
||||||
|
// given credit-only handling
|
||||||
|
|
||||||
|
assert_eq!(results[0], Ok(()));
|
||||||
|
assert_eq!(results[1], Err(TransactionError::AccountInUse));
|
||||||
|
assert_eq!(results[2], Err(TransactionError::AccountInUse));
|
||||||
|
|
||||||
|
// After credit-only account handling is implemented, the following checks should pass instead:
|
||||||
|
// assert_eq!(results[0], Ok(()));
|
||||||
|
// assert_eq!(results[1], Ok(()));
|
||||||
|
// assert_eq!(results[2], Ok(()));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_interleaving_locks() {
|
fn test_interleaving_locks() {
|
||||||
let (genesis_block, mint_keypair) = create_genesis_block(3);
|
let (genesis_block, mint_keypair) = create_genesis_block(3);
|
||||||
|
@ -4,7 +4,6 @@ use solana_sdk::pubkey::Pubkey;
|
|||||||
use solana_sdk::signature::{Keypair, KeypairUtil};
|
use solana_sdk::signature::{Keypair, KeypairUtil};
|
||||||
use solana_sdk::system_program;
|
use solana_sdk::system_program;
|
||||||
use solana_stake_api::stake_state;
|
use solana_stake_api::stake_state;
|
||||||
use solana_storage_api::storage_contract;
|
|
||||||
use solana_vote_api::vote_state;
|
use solana_vote_api::vote_state;
|
||||||
|
|
||||||
// The default stake placed with the bootstrap leader
|
// The default stake placed with the bootstrap leader
|
||||||
@ -14,7 +13,6 @@ pub struct GenesisBlockInfo {
|
|||||||
pub genesis_block: GenesisBlock,
|
pub genesis_block: GenesisBlock,
|
||||||
pub mint_keypair: Keypair,
|
pub mint_keypair: Keypair,
|
||||||
pub voting_keypair: Keypair,
|
pub voting_keypair: Keypair,
|
||||||
pub storage_keypair: Keypair,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_genesis_block_with_leader(
|
pub fn create_genesis_block_with_leader(
|
||||||
@ -25,7 +23,6 @@ pub fn create_genesis_block_with_leader(
|
|||||||
let mint_keypair = Keypair::new();
|
let mint_keypair = Keypair::new();
|
||||||
let voting_keypair = Keypair::new();
|
let voting_keypair = Keypair::new();
|
||||||
let staking_keypair = Keypair::new();
|
let staking_keypair = Keypair::new();
|
||||||
let storage_keypair = Keypair::new();
|
|
||||||
|
|
||||||
// TODO: de-duplicate the stake once passive staking
|
// TODO: de-duplicate the stake once passive staking
|
||||||
// is fully implemented
|
// is fully implemented
|
||||||
@ -61,23 +58,13 @@ pub fn create_genesis_block_with_leader(
|
|||||||
bootstrap_leader_stake_lamports,
|
bootstrap_leader_stake_lamports,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
// storage account
|
|
||||||
(
|
|
||||||
storage_keypair.pubkey(),
|
|
||||||
storage_contract::create_validator_storage_account(1),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
&[
|
|
||||||
solana_vote_program!(),
|
|
||||||
solana_stake_program!(),
|
|
||||||
solana_storage_program!(), // TODO: storage program is only needed by core/, move this line into core/src/genesis_utils.rs
|
|
||||||
],
|
],
|
||||||
|
&[solana_vote_program!(), solana_stake_program!()],
|
||||||
);
|
);
|
||||||
|
|
||||||
GenesisBlockInfo {
|
GenesisBlockInfo {
|
||||||
genesis_block,
|
genesis_block,
|
||||||
mint_keypair,
|
mint_keypair,
|
||||||
voting_keypair,
|
voting_keypair,
|
||||||
storage_keypair,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,8 +25,5 @@ extern crate solana_vote_program;
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate solana_stake_program;
|
extern crate solana_stake_program;
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
extern crate solana_storage_program;
|
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
|
@ -6,35 +6,46 @@
|
|||||||
# shellcheck source=scripts/ulimit-n.sh
|
# shellcheck source=scripts/ulimit-n.sh
|
||||||
source "$(dirname "${BASH_SOURCE[0]}")"/ulimit-n.sh
|
source "$(dirname "${BASH_SOURCE[0]}")"/ulimit-n.sh
|
||||||
|
|
||||||
# Reference: https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360
|
sysctl_write() {
|
||||||
if [[ $(uname) = Linux ]]; then
|
declare name=$1
|
||||||
(
|
declare new_value=$2
|
||||||
set -x +e
|
|
||||||
# test the existence of the sysctls before trying to set them
|
|
||||||
# go ahead and return true and don't exit if these calls fail
|
|
||||||
sysctl net.core.rmem_max 2>/dev/null 1>/dev/null &&
|
|
||||||
sudo sysctl -w net.core.rmem_max=161061273 1>/dev/null 2>/dev/null
|
|
||||||
|
|
||||||
sysctl net.core.rmem_default 2>/dev/null 1>/dev/null &&
|
# Test the existence of the sysctl before trying to set it
|
||||||
sudo sysctl -w net.core.rmem_default=161061273 1>/dev/null 2>/dev/null
|
sysctl "$name" 2>/dev/null 1>/dev/null || return 0
|
||||||
|
|
||||||
sysctl net.core.wmem_max 2>/dev/null 1>/dev/null &&
|
declare current_value
|
||||||
sudo sysctl -w net.core.wmem_max=161061273 1>/dev/null 2>/dev/null
|
current_value=$(sysctl -n "$name")
|
||||||
|
[[ $current_value != "$new_value" ]] || return 0
|
||||||
|
|
||||||
sysctl net.core.wmem_default 2>/dev/null 1>/dev/null &&
|
declare cmd="sysctl -w $name=$new_value"
|
||||||
sudo sysctl -w net.core.wmem_default=161061273 1>/dev/null 2>/dev/null
|
if [[ -n $SUDO_OK ]]; then
|
||||||
) || true
|
cmd="sudo $cmd"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $(uname) = Darwin ]]; then
|
echo "$ $cmd"
|
||||||
(
|
$cmd
|
||||||
if [[ $(sysctl net.inet.udp.maxdgram | cut -d\ -f2) != 65535 ]]; then
|
|
||||||
echo "Adjusting maxdgram to allow for large UDP packets, see BLOB_SIZE in src/packet.rs:"
|
|
||||||
set -x
|
|
||||||
sudo sysctl net.inet.udp.maxdgram=65535
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
|
|
||||||
fi
|
# Some versions of sysctl exit with 0 on permission denied errors
|
||||||
|
current_value=$(sysctl -n "$name")
|
||||||
|
if [[ $current_value != "$new_value" ]]; then
|
||||||
|
echo "==> Failed to set $name. Try running: \"SUDO_OK=1 source ${BASH_SOURCE[0]}\""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case $(uname) in
|
||||||
|
Linux)
|
||||||
|
# Reference: https://medium.com/@CameronSparr/increase-os-udp-buffers-to-improve-performance-51d167bb1360
|
||||||
|
sysctl_write net.core.rmem_max 161061273
|
||||||
|
sysctl_write net.core.rmem_default 161061273
|
||||||
|
sysctl_write net.core.wmem_max 161061273
|
||||||
|
sysctl_write net.core.wmem_default 161061273
|
||||||
|
;;
|
||||||
|
|
||||||
|
Darwin)
|
||||||
|
# Adjusting maxdgram to allow for large UDP packets, see BLOB_SIZE in core/src/packet.rs
|
||||||
|
sysctl_write net.inet.udp.maxdgram 65535
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-sdk"
|
name = "solana-sdk"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana SDK"
|
description = "Solana SDK"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "solana-sdk-bpf-utils"
|
name = "solana-sdk-bpf-utils"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Solana BPF SDK Rust Utils"
|
description = "Solana BPF SDK Rust Utils"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
|
@ -19,9 +19,6 @@ download() {
|
|||||||
"--retry-connrefused"
|
"--retry-connrefused"
|
||||||
"--read-timeout=30"
|
"--read-timeout=30"
|
||||||
)
|
)
|
||||||
# Github release URLs 302 to AWS S3. Sometimes that S3 URL returns 403
|
|
||||||
args+=("--retry-on-http-error=403")
|
|
||||||
|
|
||||||
wget "${args[@]}"
|
wget "${args[@]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -36,7 +33,7 @@ if [[ ! -r criterion-$machine-$version.md ]]; then
|
|||||||
mkdir criterion
|
mkdir criterion
|
||||||
cd criterion
|
cd criterion
|
||||||
|
|
||||||
base=https://github.com/Snaipe/Criterion/releases/
|
base=https://github.com/Snaipe/Criterion/releases
|
||||||
download $base/download/$version/$filename $filename mega
|
download $base/download/$version/$filename $filename mega
|
||||||
tar --strip-components 1 -jxf $filename
|
tar --strip-components 1 -jxf $filename
|
||||||
rm -rf $filename
|
rm -rf $filename
|
||||||
|
@ -1,17 +1,18 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "solana-upload-perf"
|
name = "solana-upload-perf"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
description = "Metrics Upload Utility"
|
description = "Metrics Upload Utility"
|
||||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
|
publish = false
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
|
|
||||||
[[bin]]
|
[[bin]]
|
||||||
name = "solana-upload-perf"
|
name = "solana-upload-perf"
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-validator"
|
name = "solana-validator"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -12,15 +12,15 @@ homepage = "https://solana.com/"
|
|||||||
clap = "2.33.0"
|
clap = "2.33.0"
|
||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
solana-drone = { path = "../drone", version = "0.15.0" }
|
solana-drone = { path = "../drone", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
solana-runtime = { path = "../runtime", version = "0.15.0" }
|
solana-runtime = { path = "../runtime", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
|
||||||
solana-vote-signer = { path = "../vote-signer", version = "0.15.0" }
|
solana-vote-signer = { path = "../vote-signer", version = "0.15.2" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
chacha = ["solana/chacha"]
|
chacha = ["solana/chacha"]
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-vote-signer"
|
name = "solana-vote-signer"
|
||||||
description = "Solana Vote Signing Service"
|
description = "Solana Vote Signing Service"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -17,8 +17,8 @@ jsonrpc-derive = "11.0.0"
|
|||||||
jsonrpc-http-server = "11.0.0"
|
jsonrpc-http-server = "11.0.0"
|
||||||
serde = "1.0.91"
|
serde = "1.0.91"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-metrics = { path = "../metrics", version = "0.15.0" }
|
solana-metrics = { path = "../metrics", version = "0.15.2" }
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "solana_vote_signer"
|
name = "solana_vote_signer"
|
||||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
|||||||
edition = "2018"
|
edition = "2018"
|
||||||
name = "solana-wallet"
|
name = "solana-wallet"
|
||||||
description = "Blockchain, Rebuilt for Scale"
|
description = "Blockchain, Rebuilt for Scale"
|
||||||
version = "0.15.0"
|
version = "0.15.2"
|
||||||
repository = "https://github.com/solana-labs/solana"
|
repository = "https://github.com/solana-labs/solana"
|
||||||
license = "Apache-2.0"
|
license = "Apache-2.0"
|
||||||
homepage = "https://solana.com/"
|
homepage = "https://solana.com/"
|
||||||
@ -17,21 +17,21 @@ dirs = "1.0.5"
|
|||||||
log = "0.4.2"
|
log = "0.4.2"
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
serde_json = "1.0.39"
|
serde_json = "1.0.39"
|
||||||
solana-budget-api = { path = "../programs/budget_api", version = "0.15.0" }
|
solana-budget-api = { path = "../programs/budget_api", version = "0.15.2" }
|
||||||
solana-client = { path = "../client", version = "0.15.0" }
|
solana-client = { path = "../client", version = "0.15.2" }
|
||||||
solana-drone = { path = "../drone", version = "0.15.0" }
|
solana-drone = { path = "../drone", version = "0.15.2" }
|
||||||
solana-logger = { path = "../logger", version = "0.15.0" }
|
solana-logger = { path = "../logger", version = "0.15.2" }
|
||||||
solana-netutil = { path = "../netutil", version = "0.15.0" }
|
solana-netutil = { path = "../netutil", version = "0.15.2" }
|
||||||
solana-sdk = { path = "../sdk", version = "0.15.0" }
|
solana-sdk = { path = "../sdk", version = "0.15.2" }
|
||||||
solana-stake-api = { path = "../programs/stake_api", version = "0.15.0" }
|
solana-stake-api = { path = "../programs/stake_api", version = "0.15.2" }
|
||||||
solana-storage-api = { path = "../programs/storage_api", version = "0.15.0" }
|
solana-storage-api = { path = "../programs/storage_api", version = "0.15.2" }
|
||||||
solana-vote-api = { path = "../programs/vote_api", version = "0.15.0" }
|
solana-vote-api = { path = "../programs/vote_api", version = "0.15.2" }
|
||||||
solana-vote-signer = { path = "../vote-signer", version = "0.15.0" }
|
solana-vote-signer = { path = "../vote-signer", version = "0.15.2" }
|
||||||
url = "1.7.2"
|
url = "1.7.2"
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
solana-budget-program = { path = "../programs/budget_program", version = "0.15.0" }
|
solana-budget-program = { path = "../programs/budget_program", version = "0.15.2" }
|
||||||
solana = { path = "../core", version = "0.15.0" }
|
solana = { path = "../core", version = "0.15.2" }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
cuda = []
|
cuda = []
|
||||||
|
Reference in New Issue
Block a user