Compare commits

...

13 Commits

Author SHA1 Message Date
mergify[bot]
bc808d785b Fix udp port check retry and check all udp ports (bp #10385) (#10576)
automerge
2020-06-14 17:36:17 -07:00
mergify[bot]
a5e91f8b14 Fix perf-libs version detection (#10571) (#10573)
automerge
2020-06-14 13:50:10 -07:00
mergify[bot]
79b1d49e42 Fix fannout gossip bench (bp #10509) (#10555)
* Fix fannout gossip bench (#10509)

* Gossip benchmark

* Rayon tweaking

* push pulls

* fanout to max nodes

* fixup! fanout to max nodes

* fixup! fixup! fanout to max nodes

* update

* multi vote test

* fixup prune

* fast propagation

* fixups

* compute up to 95%

* test for specific tx

* stats

* stats

* fixed tests

* rename

* track a lagging view of which nodes have the local node in their active set in the local received_cache

* test fixups

* dups are old now

* dont prune your own origin

* send vote to tpu

* tests

* fixed tests

* fixed test

* update

* ignore scale

* lint

* fixup

* fixup

* fixup

* cleanup

Co-authored-by: Stephen Akridge <sakridge@gmail.com>
(cherry picked from commit ba83e4ca50)

* Merge fixes

Co-authored-by: anatoly yakovenko <anatoly@solana.com>
2020-06-14 06:28:43 -07:00
mergify[bot]
5c5207b7c4 Use git diff instead of git show for --check (#10566) (#10567)
automerge
2020-06-14 06:28:33 -07:00
mergify[bot]
6280ea1b6e Check the whole range of commits in the topic branch (bp #10560) (#10563)
automerge
2020-06-14 04:46:09 -07:00
sakridge
f016ccdbb5 Dial down gossip threadpool (#10540) 2020-06-13 22:48:32 -07:00
Dan Albert
a528e966e6 Add Trust Wallet security info (#10516)
automerge

(cherry picked from commit 914f285914)
2020-06-12 22:14:34 -07:00
mergify[bot]
4be9d926c8 Add FdGYQ... to non-circulation withdrawer authority list (#10542) (#10545)
automerge
2020-06-12 18:14:27 -07:00
Michael Vines
94e162b0f0 Refine build condition 2020-06-12 17:03:48 -07:00
mergify[bot]
26ca3c6d6d Update non-circulating pubkeys (#10524) (#10526)
automerge

(cherry picked from commit fb8612be49)

Co-authored-by: Greg Fitzgerald <greg@solana.com>
2020-06-11 16:58:28 -07:00
mergify[bot]
729b997392 Improve BPF SDK dependency caching (#10434) (#10517)
automerge
2020-06-11 14:12:16 -07:00
Michael Vines
37b381f47f Force CI_REPO_SLUG 2020-06-11 13:14:42 -07:00
Michael Vines
0115bfa2ea Bump version to v1.1.18 2020-06-10 22:42:05 -07:00
110 changed files with 1004 additions and 724 deletions

View File

@@ -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
View File

@@ -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",

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

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

View File

@@ -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
View 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

View File

@@ -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" \

View File

@@ -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"

View File

@@ -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/"

View File

@@ -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]]

View File

@@ -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"]

View File

@@ -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]

View File

@@ -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;

View File

@@ -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();

View File

@@ -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,);

View File

@@ -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> {

View File

@@ -2,7 +2,6 @@
pub enum CrdsGossipError {
NoPeers,
PushMessageTimeout,
PushMessageAlreadyReceived,
PushMessageOldVersion,
BadPruneDestination,
PruneMessageTimeout,

View File

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

View File

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

View File

@@ -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",
]
);

View File

@@ -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);
}

View File

@@ -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"

View File

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

View File

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

View File

@@ -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.

View File

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

View File

@@ -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" %}

View File

@@ -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"]

View File

@@ -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]

View File

@@ -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"

View File

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

View File

@@ -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"]

View File

@@ -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]]

View File

@@ -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" }

View File

@@ -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"

View File

@@ -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]]

View File

@@ -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]

View File

@@ -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"]

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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]

View File

@@ -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"

View File

@@ -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]]

View File

@@ -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"

View File

@@ -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 {

View File

@@ -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,
));
}
}

View File

@@ -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"

View File

@@ -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]]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"

View File

@@ -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]

View File

@@ -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"

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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]

View File

@@ -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" }

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"]

View File

@@ -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"

View File

@@ -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"]

View File

@@ -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]

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"]

View File

@@ -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/"

View File

@@ -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]

View File

@@ -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"

View File

@@ -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"

View File

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

View File

@@ -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"

View File

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