Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
bc808d785b | ||
|
a5e91f8b14 | ||
|
79b1d49e42 | ||
|
5c5207b7c4 | ||
|
6280ea1b6e | ||
|
f016ccdbb5 | ||
|
a528e966e6 | ||
|
4be9d926c8 | ||
|
94e162b0f0 | ||
|
26ca3c6d6d | ||
|
729b997392 | ||
|
37b381f47f | ||
|
0115bfa2ea |
@@ -18,6 +18,8 @@ branches:
|
||||
- master
|
||||
- /^v\d+\.\d+/
|
||||
|
||||
if: type IN (api, cron) OR tag IS present
|
||||
|
||||
notifications:
|
||||
slack:
|
||||
on_success: change
|
||||
|
132
Cargo.lock
generated
132
Cargo.lock
generated
@@ -252,7 +252,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "btc_spv_bin"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"hex",
|
||||
@@ -2886,7 +2886,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-accounts-bench"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"crossbeam-channel",
|
||||
@@ -2901,7 +2901,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-archiver"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"console 0.10.3",
|
||||
@@ -2916,7 +2916,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-archiver-lib"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"crossbeam-channel",
|
||||
@@ -2946,7 +2946,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-archiver-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"hex",
|
||||
"log 0.4.8",
|
||||
@@ -2961,7 +2961,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-banking-bench"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"crossbeam-channel",
|
||||
@@ -2981,7 +2981,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bench-exchange"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"itertools",
|
||||
@@ -3008,7 +3008,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bench-streamer"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"solana-clap-utils",
|
||||
@@ -3019,7 +3019,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bench-tps"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"clap",
|
||||
@@ -3045,7 +3045,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-bpf-loader-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"byteorder",
|
||||
@@ -3062,7 +3062,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-btc-spv-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"hex",
|
||||
@@ -3076,7 +3076,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-budget-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"chrono",
|
||||
@@ -3092,7 +3092,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-chacha"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"hex-literal",
|
||||
"log 0.4.8",
|
||||
@@ -3107,7 +3107,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-chacha-cuda"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"hex-literal",
|
||||
"log 0.4.8",
|
||||
@@ -3121,14 +3121,14 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-chacha-sys"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "solana-clap-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap",
|
||||
@@ -3142,7 +3142,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-cli"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"Inflector",
|
||||
"bincode",
|
||||
@@ -3186,7 +3186,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-cli-config"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
"lazy_static",
|
||||
@@ -3198,7 +3198,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-client"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bincode",
|
||||
@@ -3224,7 +3224,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-config-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"chrono",
|
||||
@@ -3237,7 +3237,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-core"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bs58",
|
||||
@@ -3308,7 +3308,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-crate-features"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"bytes 0.4.12",
|
||||
@@ -3331,7 +3331,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-dos"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"clap",
|
||||
@@ -3346,7 +3346,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-download-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bzip2",
|
||||
"console 0.10.3",
|
||||
@@ -3360,7 +3360,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-exchange-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"log 0.4.8",
|
||||
@@ -3377,7 +3377,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-failure-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"solana-runtime",
|
||||
"solana-sdk",
|
||||
@@ -3385,7 +3385,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-faucet"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"byteorder",
|
||||
@@ -3404,7 +3404,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-genesis"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"base64 0.12.1",
|
||||
"chrono",
|
||||
@@ -3425,7 +3425,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-genesis-programs"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"log 0.4.8",
|
||||
"solana-bpf-loader-program",
|
||||
@@ -3439,7 +3439,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-gossip"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"solana-clap-utils",
|
||||
@@ -3452,7 +3452,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-install"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"atty",
|
||||
"bincode",
|
||||
@@ -3484,7 +3484,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-keygen"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bs58",
|
||||
"clap",
|
||||
@@ -3499,7 +3499,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-ledger"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bincode",
|
||||
@@ -3546,7 +3546,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-ledger-tool"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_cmd",
|
||||
"bs58",
|
||||
@@ -3569,7 +3569,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-local-cluster"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"itertools",
|
||||
@@ -3599,7 +3599,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-log-analyzer"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"byte-unit",
|
||||
"clap",
|
||||
@@ -3611,7 +3611,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-logger"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"env_logger",
|
||||
"lazy_static",
|
||||
@@ -3620,7 +3620,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-measure"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"jemalloc-ctl",
|
||||
"jemallocator",
|
||||
@@ -3631,7 +3631,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-merkle-tree"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"fast-math",
|
||||
"hex",
|
||||
@@ -3640,7 +3640,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-metrics"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"env_logger",
|
||||
"gethostname",
|
||||
@@ -3655,7 +3655,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-net-shaper"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"rand 0.7.3",
|
||||
@@ -3667,7 +3667,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-net-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bytes 0.4.12",
|
||||
@@ -3686,7 +3686,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-noop-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"log 0.4.8",
|
||||
"solana-logger",
|
||||
@@ -3695,7 +3695,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-ownable"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"num-derive 0.3.0",
|
||||
@@ -3707,7 +3707,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-perf"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"dlopen",
|
||||
@@ -3727,7 +3727,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-rayon-threadlimit"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
"num_cpus",
|
||||
@@ -3746,7 +3746,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-remote-wallet"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"base32",
|
||||
"console 0.10.3",
|
||||
@@ -3764,7 +3764,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-runtime"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bincode",
|
||||
@@ -3802,7 +3802,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-scripts"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"csv",
|
||||
"serde",
|
||||
@@ -3810,7 +3810,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-sdk"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bincode",
|
||||
@@ -3844,7 +3844,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-sdk-c"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bs58",
|
||||
@@ -3858,7 +3858,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-sdk-macro"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bs58",
|
||||
"proc-macro2 1.0.12",
|
||||
@@ -3868,7 +3868,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-stake-accounts"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"solana-clap-utils",
|
||||
@@ -3882,7 +3882,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-stake-monitor"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"console 0.10.3",
|
||||
@@ -3906,7 +3906,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-stake-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"log 0.4.8",
|
||||
@@ -3924,7 +3924,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-storage-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"assert_matches",
|
||||
"bincode",
|
||||
@@ -3940,7 +3940,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-streamer"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"log 0.4.8",
|
||||
@@ -3955,7 +3955,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-sys-tuner"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"libc",
|
||||
@@ -3970,7 +3970,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-transaction-status"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"bs58",
|
||||
@@ -3981,7 +3981,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-upload-perf"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"serde_json",
|
||||
"solana-metrics",
|
||||
@@ -3989,7 +3989,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-validator"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"clap",
|
||||
@@ -4017,7 +4017,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-version"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"serde",
|
||||
"serde_derive",
|
||||
@@ -4026,7 +4026,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-vest-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"chrono",
|
||||
@@ -4042,7 +4042,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-vote-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"bincode",
|
||||
"log 0.4.8",
|
||||
@@ -4057,7 +4057,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-vote-signer"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"jsonrpc-core",
|
||||
@@ -4072,7 +4072,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "solana-watchtower"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
dependencies = [
|
||||
"clap",
|
||||
"humantime 2.0.0",
|
||||
|
@@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-accounts-bench"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -10,10 +10,10 @@ homepage = "https://solana.com/"
|
||||
[dependencies]
|
||||
log = "0.4.6"
|
||||
rayon = "1.3.0"
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-measure = { path = "../measure", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-measure = { path = "../measure", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
rand = "0.7.0"
|
||||
clap = "2.33.0"
|
||||
crossbeam-channel = "0.4"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-archiver-lib"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Archiver Library"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,23 +15,23 @@ ed25519-dalek = "=1.0.0-pre.3"
|
||||
log = "0.4.8"
|
||||
rand = "0.7.0"
|
||||
rand_chacha = "0.2.2"
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
serde = "1.0.105"
|
||||
serde_json = "1.0.48"
|
||||
serde_derive = "1.0.103"
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-chacha = { path = "../chacha", version = "1.1.17" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.17" }
|
||||
solana-archiver-utils = { path = "../archiver-utils", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-chacha = { path = "../chacha", version = "1.1.18" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.18" }
|
||||
solana-archiver-utils = { path = "../archiver-utils", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
hex = "0.4.2"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-archiver-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Archiver Utils"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -11,12 +11,12 @@ edition = "2018"
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
rand = "0.7.0"
|
||||
solana-chacha = { path = "../chacha", version = "1.1.17" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-chacha = { path = "../chacha", version = "1.1.18" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
hex = "0.4.2"
|
||||
|
@@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-archiver"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -10,13 +10,13 @@ homepage = "https://solana.com/"
|
||||
[dependencies]
|
||||
clap = "2.33.0"
|
||||
console = "0.10.0"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-archiver-lib = { path = "../archiver-lib", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-archiver-lib = { path = "../archiver-lib", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
|
@@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-banking-bench"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -13,15 +13,15 @@ crossbeam-channel = "0.4"
|
||||
log = "0.4.6"
|
||||
rand = "0.7.0"
|
||||
rayon = "1.3.0"
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-measure = { path = "../measure", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-version = { path = "../version", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-measure = { path = "../measure", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-version = { path = "../version", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
@@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-bench-exchange"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -18,20 +18,20 @@ rand = "0.7.0"
|
||||
rayon = "1.3.0"
|
||||
serde_json = "1.0.48"
|
||||
serde_yaml = "0.8.11"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-genesis = { path = "../genesis", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.17" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-genesis = { path = "../genesis", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.18" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-local-cluster = { path = "../local-cluster", version = "1.1.17" }
|
||||
solana-local-cluster = { path = "../local-cluster", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
@@ -2,17 +2,17 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-bench-streamer"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.0"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
@@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-bench-tps"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -14,24 +14,24 @@ log = "0.4.8"
|
||||
rayon = "1.3.0"
|
||||
serde_json = "1.0.48"
|
||||
serde_yaml = "0.8.11"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-genesis = { path = "../genesis", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-genesis = { path = "../genesis", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.18" }
|
||||
#solana-librapay = { path = "../programs/librapay", version = "1.1.8", optional = true }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-measure = { path = "../measure", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-measure = { path = "../measure", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
#solana-move-loader-program = { path = "../programs/move_loader", version = "1.1.8", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
serial_test = "0.4.0"
|
||||
serial_test_derive = "0.4.0"
|
||||
solana-local-cluster = { path = "../local-cluster", version = "1.1.17" }
|
||||
solana-local-cluster = { path = "../local-cluster", version = "1.1.18" }
|
||||
|
||||
#[features]
|
||||
#move = ["solana-librapay", "solana-move-loader-program"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-chacha-cuda"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Chacha Cuda APIs"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -10,12 +10,12 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
solana-archiver-utils = { path = "../archiver-utils", version = "1.1.17" }
|
||||
solana-chacha = { path = "../chacha", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-archiver-utils = { path = "../archiver-utils", version = "1.1.18" }
|
||||
solana-chacha = { path = "../chacha", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
hex-literal = "0.2.1"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-chacha-sys"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana chacha-sys"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-chacha"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Chacha APIs"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,11 +12,11 @@ edition = "2018"
|
||||
log = "0.4.8"
|
||||
rand = "0.7.0"
|
||||
rand_chacha = "0.2.2"
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
hex-literal = "0.2.1"
|
||||
|
@@ -5,6 +5,9 @@
|
||||
# Release tags use buildkite-release.yml instead
|
||||
|
||||
steps:
|
||||
- command: "ci/test-sanity.sh"
|
||||
name: "sanity"
|
||||
timeout_in_minutes: 5
|
||||
- command: ". ci/rust-version.sh; ci/docker-run.sh $$rust_nightly_docker_image ci/test-checks.sh"
|
||||
name: "checks"
|
||||
timeout_in_minutes: 20
|
||||
|
@@ -10,9 +10,6 @@ source ci/rust-version.sh nightly
|
||||
export RUST_BACKTRACE=1
|
||||
export RUSTFLAGS="-D warnings"
|
||||
|
||||
# Look for failed mergify.io backports
|
||||
_ git show HEAD --check --oneline
|
||||
|
||||
_ cargo +"$rust_stable" fmt --all -- --check
|
||||
|
||||
# Clippy gets stuck for unknown reasons if sdk-c is included in the build, so check it separately.
|
||||
@@ -23,10 +20,8 @@ _ cargo +"$rust_stable" clippy --manifest-path sdk-c/Cargo.toml -- --deny=warnin
|
||||
|
||||
_ cargo +"$rust_stable" audit --version
|
||||
_ cargo +"$rust_stable" audit --ignore RUSTSEC-2020-0002 --ignore RUSTSEC-2020-0008
|
||||
_ ci/nits.sh
|
||||
_ ci/order-crates-for-publishing.py
|
||||
_ docs/build.sh
|
||||
_ ci/check-ssh-keys.sh
|
||||
|
||||
{
|
||||
cd programs/bpf
|
||||
|
27
ci/test-sanity.sh
Executable file
27
ci/test-sanity.sh
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
source ci/_
|
||||
|
||||
(
|
||||
echo --- git diff --check
|
||||
set -x
|
||||
# Look for failed mergify.io backports by searching leftover conflict markers
|
||||
# Also check for any trailing whitespaces!
|
||||
if [[ -n $BUILDKITE_PULL_REQUEST_BASE_BRANCH ]]; then
|
||||
base_branch=$BUILDKITE_PULL_REQUEST_BASE_BRANCH
|
||||
else
|
||||
base_branch=$BUILDKITE_BRANCH
|
||||
fi
|
||||
git fetch origin "$base_branch"
|
||||
git diff "$(git merge-base HEAD "origin/$base_branch")..HEAD" --check --oneline
|
||||
)
|
||||
|
||||
echo
|
||||
|
||||
_ ci/nits.sh
|
||||
_ ci/check-ssh-keys.sh
|
||||
|
||||
echo --- ok
|
@@ -23,10 +23,14 @@ if [[ -z $CI_TAG ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ -z $CI_REPO_SLUG ]]; then
|
||||
echo Error: CI_REPO_SLUG not defined
|
||||
exit 1
|
||||
fi
|
||||
# Force CI_REPO_SLUG since sometimes
|
||||
# BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG is not set correctly, causing the
|
||||
# artifact upload to fail
|
||||
CI_REPO_SLUG=solana-labs/solana
|
||||
#if [[ -z $CI_REPO_SLUG ]]; then
|
||||
# echo Error: CI_REPO_SLUG not defined
|
||||
# exit 1
|
||||
#fi
|
||||
|
||||
releaseId=$( \
|
||||
curl -s "https://api.github.com/repos/$CI_REPO_SLUG/releases/tags/$CI_TAG" \
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-clap-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana utilities for the clap"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -11,8 +11,8 @@ edition = "2018"
|
||||
[dependencies]
|
||||
clap = "2.33.0"
|
||||
rpassword = "4.0"
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
thiserror = "1.0.11"
|
||||
tiny-bip39 = "0.7.0"
|
||||
url = "2.1.0"
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-cli-config"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-cli"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -27,28 +27,28 @@ reqwest = { version = "0.10.4", default-features = false, features = ["blocking"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
serde_json = "1.0.48"
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-cli-config = { path = "../cli-config", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.17" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "1.1.17" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.18" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-cli-config = { path = "../cli-config", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.18" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "1.1.18" }
|
||||
thiserror = "1.0.13"
|
||||
url = "2.1.1"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.18" }
|
||||
tempfile = "3.1.0"
|
||||
|
||||
[[bin]]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-client"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Client"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -19,10 +19,10 @@ reqwest = { version = "0.10.4", default-features = false, features = ["blocking"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
serde_json = "1.0.48"
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
tungstenite = "0.10.1"
|
||||
url = "2.1.1"
|
||||
@@ -31,7 +31,7 @@ url = "2.1.1"
|
||||
assert_matches = "1.3.0"
|
||||
jsonrpc-core = "14.0.5"
|
||||
jsonrpc-http-server = "14.0.6"
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "solana-core"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
documentation = "https://docs.rs/solana"
|
||||
homepage = "https://solana.com/"
|
||||
readme = "../README.md"
|
||||
@@ -42,37 +42,37 @@ regex = "1.3.6"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
serde_json = "1.0.48"
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.17" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.17" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.17" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-measure = { path = "../measure", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-chacha-cuda = { path = "../chacha-cuda", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.17" }
|
||||
solana-version = { path = "../version", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "1.1.17" }
|
||||
solana-sys-tuner = { path = "../sys-tuner", version = "1.1.17" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.18" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.18" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.18" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.18" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-measure = { path = "../measure", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-chacha-cuda = { path = "../chacha-cuda", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
solana-streamer = { path = "../streamer", version = "1.1.18" }
|
||||
solana-version = { path = "../version", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "1.1.18" }
|
||||
solana-sys-tuner = { path = "../sys-tuner", version = "1.1.18" }
|
||||
tempfile = "3.1.0"
|
||||
thiserror = "1.0"
|
||||
tokio = "0.1"
|
||||
tokio-codec = "0.1"
|
||||
tokio-fs = "0.1"
|
||||
tokio-io = "0.1"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.17" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.18" }
|
||||
trees = "0.2.1"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@@ -51,7 +51,7 @@ type PacketsAndOffsets = (Packets, Vec<usize>);
|
||||
pub type UnprocessedPackets = Vec<PacketsAndOffsets>;
|
||||
|
||||
/// Transaction forwarding
|
||||
pub const FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET: u64 = 4;
|
||||
pub const FORWARD_TRANSACTIONS_TO_LEADER_AT_SLOT_OFFSET: u64 = 1;
|
||||
|
||||
// Fixed thread size seems to be fastest on GCP setup
|
||||
pub const NUM_THREADS: u32 = 4;
|
||||
|
@@ -254,6 +254,7 @@ pub struct ClusterInfo {
|
||||
my_contact_info: RwLock<ContactInfo>,
|
||||
id: Pubkey,
|
||||
stats: GossipStats,
|
||||
socket: UdpSocket,
|
||||
}
|
||||
|
||||
impl Default for ClusterInfo {
|
||||
@@ -409,6 +410,7 @@ impl ClusterInfo {
|
||||
my_contact_info: RwLock::new(contact_info),
|
||||
id,
|
||||
stats: GossipStats::default(),
|
||||
socket: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||
};
|
||||
{
|
||||
let mut gossip = me.gossip.write().unwrap();
|
||||
@@ -434,6 +436,7 @@ impl ClusterInfo {
|
||||
my_contact_info: RwLock::new(my_contact_info),
|
||||
id: *new_id,
|
||||
stats: GossipStats::default(),
|
||||
socket: UdpSocket::bind("0.0.0.0:0").unwrap(),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -747,6 +750,13 @@ impl ClusterInfo {
|
||||
.process_push_message(&self.id(), vec![entry], now);
|
||||
}
|
||||
|
||||
pub fn send_vote(&self, vote: &Transaction) -> Result<()> {
|
||||
let tpu = self.my_contact_info().tpu;
|
||||
let buf = serialize(vote)?;
|
||||
self.socket.send_to(&buf, &tpu)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Get votes in the crds
|
||||
/// * since - The timestamp of when the vote inserted must be greater than
|
||||
/// since. This allows the bank to query for new votes only.
|
||||
@@ -1728,8 +1738,8 @@ impl ClusterInfo {
|
||||
|
||||
let now = timestamp();
|
||||
const INTERVAL_MS: u64 = 100;
|
||||
// allow 50kBps per staked validator, epoch slots + votes ~= 1.5kB/slot ~= 4kB/s
|
||||
const BYTES_PER_INTERVAL: usize = 5000;
|
||||
// allow 30kBps per staked validator, epoch slots + votes ~= 1.5kB/slot ~= 4kB/s
|
||||
const BYTES_PER_INTERVAL: usize = 3000;
|
||||
const MAX_BUDGET_MULTIPLE: usize = 5; // allow budget build-up to 5x the interval default
|
||||
|
||||
if now - w_outbound_budget.last_timestamp_ms > INTERVAL_MS {
|
||||
@@ -2255,7 +2265,8 @@ impl ClusterInfo {
|
||||
.name("solana-listen".to_string())
|
||||
.spawn(move || {
|
||||
let thread_pool = rayon::ThreadPoolBuilder::new()
|
||||
.num_threads(get_thread_count())
|
||||
.num_threads(get_thread_count() / 2)
|
||||
.thread_name(|ix| format!("gos_work_{}", ix))
|
||||
.build()
|
||||
.unwrap();
|
||||
let mut last_print = Instant::now();
|
||||
|
@@ -36,6 +36,7 @@ use std::collections::HashMap;
|
||||
pub struct Crds {
|
||||
/// Stores the map of labels and values
|
||||
pub table: IndexMap<CrdsValueLabel, VersionedCrdsValue>,
|
||||
pub num_inserts: usize,
|
||||
}
|
||||
|
||||
#[derive(PartialEq, Debug)]
|
||||
@@ -84,6 +85,7 @@ impl Default for Crds {
|
||||
fn default() -> Self {
|
||||
Crds {
|
||||
table: IndexMap::new(),
|
||||
num_inserts: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -125,6 +127,7 @@ impl Crds {
|
||||
.unwrap_or(true);
|
||||
if do_insert {
|
||||
let old = self.table.insert(label, new_value);
|
||||
self.num_inserts += 1;
|
||||
Ok(old)
|
||||
} else {
|
||||
trace!("INSERT FAILED data: {} new.wallclock: {}", label, wallclock,);
|
||||
|
@@ -76,17 +76,10 @@ impl CrdsGossip {
|
||||
stakes: &HashMap<Pubkey, u64>,
|
||||
) -> HashMap<Pubkey, HashSet<Pubkey>> {
|
||||
let id = &self.id;
|
||||
let crds = &self.crds;
|
||||
let push = &mut self.push;
|
||||
let versioned = labels
|
||||
.into_iter()
|
||||
.filter_map(|label| crds.lookup_versioned(&label));
|
||||
|
||||
let mut prune_map: HashMap<Pubkey, HashSet<_>> = HashMap::new();
|
||||
for val in versioned {
|
||||
let origin = val.value.pubkey();
|
||||
let hash = val.value_hash;
|
||||
let peers = push.prune_received_cache(id, &origin, hash, stakes);
|
||||
for origin in labels.iter().map(|k| k.pubkey()) {
|
||||
let peers = push.prune_received_cache(id, &origin, stakes);
|
||||
for from in peers {
|
||||
prune_map.entry(from).or_default().insert(origin);
|
||||
}
|
||||
@@ -113,7 +106,7 @@ impl CrdsGossip {
|
||||
return Err(CrdsGossipError::PruneMessageTimeout);
|
||||
}
|
||||
if self.id == *destination {
|
||||
self.push.process_prune_msg(peer, origin);
|
||||
self.push.process_prune_msg(&self.id, peer, origin);
|
||||
Ok(())
|
||||
} else {
|
||||
Err(CrdsGossipError::BadPruneDestination)
|
||||
@@ -190,14 +183,15 @@ impl CrdsGossip {
|
||||
now: u64,
|
||||
process_pull_stats: &mut ProcessPullStats,
|
||||
) {
|
||||
self.pull.process_pull_responses(
|
||||
let success = self.pull.process_pull_responses(
|
||||
&mut self.crds,
|
||||
from,
|
||||
responses,
|
||||
responses_expired_timeout,
|
||||
now,
|
||||
process_pull_stats,
|
||||
)
|
||||
);
|
||||
self.push.push_pull_responses(success, now);
|
||||
}
|
||||
|
||||
pub fn make_timeouts_test(&self) -> HashMap<Pubkey, u64> {
|
||||
|
@@ -2,7 +2,6 @@
|
||||
pub enum CrdsGossipError {
|
||||
NoPeers,
|
||||
PushMessageTimeout,
|
||||
PushMessageAlreadyReceived,
|
||||
PushMessageOldVersion,
|
||||
BadPruneDestination,
|
||||
PruneMessageTimeout,
|
||||
|
@@ -134,6 +134,7 @@ pub struct CrdsGossipPull {
|
||||
purged_values: VecDeque<(Hash, u64)>,
|
||||
pub crds_timeout: u64,
|
||||
pub msg_timeout: u64,
|
||||
pub num_pulls: usize,
|
||||
}
|
||||
|
||||
impl Default for CrdsGossipPull {
|
||||
@@ -143,6 +144,7 @@ impl Default for CrdsGossipPull {
|
||||
pull_request_time: HashMap::new(),
|
||||
crds_timeout: CRDS_GOSSIP_PULL_CRDS_TIMEOUT_MS,
|
||||
msg_timeout: CRDS_GOSSIP_PULL_MSG_TIMEOUT_MS,
|
||||
num_pulls: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -313,18 +315,24 @@ impl CrdsGossipPull {
|
||||
responses_expired_timeout: Vec<VersionedCrdsValue>,
|
||||
now: u64,
|
||||
stats: &mut ProcessPullStats,
|
||||
) {
|
||||
) -> Vec<(CrdsValueLabel, Hash, u64)> {
|
||||
let mut success = vec![];
|
||||
let mut owners = HashSet::new();
|
||||
for r in responses_expired_timeout {
|
||||
stats.failed_insert += crds.insert_versioned(r).is_err() as usize;
|
||||
}
|
||||
for r in responses {
|
||||
let owner = r.value.label().pubkey();
|
||||
let label = r.value.label();
|
||||
let wc = r.value.wallclock();
|
||||
let hash = r.value_hash;
|
||||
let old = crds.insert_versioned(r);
|
||||
if old.is_err() {
|
||||
stats.failed_insert += 1;
|
||||
} else {
|
||||
stats.success += 1;
|
||||
self.num_pulls += 1;
|
||||
success.push((label, hash, wc));
|
||||
}
|
||||
old.ok().map(|opt| {
|
||||
owners.insert(owner);
|
||||
@@ -338,6 +346,7 @@ impl CrdsGossipPull {
|
||||
for owner in owners {
|
||||
crds.update_record_timestamp(&owner, now);
|
||||
}
|
||||
success
|
||||
}
|
||||
// build a set of filters of the current crds table
|
||||
// num_filters - used to increase the likelyhood of a value in crds being added to some filter
|
||||
|
@@ -35,6 +35,7 @@ pub const CRDS_GOSSIP_PUSH_FANOUT: usize = 6;
|
||||
pub const CRDS_GOSSIP_PUSH_MSG_TIMEOUT_MS: u64 = 30000;
|
||||
pub const CRDS_GOSSIP_PRUNE_MSG_TIMEOUT_MS: u64 = 500;
|
||||
pub const CRDS_GOSSIP_PRUNE_STAKE_THRESHOLD_PCT: f64 = 0.15;
|
||||
pub const CRDS_GOSSIP_PRUNE_MIN_INGRESS_NODES: usize = 2;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct CrdsGossipPush {
|
||||
@@ -44,12 +45,18 @@ pub struct CrdsGossipPush {
|
||||
active_set: IndexMap<Pubkey, Bloom<Pubkey>>,
|
||||
/// push message queue
|
||||
push_messages: HashMap<CrdsValueLabel, Hash>,
|
||||
/// cache that tracks which validators a message was received from
|
||||
received_cache: HashMap<Hash, (u64, HashSet<Pubkey>)>,
|
||||
/// Cache that tracks which validators a message was received from
|
||||
/// bool indicates it has been pruned.
|
||||
/// This cache represents a lagging view of which validators
|
||||
/// currently have this node in their `active_set`
|
||||
received_cache: HashMap<Pubkey, HashMap<Pubkey, (bool, u64)>>,
|
||||
pub num_active: usize,
|
||||
pub push_fanout: usize,
|
||||
pub msg_timeout: u64,
|
||||
pub prune_timeout: u64,
|
||||
pub num_total: usize,
|
||||
pub num_old: usize,
|
||||
pub num_pushes: usize,
|
||||
}
|
||||
|
||||
impl Default for CrdsGossipPush {
|
||||
@@ -64,6 +71,9 @@ impl Default for CrdsGossipPush {
|
||||
push_fanout: CRDS_GOSSIP_PUSH_FANOUT,
|
||||
msg_timeout: CRDS_GOSSIP_PUSH_MSG_TIMEOUT_MS,
|
||||
prune_timeout: CRDS_GOSSIP_PRUNE_MSG_TIMEOUT_MS,
|
||||
num_total: 0,
|
||||
num_old: 0,
|
||||
num_pushes: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -81,18 +91,21 @@ impl CrdsGossipPush {
|
||||
&mut self,
|
||||
self_pubkey: &Pubkey,
|
||||
origin: &Pubkey,
|
||||
hash: Hash,
|
||||
stakes: &HashMap<Pubkey, u64>,
|
||||
) -> Vec<Pubkey> {
|
||||
let origin_stake = stakes.get(origin).unwrap_or(&0);
|
||||
let self_stake = stakes.get(self_pubkey).unwrap_or(&0);
|
||||
let cache = self.received_cache.get(&hash);
|
||||
let cache = self.received_cache.get(origin);
|
||||
if cache.is_none() {
|
||||
return Vec::new();
|
||||
}
|
||||
let peers = cache.unwrap();
|
||||
|
||||
let peers = &cache.unwrap().1;
|
||||
let peer_stake_total: u64 = peers.iter().map(|p| stakes.get(p).unwrap_or(&0)).sum();
|
||||
let peer_stake_total: u64 = peers
|
||||
.iter()
|
||||
.filter(|v| !(v.1).0)
|
||||
.map(|v| stakes.get(v.0).unwrap_or(&0))
|
||||
.sum();
|
||||
let prune_stake_threshold = Self::prune_stake_threshold(*self_stake, *origin_stake);
|
||||
if peer_stake_total < prune_stake_threshold {
|
||||
return Vec::new();
|
||||
@@ -100,7 +113,8 @@ impl CrdsGossipPush {
|
||||
|
||||
let staked_peers: Vec<(Pubkey, u64)> = peers
|
||||
.iter()
|
||||
.filter_map(|p| stakes.get(p).map(|s| (*p, *s)))
|
||||
.filter(|v| !(v.1).0)
|
||||
.filter_map(|p| stakes.get(p.0).map(|s| (*p.0, *s)))
|
||||
.filter(|(_, s)| *s > 0)
|
||||
.collect();
|
||||
|
||||
@@ -117,16 +131,27 @@ impl CrdsGossipPush {
|
||||
let (next_peer, next_stake) = staked_peers[next];
|
||||
keep.insert(next_peer);
|
||||
peer_stake_sum += next_stake;
|
||||
if peer_stake_sum >= prune_stake_threshold {
|
||||
if peer_stake_sum >= prune_stake_threshold
|
||||
&& keep.len() >= CRDS_GOSSIP_PRUNE_MIN_INGRESS_NODES
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
peers
|
||||
.iter()
|
||||
let pruned_peers: Vec<Pubkey> = peers
|
||||
.keys()
|
||||
.filter(|p| !keep.contains(p))
|
||||
.cloned()
|
||||
.collect()
|
||||
.collect();
|
||||
pruned_peers.iter().for_each(|p| {
|
||||
self.received_cache
|
||||
.get_mut(origin)
|
||||
.unwrap()
|
||||
.get_mut(p)
|
||||
.unwrap()
|
||||
.0 = true;
|
||||
});
|
||||
pruned_peers
|
||||
}
|
||||
|
||||
/// process a push message to the network
|
||||
@@ -137,6 +162,7 @@ impl CrdsGossipPush {
|
||||
value: CrdsValue,
|
||||
now: u64,
|
||||
) -> Result<Option<VersionedCrdsValue>, CrdsGossipError> {
|
||||
self.num_total += 1;
|
||||
if now
|
||||
> value
|
||||
.wallclock()
|
||||
@@ -149,21 +175,32 @@ impl CrdsGossipPush {
|
||||
return Err(CrdsGossipError::PushMessageTimeout);
|
||||
}
|
||||
let label = value.label();
|
||||
let origin = label.pubkey();
|
||||
let new_value = crds.new_versioned(now, value);
|
||||
let value_hash = new_value.value_hash;
|
||||
if let Some((_, ref mut received_set)) = self.received_cache.get_mut(&value_hash) {
|
||||
received_set.insert(from.clone());
|
||||
return Err(CrdsGossipError::PushMessageAlreadyReceived);
|
||||
}
|
||||
let received_set = self
|
||||
.received_cache
|
||||
.entry(origin)
|
||||
.or_insert_with(HashMap::new);
|
||||
received_set.entry(*from).or_insert((false, 0)).1 = now;
|
||||
|
||||
let old = crds.insert_versioned(new_value);
|
||||
if old.is_err() {
|
||||
self.num_old += 1;
|
||||
return Err(CrdsGossipError::PushMessageOldVersion);
|
||||
}
|
||||
let mut received_set = HashSet::new();
|
||||
received_set.insert(from.clone());
|
||||
self.push_messages.insert(label, value_hash);
|
||||
self.received_cache.insert(value_hash, (now, received_set));
|
||||
Ok(old.ok().and_then(|opt| opt))
|
||||
Ok(old.unwrap())
|
||||
}
|
||||
|
||||
/// push pull responses
|
||||
pub fn push_pull_responses(&mut self, values: Vec<(CrdsValueLabel, Hash, u64)>, now: u64) {
|
||||
for (label, value_hash, wc) in values {
|
||||
if now > wc.checked_add(self.msg_timeout).unwrap_or_else(|| 0) {
|
||||
continue;
|
||||
}
|
||||
self.push_messages.insert(label, value_hash);
|
||||
}
|
||||
}
|
||||
|
||||
/// New push message to broadcast to peers.
|
||||
@@ -172,18 +209,10 @@ impl CrdsGossipPush {
|
||||
/// The list of push messages is created such that all the randomly selected peers have not
|
||||
/// pruned the source addresses.
|
||||
pub fn new_push_messages(&mut self, crds: &Crds, now: u64) -> HashMap<Pubkey, Vec<CrdsValue>> {
|
||||
let max = self.active_set.len();
|
||||
let mut nodes: Vec<_> = (0..max).collect();
|
||||
nodes.shuffle(&mut rand::thread_rng());
|
||||
let peers: Vec<Pubkey> = nodes
|
||||
.into_iter()
|
||||
.filter_map(|n| self.active_set.get_index(n))
|
||||
.take(self.push_fanout)
|
||||
.map(|n| *n.0)
|
||||
.collect();
|
||||
let mut total_bytes: usize = 0;
|
||||
let mut values = vec![];
|
||||
let mut push_messages: HashMap<Pubkey, Vec<CrdsValue>> = HashMap::new();
|
||||
trace!("new_push_messages {}", self.push_messages.len());
|
||||
for (label, hash) in &self.push_messages {
|
||||
let res = crds.lookup_versioned(label);
|
||||
if res.is_none() {
|
||||
@@ -203,21 +232,37 @@ impl CrdsGossipPush {
|
||||
}
|
||||
values.push(value.clone());
|
||||
}
|
||||
trace!(
|
||||
"new_push_messages {} {}",
|
||||
values.len(),
|
||||
self.active_set.len()
|
||||
);
|
||||
for v in values {
|
||||
for p in peers.iter() {
|
||||
let filter = self.active_set.get_mut(p);
|
||||
if filter.is_some() && !filter.unwrap().contains(&v.label().pubkey()) {
|
||||
push_messages.entry(*p).or_default().push(v.clone());
|
||||
//use a consistent index for the same origin so
|
||||
//the active set learns the MST for that origin
|
||||
let start = v.label().pubkey().as_ref()[0] as usize;
|
||||
let max = self.push_fanout.min(self.active_set.len());
|
||||
for i in start..(start + max) {
|
||||
let ix = i % self.active_set.len();
|
||||
if let Some((p, filter)) = self.active_set.get_index(ix) {
|
||||
if !filter.contains(&v.label().pubkey()) {
|
||||
trace!("new_push_messages insert {} {:?}", *p, v);
|
||||
push_messages.entry(*p).or_default().push(v.clone());
|
||||
self.num_pushes += 1;
|
||||
}
|
||||
}
|
||||
self.push_messages.remove(&v.label());
|
||||
}
|
||||
self.push_messages.remove(&v.label());
|
||||
}
|
||||
push_messages
|
||||
}
|
||||
|
||||
/// add the `from` to the peer's filter of nodes
|
||||
pub fn process_prune_msg(&mut self, peer: &Pubkey, origins: &[Pubkey]) {
|
||||
pub fn process_prune_msg(&mut self, self_pubkey: &Pubkey, peer: &Pubkey, origins: &[Pubkey]) {
|
||||
for origin in origins {
|
||||
if origin == self_pubkey {
|
||||
continue;
|
||||
}
|
||||
if let Some(p) = self.active_set.get_mut(peer) {
|
||||
p.add(origin)
|
||||
}
|
||||
@@ -339,15 +384,11 @@ impl CrdsGossipPush {
|
||||
|
||||
/// purge received push message cache
|
||||
pub fn purge_old_received_cache(&mut self, min_time: u64) {
|
||||
let old_msgs: Vec<Hash> = self
|
||||
.received_cache
|
||||
.iter()
|
||||
.filter_map(|(k, (rcvd_time, _))| if *rcvd_time < min_time { Some(k) } else { None })
|
||||
.cloned()
|
||||
.collect();
|
||||
for k in old_msgs {
|
||||
self.received_cache.remove(&k);
|
||||
}
|
||||
self.received_cache
|
||||
.iter_mut()
|
||||
.for_each(|v| v.1.retain(|_, v| v.1 > min_time));
|
||||
|
||||
self.received_cache.retain(|_, v| !v.is_empty());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -371,7 +412,6 @@ mod test {
|
||||
let value = CrdsValue::new_unsigned(CrdsData::ContactInfo(ContactInfo::new_localhost(
|
||||
&origin, 0,
|
||||
)));
|
||||
let label = value.label();
|
||||
let low_staked_peers = (0..10).map(|_| Pubkey::new_rand());
|
||||
let mut low_staked_set = HashSet::new();
|
||||
low_staked_peers.for_each(|p| {
|
||||
@@ -380,11 +420,7 @@ mod test {
|
||||
stakes.insert(p, 1);
|
||||
});
|
||||
|
||||
let versioned = crds
|
||||
.lookup_versioned(&label)
|
||||
.expect("versioned value should exist");
|
||||
let hash = versioned.value_hash;
|
||||
let pruned = push.prune_received_cache(&self_id, &origin, hash, &stakes);
|
||||
let pruned = push.prune_received_cache(&self_id, &origin, &stakes);
|
||||
assert!(
|
||||
pruned.is_empty(),
|
||||
"should not prune if min threshold has not been reached"
|
||||
@@ -395,7 +431,7 @@ mod test {
|
||||
stakes.insert(high_staked_peer, high_stake);
|
||||
let _ = push.process_push_message(&mut crds, &high_staked_peer, value.clone(), 0);
|
||||
|
||||
let pruned = push.prune_received_cache(&self_id, &origin, hash, &stakes);
|
||||
let pruned = push.prune_received_cache(&self_id, &origin, &stakes);
|
||||
assert!(
|
||||
pruned.len() < low_staked_set.len() + 1,
|
||||
"should not prune all peers"
|
||||
@@ -409,7 +445,7 @@ mod test {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_process_push() {
|
||||
fn test_process_push_one() {
|
||||
let mut crds = Crds::default();
|
||||
let mut push = CrdsGossipPush::default();
|
||||
let value = CrdsValue::new_unsigned(CrdsData::ContactInfo(ContactInfo::new_localhost(
|
||||
@@ -426,8 +462,8 @@ mod test {
|
||||
|
||||
// push it again
|
||||
assert_eq!(
|
||||
push.process_push_message(&mut crds, &Pubkey::default(), value.clone(), 0),
|
||||
Err(CrdsGossipError::PushMessageAlreadyReceived)
|
||||
push.process_push_message(&mut crds, &Pubkey::default(), value, 0),
|
||||
Err(CrdsGossipError::PushMessageOldVersion)
|
||||
);
|
||||
}
|
||||
#[test]
|
||||
@@ -690,6 +726,7 @@ mod test {
|
||||
#[test]
|
||||
fn test_process_prune() {
|
||||
let mut crds = Crds::default();
|
||||
let self_id = Pubkey::new_rand();
|
||||
let mut push = CrdsGossipPush::default();
|
||||
let peer = CrdsValue::new_unsigned(CrdsData::ContactInfo(ContactInfo::new_localhost(
|
||||
&Pubkey::new_rand(),
|
||||
@@ -707,7 +744,11 @@ mod test {
|
||||
push.process_push_message(&mut crds, &Pubkey::default(), new_msg.clone(), 0),
|
||||
Ok(None)
|
||||
);
|
||||
push.process_prune_msg(&peer.label().pubkey(), &[new_msg.label().pubkey()]);
|
||||
push.process_prune_msg(
|
||||
&self_id,
|
||||
&peer.label().pubkey(),
|
||||
&[new_msg.label().pubkey()],
|
||||
);
|
||||
assert_eq!(push.new_push_messages(&crds, 0), expected);
|
||||
}
|
||||
#[test]
|
||||
@@ -749,9 +790,9 @@ mod test {
|
||||
assert_eq!(crds.lookup(&label), Some(&value));
|
||||
|
||||
// push it again
|
||||
assert_eq!(
|
||||
assert_matches!(
|
||||
push.process_push_message(&mut crds, &Pubkey::default(), value.clone(), 0),
|
||||
Err(CrdsGossipError::PushMessageAlreadyReceived)
|
||||
Err(CrdsGossipError::PushMessageOldVersion)
|
||||
);
|
||||
|
||||
// purge the old pushed
|
||||
|
@@ -56,8 +56,8 @@ solana_sdk::pubkeys!(
|
||||
[
|
||||
"9huDUZfxoJ7wGMTffUE7vh1xePqef7gyrLJu9NApncqA",
|
||||
"GK2zqSsXLA2rwVZk347RYhh6jJpRsCA69FjLW93ZGi3B",
|
||||
"CWeRmXme7LmbaUWTZWFLt6FMnpzLCHaQLuR2TdgFn4Lq",
|
||||
"HCV5dGFJXRrJ3jhDYA4DCeb9TEDTwGGYXtT3wHksu2Zr",
|
||||
"25odAafVXnd63L6Hq5Cx6xGmhKqkhE2y6UrLVuqUfWZj",
|
||||
"14FUT96s9swbmH7ZjpDvfEDywnAYy9zaNhv4xvezySGu",
|
||||
"HbZ5FfmKWNHC7uwk6TF1hVi6TCs7dtYfdjEcuPGgzFAg",
|
||||
"C7C8odR8oashR5Feyrq2tJKaXL18id1dSj2zbkDGL2C2",
|
||||
@@ -84,6 +84,7 @@ solana_sdk::pubkeys!(
|
||||
[
|
||||
"8CUUMKYNGxdgYio5CLHRHyzMEhhVRMcqefgE6dLqnVRK",
|
||||
"3FFaheyqtyAXZSYxDzsr5CVKvJuvZD1WE1VEsBtDbRqB",
|
||||
"FdGYQdiRky8NZzN9wZtczTBcWLYYRXrJ3LMDhqDPn5rM",
|
||||
]
|
||||
);
|
||||
|
||||
|
@@ -758,7 +758,6 @@ impl ReplayStage {
|
||||
progress.get_fork_stats(bank.slot()).unwrap().total_staked,
|
||||
lockouts_sender,
|
||||
);
|
||||
|
||||
Self::push_vote(
|
||||
cluster_info,
|
||||
bank,
|
||||
@@ -838,6 +837,7 @@ impl ReplayStage {
|
||||
let blockhash = bank.last_blockhash();
|
||||
vote_tx.partial_sign(&[node_keypair.as_ref()], blockhash);
|
||||
vote_tx.partial_sign(&[authorized_voter_keypair.as_ref()], blockhash);
|
||||
let _ = cluster_info.send_vote(&vote_tx);
|
||||
cluster_info.push_vote(tower_index, vote_tx);
|
||||
}
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-crate-features"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Crate Features"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@@ -1074,7 +1074,7 @@ The result field will be a JSON object with the following fields:
|
||||
// Request
|
||||
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1, "method":"getVersion"}' http://localhost:8899
|
||||
// Result
|
||||
{"jsonrpc":"2.0","result":{"solana-core": "1.1.17"},"id":1}
|
||||
{"jsonrpc":"2.0","result":{"solana-core": "1.1.18"},"id":1}
|
||||
```
|
||||
|
||||
### getVoteAccounts
|
||||
|
@@ -6,7 +6,7 @@ Solana takes a very different approach, which it calls _Proof of History_ or _Po
|
||||
|
||||
Solana technically never sends a _block_, but uses the term to describe the sequence of entries that validators vote on to achieve _confirmation_. In that way, Solana's confirmation times can be compared apples to apples to block-based systems. The current implementation sets block time to 800ms.
|
||||
|
||||
What's happening under the hood is that entries are streamed to validators as quickly as a leader node can batch a set of valid transactions into an entry. Validators process those entries long before it is time to vote on their validity. By processing the transactions optimistically, there is effectively no delay between the time the last entry is received and the time when the node can vote. In the event consensus is **not** achieved, a node simply rolls back its state. This optimisic processing technique was introduced in 1981 and called [Optimistic Concurrency Control](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.175.4735). It can be applied to blockchain architecture where a cluster votes on a hash that represents the full ledger up to some _block height_. In Solana, it is implemented trivially using the last entry's PoH hash.
|
||||
What's happening under the hood is that entries are streamed to validators as quickly as a leader node can batch a set of valid transactions into an entry. Validators process those entries long before it is time to vote on their validity. By processing the transactions optimistically, there is effectively no delay between the time the last entry is received and the time when the node can vote. In the event consensus is **not** achieved, a node simply rolls back its state. This optimisic processing technique was introduced in 1981 and called [Optimistic Concurrency Control](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.185.4735). It can be applied to blockchain architecture where a cluster votes on a hash that represents the full ledger up to some _block height_. In Solana, it is implemented trivially using the last entry's PoH hash.
|
||||
|
||||
## Relationship to VDFs
|
||||
|
||||
|
@@ -6,9 +6,9 @@ Solana is an open source project implementing a new, high-performance, permissio
|
||||
|
||||
## Why Solana?
|
||||
|
||||
It is possible for a centralized database to process 710,000 transactions per second on a standard gigabit network if the transactions are, on average, no more than 176 bytes. A centralized database can also replicate itself and maintain high availability without significantly compromising that transaction rate using the distributed system technique known as Optimistic Concurrency Control [\[H.T.Kung, J.T.Robinson (1981)\]](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.175.4735). At Solana, we are demonstrating that these same theoretical limits apply just as well to blockchain on an adversarial network. The key ingredient? Finding a way to share time when nodes cannot trust one-another. Once nodes can trust time, suddenly ~40 years of distributed systems research becomes applicable to blockchain!
|
||||
It is possible for a centralized database to process 710,000 transactions per second on a standard gigabit network if the transactions are, on average, no more than 176 bytes. A centralized database can also replicate itself and maintain high availability without significantly compromising that transaction rate using the distributed system technique known as Optimistic Concurrency Control [\[H.T.Kung, J.T.Robinson (1981)\]](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.185.4735). At Solana, we are demonstrating that these same theoretical limits apply just as well to blockchain on an adversarial network. The key ingredient? Finding a way to share time when nodes cannot trust one-another. Once nodes can trust time, suddenly ~40 years of distributed systems research becomes applicable to blockchain!
|
||||
|
||||
> Perhaps the most striking difference between algorithms obtained by our method and ones based upon timeout is that using timeout produces a traditional distributed algorithm in which the processes operate asynchronously, while our method produces a globally synchronous one in which every process does the same thing at (approximately) the same time. Our method seems to contradict the whole purpose of distributed processing, which is to permit different processes to operate independently and perform different functions. However, if a distributed system is really a single system, then the processes must be synchronized in some way. Conceptually, the easiest way to synchronize processes is to get them all to do the same thing at the same time. Therefore, our method is used to implement a kernel that performs the necessary synchronization--for example, making sure that two different processes do not try to modify a file at the same time. Processes might spend only a small fraction of their time executing the synchronizing kernel; the rest of the time, they can operate independently--e.g., accessing different files. This is an approach we have advocated even when fault-tolerance is not required. The method's basic simplicity makes it easier to understand the precise properties of a system, which is crucial if one is to know just how fault-tolerant the system is. [\[L.Lamport (1984)\]](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.171.1078)
|
||||
> Perhaps the most striking difference between algorithms obtained by our method and ones based upon timeout is that using timeout produces a traditional distributed algorithm in which the processes operate asynchronously, while our method produces a globally synchronous one in which every process does the same thing at (approximately) the same time. Our method seems to contradict the whole purpose of distributed processing, which is to permit different processes to operate independently and perform different functions. However, if a distributed system is really a single system, then the processes must be synchronized in some way. Conceptually, the easiest way to synchronize processes is to get them all to do the same thing at the same time. Therefore, our method is used to implement a kernel that performs the necessary synchronization--for example, making sure that two different processes do not try to modify a file at the same time. Processes might spend only a small fraction of their time executing the synchronizing kernel; the rest of the time, they can operate independently--e.g., accessing different files. This is an approach we have advocated even when fault-tolerance is not required. The method's basic simplicity makes it easier to understand the precise properties of a system, which is crucial if one is to know just how fault-tolerant the system is. [\[L.Lamport (1984)\]](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.181.1078)
|
||||
|
||||
Furthermore, and much to our surprise, it can be implemented using a mechanism that has existed in Bitcoin since day one. The Bitcoin feature is called nLocktime and it can be used to postdate transactions using block height instead of a timestamp. As a Bitcoin client, you would use block height instead of a timestamp if you don't trust the network. Block height turns out to be an instance of what's being called a Verifiable Delay Function in cryptography circles. It's a cryptographically secure way to say time has passed. In Solana, we use a far more granular verifiable delay function, a SHA 256 hash chain, to checkpoint the ledger and coordinate consensus. With it, we implement Optimistic Concurrency Control and are now well en route towards that theoretical limit of 710,000 transactions per second.
|
||||
|
||||
|
@@ -7,6 +7,25 @@ experience for most people who are new or experienced with using crypto wallets.
|
||||
currently the easiest and fastest way to get set up with a new wallet on Solana.
|
||||
The app is free and getting your wallet set up only takes a few minutes.
|
||||
|
||||
### Trust Wallet Security
|
||||
|
||||
Tokens held in Trust Wallet are only as secure as the device on which the app is
|
||||
installed. Anyone who is able to unlock your phone or tablet may be able to
|
||||
use the Trust Wallet app and transfer your tokens. To improve security,
|
||||
you can add a passcode to the Trust Wallet application.
|
||||
To add a Trust Wallet passcode, open the app and go to
|
||||
Settings -> Security -> Passcode.
|
||||
|
||||
If someone gains access to your Trust Wallet application, they can access your
|
||||
recovery seed phrase.
|
||||
Anyone who has access to your seed phrase will be able to recreate
|
||||
your Trust Wallet keys on a different device. From there, they could
|
||||
sign transactions from that device rather than on your own phone or tablet.
|
||||
The seed phrase is displayed when a new wallet is created and it can also be
|
||||
viewed at any later time in the app by following these steps:
|
||||
- Go to Setting -> Wallets
|
||||
- Under the Options menu for a particular wallet tap "Show Recovery Phrase"
|
||||
|
||||
{% page-ref page="trust-wallet.md" %}
|
||||
|
||||
## Ledger Live with Ledger Nano S
|
||||
|
@@ -59,7 +59,7 @@ some interface for signing transactions.
|
||||
A hardware wallet, such as the
|
||||
[Ledger hardware wallet](https://www.ledger.com/), offers a great blend of
|
||||
security and convenience for cryptocurrencies. It effectively automates the
|
||||
process of offline signing while retaining nearly all the convenience of an FS
|
||||
wallet.
|
||||
process of offline signing while retaining nearly all the convenience of a file
|
||||
system wallet.
|
||||
|
||||
{% page-ref page="../hardware-wallet/README.md" %}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-dos"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -13,10 +13,10 @@ clap = "2.33.0"
|
||||
log = "0.4.8"
|
||||
rand = "0.7.0"
|
||||
rayon = "1.3.0"
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-download-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Download Utils"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -14,8 +14,8 @@ console = "0.10.0"
|
||||
indicatif = "0.14.0"
|
||||
log = "0.4.8"
|
||||
reqwest = { version = "0.10.4", default-features = false, features = ["blocking", "rustls-tls", "json"] }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
tar = "0.4.26"
|
||||
|
||||
[lib]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-faucet"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Faucet"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -19,10 +19,10 @@ clap = "2.33"
|
||||
log = "0.4.8"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
tokio = "0.1"
|
||||
tokio-codec = "0.1"
|
||||
|
||||
|
@@ -6,7 +6,7 @@ VERSION=$PERF_LIBS_VERSION-1
|
||||
set -e
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
if [[ ! -f target/perf-libs/.$VERSION ]]; then
|
||||
if [[ $VERSION != "$(cat target/perf-libs/.version 2> /dev/null)" ]]; then
|
||||
if [[ $(uname) != Linux ]]; then
|
||||
echo Note: Performance libraries are only available for Linux
|
||||
exit 0
|
||||
@@ -17,6 +17,7 @@ if [[ ! -f target/perf-libs/.$VERSION ]]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
rm -rf target/perf-libs
|
||||
mkdir -p target/perf-libs
|
||||
(
|
||||
set -x
|
||||
@@ -35,7 +36,7 @@ if [[ ! -f target/perf-libs/.$VERSION ]]; then
|
||||
mkdir -p ~/.cache
|
||||
mv solana-perf.tgz ~/.cache/solana-perf-$PERF_LIBS_VERSION.tgz
|
||||
fi
|
||||
touch .$VERSION
|
||||
echo "$VERSION" > .version
|
||||
)
|
||||
|
||||
# Setup symlinks so the perf-libs/ can be found from all binaries run out of
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-genesis-programs"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana genesis programs"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -10,13 +10,13 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = { version = "0.4.8" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.17" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.17" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "1.1.17" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.18" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.18" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-genesis"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -15,14 +15,14 @@ chrono = "0.4"
|
||||
serde = "1.0.105"
|
||||
serde_json = "1.0.48"
|
||||
serde_yaml = "0.8.11"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
tempfile = "3.1.0"
|
||||
|
||||
[[bin]]
|
||||
|
@@ -3,19 +3,19 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-gossip"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.0"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-net-utils = { path = "../net-utils", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
|
||||
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-install"
|
||||
description = "The solana cluster software installer"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -24,11 +24,11 @@ reqwest = { version = "0.10.4", default-features = false, features = ["blocking"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
serde_yaml = "0.8.11"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
semver = "0.9.0"
|
||||
tar = "0.4.26"
|
||||
tempdir = "0.3.7"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-keygen"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana key generation utility"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -13,10 +13,10 @@ bs58 = "0.3.0"
|
||||
clap = "2.33"
|
||||
dirs = "2.0.2"
|
||||
num_cpus = "1.12.0"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-cli-config = { path = "../cli-config", version = "1.1.17" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-cli-config = { path = "../cli-config", version = "1.1.18" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
tiny-bip39 = "0.7.0"
|
||||
|
||||
[[bin]]
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-ledger-tool"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -15,15 +15,15 @@ histogram = "*"
|
||||
log = { version = "0.4.8" }
|
||||
serde_json = "1.0.48"
|
||||
serde_yaml = "0.8.11"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-cli = { path = "../cli", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-cli = { path = "../cli", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
tempfile = "3.1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-ledger"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana ledger"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -28,19 +28,19 @@ reed-solomon-erasure = { package = "solana-reed-solomon-erasure", version = "4.0
|
||||
regex = "1.3.6"
|
||||
serde = "1.0.105"
|
||||
serde_bytes = "0.11.3"
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.17" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-measure = { path = "../measure", version = "1.1.17" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-perf = { path = "../perf", version = "1.1.17" }
|
||||
solana-transaction-status = { path = "../transaction-status", version = "1.1.18" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-measure = { path = "../measure", version = "1.1.18" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-perf = { path = "../perf", version = "1.1.18" }
|
||||
ed25519-dalek = "1.0.0-pre.3"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
symlink = "0.1.0"
|
||||
tar = "0.4.26"
|
||||
thiserror = "1.0"
|
||||
@@ -57,7 +57,7 @@ features = ["lz4"]
|
||||
[dev-dependencies]
|
||||
assert_matches = "1.3.0"
|
||||
matches = "0.1.6"
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.17" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-local-cluster"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -12,24 +12,24 @@ homepage = "https://solana.com/"
|
||||
itertools = "0.9.0"
|
||||
log = "0.4.8"
|
||||
rand = "0.7.0"
|
||||
solana-archiver-lib = { path = "../archiver-lib", version = "1.1.17" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.17" }
|
||||
solana-core = { path = "../core", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-download-utils = { path = "../download-utils", version = "1.1.17" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.17" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "1.1.17" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.17" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-archiver-lib = { path = "../archiver-lib", version = "1.1.18" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.18" }
|
||||
solana-core = { path = "../core", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-download-utils = { path = "../download-utils", version = "1.1.18" }
|
||||
solana-faucet = { path = "../faucet", version = "1.1.18" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "1.1.18" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "1.1.18" }
|
||||
solana-ledger = { path = "../ledger", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
tempfile = "3.1.0"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.17" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
assert_matches = "1.3.0"
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-log-analyzer"
|
||||
description = "The solana cluster network analysis tool"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -14,8 +14,8 @@ byte-unit = "3.0.3"
|
||||
clap = "2.33.0"
|
||||
serde = "1.0.105"
|
||||
serde_json = "1.0.48"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
|
||||
[[bin]]
|
||||
name = "solana-log-analyzer"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-logger"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Logger"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "solana-measure"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
documentation = "https://docs.rs/solana"
|
||||
homepage = "https://solana.com/"
|
||||
readme = "../README.md"
|
||||
@@ -12,8 +12,8 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
|
||||
[target."cfg(unix)".dependencies]
|
||||
jemallocator = "0.3.2"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-merkle-tree"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Merkle Tree"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -9,7 +9,7 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
fast-math = "0.1"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-metrics"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Metrics"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -14,7 +14,7 @@ gethostname = "0.2.1"
|
||||
lazy_static = "1.4.0"
|
||||
log = "0.4.8"
|
||||
reqwest = { version = "0.10.4", default-features = false, features = ["blocking", "rustls-tls", "json"] }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
rand = "0.7.0"
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-net-shaper"
|
||||
description = "The solana cluster network shaping tool"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -13,8 +13,8 @@ publish = false
|
||||
clap = "2.33.0"
|
||||
serde = "1.0.105"
|
||||
serde_json = "1.0.48"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
rand = "0.7.0"
|
||||
|
||||
[[bin]]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-net-utils"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Network Utilities"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -18,8 +18,8 @@ rand = "0.7.0"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
socket2 = "0.3.11"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
tokio = "0.1"
|
||||
tokio-codec = "0.1"
|
||||
|
||||
|
@@ -7,10 +7,12 @@ use tokio_codec::{BytesCodec, Decoder};
|
||||
|
||||
pub type IpEchoServer = Runtime;
|
||||
|
||||
pub const MAX_PORT_COUNT_PER_MESSAGE: usize = 4;
|
||||
|
||||
#[derive(Serialize, Deserialize, Default)]
|
||||
pub(crate) struct IpEchoServerMessage {
|
||||
tcp_ports: [u16; 4], // Fixed size list of ports to avoid vec serde
|
||||
udp_ports: [u16; 4], // Fixed size list of ports to avoid vec serde
|
||||
tcp_ports: [u16; MAX_PORT_COUNT_PER_MESSAGE], // Fixed size list of ports to avoid vec serde
|
||||
udp_ports: [u16; MAX_PORT_COUNT_PER_MESSAGE], // Fixed size list of ports to avoid vec serde
|
||||
}
|
||||
|
||||
impl IpEchoServerMessage {
|
||||
|
@@ -2,6 +2,7 @@
|
||||
use log::*;
|
||||
use rand::{thread_rng, Rng};
|
||||
use socket2::{Domain, SockAddr, Socket, Type};
|
||||
use std::collections::{BTreeMap, BTreeSet};
|
||||
use std::io::{self, Read, Write};
|
||||
use std::net::{IpAddr, SocketAddr, TcpListener, TcpStream, ToSocketAddrs, UdpSocket};
|
||||
use std::sync::mpsc::channel;
|
||||
@@ -9,7 +10,7 @@ use std::time::Duration;
|
||||
|
||||
mod ip_echo_server;
|
||||
use ip_echo_server::IpEchoServerMessage;
|
||||
pub use ip_echo_server::{ip_echo_server, IpEchoServer};
|
||||
pub use ip_echo_server::{ip_echo_server, IpEchoServer, MAX_PORT_COUNT_PER_MESSAGE};
|
||||
|
||||
/// A data type representing a public Udp socket
|
||||
pub struct UdpSocketPair {
|
||||
@@ -92,34 +93,36 @@ pub fn get_public_ip_addr(ip_echo_server_addr: &SocketAddr) -> Result<IpAddr, St
|
||||
|
||||
// Checks if any of the provided TCP/UDP ports are not reachable by the machine at
|
||||
// `ip_echo_server_addr`
|
||||
pub fn verify_reachable_ports(
|
||||
const DEFAULT_TIMEOUT_SECS: u64 = 5;
|
||||
const DEFAULT_RETRY_COUNT: usize = 5;
|
||||
|
||||
fn do_verify_reachable_ports(
|
||||
ip_echo_server_addr: &SocketAddr,
|
||||
tcp_listeners: Vec<(u16, TcpListener)>,
|
||||
udp_sockets: &[&UdpSocket],
|
||||
timeout: u64,
|
||||
udp_retry_count: usize,
|
||||
) -> bool {
|
||||
let udp_ports: Vec<_> = udp_sockets
|
||||
.iter()
|
||||
.map(|udp_socket| udp_socket.local_addr().unwrap().port())
|
||||
.collect();
|
||||
|
||||
info!(
|
||||
"Checking that tcp ports {:?} and udp ports {:?} are reachable from {:?}",
|
||||
tcp_listeners, udp_ports, ip_echo_server_addr
|
||||
"Checking that tcp ports {:?} from {:?}",
|
||||
tcp_listeners, ip_echo_server_addr
|
||||
);
|
||||
|
||||
let tcp_ports: Vec<_> = tcp_listeners.iter().map(|(port, _)| *port).collect();
|
||||
let _ = ip_echo_server_request(
|
||||
ip_echo_server_addr,
|
||||
IpEchoServerMessage::new(&tcp_ports, &udp_ports),
|
||||
IpEchoServerMessage::new(&tcp_ports, &[]),
|
||||
)
|
||||
.map_err(|err| warn!("ip_echo_server request failed: {}", err));
|
||||
|
||||
let mut ok = true;
|
||||
let timeout = Duration::from_secs(timeout);
|
||||
|
||||
// Wait for a connection to open on each TCP port
|
||||
for (port, tcp_listener) in tcp_listeners {
|
||||
let (sender, receiver) = channel();
|
||||
std::thread::spawn(move || {
|
||||
let listening_addr = tcp_listener.local_addr().unwrap();
|
||||
let thread_handle = std::thread::spawn(move || {
|
||||
debug!("Waiting for incoming connection on tcp/{}", port);
|
||||
match tcp_listener.incoming().next() {
|
||||
Some(_) => sender
|
||||
@@ -128,7 +131,7 @@ pub fn verify_reachable_ports(
|
||||
None => warn!("tcp incoming failed"),
|
||||
}
|
||||
});
|
||||
match receiver.recv_timeout(Duration::from_secs(5)) {
|
||||
match receiver.recv_timeout(timeout) {
|
||||
Ok(_) => {
|
||||
info!("tcp/{} is reachable", port);
|
||||
}
|
||||
@@ -137,9 +140,16 @@ pub fn verify_reachable_ports(
|
||||
"Received no response at tcp/{}, check your port configuration: {}",
|
||||
port, err
|
||||
);
|
||||
// Ugh, std rustc doesn't provide acceptng with timeout or restoring original
|
||||
// nonblocking-status of sockets because of lack of getter, only the setter...
|
||||
// So, to close the thread cleanly, just connect from here.
|
||||
// ref: https://github.com/rust-lang/rust/issues/31615
|
||||
TcpStream::connect_timeout(&listening_addr, timeout).unwrap();
|
||||
ok = false;
|
||||
}
|
||||
}
|
||||
// ensure to reap the thread
|
||||
thread_handle.join().unwrap();
|
||||
}
|
||||
|
||||
if !ok {
|
||||
@@ -147,51 +157,110 @@ pub fn verify_reachable_ports(
|
||||
return ok;
|
||||
}
|
||||
|
||||
for _udp_retries in 0..5 {
|
||||
// Wait for a datagram to arrive at each UDP port
|
||||
for udp_socket in udp_sockets {
|
||||
let port = udp_socket.local_addr().unwrap().port();
|
||||
let udp_socket = udp_socket.try_clone().expect("Unable to clone udp socket");
|
||||
let (sender, receiver) = channel();
|
||||
std::thread::spawn(move || {
|
||||
let mut buf = [0; 1];
|
||||
debug!("Waiting for incoming datagram on udp/{}", port);
|
||||
match udp_socket.recv(&mut buf) {
|
||||
Ok(_) => sender
|
||||
.send(())
|
||||
.unwrap_or_else(|err| warn!("send failure: {}", err)),
|
||||
Err(err) => warn!("udp recv failure: {}", err),
|
||||
}
|
||||
});
|
||||
match receiver.recv_timeout(Duration::from_secs(5)) {
|
||||
Ok(_) => {
|
||||
info!("udp/{} is reachable", port);
|
||||
}
|
||||
Err(err) => {
|
||||
error!(
|
||||
"Received no response at udp/{}, check your port configuration: {}",
|
||||
port, err
|
||||
);
|
||||
ok = false;
|
||||
}
|
||||
let mut udp_ports: BTreeMap<_, _> = BTreeMap::new();
|
||||
udp_sockets.iter().for_each(|udp_socket| {
|
||||
let port = udp_socket.local_addr().unwrap().port();
|
||||
udp_ports
|
||||
.entry(port)
|
||||
.or_insert_with(Vec::new)
|
||||
.push(udp_socket);
|
||||
});
|
||||
let udp_ports: Vec<_> = udp_ports.into_iter().collect();
|
||||
|
||||
info!(
|
||||
"Checking that udp ports {:?} are reachable from {:?}",
|
||||
udp_ports.iter().map(|(port, _)| port).collect::<Vec<_>>(),
|
||||
ip_echo_server_addr
|
||||
);
|
||||
|
||||
'outer: for checked_ports_and_sockets in udp_ports.chunks(MAX_PORT_COUNT_PER_MESSAGE) {
|
||||
ok = false;
|
||||
|
||||
for udp_remaining_retry in (0_usize..udp_retry_count).rev() {
|
||||
let (checked_ports, checked_socket_iter) = (
|
||||
checked_ports_and_sockets
|
||||
.iter()
|
||||
.map(|(port, _)| *port)
|
||||
.collect::<Vec<_>>(),
|
||||
checked_ports_and_sockets
|
||||
.iter()
|
||||
.map(|(_, sockets)| sockets)
|
||||
.flatten(),
|
||||
);
|
||||
|
||||
let _ = ip_echo_server_request(
|
||||
ip_echo_server_addr,
|
||||
IpEchoServerMessage::new(&[], &checked_ports),
|
||||
)
|
||||
.map_err(|err| warn!("ip_echo_server request failed: {}", err));
|
||||
|
||||
// Spawn threads at once!
|
||||
let thread_handles: Vec<_> = checked_socket_iter
|
||||
.map(|udp_socket| {
|
||||
let port = udp_socket.local_addr().unwrap().port();
|
||||
let udp_socket = udp_socket.try_clone().expect("Unable to clone udp socket");
|
||||
std::thread::spawn(move || {
|
||||
let mut buf = [0; 1];
|
||||
let original_read_timeout = udp_socket.read_timeout().unwrap();
|
||||
udp_socket.set_read_timeout(Some(timeout)).unwrap();
|
||||
let recv_result = udp_socket.recv(&mut buf);
|
||||
debug!(
|
||||
"Waited for incoming datagram on udp/{}: {:?}",
|
||||
port, recv_result
|
||||
);
|
||||
udp_socket.set_read_timeout(original_read_timeout).unwrap();
|
||||
recv_result.map(|_| port).ok()
|
||||
})
|
||||
})
|
||||
.collect();
|
||||
|
||||
// Now join threads!
|
||||
// Separate from the above by collect()-ing as an intermediately step to make the iterator
|
||||
// eager not lazy so that joining happens here at once after creating bunch of threads
|
||||
// at once.
|
||||
let reachable_ports: BTreeSet<_> = thread_handles
|
||||
.into_iter()
|
||||
.filter_map(|t| t.join().unwrap())
|
||||
.collect();
|
||||
|
||||
if reachable_ports.len() == checked_ports.len() {
|
||||
info!(
|
||||
"checked udp ports: {:?}, reachable udp ports: {:?}",
|
||||
checked_ports, reachable_ports
|
||||
);
|
||||
ok = true;
|
||||
break;
|
||||
} else if udp_remaining_retry > 0 {
|
||||
// Might have lost a UDP packet, retry a couple times
|
||||
error!(
|
||||
"checked udp ports: {:?}, reachable udp ports: {:?}",
|
||||
checked_ports, reachable_ports
|
||||
);
|
||||
error!("There are some udp ports with no response!! Retrying...");
|
||||
} else {
|
||||
error!("Maximum retry count is reached....");
|
||||
break 'outer;
|
||||
}
|
||||
}
|
||||
if ok {
|
||||
break;
|
||||
}
|
||||
ok = true;
|
||||
|
||||
// Might have lost a UDP packet, retry a couple times
|
||||
let _ = ip_echo_server_request(
|
||||
ip_echo_server_addr,
|
||||
IpEchoServerMessage::new(&[], &udp_ports),
|
||||
)
|
||||
.map_err(|err| warn!("ip_echo_server request failed: {}", err));
|
||||
}
|
||||
|
||||
ok
|
||||
}
|
||||
|
||||
pub fn verify_reachable_ports(
|
||||
ip_echo_server_addr: &SocketAddr,
|
||||
tcp_listeners: Vec<(u16, TcpListener)>,
|
||||
udp_sockets: &[&UdpSocket],
|
||||
) -> bool {
|
||||
do_verify_reachable_ports(
|
||||
ip_echo_server_addr,
|
||||
tcp_listeners,
|
||||
udp_sockets,
|
||||
DEFAULT_TIMEOUT_SECS,
|
||||
DEFAULT_RETRY_COUNT,
|
||||
)
|
||||
}
|
||||
|
||||
pub fn parse_port_or_addr(optstr: Option<&str>, default_addr: SocketAddr) -> SocketAddr {
|
||||
if let Some(addrstr) = optstr {
|
||||
if let Ok(port) = addrstr.parse() {
|
||||
@@ -512,7 +581,25 @@ mod tests {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_public_ip_addr() {
|
||||
fn test_get_public_ip_addr_none() {
|
||||
solana_logger::setup();
|
||||
let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));
|
||||
let (_server_port, (server_udp_socket, server_tcp_listener)) =
|
||||
bind_common_in_range(ip_addr, (3200, 3250)).unwrap();
|
||||
|
||||
let _runtime = ip_echo_server(server_tcp_listener);
|
||||
|
||||
let server_ip_echo_addr = server_udp_socket.local_addr().unwrap();
|
||||
assert_eq!(
|
||||
get_public_ip_addr(&server_ip_echo_addr),
|
||||
parse_host("127.0.0.1"),
|
||||
);
|
||||
|
||||
assert!(verify_reachable_ports(&server_ip_echo_addr, vec![], &[],));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_public_ip_addr_reachable() {
|
||||
solana_logger::setup();
|
||||
let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));
|
||||
let (_server_port, (server_udp_socket, server_tcp_listener)) =
|
||||
@@ -534,4 +621,50 @@ mod tests {
|
||||
&[&client_udp_socket],
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_public_ip_addr_tcp_unreachable() {
|
||||
solana_logger::setup();
|
||||
let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));
|
||||
let (_server_port, (server_udp_socket, _server_tcp_listener)) =
|
||||
bind_common_in_range(ip_addr, (3200, 3250)).unwrap();
|
||||
|
||||
// make the socket unreachable by not running the ip echo server!
|
||||
|
||||
let server_ip_echo_addr = server_udp_socket.local_addr().unwrap();
|
||||
|
||||
let (correct_client_port, (_client_udp_socket, client_tcp_listener)) =
|
||||
bind_common_in_range(ip_addr, (3200, 3250)).unwrap();
|
||||
|
||||
assert!(!do_verify_reachable_ports(
|
||||
&server_ip_echo_addr,
|
||||
vec![(correct_client_port, client_tcp_listener)],
|
||||
&[],
|
||||
2,
|
||||
3,
|
||||
));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_get_public_ip_addr_udp_unreachable() {
|
||||
solana_logger::setup();
|
||||
let ip_addr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));
|
||||
let (_server_port, (server_udp_socket, _server_tcp_listener)) =
|
||||
bind_common_in_range(ip_addr, (3200, 3250)).unwrap();
|
||||
|
||||
// make the socket unreachable by not running the ip echo server!
|
||||
|
||||
let server_ip_echo_addr = server_udp_socket.local_addr().unwrap();
|
||||
|
||||
let (_correct_client_port, (client_udp_socket, _client_tcp_listener)) =
|
||||
bind_common_in_range(ip_addr, (3200, 3250)).unwrap();
|
||||
|
||||
assert!(!do_verify_reachable_ports(
|
||||
&server_ip_echo_addr,
|
||||
vec![],
|
||||
&[&client_udp_socket],
|
||||
2,
|
||||
3,
|
||||
));
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-perf"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Performance APIs"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -17,11 +17,11 @@ serde = "1.0.105"
|
||||
dlopen_derive = "0.1.4"
|
||||
lazy_static = "1.4.0"
|
||||
log = "0.4.8"
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.17" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.18" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
name = "solana_perf"
|
||||
|
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "solana-bpf-programs"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
documentation = "https://docs.rs/solana"
|
||||
homepage = "https://solana.com/"
|
||||
readme = "README.md"
|
||||
@@ -22,10 +22,10 @@ walkdir = "2"
|
||||
bincode = "1.1.4"
|
||||
byteorder = "1.3.2"
|
||||
elf = "0.0.10"
|
||||
solana-bpf-loader-program = { path = "../bpf_loader", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-bpf-loader-program = { path = "../bpf_loader", version = "1.1.18" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
solana_rbpf = "=0.1.28"
|
||||
|
||||
[[bench]]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-128bit"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,11 +12,11 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "1.1.18" }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-128bit-dep"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-alloc"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-dep-crate"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -13,10 +13,10 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
byteorder = { version = "1", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-dup-accounts"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-error-handling"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -14,11 +14,11 @@ edition = "2018"
|
||||
[dependencies]
|
||||
num-derive = "0.2"
|
||||
num-traits = "0.2"
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-external-spend"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-iter"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-many-args"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,11 +12,11 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "1.1.18" }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-many-args-dep"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-noop"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-panic"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-param-passing"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,11 +12,11 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "1.1.18" }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-param-passing-dep"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-sysval"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF test program written in Rust"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.17", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "1.1.18", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.17" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.1.18" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-bpf-loader-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF loader"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,8 +15,8 @@ libc = "0.2.68"
|
||||
log = "0.4.8"
|
||||
num-derive = { version = "0.3" }
|
||||
num-traits = { version = "0.2" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
solana_rbpf = "=0.1.28"
|
||||
thiserror = "1.0"
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-btc-spv-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Bitcoin spv parsing program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,7 +15,7 @@ num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17"}
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18"}
|
||||
hex = "0.4.2"
|
||||
|
||||
[lib]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "btc_spv_bin"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Bitcoin spv parsing program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-budget-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Budget program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -16,11 +16,11 @@ num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-config-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Config program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -14,10 +14,10 @@ chrono = { version = "0.4.11", features = ["serde"] }
|
||||
log = "0.4.8"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-exchange-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Exchange program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,13 +15,13 @@ num-derive = { version = "0.3" }
|
||||
num-traits = { version = "0.2" }
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-metrics = { path = "../../metrics", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-metrics = { path = "../../metrics", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-failure-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana failure program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -9,10 +9,10 @@ homepage = "https://solana.com/"
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-librapay"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Libra Payment"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -11,10 +11,10 @@ edition = "2018"
|
||||
[dependencies]
|
||||
bincode = "1.2.0"
|
||||
log = "0.4.8"
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-move-loader-program = { path = "../move_loader", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-move-loader-program = { path = "../move_loader", version = "1.1.18" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
types = { version = "0.0.1-sol4", package = "solana_libra_types" }
|
||||
|
||||
[lib]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-move-loader-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Move loader"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -16,8 +16,8 @@ serde = "1.0.104"
|
||||
serde_bytes = "0.11"
|
||||
serde_derive = "1.0.103"
|
||||
serde_json = "1.0.46"
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
|
||||
bytecode_verifier = { version = "0.0.1-sol4", package = "solana_libra_bytecode_verifier" }
|
||||
canonical_serialization = { version = "0.0.1-sol4", package = "solana_libra_canonical_serialization" }
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-noop-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Noop program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -10,8 +10,8 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
log = "0.4.8"
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-ownable"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "ownable program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -10,13 +10,13 @@ edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
bincode = "1.2.1"
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-stake-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Stake program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,14 +15,14 @@ num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-metrics = { path = "../../metrics", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../vote", version = "1.1.17" }
|
||||
solana-config-program = { path = "../config", version = "1.1.17" }
|
||||
solana-metrics = { path = "../../metrics", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../vote", version = "1.1.18" }
|
||||
solana-config-program = { path = "../config", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-storage-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Storage program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -16,8 +16,8 @@ num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-logger = { path = "../../logger", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-logger = { path = "../../logger", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
assert_matches = "1.3.0"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-vest-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Vest program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,12 +15,12 @@ num-derive = "0.2"
|
||||
num-traits = "0.2"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-config-program = { path = "../config", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
solana-config-program = { path = "../config", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.17" }
|
||||
solana-runtime = { path = "../../runtime", version = "1.1.18" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-vote-program"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana Vote program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -15,8 +15,8 @@ num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
serde = "1.0.105"
|
||||
serde_derive = "1.0.103"
|
||||
solana-metrics = { path = "../../metrics", version = "1.1.17" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.17" }
|
||||
solana-metrics = { path = "../../metrics", version = "1.1.18" }
|
||||
solana-sdk = { path = "../../sdk", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
|
||||
[lib]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-rayon-threadlimit"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "solana-rayon-threadlimit"
|
||||
homepage = "https://solana.com/"
|
||||
readme = "../README.md"
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-remote-wallet"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@@ -18,7 +18,7 @@ num-derive = { version = "0.3" }
|
||||
num-traits = { version = "0.2" }
|
||||
parking_lot = "0.10"
|
||||
semver = "0.9"
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
thiserror = "1.0"
|
||||
url = "2.1.1"
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-runtime"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana runtime"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -27,16 +27,16 @@ rand = "0.7.0"
|
||||
rayon = "1.3.0"
|
||||
serde = { version = "1.0.105", features = ["rc"] }
|
||||
serde_derive = "1.0.103"
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.17" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.17" }
|
||||
solana-logger = { path = "../logger", version = "1.1.17" }
|
||||
solana-measure = { path = "../measure", version = "1.1.17" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.17" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.17" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.17" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.1.18" }
|
||||
solana-config-program = { path = "../programs/config", version = "1.1.18" }
|
||||
solana-logger = { path = "../logger", version = "1.1.18" }
|
||||
solana-measure = { path = "../measure", version = "1.1.18" }
|
||||
solana-metrics = { path = "../metrics", version = "1.1.18" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "1.1.18" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "1.1.18" }
|
||||
tempfile = "3.1.0"
|
||||
thiserror = "1.0"
|
||||
|
||||
@@ -46,7 +46,7 @@ name = "solana_runtime"
|
||||
|
||||
[dev-dependencies]
|
||||
assert_matches = "1.3.0"
|
||||
solana-noop-program = { path = "../programs/noop", version = "1.1.17" }
|
||||
solana-noop-program = { path = "../programs/noop", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-scripts"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk-c"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana SDK C"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -18,7 +18,7 @@ bs58 = "0.3.0"
|
||||
libc = "0.2.68"
|
||||
rand_chacha = "0.2.2"
|
||||
rand_core = { version = "0.5", default-features = false }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
ed25519-dalek = "1.0.0-pre.3"
|
||||
|
||||
[build-dependencies]
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana SDK"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
@@ -50,9 +50,9 @@ serde_json = { version = "1.0.48", optional = true }
|
||||
sha2 = "0.8.1"
|
||||
thiserror = "1.0"
|
||||
ed25519-dalek = { version = "=1.0.0-pre.3", optional = true }
|
||||
solana-crate-features = { path = "../crate-features", version = "1.1.17", optional = true }
|
||||
solana-logger = { path = "../logger", version = "1.1.17", optional = true }
|
||||
solana-sdk-macro = { path = "macro", version = "1.1.17" }
|
||||
solana-crate-features = { path = "../crate-features", version = "1.1.18", optional = true }
|
||||
solana-logger = { path = "../logger", version = "1.1.18", optional = true }
|
||||
solana-sdk-macro = { path = "macro", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
tiny-bip39 = "0.7.0"
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk-bpf-test"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana BPF SDK test utilities"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@@ -9,16 +9,24 @@ else
|
||||
fi
|
||||
|
||||
download() {
|
||||
declare url=$1
|
||||
set -e
|
||||
declare url="$1/$2/$3"
|
||||
declare version=$2
|
||||
declare filename=$3
|
||||
declare progress=$4
|
||||
declare dirname=$4
|
||||
declare progress=$5
|
||||
declare cache_directory=~/.cache/"$version"
|
||||
declare cache_filename=$cache_directory/${filename//:\//_}
|
||||
declare cache_dirname=$cache_directory/${dirname//:\//_}
|
||||
|
||||
if [[ -r $cache_filename ]]; then
|
||||
ln -s "$cache_filename" "$filename"
|
||||
return
|
||||
link() {
|
||||
set -e
|
||||
ln -sf "$cache_dirname" "$dirname"
|
||||
ln -sf "$cache_directory/$dirname-$version.md" "$dirname-$version.md"
|
||||
}
|
||||
|
||||
if [[ -r $cache_dirname ]]; then
|
||||
link
|
||||
return 0
|
||||
fi
|
||||
|
||||
declare args=(
|
||||
@@ -27,9 +35,49 @@ download() {
|
||||
"--retry-connrefused"
|
||||
"--read-timeout=30"
|
||||
)
|
||||
set -x
|
||||
mkdir -p "$cache_dirname"
|
||||
pushd "$cache_dirname"
|
||||
if wget "${args[@]}"; then
|
||||
mkdir -p "$cache_directory"
|
||||
cp "$filename" "$cache_filename"
|
||||
tar --strip-components 1 -jxf "$filename"
|
||||
rm -rf "$filename"
|
||||
echo "$url" >"../$dirname-$version.md"
|
||||
popd
|
||||
link
|
||||
return 0
|
||||
fi
|
||||
popd
|
||||
rm -rf "$cache_dirname"
|
||||
return 1
|
||||
}
|
||||
|
||||
clone() {
|
||||
set -e
|
||||
declare url=$1
|
||||
declare version=$2
|
||||
declare dirname=$3
|
||||
declare cache_directory=~/.cache/"$version"
|
||||
declare cache_dirname=$cache_directory/${dirname//:\//_}
|
||||
|
||||
link() {
|
||||
set -e
|
||||
ln -sf "$cache_dirname" "$dirname"
|
||||
ln -sf "$cache_directory/$dirname-$version.md" "$dirname-$version.md"
|
||||
}
|
||||
|
||||
if [[ -r $cache_dirname ]]; then
|
||||
link
|
||||
return 0
|
||||
fi
|
||||
|
||||
set -x
|
||||
mkdir -p "$cache_directory"
|
||||
pushd "$cache_directory"
|
||||
cmd="git clone --recursive --depth 1 --single-branch --branch $version $url"
|
||||
if $cmd; then
|
||||
echo "$cmd" >"$dirname-$version.md"
|
||||
popd
|
||||
link
|
||||
return 0
|
||||
fi
|
||||
return 1
|
||||
@@ -44,7 +92,7 @@ download() {
|
||||
else
|
||||
cargo install xargo
|
||||
fi
|
||||
xargo --version > xargo.md 2>&1
|
||||
xargo --version >xargo.md 2>&1
|
||||
)
|
||||
# shellcheck disable=SC2181
|
||||
if [[ $? -ne 0 ]]; then
|
||||
@@ -53,107 +101,85 @@ fi
|
||||
|
||||
# Install Criterion
|
||||
version=v2.3.2
|
||||
if [[ ! -r criterion-$machine-$version.md ]]; then
|
||||
if [[ ! -e criterion-$version.md ]]; then
|
||||
(
|
||||
filename=criterion-$version-$machine-x86_64.tar.bz2
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
rm -rf criterion*
|
||||
mkdir criterion
|
||||
cd criterion
|
||||
|
||||
base=https://github.com/Snaipe/Criterion/releases
|
||||
download $base/download/$version/$filename $version $filename mega
|
||||
tar --strip-components 1 -jxf $filename
|
||||
rm -rf $filename
|
||||
|
||||
echo "$base/tag/$version" > ../criterion-$machine-$version.md
|
||||
download "https://github.com/Snaipe/Criterion/releases/download" \
|
||||
$version \
|
||||
"criterion-$version-$machine-x86_64.tar.bz2" \
|
||||
criterion \
|
||||
mega
|
||||
)
|
||||
# shellcheck disable=SC2181
|
||||
if [[ $? -ne 0 ]]; then
|
||||
rm -rf criterion
|
||||
exitcode=$?
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
rm -rf criterion-$version.md
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install LLVM
|
||||
version=v0.0.15
|
||||
if [[ ! -f llvm-native-$machine-$version.md ]]; then
|
||||
if [[ ! -e llvm-native-$version.md ]]; then
|
||||
(
|
||||
filename=solana-llvm-$machine.tar.bz2
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
rm -rf llvm-native*
|
||||
rm -rf xargo
|
||||
mkdir -p llvm-native
|
||||
cd llvm-native
|
||||
|
||||
base=https://github.com/solana-labs/llvm-builder/releases
|
||||
download $base/download/$version/$filename $version $filename giga
|
||||
tar -jxf $filename
|
||||
rm -rf $filename
|
||||
|
||||
echo "$base/tag/$version" > ../llvm-native-$machine-$version.md
|
||||
download "https://github.com/solana-labs/llvm-builder/releases/download" \
|
||||
$version \
|
||||
"solana-llvm-$machine.tar.bz2" \
|
||||
llvm-native \
|
||||
giga
|
||||
)
|
||||
exitcode=$?
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
rm -rf llvm-native
|
||||
rm -rf llvm-native-$version.md
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install Rust-BPF
|
||||
version=v0.2.3
|
||||
if [[ ! -f rust-bpf-$machine-$version.md ]]; then
|
||||
if [[ ! -e rust-bpf-$version.md ]]; then
|
||||
(
|
||||
filename=solana-rust-bpf-$machine.tar.bz2
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
rm -rf rust-bpf
|
||||
rm -rf rust-bpf-$machine-*
|
||||
rm -rf xargo
|
||||
mkdir -p rust-bpf
|
||||
pushd rust-bpf
|
||||
|
||||
base=https://github.com/solana-labs/rust-bpf-builder/releases
|
||||
download $base/download/$version/$filename $version $filename giga
|
||||
tar -jxf $filename
|
||||
rm -rf $filename
|
||||
popd
|
||||
download "https://github.com/solana-labs/rust-bpf-builder/releases/download" \
|
||||
$version \
|
||||
"solana-rust-bpf-$machine.tar.bz2" \
|
||||
rust-bpf \
|
||||
giga
|
||||
|
||||
set -ex
|
||||
./rust-bpf/bin/rustc --print sysroot
|
||||
|
||||
set +e
|
||||
rustup toolchain uninstall bpf
|
||||
set -e
|
||||
rustup toolchain link bpf rust-bpf
|
||||
|
||||
echo "$base/tag/$version" > rust-bpf-$machine-$version.md
|
||||
)
|
||||
exitcode=$?
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
rm -rf rust-bpf
|
||||
rm -rf rust-bpf-$version.md
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Install Rust-BPF Sysroot sources
|
||||
version=v0.12
|
||||
if [[ ! -f rust-bpf-sysroot-$version.md ]]; then
|
||||
|
||||
if [[ ! -e rust-bpf-sysroot-$version.md ]]; then
|
||||
(
|
||||
set -ex
|
||||
set -e
|
||||
rm -rf rust-bpf-sysroot*
|
||||
rm -rf xargo
|
||||
cmd="git clone --recursive --depth 1 --single-branch --branch $version https://github.com/solana-labs/rust-bpf-sysroot.git"
|
||||
$cmd
|
||||
|
||||
echo "$cmd" > rust-bpf-sysroot-$version.md
|
||||
clone "https://github.com/solana-labs/rust-bpf-sysroot.git" \
|
||||
$version \
|
||||
rust-bpf-sysroot
|
||||
)
|
||||
exitcode=$?
|
||||
if [[ $exitcode -ne 0 ]]; then
|
||||
rm -rf rust-bpf-sysroot
|
||||
rm -rf rust-bpf-sysroot-$version.md
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk-macro"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
description = "Solana SDK Macro"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@@ -3,22 +3,22 @@ name = "solana-stake-accounts"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
version = "1.1.17"
|
||||
version = "1.1.18"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
|
||||
[dependencies]
|
||||
clap = "2.33.0"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.17" }
|
||||
solana-cli-config = { path = "../cli-config", version = "1.1.17" }
|
||||
solana-client = { path = "../client", version = "1.1.17" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.17" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.17" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.17" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "1.1.18" }
|
||||
solana-cli-config = { path = "../cli-config", version = "1.1.18" }
|
||||
solana-client = { path = "../client", version = "1.1.18" }
|
||||
solana-remote-wallet = { path = "../remote-wallet", version = "1.1.18" }
|
||||
solana-sdk = { path = "../sdk", version = "1.1.18" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "1.1.18" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../runtime", version = "1.1.17" }
|
||||
solana-runtime = { path = "../runtime", version = "1.1.18" }
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
targets = ["x86_64-unknown-linux-gnu"]
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user