Compare commits
13 Commits
Author | SHA1 | Date | |
---|---|---|---|
5226d2b1de | |||
57bc9c3ee7 | |||
d4b23a0cc9 | |||
d6c1cf2499 | |||
63db9d6933 | |||
3db644320e | |||
e29fffbdb8 | |||
f5e6259199 | |||
0c2f002774 | |||
9815dcc159 | |||
87a46ffc30 | |||
19215ddaa2 | |||
e35bd54d99 |
612
Cargo.lock
generated
612
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-archiver"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-banking-bench"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-measure = { path = "../measure", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-measure = { path = "../measure", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
rand = "0.6.5"
|
||||
crossbeam-channel = "0.3"
|
||||
|
@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-bench-exchange"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-genesis = { path = "../genesis", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-drone = { path = "../drone", version = "0.21.5" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-genesis = { path = "../genesis", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-drone = { path = "../drone", version = "0.21.7" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
untrusted = "0.7.0"
|
||||
ws = "0.9.1"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-local-cluster = { path = "../local-cluster", version = "0.21.5" }
|
||||
solana-local-cluster = { path = "../local-cluster", version = "0.21.7" }
|
||||
|
@ -2,14 +2,14 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-bench-streamer"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
|
@ -2,7 +2,7 @@
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-bench-tps"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-genesis = { path = "../genesis", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-drone = { path = "../drone", version = "0.21.5" }
|
||||
solana-librapay-api = { path = "../programs/librapay_api", version = "0.21.5", optional = true }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-measure = { path = "../measure", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-move-loader-program = { path = "../programs/move_loader", version = "0.21.5", optional = true }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-genesis = { path = "../genesis", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-drone = { path = "../drone", version = "0.21.7" }
|
||||
solana-librapay-api = { path = "../programs/librapay_api", version = "0.21.7", optional = true }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-measure = { path = "../measure", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-move-loader-program = { path = "../programs/move_loader", version = "0.21.7", optional = true }
|
||||
|
||||
[dev-dependencies]
|
||||
serial_test = "0.2.0"
|
||||
serial_test_derive = "0.2.0"
|
||||
solana-local-cluster = { path = "../local-cluster", version = "0.21.5" }
|
||||
solana-local-cluster = { path = "../local-cluster", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
move = ["solana-librapay-api", "solana-move-loader-program"]
|
||||
|
@ -177,7 +177,7 @@ $ solana send-timestamp <PUBKEY> <PROCESS_ID> --date 2018-12-24T23:59:00
|
||||
## Usage
|
||||
### solana-cli
|
||||
```text
|
||||
solana-cli 0.21.5
|
||||
solana-cli 0.21.7
|
||||
Blockchain, Rebuilt for Scale
|
||||
|
||||
USAGE:
|
||||
|
@ -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.5,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.7,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.5,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.7,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.5,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.7,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
|
||||
|
@ -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.5`
|
||||
* `B = (1 - 0.0.21.5) ^ (12800 / 32) = 0.42583`
|
||||
* `S = SUM of i=0 -> 32 for binomial(prob_failure = 0.2775, trials = 64, failures = i) = 0.0.21.7`
|
||||
* `B = (1 - 0.0.21.7) ^ (12800 / 32) = 0.42583`
|
||||
|
||||
With FEC rate of `32:32`
|
||||
* `G = 12800`
|
||||
|
@ -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.
|
||||
|
@ -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.5` or higher by running `solana-keygen -V`
|
||||
After installation, ensure your version is `0.21.7` or higher by running `solana-keygen -V`
|
||||
{% endhint %}
|
||||
|
||||
## Download
|
||||
|
@ -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.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-chacha-sys"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "Solana chacha-sys"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-clap-utils"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
tiny-bip39 = "0.6.2"
|
||||
url = "2.1.0"
|
||||
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-cli"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.5" }
|
||||
solana-drone = { path = "../drone", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.5" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.7" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.7" }
|
||||
solana-drone = { path = "../drone", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.7" }
|
||||
url = "2.1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.5" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.7" }
|
||||
tempfile = "3.1.0"
|
||||
|
||||
[[bin]]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-client"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
jsonrpc-core = "14.0.3"
|
||||
jsonrpc-http-server = "14.0.3"
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "solana-core"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.5" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-drone = { path = "../drone", version = "0.21.5" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.7" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-chacha-sys = { path = "../chacha-sys", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-drone = { path = "../drone", version = "0.21.7" }
|
||||
ed25519-dalek = "1.0.0-pre.1"
|
||||
solana-ledger = { path = "../ledger", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-measure = { path = "../measure", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-perf = { path = "../perf", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.5" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-measure = { path = "../measure", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-perf = { path = "../perf", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.7" }
|
||||
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.5" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.7" }
|
||||
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"
|
||||
|
@ -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};
|
||||
|
@ -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,
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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::{
|
||||
|
@ -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};
|
||||
|
@ -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,27 +141,7 @@ 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);
|
||||
|
||||
@ -293,14 +276,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 +297,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 +345,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,
|
||||
@ -579,6 +578,61 @@ 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();
|
||||
|
||||
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()
|
||||
.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::*;
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-crate-features"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "Solana Crate Features"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-drone"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
tokio = "0.1"
|
||||
tokio-codec = "0.1"
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-fixed-buf"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "A fixed-size byte array that supports bincode serde"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-genesis-programs"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.5" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.5" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.5" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.7" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.7" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.7" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.7" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-genesis"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.5" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.7" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
tempfile = "3.1.0"
|
||||
|
@ -3,19 +3,19 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-gossip"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
|
||||
|
||||
|
||||
|
@ -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)) => {
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-install"
|
||||
description = "The solana cluster software installer"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
tar = "0.4.26"
|
||||
tempdir = "0.3.7"
|
||||
url = "2.1.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-keygen"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
tiny-bip39 = "0.6.2"
|
||||
|
||||
[[bin]]
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-ledger-tool"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
assert_cmd = "0.11"
|
||||
|
@ -30,6 +30,7 @@ enum LedgerOutputMethod {
|
||||
}
|
||||
|
||||
fn output_slot(blocktree: &Blocktree, slot: Slot, method: &LedgerOutputMethod) {
|
||||
println!("Slot Meta {:?}", blocktree.meta(slot));
|
||||
let entries = blocktree
|
||||
.get_slot_entries(slot, 0, None)
|
||||
.unwrap_or_else(|err| {
|
||||
@ -436,7 +437,14 @@ fn main() {
|
||||
)
|
||||
.subcommand(
|
||||
SubCommand::with_name("bounds")
|
||||
.about("Print lowest and highest non-empty slots. Note: This ignores gaps in slots")
|
||||
.about("Print lowest and highest non-empty slots. Note that there may be empty slots within the bounds")
|
||||
.arg(
|
||||
Arg::with_name("all")
|
||||
.long("all")
|
||||
.takes_value(false)
|
||||
.required(false)
|
||||
.help("Additionally print all the non-empty slots within the bounds"),
|
||||
)
|
||||
)
|
||||
.subcommand(
|
||||
SubCommand::with_name("json")
|
||||
@ -719,8 +727,10 @@ fn main() {
|
||||
}
|
||||
});
|
||||
}
|
||||
("bounds", _) => match blocktree.slot_meta_iterator(0) {
|
||||
("bounds", Some(args_matches)) => match blocktree.slot_meta_iterator(0) {
|
||||
Ok(metas) => {
|
||||
let all = args_matches.is_present("all");
|
||||
|
||||
println!("Collecting Ledger information...");
|
||||
let slots: Vec<_> = metas.map(|(slot, _)| slot).collect();
|
||||
if slots.is_empty() {
|
||||
@ -729,10 +739,10 @@ fn main() {
|
||||
let first = slots.first().unwrap();
|
||||
let last = slots.last().unwrap_or_else(|| first);
|
||||
if first != last {
|
||||
println!(
|
||||
"Ledger contains some data for slots {:?} to {:?}",
|
||||
first, last
|
||||
);
|
||||
println!("Ledger contains data from slots {:?} to {:?}", first, last);
|
||||
if all {
|
||||
println!("Non-empty slots: {:?}", slots);
|
||||
}
|
||||
} else {
|
||||
println!("Ledger only contains some data for slot {:?}", first);
|
||||
}
|
||||
|
@ -31,6 +31,7 @@ fn bad_arguments() {
|
||||
fn nominal() {
|
||||
let genesis_config = create_genesis_config(100).genesis_config;
|
||||
let ticks_per_slot = genesis_config.ticks_per_slot;
|
||||
let meta_lines = 1;
|
||||
|
||||
let (ledger_path, _blockhash) = create_new_tmp_ledger!(&genesis_config);
|
||||
let ticks = ticks_per_slot as usize;
|
||||
@ -44,5 +45,5 @@ fn nominal() {
|
||||
// Print everything
|
||||
let output = run_ledger_tool(&["-l", &ledger_path, "print"]);
|
||||
assert!(output.status.success());
|
||||
assert_eq!(count_newlines(&output.stdout), ticks + 1);
|
||||
assert_eq!(count_newlines(&output.stdout), ticks + meta_lines + 1);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-ledger"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-measure = { path = "../measure", version = "0.21.5" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-perf = { path = "../perf", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-measure = { path = "../measure", version = "0.21.7" }
|
||||
solana-merkle-tree = { path = "../merkle-tree", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-perf = { path = "../perf", version = "0.21.7" }
|
||||
ed25519-dalek = "1.0.0-pre.1"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
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.5" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@ -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::{
|
||||
@ -269,7 +270,7 @@ pub fn process_blocktree(
|
||||
|
||||
// Setup bank for slot 0
|
||||
let bank0 = Arc::new(Bank::new_with_paths(&genesis_config, account_paths));
|
||||
info!("processing ledger for bank 0...");
|
||||
info!("processing ledger for slot 0...");
|
||||
process_bank_0(&bank0, blocktree, &opts)?;
|
||||
process_blocktree_from_root(genesis_config, blocktree, bank0, &opts)
|
||||
}
|
||||
@ -281,7 +282,10 @@ pub fn process_blocktree_from_root(
|
||||
bank: Arc<Bank>,
|
||||
opts: &ProcessOptions,
|
||||
) -> result::Result<(BankForks, Vec<BankForksInfo>, LeaderScheduleCache), BlocktreeProcessorError> {
|
||||
info!("processing ledger from root: {}...", bank.slot());
|
||||
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();
|
||||
@ -294,7 +298,7 @@ pub fn process_blocktree_from_root(
|
||||
|
||||
blocktree
|
||||
.set_roots(&[start_slot])
|
||||
.expect("Couldn't set root on startup");
|
||||
.expect("Couldn't set root slot on startup");
|
||||
|
||||
let meta = blocktree.meta(start_slot).unwrap();
|
||||
|
||||
@ -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...block {}", 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));
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-local-cluster"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-drone = { path = "../drone", version = "0.21.5" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "0.21.5" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.5" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.5" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-config-program = { path = "../programs/config", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-drone = { path = "../drone", version = "0.21.7" }
|
||||
solana-exchange-program = { path = "../programs/exchange", version = "0.21.7" }
|
||||
solana-genesis-programs = { path = "../genesis-programs", version = "0.21.7" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.7" }
|
||||
solana-vest-program = { path = "../programs/vest", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
symlink = "0.1.0"
|
||||
tempfile = "3.1.0"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.5" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
serial_test = "0.2.0"
|
||||
|
@ -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],
|
||||
|
@ -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.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
|
||||
[[bin]]
|
||||
name = "solana-log-analyzer"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-logger"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "Solana Logger"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "solana-measure"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
log = "0.4.8"
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
|
||||
[target."cfg(unix)".dependencies]
|
||||
jemallocator = "0.3.2"
|
||||
jemalloc-ctl = "0.3.2"
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-merkle-tree"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
hex = "0.4.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-metrics"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
sys-info = "0.5.8"
|
||||
|
||||
[dev-dependencies]
|
||||
|
@ -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"
|
||||
|
@ -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.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
rand = "0.6.5"
|
||||
|
||||
[[bin]]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-net-utils"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
tokio = "0.1"
|
||||
tokio-codec = "0.1"
|
||||
|
||||
|
@ -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[@]})) \
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-perf"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.5" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.7" }
|
||||
solana-budget-program = { path = "../programs/budget", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
name = "solana_perf"
|
||||
|
@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "solana-bpf-programs"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-bpf-loader-program = { path = "../bpf_loader", version = "0.21.7" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana_rbpf = "=0.1.19"
|
||||
|
||||
[[bench]]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-128bit"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "0.21.7" }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-128bit-dep"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-alloc"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-dep-crate"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-external-spend"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-iter"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-many-args"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "0.21.7" }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-many-args-dep"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-noop"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-panic"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-param-passing"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "0.21.7" }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-param-passing-dep"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
[package]
|
||||
name = "solana-bpf-rust-sysval"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", default-features = false }
|
||||
solana-sdk = { path = "../../../../sdk/", version = "0.21.7", default-features = false }
|
||||
|
||||
[dev_dependencies]
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.5" }
|
||||
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "0.21.7" }
|
||||
|
||||
[features]
|
||||
program = ["solana-sdk/program"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-bpf-loader-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana_rbpf = "=0.1.19"
|
||||
|
||||
[lib]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-btc-spv-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5"}
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7"}
|
||||
hex = "0.3.2"
|
||||
|
||||
[lib]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "btc_spv_bin"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "Solana Bitcoin spv parsing program"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-budget-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-config-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-config-tests"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-config-program = { path = "../config", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana-config-program = { path = "../config", version = "0.21.7" }
|
||||
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
assert_matches = "1.3.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-exchange-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-failure-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-librapay-api"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-move-loader-program = { path = "../move_loader", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-move-loader-program = { path = "../move_loader", version = "0.21.7" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
language_e2e_tests = { version = "0.0.1-sol4", package = "solana_libra_language_e2e_tests" }
|
||||
types = { version = "0.0.1-sol4", package = "solana_libra_types" }
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-move-loader-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
bytecode_verifier = { version = "0.0.1-sol4", package = "solana_libra_bytecode_verifier" }
|
||||
canonical_serialization = { version = "0.0.1-sol4", package = "solana_libra_canonical_serialization" }
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-noop-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-ownable-api"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
num-derive = "0.3"
|
||||
num-traits = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-stake-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../vote", version = "0.21.5" }
|
||||
solana-config-program = { path = "../config", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../vote", version = "0.21.7" }
|
||||
solana-config-program = { path = "../config", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-stake-tests"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../stake", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../vote", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../stake", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../vote", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
assert_matches = "1.3.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-storage-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-storage-tests"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../storage", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../storage", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
assert_matches = "1.3.0"
|
||||
bincode = "1.2.0"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-vest-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-config-program = { path = "../config", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
solana-config-program = { path = "../config", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.5" }
|
||||
solana-runtime = { path = "../../runtime", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-vote-program"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.5" }
|
||||
solana-logger = { path = "../../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../../metrics", version = "0.21.7" }
|
||||
solana-sdk = { path = "../../sdk", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib", "cdylib"]
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-rayon-threadlimit"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "solana-rayon-threadlimit"
|
||||
homepage = "https://solana.com/"
|
||||
readme = "../README.md"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-runtime"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-measure = { path = "../measure", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.5" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-measure = { path = "../measure", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-stake-program = { path = "../programs/stake", version = "0.21.7" }
|
||||
solana-storage-program = { path = "../programs/storage", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
sys-info = "0.5.8"
|
||||
tempfile = "3.1.0"
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.5" }
|
||||
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "0.21.7" }
|
||||
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.5" }
|
||||
solana-noop-program = { path = "../programs/noop", version = "0.21.7" }
|
||||
|
@ -44,6 +44,7 @@ use solana_sdk::{
|
||||
timing::years_as_slots,
|
||||
transaction::{Result, Transaction, TransactionError},
|
||||
};
|
||||
use solana_stake_program::stake_state::Delegation;
|
||||
use std::{
|
||||
collections::HashMap,
|
||||
io::{BufReader, Cursor, Error as IOError, Read},
|
||||
@ -1554,6 +1555,12 @@ impl Bank {
|
||||
self.storage_accounts.read().unwrap().clone()
|
||||
}
|
||||
|
||||
/// current stake delegations for this bank
|
||||
/// Note: this method is exposed publicly for external usage
|
||||
pub fn stake_delegations(&self) -> HashMap<Pubkey, Delegation> {
|
||||
self.stakes.read().unwrap().stake_delegations().clone()
|
||||
}
|
||||
|
||||
/// current vote accounts for this bank along with the stake
|
||||
/// attributed to each account
|
||||
pub fn vote_accounts(&self) -> HashMap<Pubkey, (u64, Account)> {
|
||||
@ -1688,7 +1695,10 @@ mod tests {
|
||||
system_instruction,
|
||||
sysvar::{fees::Fees, rewards::Rewards},
|
||||
};
|
||||
use solana_stake_program::stake_state::{Delegation, Stake};
|
||||
use solana_stake_program::{
|
||||
stake_instruction,
|
||||
stake_state::{Authorized, Delegation, Stake},
|
||||
};
|
||||
use solana_vote_program::{
|
||||
vote_instruction,
|
||||
vote_state::{self, Vote, VoteInit, VoteState, MAX_LOCKOUT_HISTORY},
|
||||
@ -3622,6 +3632,54 @@ mod tests {
|
||||
assert_eq!(vote_accounts.len(), 1);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bank_stake_delegations() {
|
||||
let GenesisConfigInfo {
|
||||
genesis_config,
|
||||
mint_keypair,
|
||||
..
|
||||
} = create_genesis_config_with_leader(500, &Pubkey::new_rand(), 1);
|
||||
let bank = Arc::new(Bank::new(&genesis_config));
|
||||
|
||||
let stake_delegations = bank.stake_delegations();
|
||||
assert_eq!(stake_delegations.len(), 1); // bootstrap leader has
|
||||
// to have a stake delegation
|
||||
|
||||
let vote_keypair = Keypair::new();
|
||||
let mut instructions = vote_instruction::create_account(
|
||||
&mint_keypair.pubkey(),
|
||||
&vote_keypair.pubkey(),
|
||||
&VoteInit {
|
||||
node_pubkey: mint_keypair.pubkey(),
|
||||
authorized_voter: vote_keypair.pubkey(),
|
||||
authorized_withdrawer: vote_keypair.pubkey(),
|
||||
commission: 0,
|
||||
},
|
||||
10,
|
||||
);
|
||||
|
||||
let stake_keypair = Keypair::new();
|
||||
instructions.extend(stake_instruction::create_stake_account_and_delegate_stake(
|
||||
&mint_keypair.pubkey(),
|
||||
&stake_keypair.pubkey(),
|
||||
&vote_keypair.pubkey(),
|
||||
&Authorized::auto(&stake_keypair.pubkey()),
|
||||
10,
|
||||
));
|
||||
|
||||
let transaction = Transaction::new_signed_instructions(
|
||||
&[&mint_keypair, &vote_keypair, &stake_keypair],
|
||||
instructions,
|
||||
bank.last_blockhash(),
|
||||
);
|
||||
|
||||
bank.process_transaction(&transaction).unwrap();
|
||||
|
||||
let stake_delegations = bank.stake_delegations();
|
||||
assert_eq!(stake_delegations.len(), 2);
|
||||
assert!(stake_delegations.get(&stake_keypair.pubkey()).is_some());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_bank_fees_account() {
|
||||
let (mut genesis_config, _) = create_genesis_config(500);
|
||||
|
@ -178,6 +178,10 @@ impl Stakes {
|
||||
&self.vote_accounts
|
||||
}
|
||||
|
||||
pub fn stake_delegations(&self) -> &HashMap<Pubkey, Delegation> {
|
||||
&self.stake_delegations
|
||||
}
|
||||
|
||||
pub fn highest_staked_node(&self) -> Option<Pubkey> {
|
||||
self.vote_accounts
|
||||
.iter()
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-scripts"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk-c"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
ed25519-dalek = "1.0.0-pre.1"
|
||||
sha2 = "0.8.0"
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5", optional = true }
|
||||
solana-logger = { path = "../logger", version = "0.21.5", optional = true }
|
||||
solana-sdk-macro = { path = "macro" }
|
||||
solana-crate-features = { path = "../crate-features", version = "0.21.7", optional = true }
|
||||
solana-logger = { path = "../logger", version = "0.21.7", optional = true }
|
||||
solana-sdk-macro = { path = "macro", version = "0.21.7" }
|
||||
|
||||
[dev-dependencies]
|
||||
tiny-bip39 = "0.6.2"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk-bpf-test"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "Solana BPF SDK test utilities"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-sdk-macro"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
description = "Solana SDK Macro"
|
||||
authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "solana-upload-perf"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
|
||||
[[bin]]
|
||||
name = "solana-upload-perf"
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-validator"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
repository = "https://github.com/solana-labs/solana"
|
||||
license = "Apache-2.0"
|
||||
homepage = "https://solana.com/"
|
||||
@ -17,19 +17,19 @@ log = "0.4.8"
|
||||
indicatif = "0.13.0"
|
||||
reqwest = { version = "0.9.22", default-features = false }
|
||||
serde_json = "1.0.41"
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-core = { path = "../core", version = "0.21.5" }
|
||||
solana-drone = { path = "../drone", version = "0.21.5" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-perf = { path = "../perf", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.5" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.5" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-core = { path = "../core", version = "0.21.7" }
|
||||
solana-drone = { path = "../drone", version = "0.21.7" }
|
||||
solana-ledger = { path = "../ledger", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-perf = { path = "../perf", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-net-utils = { path = "../net-utils", version = "0.21.7" }
|
||||
solana-runtime = { path = "../runtime", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
solana-vote-program = { path = "../programs/vote", version = "0.21.7" }
|
||||
solana-vote-signer = { path = "../vote-signer", version = "0.21.7" }
|
||||
tar = "0.4.26"
|
||||
tempfile = "3.1.0"
|
||||
|
||||
|
@ -537,6 +537,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 +588,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")
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-vote-signer"
|
||||
description = "Solana Vote Signing Service"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
|
||||
[lib]
|
||||
crate-type = ["lib"]
|
||||
|
@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
|
||||
edition = "2018"
|
||||
name = "solana-watchtower"
|
||||
description = "Blockchain, Rebuilt for Scale"
|
||||
version = "0.21.5"
|
||||
version = "0.21.7"
|
||||
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.5" }
|
||||
solana-client = { path = "../client", version = "0.21.5" }
|
||||
solana-logger = { path = "../logger", version = "0.21.5" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.5" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.5" }
|
||||
solana-clap-utils = { path = "../clap-utils", version = "0.21.7" }
|
||||
solana-client = { path = "../client", version = "0.21.7" }
|
||||
solana-logger = { path = "../logger", version = "0.21.7" }
|
||||
solana-metrics = { path = "../metrics", version = "0.21.7" }
|
||||
solana-sdk = { path = "../sdk", version = "0.21.7" }
|
||||
|
||||
[[bin]]
|
||||
name = "solana-watchtower"
|
||||
|
Reference in New Issue
Block a user