Compare commits

...

12 Commits

Author SHA1 Message Date
dfdb2eea49 Include shred version in gossip (#7799)
automerge
2020-01-14 17:46:39 -08:00
2d3ead0c05 Unignore advisories as affected ver. is corrected (bp #7730) (#7782)
automerge
2020-01-13 19:56:17 -08:00
4499173ea3 Pick an RPC node at random to avoid getting stuck on a bad RPC node (#7762)
automerge
2020-01-12 20:18:55 -08:00
633e820970 Update http crate in bpf program workspace to fix security vulnerability (bp #7735) (#7742)
automerge
2020-01-10 07:57:06 -08:00
95f9862df7 Correctly integrate buildkite with codecov (#7718) (#7726)
automerge
2020-01-09 14:33:24 -08:00
c16356ecb3 Update http crate to fix security vulnerability (bp #7725) (#7728)
automerge
2020-01-09 13:33:44 -08:00
f0bbec7999 Bump version to 0.21.8 2020-01-07 23:13:53 -07:00
5226d2b1de Bump version to 0.21.7 2020-01-07 21:58:17 -07:00
57bc9c3ee7 Account for stake held by the current node while waiting for the supermajority to join gossip 2020-01-07 20:38:27 -07:00
d4b23a0cc9 validator: Add --wait-for-super-majority to facilitate asynchronous cluster restarts (bp #7701) (#7703)
automerge
2020-01-07 15:38:53 -08:00
d6c1cf2499 Measure heap usage while processing the ledger at validator startup (bp #7667) (#7669)
automerge
2020-01-03 15:42:27 -08:00
63db9d6933 net: Add a stand-alone gossip node on the blocksteamer instance (bp #7654) (#7658)
automerge
2020-01-02 17:10:04 -08:00
100 changed files with 1242 additions and 1021 deletions

625
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-archiver"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -10,10 +10,10 @@ homepage = "https://solana.com/"
[dependencies]
clap = "2.33.0"
console = "0.9.1"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }

View File

@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-banking-bench"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -10,11 +10,11 @@ homepage = "https://solana.com/"
[dependencies]
log = "0.4.6"
rayon = "1.2.0"
solana-core = { path = "../core", version = "0.21.6" }
solana-ledger = { path = "../ledger", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-measure = { path = "../measure", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.8" }
solana-ledger = { path = "../ledger", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-measure = { path = "../measure", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
rand = "0.6.5"
crossbeam-channel = "0.3"

View File

@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-exchange"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -23,19 +23,19 @@ serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-genesis = { path = "../genesis", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-drone = { path = "../drone", version = "0.21.6" }
solana-exchange-program = { path = "../programs/exchange", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-genesis = { path = "../genesis", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-drone = { path = "../drone", version = "0.21.8" }
solana-exchange-program = { path = "../programs/exchange", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
untrusted = "0.7.0"
ws = "0.9.1"
[dev-dependencies]
solana-local-cluster = { path = "../local-cluster", version = "0.21.6" }
solana-local-cluster = { path = "../local-cluster", version = "0.21.8" }

View File

@ -2,14 +2,14 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-streamer"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }

View File

@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-tps"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -16,24 +16,24 @@ serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-genesis = { path = "../genesis", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-drone = { path = "../drone", version = "0.21.6" }
solana-librapay-api = { path = "../programs/librapay_api", version = "0.21.6", optional = true }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-measure = { path = "../measure", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-move-loader-program = { path = "../programs/move_loader", version = "0.21.6", optional = true }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-genesis = { path = "../genesis", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-drone = { path = "../drone", version = "0.21.8" }
solana-librapay-api = { path = "../programs/librapay_api", version = "0.21.8", optional = true }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-measure = { path = "../measure", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-move-loader-program = { path = "../programs/move_loader", version = "0.21.8", optional = true }
[dev-dependencies]
serial_test = "0.2.0"
serial_test_derive = "0.2.0"
solana-local-cluster = { path = "../local-cluster", version = "0.21.6" }
solana-local-cluster = { path = "../local-cluster", version = "0.21.8" }
[features]
move = ["solana-librapay-api", "solana-move-loader-program"]

View File

@ -177,7 +177,7 @@ $ solana send-timestamp <PUBKEY> <PROCESS_ID> --date 2018-12-24T23:59:00
## Usage
### solana-cli
```text
solana-cli 0.21.6
solana-cli 0.21.8
Blockchain, Rebuilt for Scale
USAGE:

View File

@ -157,7 +157,7 @@ The result value will be an RpcResponse JSON object containing an AccountInfo JS
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0", "id":1, "method":"getAccountInfo", "params":["2gVkYWexTHR5Hb2aLeQN3tnngvWzisFKXDUPrgMHpdST"]}' http://localhost:8899
// Result
{"jsonrpc":"2.0","result":{"context":{"slot":1},"value":{"executable":false,"owner":[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"lamports":1,"data":[3,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0.21.6,0,0,0,0,0,0,50,48,53,48,45,48,49,45,48,49,84,48,48,58,48,48,58,48,48,90,252,10,7,28,246,140,88,177,98,82,10,227,89,81,18,30,194,101,199,16,11,73,133,20,246,62,114,39,20,113,189,32,50,0,0,0,0,0,0,0,247,15,36,102,167,83,225,42,133,127,82,34,36,224,207,130,109,230,224,188,163,33,213,13,5,117,211,251,65,159,197,51,0,0,0,0,0,0]}},"id":1}
{"jsonrpc":"2.0","result":{"context":{"slot":1},"value":{"executable":false,"owner":[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"lamports":1,"data":[3,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0.21.8,0,0,0,0,0,0,50,48,53,48,45,48,49,45,48,49,84,48,48,58,48,48,58,48,48,90,252,10,7,28,246,140,88,177,98,82,10,227,89,81,18,30,194,101,199,16,11,73,133,20,246,62,114,39,20,113,189,32,50,0,0,0,0,0,0,0,247,15,36,102,167,83,225,42,133,127,82,34,36,224,207,130,109,230,224,188,163,33,213,13,5,117,211,251,65,159,197,51,0,0,0,0,0,0]}},"id":1}
```
### getBalance
@ -853,7 +853,7 @@ Subscribe to an account to receive notifications when the lamports or data for a
#### Notification Format:
```bash
{"jsonrpc": "2.0","method": "accountNotification", "params": {"result": {"executable":false,"owner":[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"lamports":1,"data":[3,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0.21.6,0,0,0,0,0,0,50,48,53,48,45,48,49,45,48,49,84,48,48,58,48,48,58,48,48,90,252,10,7,28,246,140,88,177,98,82,10,227,89,81,18,30,194,101,199,16,11,73,133,20,246,62,114,39,20,113,189,32,50,0,0,0,0,0,0,0,247,15,36,102,167,83,225,42,133,127,82,34,36,224,207,130,109,230,224,188,163,33,213,13,5,117,211,251,65,159,197,51,0,0,0,0,0,0]},"subscription":0}}
{"jsonrpc": "2.0","method": "accountNotification", "params": {"result": {"executable":false,"owner":[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"lamports":1,"data":[3,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0.21.8,0,0,0,0,0,0,50,48,53,48,45,48,49,45,48,49,84,48,48,58,48,48,58,48,48,90,252,10,7,28,246,140,88,177,98,82,10,227,89,81,18,30,194,101,199,16,11,73,133,20,246,62,114,39,20,113,189,32,50,0,0,0,0,0,0,0,247,15,36,102,167,83,225,42,133,127,82,34,36,224,207,130,109,230,224,188,163,33,213,13,5,117,211,251,65,159,197,51,0,0,0,0,0,0]},"subscription":0}}
```
### accountUnsubscribe
@ -911,7 +911,7 @@ Subscribe to a program to receive notifications when the lamports or data for a
* `object` - account info JSON object \(see [getAccountInfo](jsonrpc-api.md#getaccountinfo) for field details\)
```bash
{"jsonrpc":"2.0","method":"programNotification","params":{{"result":["8Rshv2oMkPu5E4opXTRyuyBeZBqQ4S477VG26wUTFxUM",{"executable":false,"lamports":1,"owner":[129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"data":[1,1,1,0,0,0,0,0,0,0.21.6,0,0,0,0,0,0,50,48,49,56,45,49,50,45,50,52,84,50,51,58,53,57,58,48,48,90,235,233,39,152,15,44,117,176,41,89,100,86,45,61,2,44,251,46,212,37,35,118,163,189,247,84,27,235,178,62,55,89,0,0,0,0,50,0,0,0,0,0,0,0,235,233,39,152,15,44,117,176,41,89,100,86,45,61,2,44,251,46,212,37,35,118,163,189,247,84,27,235,178,62,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}],"subscription":0}}
{"jsonrpc":"2.0","method":"programNotification","params":{{"result":["8Rshv2oMkPu5E4opXTRyuyBeZBqQ4S477VG26wUTFxUM",{"executable":false,"lamports":1,"owner":[129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"data":[1,1,1,0,0,0,0,0,0,0.21.8,0,0,0,0,0,0,50,48,49,56,45,49,50,45,50,52,84,50,51,58,53,57,58,48,48,90,235,233,39,152,15,44,117,176,41,89,100,86,45,61,2,44,251,46,212,37,35,118,163,189,247,84,27,235,178,62,55,89,0,0,0,0,50,0,0,0,0,0,0,0,235,233,39,152,15,44,117,176,41,89,100,86,45,61,2,44,251,46,212,37,35,118,163,189,247,84,27,235,178,62,45,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}],"subscription":0}}
```
### programUnsubscribe

View File

@ -81,8 +81,8 @@ With a FEC rate: `16:4`
With FEC rate of `16:16`
* `G = 12800`
* `S = SUM of i=0 -> 32 for binomial(prob_failure = 0.2775, trials = 64, failures = i) = 0.0.21.6`
* `B = (1 - 0.0.21.6) ^ (12800 / 32) = 0.42583`
* `S = SUM of i=0 -> 32 for binomial(prob_failure = 0.2775, trials = 64, failures = i) = 0.0.21.8`
* `B = (1 - 0.0.21.8) ^ (12800 / 32) = 0.42583`
With FEC rate of `32:32`
* `G = 12800`

View File

@ -2,7 +2,7 @@
This design describes Solana's _Tower BFT_ algorithm. It addresses the following problems:
* Some forks may not end up accepted by the super-majority of the cluster, and voters need to recover from voting on such forks.
* Some forks may not end up accepted by the supermajority of the cluster, and voters need to recover from voting on such forks.
* Many forks may be votable by different voters, and each voter may see a different set of votable forks. The selected forks should eventually converge for the cluster.
* Reward based votes have an associated risk. Voters should have the ability to configure how much risk they take on.
* The [cost of rollback](tower-bft.md#cost-of-rollback) needs to be computable. It is important to clients that rely on some measurable form of Consistency. The costs to break consistency need to be computable, and increase super-linearly for older votes.

View File

@ -2,7 +2,7 @@
Follow this guide to setup Solana's key generation tool called `solana-keygen`
{% hint style="warn" %}
After installation, ensure your version is `0.21.6` or higher by running `solana-keygen -V`
After installation, ensure your version is `0.21.8` or higher by running `solana-keygen -V`
{% endhint %}
## Download

View File

@ -91,5 +91,5 @@ This is an area currently under exploration
As discussed in the [Economic Design](../implemented-proposals/ed_overview/) section, annual validator interest rates are to be specified as a function of total percentage of circulating supply that has been staked. The cluster rewards validators who are online and actively participating in the validation process throughout the entirety of their _validation period_. For validators that go offline/fail to validate transactions during this period, their annual reward is effectively reduced.
Similarly, we may consider an algorithmic reduction in a validator's active amount staked amount in the case that they are offline. I.e. if a validator is inactive for some amount of time, either due to a partition or otherwise, the amount of their stake that is considered active \(eligible to earn rewards\) may be reduced. This design would be structured to help long-lived partitions to eventually reach finality on their respective chains as the % of non-voting total stake is reduced over time until a super-majority can be achieved by the active validators in each partition. Similarly, upon re-engaging, the active amount staked will come back online at some defined rate. Different rates of stake reduction may be considered depending on the size of the partition/active set.
Similarly, we may consider an algorithmic reduction in a validator's active amount staked amount in the case that they are offline. I.e. if a validator is inactive for some amount of time, either due to a partition or otherwise, the amount of their stake that is considered active \(eligible to earn rewards\) may be reduced. This design would be structured to help long-lived partitions to eventually reach finality on their respective chains as the % of non-voting total stake is reduced over time until a supermajority can be achieved by the active validators in each partition. Similarly, upon re-engaging, the active amount staked will come back online at some defined rate. Different rates of stake reduction may be considered depending on the size of the partition/active set.

View File

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

View File

@ -72,10 +72,14 @@ ARGS+=(
--env CI_JOB_ID
--env CI_PULL_REQUEST
--env CI_REPO_SLUG
--env CODECOV_TOKEN
--env CRATES_IO_TOKEN
)
# Also propagate environment variables needed for codecov
# https://docs.codecov.io/docs/testing-with-docker#section-codecov-inside-docker
# We normalize CI to `1`; but codecov expects it to be `true` to detect Buildkite...
CODECOV_ENVS=$(CI=true bash <(curl -s https://codecov.io/env))
if $INTERACTIVE; then
if [[ -n $1 ]]; then
echo
@ -83,8 +87,10 @@ if $INTERACTIVE; then
echo
fi
set -x
exec docker run --interactive --tty "${ARGS[@]}" "$IMAGE" bash
# shellcheck disable=SC2086
exec docker run --interactive --tty "${ARGS[@]}" $CODECOV_ENVS "$IMAGE" bash
fi
set -x
exec docker run "${ARGS[@]}" "$IMAGE" "$@"
# shellcheck disable=SC2086
exec docker run "${ARGS[@]}" $CODECOV_ENVS "$IMAGE" "$@"

View File

@ -41,7 +41,8 @@ if [[ -z "$CODECOV_TOKEN" ]]; then
echo "^^^ +++"
echo CODECOV_TOKEN undefined, codecov.io upload skipped
else
bash <(curl -s https://codecov.io/bash) -X gcov -f target/cov/lcov.info
# We normalize CI to `1`; but codecov expects it to be `true` to detect Buildkite...
CI=true bash <(curl -s https://codecov.io/bash) -X gcov -f target/cov/lcov.info
annotate --style success --context codecov.io \
"CodeCov report: https://codecov.io/github/solana-labs/solana/commit/${CI_COMMIT:0:9}"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-clap-utils"
version = "0.21.6"
version = "0.21.8"
description = "Solana utilities for the clap"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -12,7 +12,7 @@ edition = "2018"
clap = "2.33.0"
rpassword = "4.0"
semver = "0.9.0"
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
tiny-bip39 = "0.6.2"
url = "2.1.0"

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-cli"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -28,24 +28,24 @@ serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
serde_yaml = "0.8.11"
solana-budget-program = { path = "../programs/budget", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-config-program = { path = "../programs/config", version = "0.21.6" }
solana-drone = { path = "../drone", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-storage-program = { path = "../programs/storage", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-vote-signer = { path = "../vote-signer", version = "0.21.6" }
solana-budget-program = { path = "../programs/budget", version = "0.21.8" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-config-program = { path = "../programs/config", version = "0.21.8" }
solana-drone = { path = "../drone", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-storage-program = { path = "../programs/storage", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
solana-vote-signer = { path = "../vote-signer", version = "0.21.8" }
url = "2.1.0"
[dev-dependencies]
solana-core = { path = "../core", version = "0.21.6" }
solana-budget-program = { path = "../programs/budget", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.8" }
solana-budget-program = { path = "../programs/budget", version = "0.21.8" }
tempfile = "3.1.0"
[[bin]]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-client"
version = "0.21.6"
version = "0.21.8"
description = "Solana Client"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -19,10 +19,10 @@ reqwest = { version = "0.9.22", default-features = false, features = ["rustls-tl
serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
[dev-dependencies]
jsonrpc-core = "14.0.3"
jsonrpc-http-server = "14.0.3"
solana-logger = { path = "../logger", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.8" }

View File

@ -1,7 +1,7 @@
[package]
name = "solana-core"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "../README.md"
@ -41,25 +41,25 @@ rayon = "1.2.0"
serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
solana-budget-program = { path = "../programs/budget", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-chacha-sys = { path = "../chacha-sys", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-drone = { path = "../drone", version = "0.21.6" }
solana-budget-program = { path = "../programs/budget", version = "0.21.8" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-chacha-sys = { path = "../chacha-sys", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-drone = { path = "../drone", version = "0.21.8" }
ed25519-dalek = "1.0.0-pre.1"
solana-ledger = { path = "../ledger", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-measure = { path = "../measure", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-perf = { path = "../perf", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-storage-program = { path = "../programs/storage", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-vote-signer = { path = "../vote-signer", version = "0.21.6" }
solana-ledger = { path = "../ledger", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-measure = { path = "../measure", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-perf = { path = "../perf", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-storage-program = { path = "../programs/storage", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
solana-vote-signer = { path = "../vote-signer", version = "0.21.8" }
symlink = "0.1.0"
sys-info = "0.5.8"
tempfile = "3.1.0"
@ -68,13 +68,9 @@ tokio-codec = "0.1"
tokio-fs = "0.1"
tokio-io = "0.1"
untrusted = "0.7.0"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.6" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.8" }
reed-solomon-erasure = { package = "solana-reed-solomon-erasure", version = "4.0.1-3", features = ["simd-accel"] }
[target."cfg(unix)".dependencies]
jemallocator = "0.3.2"
jemalloc-ctl = "0.3.2"
[dev-dependencies]
hex-literal = "0.2.1"
matches = "0.1.6"

View File

@ -7,7 +7,6 @@ use crate::{
poh_recorder::{PohRecorder, PohRecorderError, WorkingBankEntry},
poh_service::PohService,
result::{Error, Result},
thread_mem_usage,
};
use crossbeam_channel::{Receiver as CrossbeamReceiver, RecvTimeoutError};
use itertools::Itertools;
@ -17,7 +16,7 @@ use solana_ledger::{
entry::hash_transactions,
leader_schedule_cache::LeaderScheduleCache,
};
use solana_measure::measure::Measure;
use solana_measure::{measure::Measure, thread_mem_usage};
use solana_metrics::{inc_new_counter_debug, inc_new_counter_info, inc_new_counter_warn};
use solana_perf::{cuda_runtime::PinnedVec, perf_libs};
use solana_runtime::{accounts_db::ErrorCounters, bank::Bank, transaction_batch::TransactionBatch};

View File

@ -24,7 +24,6 @@ use crate::{
repair_service::RepairType,
result::{Error, Result},
sendmmsg::{multicast, send_mmsg},
thread_mem_usage,
weighted_shuffle::{weighted_best, weighted_shuffle},
};
use bincode::{serialize, serialized_size};
@ -32,6 +31,7 @@ use core::cmp;
use itertools::Itertools;
use rand::{thread_rng, Rng};
use solana_ledger::{bank_forks::BankForks, blocktree::Blocktree, staking_utils};
use solana_measure::thread_mem_usage;
use solana_metrics::{datapoint_debug, inc_new_counter_debug, inc_new_counter_error};
use solana_net_utils::{
bind_common, bind_common_in_range, bind_in_range, find_available_port_in_range,
@ -67,11 +67,11 @@ pub const GOSSIP_SLEEP_MILLIS: u64 = 100;
/// the number of slots to respond with when responding to `Orphan` requests
pub const MAX_ORPHAN_REPAIR_RESPONSES: usize = 10;
/// The maximum size of a bloom filter
pub const MAX_BLOOM_SIZE: usize = 1030;
pub const MAX_BLOOM_SIZE: usize = 1028;
/// The maximum size of a protocol payload
const MAX_PROTOCOL_PAYLOAD_SIZE: u64 = PACKET_DATA_SIZE as u64 - MAX_PROTOCOL_HEADER_SIZE;
/// The largest protocol header size
const MAX_PROTOCOL_HEADER_SIZE: u64 = 202;
const MAX_PROTOCOL_HEADER_SIZE: u64 = 204;
#[derive(Debug, PartialEq, Eq)]
pub enum ClusterInfoError {
@ -273,7 +273,7 @@ impl ClusterInfo {
let ip_addr = node.gossip.ip();
format!(
"{:15} {:2}| {:5} | {:44} | {:5}| {:5}| {:5} | {:5}| {:5} | {:5}| {:5} | {:5}| {:5}\n",
"{:15} {:2}| {:5} | {:44} | {:5}| {:5}| {:5} | {:5}| {:5} | {:5}| {:5} | {:5}| {:5}| v{}\n",
if ContactInfo::is_valid_address(&node.gossip) {
ip_addr.to_string()
} else {
@ -291,15 +291,16 @@ impl ClusterInfo {
addr_to_string(&ip_addr, &node.storage_addr),
addr_to_string(&ip_addr, &node.rpc),
addr_to_string(&ip_addr, &node.rpc_pubsub),
node.shred_version,
)
})
.collect();
format!(
"IP Address |Age(ms)| Node identifier \
|Gossip| TPU |TPU fwd| TVU |TVU fwd|Repair|Storage| RPC |PubSub\n\
|Gossip| TPU |TPU fwd| TVU |TVU fwd|Repair|Storage| RPC |PubSub|ShredVer\n\
------------------+-------+----------------------------------------------+\
------+------+-------+------+-------+------+-------+------+------\n\
------+------+-------+------+-------+------+-------+------+------+--------\n\
{}\
Nodes: {}{}{}",
nodes.join(""),
@ -406,13 +407,13 @@ impl ClusterInfo {
}
pub fn rpc_peers(&self) -> Vec<ContactInfo> {
let me = self.my_data().id;
let me = self.my_data();
self.gossip
.crds
.table
.values()
.filter_map(|x| x.value.contact_info())
.filter(|x| x.id != me)
.filter(|x| x.id != me.id)
.filter(|x| ContactInfo::is_valid_address(&x.rpc))
.cloned()
.collect()
@ -447,7 +448,7 @@ impl ClusterInfo {
/// all validators that have a valid tvu port.
pub fn tvu_peers(&self) -> Vec<ContactInfo> {
let me = self.my_data().id;
let me = self.my_data();
self.gossip
.crds
.table
@ -455,34 +456,34 @@ impl ClusterInfo {
.filter_map(|x| x.value.contact_info())
.filter(|x| ContactInfo::is_valid_address(&x.tvu))
.filter(|x| !ClusterInfo::is_archiver(x))
.filter(|x| x.id != me)
.filter(|x| x.id != me.id)
.cloned()
.collect()
}
/// all peers that have a valid storage addr
pub fn storage_peers(&self) -> Vec<ContactInfo> {
let me = self.my_data().id;
let me = self.my_data();
self.gossip
.crds
.table
.values()
.filter_map(|x| x.value.contact_info())
.filter(|x| ContactInfo::is_valid_address(&x.storage_addr))
.filter(|x| x.id != me)
.filter(|x| x.id != me.id)
.cloned()
.collect()
}
/// all peers that have a valid tvu
pub fn retransmit_peers(&self) -> Vec<ContactInfo> {
let me = self.my_data().id;
let me = self.my_data();
self.gossip
.crds
.table
.values()
.filter_map(|x| x.value.contact_info())
.filter(|x| x.id != me)
.filter(|x| x.id != me.id)
.filter(|x| ContactInfo::is_valid_address(&x.tvu))
.filter(|x| ContactInfo::is_valid_address(&x.tvu_forwards))
.cloned()
@ -491,10 +492,10 @@ impl ClusterInfo {
/// all tvu peers with valid gossip addrs
fn repair_peers(&self) -> Vec<ContactInfo> {
let me = self.my_data().id;
let me = self.my_data();
ClusterInfo::tvu_peers(self)
.into_iter()
.filter(|x| x.id != me)
.filter(|x| x.id != me.id)
.filter(|x| ContactInfo::is_valid_address(&x.gossip))
.collect()
}
@ -2563,7 +2564,7 @@ mod tests {
#[test]
fn test_split_messages_packet_size() {
// Test that if a value is smaller than payload size but too large to be wrappe in a vec
// Test that if a value is smaller than payload size but too large to be wrapped in a vec
// that it is still dropped
let payload: Vec<CrdsValue> = vec![];
let vec_size = serialized_size(&payload).unwrap();
@ -2576,7 +2577,7 @@ mod tests {
}));
let mut i = 0;
while value.size() < desired_size {
while value.size() <= desired_size {
let slots = (0..i).collect::<BTreeSet<_>>();
if slots.len() > 200 {
panic!(

View File

@ -31,6 +31,8 @@ pub struct ContactInfo {
pub rpc_pubsub: SocketAddr,
/// latest wallclock picked
pub wallclock: u64,
/// node shred version
pub shred_version: u16,
}
impl Ord for ContactInfo {
@ -84,6 +86,7 @@ impl Default for ContactInfo {
rpc: socketaddr_any!(),
rpc_pubsub: socketaddr_any!(),
wallclock: 0,
shred_version: 0,
}
}
}
@ -115,6 +118,7 @@ impl ContactInfo {
rpc,
rpc_pubsub,
wallclock: now,
shred_version: 0,
}
}

View File

@ -5,7 +5,7 @@ use crate::packet::PacketsRecycler;
use crate::poh_recorder::PohRecorder;
use crate::result::{Error, Result};
use crate::streamer::{self, PacketReceiver, PacketSender};
use crate::thread_mem_usage;
use solana_measure::thread_mem_usage;
use solana_metrics::{inc_new_counter_debug, inc_new_counter_info};
use solana_perf::recycler::Recycler;
use solana_sdk::clock::DEFAULT_TICKS_PER_SLOT;

View File

@ -199,7 +199,6 @@ fn spy(
.unwrap()
.tvu_peers()
.into_iter()
.filter(|node| !ClusterInfo::is_archiver(&node))
.collect::<Vec<_>>();
archivers = spy_ref.read().unwrap().storage_peers();
if let Some(num) = num_nodes {

View File

@ -12,7 +12,6 @@ pub mod chacha_cuda;
pub mod cluster_info_vote_listener;
pub mod commitment;
pub mod shred_fetch_stage;
pub mod thread_mem_usage;
#[macro_use]
pub mod contact_info;
pub mod archiver;
@ -84,10 +83,3 @@ extern crate solana_metrics;
#[cfg(test)]
#[macro_use]
extern crate matches;
#[cfg(unix)]
extern crate jemallocator;
#[cfg(unix)]
#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

View File

@ -7,7 +7,6 @@ use crate::{
poh_recorder::PohRecorder,
result::{Error, Result},
rpc_subscriptions::RpcSubscriptions,
thread_mem_usage,
};
use solana_ledger::{
bank_forks::BankForks,
@ -18,7 +17,7 @@ use solana_ledger::{
leader_schedule_cache::LeaderScheduleCache,
snapshot_package::SnapshotPackageSender,
};
use solana_measure::measure::Measure;
use solana_measure::{measure::Measure, thread_mem_usage};
use solana_metrics::inc_new_counter_info;
use solana_runtime::bank::Bank;
use solana_sdk::{

View File

@ -4,7 +4,7 @@
use crate::packet::{self, send_to, Packets, PacketsRecycler, PACKETS_PER_BATCH};
use crate::recvmmsg::NUM_RCVMMSGS;
use crate::result::{Error, Result};
use crate::thread_mem_usage;
use solana_measure::thread_mem_usage;
use solana_sdk::timing::duration_as_ms;
use std::net::UdpSocket;
use std::sync::atomic::{AtomicBool, Ordering};

View File

@ -48,7 +48,8 @@ use std::{
sync::atomic::{AtomicBool, Ordering},
sync::mpsc::Receiver,
sync::{Arc, Mutex, RwLock},
thread::Result,
thread::{sleep, Result},
time::Duration,
};
#[derive(Clone, Debug)]
@ -67,6 +68,7 @@ pub struct ValidatorConfig {
pub broadcast_stage_type: BroadcastStageType,
pub partition_cfg: Option<PartitionCfg>,
pub fixed_leader_schedule: Option<FixedSchedule>,
pub wait_for_supermajority: bool,
}
impl Default for ValidatorConfig {
@ -86,6 +88,7 @@ impl Default for ValidatorConfig {
broadcast_stage_type: BroadcastStageType::Standard,
partition_cfg: None,
fixed_leader_schedule: None,
wait_for_supermajority: false,
}
}
}
@ -138,32 +141,10 @@ impl Validator {
warn!("identity pubkey: {:?}", id);
warn!("vote pubkey: {:?}", vote_account);
warn!(
"CUDA is {}abled",
if solana_perf::perf_libs::api().is_some() {
"en"
} else {
"dis"
}
);
// Validator binaries built on a machine with AVX support will generate invalid opcodes
// when run on machines without AVX causing a non-obvious process abort. Instead detect
// the mismatch and error cleanly.
#[target_feature(enable = "avx")]
{
if is_x86_feature_detected!("avx") {
info!("AVX detected");
} else {
error!("Your machine does not have AVX support, please rebuild from source on your machine");
process::exit(1);
}
}
report_target_features();
info!("entrypoint: {:?}", entrypoint_info_option);
Self::print_node_info(&node);
info!("Initializing sigverify, this could take a while...");
sigverify::init();
info!("Done.");
@ -194,8 +175,6 @@ impl Validator {
let bank = bank_forks[bank_info.bank_slot].clone();
let bank_forks = Arc::new(RwLock::new(bank_forks));
let block_commitment_cache = Arc::new(RwLock::new(BlockCommitmentCache::default()));
// The version used by shreds, derived from genesis
let shred_version = Shred::version_from_hash(&genesis_hash);
let mut validator_exit = ValidatorExit::default();
let exit_ = exit.clone();
@ -203,6 +182,9 @@ impl Validator {
let validator_exit = Arc::new(RwLock::new(Some(validator_exit)));
node.info.wallclock = timestamp();
node.info.shred_version = Shred::version_from_hash(&genesis_hash);
Self::print_node_info(&node);
let cluster_info = Arc::new(RwLock::new(ClusterInfo::new(
node.info.clone(),
keypair.clone(),
@ -293,14 +275,7 @@ impl Validator {
if config.snapshot_config.is_some() {
poh_recorder.set_bank(&bank);
}
let poh_recorder = Arc::new(Mutex::new(poh_recorder));
let poh_service = PohService::new(poh_recorder.clone(), &poh_config, &exit);
assert_eq!(
blocktree.new_shreds_signals.len(),
1,
"New shred signal for the TVU should be the same as the clear bank signal."
);
let ip_echo_server = solana_net_utils::ip_echo_server(node.sockets.ip_echo.unwrap());
@ -321,6 +296,22 @@ impl Validator {
.set_entrypoint(entrypoint_info.clone());
}
if config.wait_for_supermajority {
info!(
"Waiting more than 66% of activated stake at slot {} to be in gossip...",
bank.slot()
);
loop {
let gossip_stake_percent = get_stake_percent_in_gossip(&bank, &cluster_info);
info!("{}% of activated stake in gossip", gossip_stake_percent,);
if gossip_stake_percent > 66 {
break;
}
sleep(Duration::new(1, 0));
}
}
let sockets = Sockets {
repair: node
.sockets
@ -353,6 +344,13 @@ impl Validator {
Some(voting_keypair)
};
let poh_service = PohService::new(poh_recorder.clone(), &poh_config, &exit);
assert_eq!(
blocktree.new_shreds_signals.len(),
1,
"New shred signal for the TVU should be the same as the clear bank signal."
);
let tvu = Tvu::new(
vote_account,
voting_keypair,
@ -373,7 +371,7 @@ impl Validator {
block_commitment_cache,
config.dev_sigverify_disabled,
config.partition_cfg.clone(),
shred_version,
node.info.shred_version,
transaction_status_sender.clone(),
);
@ -393,7 +391,7 @@ impl Validator {
&blocktree,
&config.broadcast_stage_type,
&exit,
shred_version,
node.info.shred_version,
);
datapoint_info!("validator-new", ("id", id.to_string(), String));
@ -579,6 +577,63 @@ pub fn new_validator_for_tests() -> (Validator, ContactInfo, Keypair, PathBuf) {
(node, contact_info, mint_keypair, ledger_path)
}
fn report_target_features() {
warn!(
"CUDA is {}abled",
if solana_perf::perf_libs::api().is_some() {
"en"
} else {
"dis"
}
);
// Validator binaries built on a machine with AVX support will generate invalid opcodes
// when run on machines without AVX causing a non-obvious process abort. Instead detect
// the mismatch and error cleanly.
#[target_feature(enable = "avx")]
{
if is_x86_feature_detected!("avx") {
info!("AVX detected");
} else {
error!("Your machine does not have AVX support, please rebuild from source on your machine");
process::exit(1);
}
}
}
// Get the activated stake percentage (based on the provided bank) that is visible in gossip
fn get_stake_percent_in_gossip(
bank: &Arc<solana_runtime::bank::Bank>,
cluster_info: &Arc<RwLock<ClusterInfo>>,
) -> u64 {
let mut gossip_stake = 0;
let mut total_activated_stake = 0;
let tvu_peers = cluster_info.read().unwrap().tvu_peers();
let me = cluster_info.read().unwrap().my_data();
for (activated_stake, vote_account) in bank.vote_accounts().values() {
let vote_state =
solana_vote_program::vote_state::VoteState::from(&vote_account).unwrap_or_default();
total_activated_stake += activated_stake;
if tvu_peers
.iter()
.filter(|peer| peer.shred_version == me.shred_version)
.any(|peer| peer.id == vote_state.node_pubkey)
{
trace!(
"observed {} in gossip, (activated_stake={})",
vote_state.node_pubkey,
activated_stake
);
gossip_stake += activated_stake;
} else if vote_state.node_pubkey == cluster_info.read().unwrap().id() {
gossip_stake += activated_stake;
}
}
gossip_stake * 100 / total_activated_stake
}
#[cfg(test)]
mod tests {
use super::*;

View File

@ -1,6 +1,6 @@
[package]
name = "solana-crate-features"
version = "0.21.6"
version = "0.21.8"
description = "Solana Crate Features"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-drone"
version = "0.21.6"
version = "0.21.8"
description = "Solana Drone"
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.102"
serde_derive = "1.0.102"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
tokio = "0.1"
tokio-codec = "0.1"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-fixed-buf"
version = "0.21.6"
version = "0.21.8"
description = "A fixed-size byte array that supports bincode serde"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-genesis-programs"
version = "0.21.6"
version = "0.21.8"
description = "Solana genesis programs"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -10,16 +10,16 @@ edition = "2018"
[dependencies]
log = { version = "0.4.8" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.6" }
solana-budget-program = { path = "../programs/budget", version = "0.21.6" }
solana-config-program = { path = "../programs/config", version = "0.21.6" }
solana-exchange-program = { path = "../programs/exchange", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-storage-program = { path = "../programs/storage", version = "0.21.6" }
solana-vest-program = { path = "../programs/vest", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.8" }
solana-budget-program = { path = "../programs/budget", version = "0.21.8" }
solana-config-program = { path = "../programs/config", version = "0.21.8" }
solana-exchange-program = { path = "../programs/exchange", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-storage-program = { path = "../programs/storage", version = "0.21.8" }
solana-vest-program = { path = "../programs/vest", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
[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 = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -16,11 +16,11 @@ serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.6" }
solana-ledger = { path = "../ledger", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-storage-program = { path = "../programs/storage", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.8" }
solana-ledger = { path = "../ledger", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-storage-program = { path = "../programs/storage", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
tempfile = "3.1.0"

View File

@ -3,19 +3,19 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-gossip"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }

View File

@ -9,7 +9,7 @@ use solana_client::rpc_client::RpcClient;
use solana_core::{contact_info::ContactInfo, gossip_service::discover};
use solana_sdk::pubkey::Pubkey;
use std::error;
use std::net::SocketAddr;
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::process::exit;
fn main() -> Result<(), Box<dyn error::Error>> {
@ -38,6 +38,13 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.takes_value(false)
.help("Return all RPC URLs"),
)
.arg(
Arg::with_name("any")
.long("any")
.takes_value(false)
.conflicts_with("all")
.help("Return any RPC URL"),
)
.arg(
Arg::with_name("timeout")
.long("timeout")
@ -74,9 +81,8 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.long("gossip-host")
.value_name("HOST")
.takes_value(true)
.conflicts_with("entrypoint")
.validator(solana_net_utils::is_host)
.help("Gossip DNS name or IP address for the node when --entrypoint is not provided [default: 127.0.0.1]"),
.help("Gossip DNS name or IP address for the node [default: ask --entrypoint, or 127.0.0.1 when --entrypoint is not provided]"),
)
.arg(
Arg::with_name("num_nodes")
@ -164,21 +170,29 @@ fn main() -> Result<(), Box<dyn error::Error>> {
let entrypoint_addr = parse_entrypoint(&matches);
let gossip_host = if let Some(entrypoint_addr) = entrypoint_addr {
solana_net_utils::get_public_ip_addr(&entrypoint_addr).unwrap_or_else(|err| {
eprintln!(
"Failed to contact cluster entrypoint {}: {}",
entrypoint_addr, err
);
exit(1);
})
} else {
solana_net_utils::parse_host(matches.value_of("gossip_host").unwrap_or("127.0.0.1"))
.unwrap_or_else(|err| {
eprintln!("Error: {}", err);
let gossip_host = matches
.value_of("gossip_host")
.map(|gossip_host| {
solana_net_utils::parse_host(gossip_host).unwrap_or_else(|e| {
eprintln!("failed to parse gossip-host: {}", e);
exit(1);
})
};
})
.unwrap_or_else(|| {
if let Some(entrypoint_addr) = entrypoint_addr {
solana_net_utils::get_public_ip_addr(&entrypoint_addr).unwrap_or_else(
|err| {
eprintln!(
"Failed to contact cluster entrypoint {}: {}",
entrypoint_addr, err
);
exit(1);
},
)
} else {
IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))
}
});
let gossip_addr = SocketAddr::new(
gossip_host,
@ -230,6 +244,8 @@ fn main() -> Result<(), Box<dyn error::Error>> {
}
}
("get-rpc-url", Some(matches)) => {
let any = matches.is_present("any");
let all = matches.is_present("all");
let entrypoint_addr = parse_entrypoint(&matches);
let timeout = value_t_or_exit!(matches, "timeout", u64);
let (nodes, _archivers) = discover(
@ -244,7 +260,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
let rpc_addrs: Vec<_> = nodes
.iter()
.filter_map(|contact_info| {
if (matches.is_present("all") || Some(contact_info.gossip) == entrypoint_addr)
if (any || all || Some(contact_info.gossip) == entrypoint_addr)
&& ContactInfo::is_valid_address(&contact_info.rpc)
{
return Some(contact_info.rpc);
@ -260,6 +276,9 @@ fn main() -> Result<(), Box<dyn error::Error>> {
for rpc_addr in rpc_addrs {
println!("http://{}", rpc_addr);
if any {
break;
}
}
}
("stop", Some(matches)) => {

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-install"
description = "The solana cluster software installer"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -26,11 +26,11 @@ reqwest = { version = "0.9.22", default-features = false, features = ["rustls-tl
serde = "1.0.102"
serde_derive = "1.0.102"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-config-program = { path = "../programs/config", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-config-program = { path = "../programs/config", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
tar = "0.4.26"
tempdir = "0.3.7"
url = "2.1.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-keygen"
version = "0.21.6"
version = "0.21.8"
description = "Solana key generation utility"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -14,8 +14,8 @@ clap = "2.33"
dirs = "2.0.2"
num_cpus = "1.11.1"
rpassword = "4.0"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
tiny-bip39 = "0.6.2"
[[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 = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -15,12 +15,12 @@ serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-ledger = { path = "../ledger", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-ledger = { path = "../ledger", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
[dev-dependencies]
assert_cmd = "0.11"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-ledger"
version = "0.21.6"
version = "0.21.8"
description = "Solana ledger"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -29,19 +29,19 @@ rayon = "1.2.0"
reed-solomon-erasure = { package = "solana-reed-solomon-erasure", version = "4.0.1-3", features = ["simd-accel"] }
serde = "1.0.102"
serde_derive = "1.0.102"
solana-client = { path = "../client", version = "0.21.6" }
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-measure = { path = "../measure", version = "0.21.6" }
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-perf = { path = "../perf", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.8" }
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-measure = { path = "../measure", version = "0.21.8" }
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-perf = { path = "../perf", version = "0.21.8" }
ed25519-dalek = "1.0.0-pre.1"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
sys-info = "0.5.8"
tar = "0.4.26"
tempfile = "3.1.0"
@ -56,7 +56,7 @@ features = ["lz4"]
[dev-dependencies]
assert_matches = "1.3.0"
matches = "0.1.6"
solana-budget-program = { path = "../programs/budget", version = "0.21.6" }
solana-budget-program = { path = "../programs/budget", version = "0.21.8" }
[lib]
crate-type = ["lib"]

View File

@ -11,6 +11,7 @@ use itertools::Itertools;
use log::*;
use rand::{seq::SliceRandom, thread_rng};
use rayon::{prelude::*, ThreadPool};
use solana_measure::thread_mem_usage;
use solana_metrics::{datapoint, datapoint_error, inc_new_counter_debug};
use solana_rayon_threadlimit::get_thread_count;
use solana_runtime::{
@ -282,6 +283,9 @@ pub fn process_blocktree_from_root(
opts: &ProcessOptions,
) -> result::Result<(BankForks, Vec<BankForksInfo>, LeaderScheduleCache), BlocktreeProcessorError> {
info!("processing ledger from root slot {}...", bank.slot());
let allocated = thread_mem_usage::Allocatedp::default();
let initial_allocation = allocated.get();
// Starting slot must be a root, and thus has no parents
assert!(bank.parent().is_none());
let start_slot = bank.slot();
@ -334,8 +338,9 @@ pub fn process_blocktree_from_root(
};
info!(
"ledger processed in {}ms. {} fork{} at {}",
"ledger processed in {}ms. {} MB allocated. {} fork{} at {}",
duration_as_ms(&now.elapsed()),
allocated.since(initial_allocation) / 1_000_000,
bank_forks_info.len(),
if bank_forks_info.len() > 1 { "s" } else { "" },
bank_forks_info
@ -451,6 +456,9 @@ fn process_next_slots(
// Only process full slots in blocktree_processor, replay_stage
// handles any partials
if next_meta.is_full() {
let allocated = thread_mem_usage::Allocatedp::default();
let initial_allocation = allocated.get();
let next_bank = Arc::new(Bank::new_from_parent(
&bank,
&leader_schedule_cache
@ -458,7 +466,12 @@ fn process_next_slots(
.unwrap(),
*next_slot,
));
trace!("Add child bank {} of slot={}", next_slot, bank.slot());
trace!(
"New bank for slot {}, parent slot is {}. {} bytes allocated",
next_slot,
bank.slot(),
allocated.since(initial_allocation)
);
pending_slots.push((*next_slot, next_meta, next_bank, bank.last_blockhash()));
} else {
let bfi = BankForksInfo {
@ -486,6 +499,7 @@ fn process_pending_slots(
let mut fork_info = vec![];
let mut last_status_report = Instant::now();
let mut pending_slots = vec![];
let mut last_root_slot = root_bank.slot();
process_next_slots(
root_bank,
root_meta,
@ -500,7 +514,10 @@ fn process_pending_slots(
let (slot, meta, bank, last_entry_hash) = pending_slots.pop().unwrap();
if last_status_report.elapsed() > Duration::from_secs(2) {
info!("processing ledger...slot {}", slot);
info!(
"processing ledger: slot={}, last root slot={}",
slot, last_root_slot
);
last_status_report = Instant::now();
}
@ -509,6 +526,9 @@ fn process_pending_slots(
continue;
}
let allocated = thread_mem_usage::Allocatedp::default();
let initial_allocation = allocated.get();
// Fetch all entries for this slot
let entries = blocktree.get_slot_entries(slot, 0, None).map_err(|err| {
warn!("Failed to load entries for slot {}: {:?}", slot, err);
@ -531,8 +551,16 @@ fn process_pending_slots(
bank.squash();
pending_slots.clear();
fork_info.clear();
last_root_slot = slot;
}
trace!(
"Bank for {}slot {} is complete. {} bytes allocated",
if last_root_slot == slot { "root " } else { "" },
slot,
allocated.since(initial_allocation)
);
if slot >= dev_halt_at_slot {
let bfi = BankForksInfo { bank_slot: slot };
fork_info.push((bank, bfi));

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-local-cluster"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -12,23 +12,23 @@ homepage = "https://solana.com/"
itertools = "0.8.1"
log = "0.4.8"
rand = "0.6.5"
solana-config-program = { path = "../programs/config", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-drone = { path = "../drone", version = "0.21.6" }
solana-exchange-program = { path = "../programs/exchange", version = "0.21.6" }
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.6" }
solana-ledger = { path = "../ledger", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-storage-program = { path = "../programs/storage", version = "0.21.6" }
solana-vest-program = { path = "../programs/vest", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-config-program = { path = "../programs/config", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-drone = { path = "../drone", version = "0.21.8" }
solana-exchange-program = { path = "../programs/exchange", version = "0.21.8" }
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.8" }
solana-ledger = { path = "../ledger", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-storage-program = { path = "../programs/storage", version = "0.21.8" }
solana-vest-program = { path = "../programs/vest", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
symlink = "0.1.0"
tempfile = "3.1.0"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.6" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.8" }
[dev-dependencies]
serial_test = "0.2.0"

View File

@ -158,6 +158,8 @@ fn test_validator_exit_2() {
let num_nodes = 2;
let mut validator_config = ValidatorConfig::default();
validator_config.rpc_config.enable_validator_exit = true;
validator_config.wait_for_supermajority = true;
let config = ClusterConfig {
cluster_lamports: 10_000,
node_stakes: vec![100; num_nodes],

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 = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -17,8 +17,8 @@ semver = "0.9.0"
serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
[[bin]]
name = "solana-log-analyzer"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-logger"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6"
version = "0.21.8"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "../README.md"
@ -11,4 +11,10 @@ license = "Apache-2.0"
edition = "2018"
[dependencies]
solana-sdk = { path = "../sdk", version = "0.21.6" }
log = "0.4.8"
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
[target."cfg(unix)".dependencies]
jemallocator = "0.3.2"
jemalloc-ctl = "0.3.2"

View File

@ -1 +1,9 @@
pub mod measure;
pub mod thread_mem_usage;
#[cfg(unix)]
extern crate jemallocator;
#[cfg(unix)]
#[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;

View File

@ -28,6 +28,7 @@ impl Allocatedp {
Self {}
}
/// Return current thread heap usage
pub fn get(&self) -> u64 {
#[cfg(unix)]
{
@ -36,4 +37,9 @@ impl Allocatedp {
#[cfg(not(unix))]
0
}
/// Return the difference in thread heap usage since a previous `get()`
pub fn since(&self, previous: u64) -> i64 {
self.get() as i64 - previous as i64
}
}

View File

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

View File

@ -1,6 +1,6 @@
[package]
name = "solana-metrics"
version = "0.21.6"
version = "0.21.8"
description = "Solana Metrics"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -13,7 +13,7 @@ env_logger = "0.7.1"
lazy_static = "1.4.0"
log = "0.4.8"
reqwest = { version = "0.9.22", default-features = false, features = ["rustls-tls"] }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
sys-info = "0.5.8"
[dev-dependencies]

View File

@ -278,7 +278,7 @@ setup_validator_accounts() {
return 0
}
rpc_url=$($solana_gossip get-rpc-url --entrypoint "$gossip_entrypoint")
rpc_url=$($solana_gossip get-rpc-url --entrypoint "$gossip_entrypoint" --any)
[[ -r "$identity_keypair_path" ]] || $solana_keygen new --no-passphrase -so "$identity_keypair_path"
[[ -r "$voting_keypair_path" ]] || $solana_keygen new --no-passphrase -so "$voting_keypair_path"

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 = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -16,8 +16,8 @@ semver = "0.9.0"
serde = "1.0.102"
serde_derive = "1.0.102"
serde_json = "1.0.41"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
rand = "0.6.5"
[[bin]]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-net-utils"
version = "0.21.6"
version = "0.21.8"
description = "Solana Network Utilities"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -18,8 +18,8 @@ rand = "0.6.1"
serde = "1.0.102"
serde_derive = "1.0.102"
socket2 = "0.3.11"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
tokio = "0.1"
tokio-codec = "0.1"

View File

@ -489,6 +489,7 @@ startBootstrapLeader() {
ssh "${sshOptions[@]}" -n "$ipAddress" \
"./solana/net/remote/remote-node.sh \
$deployMethod \
$ipAddress \
bootstrap-leader \
$entrypointIp \
$((${#validatorIpList[@]} + ${#blockstreamerIpList[@]} + ${#archiverIpList[@]})) \
@ -558,6 +559,7 @@ startNode() {
ssh "${sshOptions[@]}" -n "$ipAddress" \
"./solana/net/remote/remote-node.sh \
$deployMethod \
$ipAddress \
$nodeType \
$entrypointIp \
$((${#validatorIpList[@]} + ${#blockstreamerIpList[@]} + ${#archiverIpList[@]})) \

View File

@ -5,27 +5,28 @@ cd "$(dirname "$0")"/../..
set -x
deployMethod="$1"
nodeType="$2"
entrypointIp="$3"
numNodes="$4"
if [[ -n $5 ]]; then
export RUST_LOG="$5"
ipAddress="$2"
nodeType="$3"
entrypointIp="$4"
numNodes="$5"
if [[ -n $6 ]]; then
export RUST_LOG="$6"
fi
skipSetup="$6"
failOnValidatorBootupFailure="$7"
externalPrimordialAccountsFile="$8"
maybeDisableAirdrops="$9"
internalNodesStakeLamports="${10}"
internalNodesLamports="${11}"
nodeIndex="${12}"
numBenchTpsClients="${13}"
benchTpsExtraArgs="${14}"
numBenchExchangeClients="${15}"
benchExchangeExtraArgs="${16}"
genesisOptions="${17}"
extraNodeArgs="${18}"
gpuMode="${19:-auto}"
GEOLOCATION_API_KEY="${20}"
skipSetup="$7"
failOnValidatorBootupFailure="$8"
externalPrimordialAccountsFile="$9"
maybeDisableAirdrops="${10}"
internalNodesStakeLamports="${11}"
internalNodesLamports="${12}"
nodeIndex="${13}"
numBenchTpsClients="${14}"
benchTpsExtraArgs="${15}"
numBenchExchangeClients="${16}"
benchExchangeExtraArgs="${17}"
genesisOptions="${18}"
extraNodeArgs="${19}"
gpuMode="${20:-auto}"
GEOLOCATION_API_KEY="${21}"
set +x
# Use a very large stake (relative to the default multinode-demo/ stake of 42)
@ -42,6 +43,7 @@ missing() {
}
[[ -n $deployMethod ]] || missing deployMethod
[[ -n $ipAddress ]] || missing ipAddress
[[ -n $nodeType ]] || missing nodeType
[[ -n $entrypointIp ]] || missing entrypointIp
[[ -n $numNodes ]] || missing numNodes
@ -284,18 +286,22 @@ EOF
fi
args=(
--entrypoint "$entrypointIp:8001"
--gossip-port 8001
--rpc-port 8899
)
if [[ $nodeType = blockstreamer ]]; then
args+=(
--blockstream /tmp/solana-blockstream.sock
--entrypoint "$ipAddress:8001"
--gossip-port 9001
--no-voting
--dev-no-sigverify
--blockstream /tmp/solana-blockstream.sock
)
else
args+=(--enable-rpc-exit)
args+=(
--entrypoint "$entrypointIp:8001"
--gossip-port 8001
--enable-rpc-exit
)
if [[ -n $internalNodesLamports ]]; then
args+=(--node-lamports "$internalNodesLamports")
fi
@ -365,6 +371,11 @@ EOF
cat >> ~/solana/on-reboot <<EOF
~/solana/restart-explorer
echo --- Starting gossip spy node
ln -sfT gossip.log.\$now gossip.log
nohup solana-gossip spy --gossip-port 8001 --gossip-host "$ipAddress" --entrypoint $entrypointIp:8001 > gossip.log.\$now 2>&1 &
sleep 1
head gossip.log
EOF
fi

View File

@ -1,6 +1,6 @@
[package]
name = "solana-perf"
version = "0.21.6"
version = "0.21.8"
description = "Solana Performance APIs"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -18,11 +18,11 @@ serde_derive = "1.0.102"
dlopen_derive = "0.1.4"
lazy_static = "1.4.0"
log = "0.4.8"
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.6" }
solana-budget-program = { path = "../programs/budget", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.8" }
solana-budget-program = { path = "../programs/budget", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
[lib]
name = "solana_perf"

524
programs/bpf/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
[package]
name = "solana-bpf-programs"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-bpf-loader-program = { path = "../bpf_loader", version = "0.21.8" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana_rbpf = "=0.1.19"
[[bench]]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-128bit"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.21.6" }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.21.8" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-128bit-dep"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-alloc"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-dep-crate"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-external-spend"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-iter"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-many-args"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.21.6" }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.21.8" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-many-args-dep"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-noop"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-panic"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-param-passing"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.21.6" }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.21.8" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-param-passing-dep"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-sysval"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "0.21.8", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.6" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.8" }
[features]
program = ["solana-sdk/program"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-bpf-loader-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana BPF loader"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -14,8 +14,8 @@ byteorder = "1.3.2"
libc = "0.2.65"
log = "0.4.8"
serde = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana_rbpf = "=0.1.19"
[lib]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-btc-spv-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Bitcoin spv parsing program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -16,7 +16,7 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-sdk = { path = "../../sdk", version = "0.21.6"}
solana-sdk = { path = "../../sdk", version = "0.21.8"}
hex = "0.3.2"
[lib]

View File

@ -1,6 +1,6 @@
[package]
name = "btc_spv_bin"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6"
version = "0.21.8"
description = "Solana Budget program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -16,10 +16,10 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-config-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Config program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -14,8 +14,8 @@ chrono = { version = "0.4.10", features = ["serde"] }
log = "0.4.8"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-config-tests"
version = "0.21.6"
version = "0.21.8"
description = "Solana config api tests"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -13,11 +13,11 @@ bincode = "1.2.0"
log = "0.4.8"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-config-program = { path = "../config", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana-config-program = { path = "../config", version = "0.21.8" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
assert_matches = "1.3.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-exchange-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Exchange program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -13,12 +13,12 @@ bincode = "1.2.0"
log = "0.4.8"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-metrics = { path = "../../metrics", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-metrics = { path = "../../metrics", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

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

View File

@ -1,6 +1,6 @@
[package]
name = "solana-librapay-api"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6" }
solana-move-loader-program = { path = "../move_loader", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-move-loader-program = { path = "../move_loader", version = "0.21.8" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
language_e2e_tests = { version = "0.0.1-sol4", package = "solana_libra_language_e2e_tests" }
types = { version = "0.0.1-sol4", package = "solana_libra_types" }

View File

@ -1,6 +1,6 @@
[package]
name = "solana-move-loader-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Move loader"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -18,8 +18,8 @@ serde = "1.0.102"
serde_bytes = "0.11"
serde_derive = "1.0.102"
serde_json = "1.0.41"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
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 = "0.21.6"
version = "0.21.8"
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 = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-ownable-api"
version = "0.21.6"
version = "0.21.8"
description = "ownable program API"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -12,12 +12,12 @@ edition = "2018"
bincode = "1.2.0"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
num-derive = "0.3"
num-traits = "0.2"
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
[lib]
crate-type = ["lib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-stake-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Stake program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -16,11 +16,11 @@ num-traits = "0.2"
rand = "0.6.5"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-metrics = { path = "../../metrics", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-vote-program = { path = "../vote", version = "0.21.6" }
solana-config-program = { path = "../config", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-metrics = { path = "../../metrics", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana-vote-program = { path = "../vote", version = "0.21.8" }
solana-config-program = { path = "../config", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-stake-tests"
version = "0.21.6"
version = "0.21.8"
description = "Solana stake tests"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -10,11 +10,11 @@ edition = "2018"
[dependencies]
log = "0.4.8"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-stake-program = { path = "../stake", version = "0.21.6" }
solana-vote-program = { path = "../vote", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana-stake-program = { path = "../stake", version = "0.21.8" }
solana-vote-program = { path = "../vote", version = "0.21.8" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
assert_matches = "1.3.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-storage-program"
version = "0.21.6"
version = "0.21.8"
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.102"
serde_derive = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-storage-tests"
version = "0.21.6"
version = "0.21.8"
description = "Solana storage tests"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -10,11 +10,11 @@ edition = "2018"
[dependencies]
log = "0.4.8"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-storage-program = { path = "../storage", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana-storage-program = { path = "../storage", version = "0.21.8" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
assert_matches = "1.3.0"
bincode = "1.2.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-vest-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Vest program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -16,11 +16,11 @@ num-derive = "0.2"
num-traits = "0.2"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-config-program = { path = "../config", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
solana-config-program = { path = "../config", version = "0.21.8" }
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "0.21.6" }
solana-runtime = { path = "../../runtime", version = "0.21.8" }
[lib]
crate-type = ["lib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-vote-program"
version = "0.21.6"
version = "0.21.8"
description = "Solana Vote program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -15,9 +15,9 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.102"
serde_derive = "1.0.102"
solana-logger = { path = "../../logger", version = "0.21.6" }
solana-metrics = { path = "../../metrics", version = "0.21.6" }
solana-sdk = { path = "../../sdk", version = "0.21.6" }
solana-logger = { path = "../../logger", version = "0.21.8" }
solana-metrics = { path = "../../metrics", version = "0.21.8" }
solana-sdk = { path = "../../sdk", version = "0.21.8" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@ -1,6 +1,6 @@
[package]
name = "solana-rayon-threadlimit"
version = "0.21.6"
version = "0.21.8"
description = "solana-rayon-threadlimit"
homepage = "https://solana.com/"
readme = "../README.md"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-runtime"
version = "0.21.6"
version = "0.21.8"
description = "Solana runtime"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -24,17 +24,17 @@ rayon = "1.2.0"
serde = { version = "1.0.102", features = ["rc"] }
serde_derive = "1.0.102"
serde_json = "1.0.41"
solana-logger = { path = "../logger", version = "0.21.6" }
solana-measure = { path = "../measure", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-stake-program = { path = "../programs/stake", version = "0.21.6" }
solana-storage-program = { path = "../programs/storage", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-measure = { path = "../measure", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-stake-program = { path = "../programs/stake", version = "0.21.8" }
solana-storage-program = { path = "../programs/storage", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
sys-info = "0.5.8"
tempfile = "3.1.0"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.6" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.8" }
itertools = "0.8.2"
[lib]
@ -42,4 +42,4 @@ crate-type = ["lib"]
name = "solana_runtime"
[dev-dependencies]
solana-noop-program = { path = "../programs/noop", version = "0.21.6" }
solana-noop-program = { path = "../programs/noop", version = "0.21.8" }

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-scripts"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
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 = "0.21.6"
version = "0.21.8"
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.65"
rand_chacha = "0.1.1"
rand_core = { version = ">=0.2, <0.4", default-features = false }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
ed25519-dalek = "1.0.0-pre.1"
sha2 = "0.8.0"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-sdk"
version = "0.21.6"
version = "0.21.8"
description = "Solana SDK"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@ -46,9 +46,9 @@ serde_derive = "1.0.102"
serde_json = { version = "1.0.41", optional = true }
sha2 = "0.8.0"
ed25519-dalek = { version = "1.0.0-pre.1", optional = true }
solana-crate-features = { path = "../crate-features", version = "0.21.6", optional = true }
solana-logger = { path = "../logger", version = "0.21.6", optional = true }
solana-sdk-macro = { path = "macro", version = "0.21.6" }
solana-crate-features = { path = "../crate-features", version = "0.21.8", optional = true }
solana-logger = { path = "../logger", version = "0.21.8", optional = true }
solana-sdk-macro = { path = "macro", version = "0.21.8" }
[dev-dependencies]
tiny-bip39 = "0.6.2"

View File

@ -1,6 +1,6 @@
[package]
name = "solana-sdk-bpf-test"
version = "0.21.6"
version = "0.21.8"
description = "Solana BPF SDK test utilities"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"

View File

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

View File

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

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-validator"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -15,21 +15,22 @@ chrono = { version = "0.4.10", features = ["serde"] }
console = "0.9.1"
log = "0.4.8"
indicatif = "0.13.0"
rand = "0.6.5"
reqwest = { version = "0.9.22", default-features = false }
serde_json = "1.0.41"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-core = { path = "../core", version = "0.21.6" }
solana-drone = { path = "../drone", version = "0.21.6" }
solana-ledger = { path = "../ledger", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-perf = { path = "../perf", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-net-utils = { path = "../net-utils", version = "0.21.6" }
solana-runtime = { path = "../runtime", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-vote-program = { path = "../programs/vote", version = "0.21.6" }
solana-vote-signer = { path = "../vote-signer", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-core = { path = "../core", version = "0.21.8" }
solana-drone = { path = "../drone", version = "0.21.8" }
solana-ledger = { path = "../ledger", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-perf = { path = "../perf", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-net-utils = { path = "../net-utils", version = "0.21.8" }
solana-runtime = { path = "../runtime", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
solana-vote-program = { path = "../programs/vote", version = "0.21.8" }
solana-vote-signer = { path = "../vote-signer", version = "0.21.8" }
tar = "0.4.26"
tempfile = "3.1.0"

View File

@ -3,6 +3,7 @@ use clap::{crate_description, crate_name, value_t, value_t_or_exit, App, Arg};
use console::{style, Emoji};
use indicatif::{ProgressBar, ProgressStyle};
use log::*;
use rand::{thread_rng, Rng};
use solana_clap_utils::{
input_parsers::pubkey_of,
input_validators::{is_keypair, is_pubkey_or_keypair},
@ -217,15 +218,16 @@ fn get_rpc_addr(
.any(|contact_info| contact_info.gossip == *entrypoint_gossip);
if found_entrypoint & !rpc_peers.is_empty() {
// Prefer the entrypoint's RPC service it it has one, otherwise pick the first RPC
// service found
// Prefer the entrypoint's RPC service if present, otherwise pick a node at random
if let Some(contact_info) = rpc_peers
.iter()
.find(|contact_info| contact_info.gossip == *entrypoint_gossip)
{
break (contact_info.id, contact_info.rpc);
}
break (rpc_peers[0].id, rpc_peers[0].rpc);
let i = thread_rng().gen_range(0, rpc_peers.len());
break (rpc_peers[i].id, rpc_peers[i].rpc);
}
sleep(Duration::from_secs(1));
@ -537,6 +539,12 @@ pub fn main() {
.takes_value(true)
.help("Redirect logging to the specified file, '-' for standard error"),
)
.arg(
Arg::with_name("wait_for_supermajority")
.long("wait-for-supermajority")
.takes_value(false)
.help("After processing the ledger, wait until a supermajority of stake is visible on gossip before starting PoH"),
)
.get_matches();
let identity_keypair = Arc::new(
@ -582,6 +590,7 @@ pub fn main() {
validator_config.dev_halt_at_slot = value_t!(matches, "dev_halt_at_slot", Slot).ok();
validator_config.rpc_config.enable_validator_exit = matches.is_present("enable_rpc_exit");
validator_config.wait_for_supermajority = matches.is_present("wait_for_supermajority");
validator_config.rpc_config.drone_addr = matches.value_of("rpc_drone_addr").map(|address| {
solana_net_utils::parse_host_port(address).expect("failed to parse drone address")

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-vote-signer"
description = "Solana Vote Signing Service"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -17,9 +17,9 @@ jsonrpc-http-server = "14.0.3"
log = "0.4.8"
serde = "1.0.102"
serde_json = "1.0.41"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
[lib]
crate-type = ["lib"]

View File

@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-watchtower"
description = "Blockchain, Rebuilt for Scale"
version = "0.21.6"
version = "0.21.8"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@ -13,11 +13,11 @@ clap = "2.33.0"
log = "0.4.8"
reqwest = { version = "0.9.24", default-features = false, features = ["rustls-tls"] }
serde_json = "1.0"
solana-clap-utils = { path = "../clap-utils", version = "0.21.6" }
solana-client = { path = "../client", version = "0.21.6" }
solana-logger = { path = "../logger", version = "0.21.6" }
solana-metrics = { path = "../metrics", version = "0.21.6" }
solana-sdk = { path = "../sdk", version = "0.21.6" }
solana-clap-utils = { path = "../clap-utils", version = "0.21.8" }
solana-client = { path = "../client", version = "0.21.8" }
solana-logger = { path = "../logger", version = "0.21.8" }
solana-metrics = { path = "../metrics", version = "0.21.8" }
solana-sdk = { path = "../sdk", version = "0.21.8" }
[[bin]]
name = "solana-watchtower"