Compare commits

..

9 Commits

Author SHA1 Message Date
mergify[bot]
02a83e7c6e Allow lower shred count (#9410) (#9451)
automerge
2020-04-11 14:49:32 -07:00
sakridge
83263e1737 Calculate account refs fix (#9448) 2020-04-11 12:56:20 -07:00
mergify[bot]
1f7ac22b60 Don't subject authorizing a new stake authority to lockup (#9434) (#9441)
automerge
2020-04-10 17:25:15 -07:00
Michael Vines
747debae56 Cache downloads to speed up CI
(cherry picked from commit b4e00275b2)
2020-04-10 12:25:49 -07:00
mergify[bot]
00b4186469 Improve coverage.sh usability when used locally (#9054) (#9424)
automerge
2020-04-10 05:59:35 -07:00
mergify[bot]
b087dabf4f Rpc: Add getConfirmedSignaturesForAddress (#9407) (#9417)
automerge
2020-04-09 21:20:28 -07:00
mergify[bot]
e00eb0a069 Remove Trust Wallet Beta install instructions (#9396) (#9397)
automerge
2020-04-09 08:52:04 -07:00
mergify[bot]
d4e49ffd06 Rpc: Add getConfirmedTransaction (#9381) (#9392)
automerge
2020-04-09 01:00:34 -07:00
Michael Vines
0f34a190ea Bump version to 1.0.16 2020-04-09 00:05:16 -07:00
98 changed files with 1456 additions and 879 deletions

704
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-archiver-lib"
version = "1.0.15"
version = "1.0.16"
description = "Solana Archiver Library"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -15,22 +15,22 @@ ed25519-dalek = "=1.0.0-pre.1"
log = "0.4.8"
rand = "0.6.5"
rand_chacha = "0.1.1"
solana-client = { path = "../client", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
thiserror = "1.0"
serde = "1.0.104"
serde_json = "1.0.46"
serde_derive = "1.0.103"
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-chacha = { path = "../chacha", version = "1.0.15" }
solana-chacha-sys = { path = "../chacha-sys", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-archiver-utils = { path = "../archiver-utils", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-chacha = { path = "../chacha", version = "1.0.16" }
solana-chacha-sys = { path = "../chacha-sys", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-archiver-utils = { path = "../archiver-utils", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
[dev-dependencies]
hex = "0.4.0"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-archiver-utils"
version = "1.0.15"
version = "1.0.16"
description = "Solana Archiver Utils"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -11,12 +11,12 @@ edition = "2018"
[dependencies]
log = "0.4.8"
rand = "0.6.5"
solana-chacha = { path = "../chacha", version = "1.0.15" }
solana-chacha-sys = { path = "../chacha-sys", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-chacha = { path = "../chacha", version = "1.0.16" }
solana-chacha-sys = { path = "../chacha-sys", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
[dev-dependencies]
hex = "0.4.0"

View File

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

View File

@@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-banking-bench"
version = "1.0.15"
version = "1.0.16"
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 = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-measure = { path = "../measure", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-measure = { path = "../measure", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
rand = "0.6.5"
crossbeam-channel = "0.3"

View File

@@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-exchange"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -18,17 +18,17 @@ rand = "0.6.5"
rayon = "1.2.0"
serde_json = "1.0.46"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-genesis = { path = "../genesis", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-faucet = { path = "../faucet", version = "1.0.15" }
solana-exchange-program = { path = "../programs/exchange", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-genesis = { path = "../genesis", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-faucet = { path = "../faucet", version = "1.0.16" }
solana-exchange-program = { path = "../programs/exchange", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
[dev-dependencies]
solana-local-cluster = { path = "../local-cluster", version = "1.0.15" }
solana-local-cluster = { path = "../local-cluster", version = "1.0.16" }

View File

@@ -2,14 +2,14 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-streamer"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
clap = "2.33.0"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }

View File

@@ -2,7 +2,7 @@
authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-bench-tps"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -14,24 +14,24 @@ log = "0.4.8"
rayon = "1.2.0"
serde_json = "1.0.46"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-genesis = { path = "../genesis", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-faucet = { path = "../faucet", version = "1.0.15" }
solana-librapay = { path = "../programs/librapay", version = "1.0.15", optional = true }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-measure = { path = "../measure", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-move-loader-program = { path = "../programs/move_loader", version = "1.0.15", optional = true }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-genesis = { path = "../genesis", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-faucet = { path = "../faucet", version = "1.0.16" }
solana-librapay = { path = "../programs/librapay", version = "1.0.16", optional = true }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-measure = { path = "../measure", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-move-loader-program = { path = "../programs/move_loader", version = "1.0.16", optional = true }
[dev-dependencies]
serial_test = "0.3.2"
serial_test_derive = "0.4.0"
solana-local-cluster = { path = "../local-cluster", version = "1.0.15" }
solana-local-cluster = { path = "../local-cluster", version = "1.0.16" }
[features]
move = ["solana-librapay", "solana-move-loader-program"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-chacha-cuda"
version = "1.0.15"
version = "1.0.16"
description = "Solana Chacha Cuda APIs"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -10,12 +10,12 @@ edition = "2018"
[dependencies]
log = "0.4.8"
solana-archiver-utils = { path = "../archiver-utils", version = "1.0.15" }
solana-chacha = { path = "../chacha", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-archiver-utils = { path = "../archiver-utils", version = "1.0.16" }
solana-chacha = { path = "../chacha", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
[dev-dependencies]
hex-literal = "0.2.1"

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-chacha"
version = "1.0.15"
version = "1.0.16"
description = "Solana Chacha APIs"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,11 +12,11 @@ edition = "2018"
log = "0.4.8"
rand = "0.6.5"
rand_chacha = "0.1.1"
solana-chacha-sys = { path = "../chacha-sys", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-chacha-sys = { path = "../chacha-sys", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
[dev-dependencies]
hex-literal = "0.2.1"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-clap-utils"
version = "1.0.15"
version = "1.0.16"
description = "Solana utilities for the clap"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -11,8 +11,8 @@ edition = "2018"
[dependencies]
clap = "2.33.0"
rpassword = "4.0"
solana-remote-wallet = { path = "../remote-wallet", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
thiserror = "1.0.11"
tiny-bip39 = "0.7.0"
url = "2.1.0"

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-cli-config"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-cli"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -26,28 +26,28 @@ reqwest = { version = "0.10.1", default-features = false, features = ["blocking"
serde = "1.0.104"
serde_derive = "1.0.103"
serde_json = "1.0.46"
solana-budget-program = { path = "../programs/budget", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-cli-config = { path = "../cli-config", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-config-program = { path = "../programs/config", version = "1.0.15" }
solana-faucet = { path = "../faucet", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-vote-signer = { path = "../vote-signer", version = "1.0.15" }
solana-budget-program = { path = "../programs/budget", version = "1.0.16" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-cli-config = { path = "../cli-config", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-config-program = { path = "../programs/config", version = "1.0.16" }
solana-faucet = { path = "../faucet", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
solana-vote-signer = { path = "../vote-signer", version = "1.0.16" }
titlecase = "1.1.0"
thiserror = "1.0.11"
url = "2.1.1"
[dev-dependencies]
solana-core = { path = "../core", version = "1.0.15" }
solana-budget-program = { path = "../programs/budget", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.16" }
solana-budget-program = { path = "../programs/budget", version = "1.0.16" }
tempfile = "3.1.0"
[[bin]]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-client"
version = "1.0.15"
version = "1.0.16"
description = "Solana Client"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -19,10 +19,10 @@ reqwest = { version = "0.10.1", default-features = false, features = ["blocking"
serde = "1.0.104"
serde_derive = "1.0.103"
serde_json = "1.0.46"
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
thiserror = "1.0"
tungstenite = "0.10.1"
url = "2.1.1"
@@ -31,4 +31,4 @@ url = "2.1.1"
assert_matches = "1.3.0"
jsonrpc-core = "14.0.5"
jsonrpc-http-server = "14.0.6"
solana-logger = { path = "../logger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.16" }

View File

@@ -1,7 +1,7 @@
[package]
name = "solana-core"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "../README.md"
@@ -43,34 +43,34 @@ regex = "1.3.4"
serde = "1.0.104"
serde_derive = "1.0.103"
serde_json = "1.0.46"
solana-budget-program = { path = "../programs/budget", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.15" }
solana-faucet = { path = "../faucet", version = "1.0.15" }
solana-budget-program = { path = "../programs/budget", version = "1.0.16" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.16" }
solana-faucet = { path = "../faucet", version = "1.0.16" }
ed25519-dalek = "=1.0.0-pre.1"
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-merkle-tree = { path = "../merkle-tree", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-measure = { path = "../measure", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-chacha-cuda = { path = "../chacha-cuda", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-vote-signer = { path = "../vote-signer", version = "1.0.15" }
solana-sys-tuner = { path = "../sys-tuner", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-merkle-tree = { path = "../merkle-tree", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-measure = { path = "../measure", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-chacha-cuda = { path = "../chacha-cuda", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
solana-vote-signer = { path = "../vote-signer", version = "1.0.16" }
solana-sys-tuner = { path = "../sys-tuner", version = "1.0.16" }
tempfile = "3.1.0"
thiserror = "1.0"
tokio = "0.1"
tokio-codec = "0.1"
tokio-fs = "0.1"
tokio-io = "0.1"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.15" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.16" }
trees = "0.2.1"
[dev-dependencies]

View File

@@ -13,15 +13,18 @@ use std::thread;
use std::thread::{Builder, JoinHandle};
use std::time::Duration;
// - To try and keep the RocksDB size under 512GB:
// Seeing about 1600b/shred, using 2000b/shred for margin, so 250m shreds can be stored in 512gb.
// at 5k shreds/slot at 50k tps, this is 500k slots (~5.5 hours).
// - To try and keep the RocksDB size under 400GB:
// Seeing about 1600b/shred, using 2000b/shred for margin, so 200m shreds can be stored in 400gb.
// at 5k shreds/slot at 50k tps, this is 500k slots (~5 hours).
// At idle, 60 shreds/slot this is about 4m slots (18 days)
// This is chosen to allow enough time for
// - A validator to download a snapshot from a peer and boot from it
// - To make sure that if a validator needs to reboot from its own snapshot, it has enough slots locally
// to catch back up to where it was when it stopped
pub const DEFAULT_MAX_LEDGER_SHREDS: u64 = 250_000_000;
pub const DEFAULT_MAX_LEDGER_SHREDS: u64 = 200_000_000;
// Allow down to 50m, or 3.5 days at idle, 1hr at 50k load, around ~100GB
pub const DEFAULT_MIN_MAX_LEDGER_SHREDS: u64 = 50_000_000;
// Check for removing slots at this interval so we don't purge too often
// and starve other blockstore users.

View File

@@ -24,7 +24,9 @@ use solana_sdk::{
timing::slot_duration_from_slots_per_year,
transaction::{self, Transaction},
};
use solana_transaction_status::{ConfirmedBlock, TransactionEncoding, TransactionStatus};
use solana_transaction_status::{
ConfirmedBlock, ConfirmedTransaction, TransactionEncoding, TransactionStatus,
};
use solana_vote_program::vote_state::{VoteState, MAX_LOCKOUT_HISTORY};
use std::{
collections::HashMap,
@@ -36,6 +38,7 @@ use std::{
};
const MAX_QUERY_ITEMS: usize = 256;
const MAX_SLOT_RANGE: u64 = 10_000;
type RpcResponse<T> = Result<Response<T>>;
@@ -503,6 +506,37 @@ impl JsonRpcRequestProcessor {
}
})
}
pub fn get_confirmed_transaction(
&self,
signature: Signature,
encoding: Option<TransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>> {
if self.config.enable_rpc_transaction_history {
Ok(self
.blockstore
.get_confirmed_transaction(signature, encoding)
.unwrap_or(None))
} else {
Ok(None)
}
}
pub fn get_confirmed_signatures_for_address(
&self,
pubkey: Pubkey,
start_slot: Slot,
end_slot: Slot,
) -> Result<Vec<Signature>> {
if self.config.enable_rpc_transaction_history {
Ok(self
.blockstore
.get_confirmed_signatures_for_address(pubkey, start_slot, end_slot)
.unwrap_or_else(|_| vec![]))
} else {
Ok(vec![])
}
}
}
fn get_tpu_addr(cluster_info: &Arc<RwLock<ClusterInfo>>) -> Result<SocketAddr> {
@@ -744,6 +778,23 @@ pub trait RpcSol {
start_slot: Slot,
end_slot: Option<Slot>,
) -> Result<Vec<Slot>>;
#[rpc(meta, name = "getConfirmedTransaction")]
fn get_confirmed_transaction(
&self,
meta: Self::Metadata,
signature_str: String,
encoding: Option<TransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>>;
#[rpc(meta, name = "getConfirmedSignaturesForAddress")]
fn get_confirmed_signatures_for_address(
&self,
meta: Self::Metadata,
pubkey_str: String,
start_slot: Slot,
end_slot: Slot,
) -> Result<Vec<String>>;
}
pub struct RpcSolImpl;
@@ -1287,6 +1338,51 @@ impl RpcSol for RpcSolImpl {
fn get_block_time(&self, meta: Self::Metadata, slot: Slot) -> Result<Option<UnixTimestamp>> {
meta.request_processor.read().unwrap().get_block_time(slot)
}
fn get_confirmed_transaction(
&self,
meta: Self::Metadata,
signature_str: String,
encoding: Option<TransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>> {
let signature = verify_signature(&signature_str)?;
meta.request_processor
.read()
.unwrap()
.get_confirmed_transaction(signature, encoding)
}
fn get_confirmed_signatures_for_address(
&self,
meta: Self::Metadata,
pubkey_str: String,
start_slot: Slot,
end_slot: Slot,
) -> Result<Vec<String>> {
let pubkey = verify_pubkey(pubkey_str)?;
if end_slot <= start_slot {
return Err(Error::invalid_params(format!(
"start_slot {} must be smaller than end_slot {}",
start_slot, end_slot
)));
}
if end_slot - start_slot > MAX_SLOT_RANGE {
return Err(Error::invalid_params(format!(
"Slot range too large; max {}",
MAX_SLOT_RANGE
)));
}
meta.request_processor
.read()
.unwrap()
.get_confirmed_signatures_for_address(pubkey, start_slot, end_slot)
.map(|signatures| {
signatures
.iter()
.map(|signature| signature.to_string())
.collect()
})
}
}
#[cfg(test)]

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -21,6 +21,8 @@ To interact with a Solana node inside a JavaScript application, use the [solana-
* [getClusterNodes](jsonrpc-api.md#getclusternodes)
* [getConfirmedBlock](jsonrpc-api.md#getconfirmedblock)
* [getConfirmedBlocks](jsonrpc-api.md#getconfirmedblocks)
* [getConfirmedSignaturesForAddress](jsonrpc-api.md#getconfirmedsignaturesforaddress)
* [getConfirmedTransaction](jsonrpc-api.md#getconfirmedtransaction)
* [getEpochInfo](jsonrpc-api.md#getepochinfo)
* [getEpochSchedule](jsonrpc-api.md#getepochschedule)
* [getFeeCalculatorForBlockhash](jsonrpc-api.md#getfeecalculatorforblockhash)
@@ -345,6 +347,72 @@ curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0","id":1,"m
{"jsonrpc":"2.0","result":[5,6,7,8,9,10],"id":1}
```
### getConfirmedSignaturesForAddress
Returns a list of all the confirmed signatures for transactions involving an address, within a specified Slot range. Max range allowed is 10_000 Slots.
#### Parameters:
* `<string>` - account address as base-58 encoded string
* `<u64>` - start slot, inclusive
* `<u64>` - end slot, inclusive
#### Results:
The result field will be an array of:
* `<string>` - transaction signature as base-58 encoded string
The signatures will be ordered based on the Slot in which they were confirmed in, from lowest to highest Slot
#### Example:
```bash
// Request
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0","id":1,"method":"getConfirmedSignaturesForAddress","params":["6H94zdiaYfRfPfKjYLjyr2VFBg6JHXygy84r3qhc3NsC", 0, 100]}' localhost:8899
// Result
{"jsonrpc":"2.0","result":{["35YGay1Lwjwgxe9zaH6APSHbt9gYQUCtBWTNL3aVwVGn9xTFw2fgds7qK5AL29mP63A9j3rh8KpN1TgSR62XCaby","4bJdGN8Tt2kLWZ3Fa1dpwPSEkXWWTSszPSf1rRVsCwNjxbbUdwTeiWtmi8soA26YmwnKD4aAxNp8ci1Gjpdv4gsr","4LQ14a7BYY27578Uj8LPCaVhSdJGLn9DJqnUJHpy95FMqdKf9acAhUhecPQNjNUy6VoNFUbvwYkPociFSf87cWbG"]},"id":1}
```
### getConfirmedTransaction
Returns transaction details for a confirmed transaction
#### Parameters:
* `<string>` - transaction signature as base-58 encoded string
* `<string>` - (optional) encoding for the returned Transaction, either "json" or "binary". If not provided, the default encoding is JSON.
#### Results:
The result field will be an object with the following fields:
* `slot: <u64>` - the slot this transaction was processed in
* `transaction: <object|string>` - [Transaction](#transaction-structure) object, either in JSON format or base-58 encoded binary data, depending on encoding parameter
* `meta: <object>` - transaction status metadata object, containing `null` or:
* `err: <object | null>` - Error if transaction failed, null if transaction succeeded. [TransactionError definitions](https://github.com/solana-labs/solana/blob/master/sdk/src/transaction.rs#L14)
* `fee: <u64>` - fee this transaction was charged, as u64 integer
* `preBalances: <array>` - array of u64 account balances from before the transaction was processed
* `postBalances: <array>` - array of u64 account balances after the transaction was processed
* DEPRECATED: `status: <object>` - Transaction status
* `"Ok": <null>` - Transaction was successful
* `"Err": <ERR>` - Transaction failed with TransactionError
#### Example:
```bash
// Request
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0","id":1,"method":"getConfirmedTransaction","params":["35YGay1Lwjwgxe9zaH6APSHbt9gYQUCtBWTNL3aVwVGn9xTFw2fgds7qK5AL29mP63A9j3rh8KpN1TgSR62XCaby", "json"]}' localhost:8899
// Result
{"jsonrpc":"2.0","result":{"slot":430,"transaction":{"message":{"accountKeys":["6H94zdiaYfRfPfKjYLjyr2VFBg6JHXygy84r3qhc3NsC","39UAy8hsoYPywGPGdmun747omSr79zLSjqvPJN3zetoH","SysvarS1otHashes111111111111111111111111111","SysvarC1ock11111111111111111111111111111111","Vote111111111111111111111111111111111111111"],"header":{"numReadonlySignedAccounts":0,"numReadonlyUnsignedAccounts":3,"numRequiredSignatures":2},"instructions":[{"accounts":[1,2,3],"data":"29z5mr1JoRmJYQ6ynmk3pf31cGFRziAF1M3mT3L6sFXf5cKLdkEaMXMT8AqLpD4CpcupHmuMEmtZHpomrwfdZetSomNy3d","programIdIndex":4}],"recentBlockhash":"EFejToxii1L5aUF2NrK9dsbAEmZSNyN5nsipmZHQR1eA"},"signatures":["35YGay1Lwjwgxe9zaH6APSHbt9gYQUCtBWTNL3aVwVGn9xTFw2fgds7qK5AL29mP63A9j3rh8KpN1TgSR62XCaby","4vANMjSKiwEchGSXwVrQkwHnmsbKQmy9vdrsYxWdCup1bLsFzX8gKrFTSVDCZCae2dbxJB9mPNhqB2sD1vvr4sAD"]},"meta":{"err":null,"fee":18000,"postBalances":[499999972500,15298080,1,1,1],"preBalances":[499999990500,15298080,1,1,1],"status":{"Ok":null}}},"id":1}
// Request
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc": "2.0","id":1,"method":"getConfirmedTransaction","params":["35YGay1Lwjwgxe9zaH6APSHbt9gYQUCtBWTNL3aVwVGn9xTFw2fgds7qK5AL29mP63A9j3rh8KpN1TgSR62XCaby", "binary"]}' localhost:8899
// Result
{"jsonrpc":"2.0","result":{"slot":430,"transaction":"81UZJt4dh4Do66jDhrgkQudS8J2N6iG3jaVav7gJrqJSFY4Ug53iA9JFJZh2gxKWcaFdLJwhHx9mRdg9JwDAWB4ywiu5154CRwXV4FMdnPLg7bhxRLwhhYaLsVgMF5AyNRcTzjCVoBvqFgDU7P8VEKDEiMvD3qxzm1pLZVxDG1LTQpT3Dz4Uviv4KQbFQNuC22KupBoyHFB7Zh6KFdMqux4M9PvhoqcoJsJKwXjWpKu7xmEKnnrSbfLadkgjBmmjhW3fdTrFvnhQdTkhtdJxUL1xS9GMuJQer8YgSKNtUXB1eXZQwXU8bU2BjYkZE6Q5Xww8hu9Z4E4Mo4QsooVtHoP6BM3NKw8zjVbWfoCQqxTrwuSzrNCWCWt58C24LHecH67CTt2uXbYSviixvrYkK7A3t68BxTJcF1dXJitEPTFe2ceTkauLJqrJgnER4iUrsjr26T8YgWvpY9wkkWFSviQW6wV5RASTCUasVEcrDiaKj8EQMkgyDoe9HyKitSVg67vMWJFpUXpQobseWJUs5FTWWzmfHmFp8FZ","meta":{"err":null,"fee":18000,"postBalances":[499999972500,15298080,1,1,1],"preBalances":[499999990500,15298080,1,1,1],"status":{"Ok":null}}},"id":1}
```
### getEpochInfo
Returns information about the current epoch
@@ -872,7 +940,7 @@ The result field will be a JSON object with the following fields:
// Request
curl -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1, "method":"getVersion"}' http://localhost:8899
// Result
{"jsonrpc":"2.0","result":{"solana-core": "1.0.15"},"id":1}
{"jsonrpc":"2.0","result":{"solana-core": "1.0.16"},"id":1}
```
### getVoteAccounts

View File

@@ -171,7 +171,7 @@ $ solana send-timestamp <PUBKEY> <PROCESS_ID> --date 2018-12-24T23:59:00
## Usage
### solana-cli
```text
solana-cli 1.0.15 [channel=unknown commit=unknown]
solana-cli 1.0.16 [channel=unknown commit=unknown]
Blockchain, Rebuilt for Scale
USAGE:

View File

@@ -5,50 +5,18 @@ simplest way for most users to get started with a Solana wallet.
## Install Trust Wallet
#### iOS
- Open the App Store
- Download “Trust: Crypto & Bitcoin Wallet” from Six Days LLC
- Requires iOS 13.0 or higher
- Open Trust Wallet and follow the app prompts to get started
***
#### Android
**NOTE: At this time, Solana's SOL tokens are only supported in the Beta version
of Trust Wallet for Android. The following steps explain how to install this
Beta version to start using your Solana wallet. Check back here or check the
latest official Trust Wallet release notes for when support is added to their
official Android release.**
- Open the Play Store
- Download the official version of Trust Wallet
- “Trust: Crypto & Bitcoin Wallet” from Six Days LLC
- Download “Trust Crypto Wallet” from Six Days LLC
- Requires Android 6.0 or higher
![Install the Official Version of Trust Wallet](../.gitbook/assets/install-official-trust-wallet.png)
##### Enable Beta version of Trust Wallet
- Make sure you already have the official version installed
- Open Play Store and view Trust Wallet's app page
- Scroll down to the bottom to the "Beta" section and tap "Join"
- It may take a few minutes for your device to get access to the Beta version
![Join the Beta program](../.gitbook/assets/join-beta-trust-wallet.png)
##### Upgrade to the Beta version
- Open Play Store .
- Tap Menu --> My apps and games --> Beta.
- Tap Trust Wallet
- Tap Upgrade when brought back to the Trust Wallet (Beta) install page
![Find Beta app you've joined](../.gitbook/assets/find-beta-apps.png)
***
![Upgrade to Trust Wallet Beta](../.gitbook/assets/update-trust-wallet-to-beta.png)
##### Beta Install Support for Android
- [Google's Official Help for Installing Beta Versions of Apps](https://support.google.com/googleplay/answer/7003180?hl=en)
- Open Trust Wallet and follow the app prompts to get started
## Add Solana (SOL) tokens to your wallet
- From the main page, go to the “Tokens” tab at the top of the screen

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-faucet"
version = "1.0.15"
version = "1.0.16"
description = "Solana Faucet"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -19,10 +19,10 @@ clap = "2.33"
log = "0.4.8"
serde = "1.0.104"
serde_derive = "1.0.103"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
tokio = "0.1"
tokio-codec = "0.1"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-genesis-programs"
version = "1.0.15"
version = "1.0.16"
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 = "1.0.15" }
solana-budget-program = { path = "../programs/budget", version = "1.0.15" }
solana-config-program = { path = "../programs/config", version = "1.0.15" }
solana-exchange-program = { path = "../programs/exchange", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-vest-program = { path = "../programs/vest", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.0.16" }
solana-budget-program = { path = "../programs/budget", version = "1.0.16" }
solana-config-program = { path = "../programs/config", version = "1.0.16" }
solana-exchange-program = { path = "../programs/exchange", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
solana-vest-program = { path = "../programs/vest", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
[lib]
crate-type = ["lib"]

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-genesis"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -15,13 +15,13 @@ chrono = "0.4"
serde = "1.0.104"
serde_json = "1.0.46"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
tempfile = "3.1.0"
[[bin]]

View File

@@ -3,19 +3,19 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-gossip"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
[dependencies]
clap = "2.33.0"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-install"
description = "The solana cluster software installer"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -24,11 +24,11 @@ reqwest = { version = "0.10.1", default-features = false, features = ["blocking"
serde = "1.0.104"
serde_derive = "1.0.103"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-config-program = { path = "../programs/config", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-config-program = { path = "../programs/config", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
semver = "0.9.0"
tar = "0.4.26"
tempdir = "0.3.7"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-keygen"
version = "1.0.15"
version = "1.0.16"
description = "Solana key generation utility"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -13,10 +13,10 @@ bs58 = "0.3.0"
clap = "2.33"
dirs = "2.0.2"
num_cpus = "1.12.0"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-cli-config = { path = "../cli-config", version = "1.0.15" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-cli-config = { path = "../cli-config", version = "1.0.16" }
solana-remote-wallet = { path = "../remote-wallet", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
tiny-bip39 = "0.7.0"
[[bin]]

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-ledger-tool"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -14,13 +14,13 @@ clap = "2.33.0"
histogram = "*"
serde_json = "1.0.46"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
tempfile = "3.1.0"
[dev-dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-ledger"
version = "1.0.15"
version = "1.0.16"
description = "Solana ledger"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -28,19 +28,19 @@ reed-solomon-erasure = { package = "solana-reed-solomon-erasure", version = "4.0
regex = "1.3.4"
serde = "1.0.104"
serde_bytes = "0.11.3"
solana-transaction-status = { path = "../transaction-status", version = "1.0.15" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-measure = { path = "../measure", version = "1.0.15" }
solana-merkle-tree = { path = "../merkle-tree", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.16" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-measure = { path = "../measure", version = "1.0.16" }
solana-merkle-tree = { path = "../merkle-tree", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
ed25519-dalek = "1.0.0-pre.1"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
symlink = "0.1.0"
tar = "0.4.26"
thiserror = "1.0"
@@ -57,7 +57,7 @@ features = ["lz4"]
[dev-dependencies]
assert_matches = "1.3.0"
matches = "0.1.6"
solana-budget-program = { path = "../programs/budget", version = "1.0.15" }
solana-budget-program = { path = "../programs/budget", version = "1.0.16" }
[lib]
crate-type = ["lib"]

View File

@@ -37,8 +37,8 @@ use solana_sdk::{
transaction::Transaction,
};
use solana_transaction_status::{
ConfirmedBlock, EncodedTransaction, Rewards, RpcTransactionStatusMeta, TransactionEncoding,
TransactionStatusMeta, TransactionWithStatusMeta,
ConfirmedBlock, ConfirmedTransaction, EncodedTransaction, Rewards, RpcTransactionStatusMeta,
TransactionEncoding, TransactionStatusMeta, TransactionWithStatusMeta,
};
use solana_vote_program::{vote_instruction::VoteInstruction, vote_state::TIMESTAMP_SLOT_INTERVAL};
use std::{
@@ -1633,20 +1633,14 @@ impl Blockstore {
.put((primary_index, signature, slot), status)?;
for address in writable_keys {
self.address_signatures_cf.put(
(primary_index, *address, slot),
&AddressSignatureMeta {
signature,
writeable: true,
},
(primary_index, *address, slot, signature),
&AddressSignatureMeta { writeable: true },
)?;
}
for address in readonly_keys {
self.address_signatures_cf.put(
(primary_index, *address, slot),
&AddressSignatureMeta {
signature,
writeable: false,
},
(primary_index, *address, slot, signature),
&AddressSignatureMeta { writeable: false },
)?;
}
Ok(())
@@ -1687,6 +1681,85 @@ impl Blockstore {
.map(|(status, _)| status)
}
/// Returns a complete transaction if it was processed in a root
pub fn get_confirmed_transaction(
&self,
signature: Signature,
encoding: Option<TransactionEncoding>,
) -> Result<Option<ConfirmedTransaction>> {
if let Some((slot, status)) = self.get_transaction_status(signature.clone())? {
let transaction = self.find_transaction_in_slot(slot, signature)?
.expect("Transaction to exist in slot entries if it exists in statuses and hasn't been cleaned up");
let encoding = encoding.unwrap_or(TransactionEncoding::Json);
let encoded_transaction = EncodedTransaction::encode(transaction, encoding);
Ok(Some(ConfirmedTransaction {
slot,
transaction: TransactionWithStatusMeta {
transaction: encoded_transaction,
meta: Some(status.into()),
},
}))
} else {
Ok(None)
}
}
fn find_transaction_in_slot(
&self,
slot: Slot,
signature: Signature,
) -> Result<Option<Transaction>> {
let slot_entries = self.get_slot_entries(slot, 0, None)?;
Ok(slot_entries
.iter()
.cloned()
.flat_map(|entry| entry.transactions)
.find(|transaction| transaction.signatures[0] == signature))
}
// Returns all cached signatures for an address, ordered by slot that the transaction was
// processed in
fn find_address_signatures(
&self,
pubkey: Pubkey,
start_slot: Slot,
end_slot: Slot,
) -> Result<Vec<(Slot, Signature)>> {
let mut signatures: Vec<(Slot, Signature)> = vec![];
for transaction_status_cf_primary_index in 0..=1 {
let index_iterator = self.address_signatures_cf.iter(IteratorMode::From(
(
transaction_status_cf_primary_index,
pubkey,
start_slot,
Signature::default(),
),
IteratorDirection::Forward,
))?;
for ((i, address, slot, signature), _) in index_iterator {
if i != transaction_status_cf_primary_index || slot > end_slot || address != pubkey
{
break;
}
if self.is_root(slot) {
signatures.push((slot, signature));
}
}
}
signatures.sort_by(|a, b| a.0.partial_cmp(&b.0).unwrap());
Ok(signatures)
}
pub fn get_confirmed_signatures_for_address(
&self,
pubkey: Pubkey,
start_slot: Slot,
end_slot: Slot,
) -> Result<Vec<Signature>> {
self.find_address_signatures(pubkey, start_slot, end_slot)
.map(|signatures| signatures.iter().map(|(_, signature)| *signature).collect())
}
pub fn read_rewards(&self, index: Slot) -> Result<Option<Rewards>> {
self.rewards_cf.get(index)
}
@@ -2822,7 +2895,7 @@ pub mod tests {
.iter::<cf::AddressSignatures>(IteratorMode::Start)
.unwrap()
.next()
.map(|((primary_index, _, slot), _)| {
.map(|((primary_index, _, slot, _), _)| {
slot >= min_slot || (primary_index == 2 && slot == 0)
})
.unwrap_or(true)
@@ -5430,7 +5503,7 @@ pub mod tests {
let first_status_entry = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap()
@@ -5442,7 +5515,7 @@ pub mod tests {
let first_address_entry = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
cf::AddressSignatures::as_index(0),
IteratorDirection::Forward,
))
.unwrap()
@@ -5500,7 +5573,7 @@ pub mod tests {
let first_status_entry = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap()
@@ -5512,7 +5585,7 @@ pub mod tests {
let first_address_entry = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
cf::AddressSignatures::as_index(0),
IteratorDirection::Forward,
))
.unwrap()
@@ -5525,7 +5598,7 @@ pub mod tests {
let index1_first_status_entry = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(1, Signature::default(), 0),
cf::TransactionStatus::as_index(1),
IteratorDirection::Forward,
))
.unwrap()
@@ -5537,7 +5610,7 @@ pub mod tests {
let index1_first_address_entry = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(1, Pubkey::default(), 0),
cf::AddressSignatures::as_index(1),
IteratorDirection::Forward,
))
.unwrap()
@@ -5568,7 +5641,7 @@ pub mod tests {
let first_status_entry = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap()
@@ -5580,7 +5653,7 @@ pub mod tests {
let first_address_entry = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
cf::AddressSignatures::as_index(0),
IteratorDirection::Forward,
))
.unwrap()
@@ -5617,7 +5690,7 @@ pub mod tests {
let mut status_entry_iterator = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5629,7 +5702,7 @@ pub mod tests {
let mut address_transactions_iterator = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
(0, Pubkey::default(), 0, Signature::default()),
IteratorDirection::Forward,
))
.unwrap();
@@ -5651,7 +5724,7 @@ pub mod tests {
let mut status_entry_iterator = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5663,7 +5736,7 @@ pub mod tests {
let mut address_transactions_iterator = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
cf::AddressSignatures::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5685,7 +5758,7 @@ pub mod tests {
let mut status_entry_iterator = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5697,7 +5770,7 @@ pub mod tests {
let mut address_transactions_iterator = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
cf::AddressSignatures::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5718,7 +5791,7 @@ pub mod tests {
let mut status_entry_iterator = blockstore
.db
.iter::<cf::TransactionStatus>(IteratorMode::From(
(0, Signature::default(), 0),
cf::TransactionStatus::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5729,7 +5802,7 @@ pub mod tests {
let mut address_transactions_iterator = blockstore
.db
.iter::<cf::AddressSignatures>(IteratorMode::From(
(0, Pubkey::default(), 0),
cf::AddressSignatures::as_index(0),
IteratorDirection::Forward,
))
.unwrap();
@@ -5877,6 +5950,226 @@ pub mod tests {
Blockstore::destroy(&blockstore_path).expect("Expected successful database destruction");
}
#[test]
fn test_get_confirmed_transaction() {
let slot = 2;
let entries = make_slot_entries_with_transactions(5);
let shreds = entries_to_test_shreds(entries.clone(), slot, slot - 1, true, 0);
let ledger_path = get_tmp_ledger_path!();
let blockstore = Blockstore::open(&ledger_path).unwrap();
blockstore.insert_shreds(shreds, None, false).unwrap();
blockstore.set_roots(&[slot - 1, slot]).unwrap();
let expected_transactions: Vec<(Transaction, Option<RpcTransactionStatusMeta>)> = entries
.iter()
.cloned()
.filter(|entry| !entry.is_tick())
.flat_map(|entry| entry.transactions)
.map(|transaction| {
let mut pre_balances: Vec<u64> = vec![];
let mut post_balances: Vec<u64> = vec![];
for (i, _account_key) in transaction.message.account_keys.iter().enumerate() {
pre_balances.push(i as u64 * 10);
post_balances.push(i as u64 * 11);
}
let signature = transaction.signatures[0];
blockstore
.transaction_status_cf
.put(
(0, signature, slot),
&TransactionStatusMeta {
status: Ok(()),
fee: 42,
pre_balances: pre_balances.clone(),
post_balances: post_balances.clone(),
},
)
.unwrap();
(
transaction,
Some(
TransactionStatusMeta {
status: Ok(()),
fee: 42,
pre_balances,
post_balances,
}
.into(),
),
)
})
.collect();
for (transaction, status) in expected_transactions.clone() {
let signature = transaction.signatures[0];
let encoded_transaction =
EncodedTransaction::encode(transaction, TransactionEncoding::Json);
let expected_transaction = ConfirmedTransaction {
slot,
transaction: TransactionWithStatusMeta {
transaction: encoded_transaction,
meta: status,
},
};
assert_eq!(
blockstore
.get_confirmed_transaction(signature, None)
.unwrap(),
Some(expected_transaction)
);
}
blockstore.run_purge(0, 2).unwrap();
*blockstore.lowest_cleanup_slot.write().unwrap() = slot;
for (transaction, _) in expected_transactions {
let signature = transaction.signatures[0];
assert_eq!(
blockstore
.get_confirmed_transaction(signature, None)
.unwrap(),
None,
);
}
}
#[test]
fn test_get_confirmed_signatures_for_address() {
let blockstore_path = get_tmp_ledger_path!();
{
let blockstore = Blockstore::open(&blockstore_path).unwrap();
let address0 = Pubkey::new_rand();
let address1 = Pubkey::new_rand();
let slot0 = 10;
for x in 1..5 {
let signature = Signature::new(&[x; 64]);
blockstore
.write_transaction_status(
slot0,
signature,
vec![&address0],
vec![&address1],
&TransactionStatusMeta::default(),
)
.unwrap();
}
// Purge to freeze index 0
blockstore.run_purge(0, 1).unwrap();
let slot1 = 20;
for x in 5..9 {
let signature = Signature::new(&[x; 64]);
blockstore
.write_transaction_status(
slot1,
signature,
vec![&address0],
vec![&address1],
&TransactionStatusMeta::default(),
)
.unwrap();
}
blockstore.set_roots(&[slot0, slot1]).unwrap();
let all0 = blockstore
.get_confirmed_signatures_for_address(address0, 0, 50)
.unwrap();
assert_eq!(all0.len(), 8);
for x in 1..9 {
let expected_signature = Signature::new(&[x; 64]);
assert_eq!(all0[x as usize - 1], expected_signature);
}
assert_eq!(
blockstore
.get_confirmed_signatures_for_address(address0, 20, 50)
.unwrap()
.len(),
4
);
assert_eq!(
blockstore
.get_confirmed_signatures_for_address(address0, 0, 10)
.unwrap()
.len(),
4
);
assert!(blockstore
.get_confirmed_signatures_for_address(address0, 1, 5)
.unwrap()
.is_empty());
assert_eq!(
blockstore
.get_confirmed_signatures_for_address(address0, 1, 15)
.unwrap()
.len(),
4
);
let all1 = blockstore
.get_confirmed_signatures_for_address(address1, 0, 50)
.unwrap();
assert_eq!(all1.len(), 8);
for x in 1..9 {
let expected_signature = Signature::new(&[x; 64]);
assert_eq!(all1[x as usize - 1], expected_signature);
}
// Purge index 0
blockstore.run_purge(0, 10).unwrap();
assert_eq!(
blockstore
.get_confirmed_signatures_for_address(address0, 0, 50)
.unwrap()
.len(),
4
);
assert_eq!(
blockstore
.get_confirmed_signatures_for_address(address0, 20, 50)
.unwrap()
.len(),
4
);
assert!(blockstore
.get_confirmed_signatures_for_address(address0, 0, 10)
.unwrap()
.is_empty());
assert!(blockstore
.get_confirmed_signatures_for_address(address0, 1, 5)
.unwrap()
.is_empty());
assert_eq!(
blockstore
.get_confirmed_signatures_for_address(address0, 1, 25)
.unwrap()
.len(),
4
);
// Test sort, regardless of entry order or signature value
for slot in (21..25).rev() {
let random_bytes: Vec<u8> = (0..64).map(|_| rand::random::<u8>()).collect();
let signature = Signature::new(&random_bytes);
blockstore
.write_transaction_status(
slot,
signature,
vec![&address0],
vec![&address1],
&TransactionStatusMeta::default(),
)
.unwrap();
}
blockstore.set_roots(&[21, 22, 23, 24]).unwrap();
let mut past_slot = 0;
for (slot, _) in blockstore.find_address_signatures(address0, 1, 25).unwrap() {
assert!(slot >= past_slot);
past_slot = slot;
}
}
Blockstore::destroy(&blockstore_path).expect("Expected successful database destruction");
}
#[test]
fn test_get_last_hash() {
let mut entries: Vec<Entry> = vec![];

View File

@@ -356,21 +356,23 @@ impl ColumnName for columns::TransactionStatus {
}
impl Column for columns::AddressSignatures {
type Index = (u64, Pubkey, Slot);
type Index = (u64, Pubkey, Slot, Signature);
fn key((index, pubkey, slot): (u64, Pubkey, Slot)) -> Vec<u8> {
let mut key = vec![0; 8 + 32 + 8]; // size_of u64 + size_of Pubkey + size_of Slot
fn key((index, pubkey, slot, signature): (u64, Pubkey, Slot, Signature)) -> Vec<u8> {
let mut key = vec![0; 8 + 32 + 8 + 64]; // size_of u64 + size_of Pubkey + size_of Slot + size_of Signature
BigEndian::write_u64(&mut key[0..8], index);
key[8..40].clone_from_slice(&pubkey.as_ref()[0..32]);
BigEndian::write_u64(&mut key[40..48], slot);
key[48..112].clone_from_slice(&signature.as_ref()[0..64]);
key
}
fn index(key: &[u8]) -> (u64, Pubkey, Slot) {
fn index(key: &[u8]) -> (u64, Pubkey, Slot, Signature) {
let index = BigEndian::read_u64(&key[0..8]);
let pubkey = Pubkey::new(&key[8..40]);
let slot = BigEndian::read_u64(&key[40..48]);
(index, pubkey, slot)
let signature = Signature::new(&key[48..112]);
(index, pubkey, slot, signature)
}
fn primary_index(index: Self::Index) -> u64 {
@@ -378,7 +380,7 @@ impl Column for columns::AddressSignatures {
}
fn as_index(index: u64) -> Self::Index {
(index, Pubkey::default(), 0)
(index, Pubkey::default(), 0, Signature::default())
}
}

View File

@@ -1,6 +1,6 @@
use crate::erasure::ErasureConfig;
use serde::{Deserialize, Serialize};
use solana_sdk::{clock::Slot, signature::Signature};
use solana_sdk::clock::Slot;
use std::{collections::BTreeSet, ops::RangeBounds};
#[derive(Clone, Debug, Default, Deserialize, Serialize, Eq, PartialEq)]
@@ -230,7 +230,6 @@ pub struct TransactionStatusIndexMeta {
#[derive(Debug, Default, Deserialize, Serialize, PartialEq)]
pub struct AddressSignatureMeta {
pub signature: Signature,
pub writeable: bool,
}

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-local-cluster"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
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-archiver-lib = { path = "../archiver-lib", version = "1.0.15" }
solana-config-program = { path = "../programs/config", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-faucet = { path = "../faucet", version = "1.0.15" }
solana-exchange-program = { path = "../programs/exchange", version = "1.0.15" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-vest-program = { path = "../programs/vest", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-archiver-lib = { path = "../archiver-lib", version = "1.0.16" }
solana-config-program = { path = "../programs/config", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-faucet = { path = "../faucet", version = "1.0.16" }
solana-exchange-program = { path = "../programs/exchange", version = "1.0.16" }
solana-genesis-programs = { path = "../genesis-programs", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
solana-vest-program = { path = "../programs/vest", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
tempfile = "3.1.0"
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.15" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.16" }
[dev-dependencies]
assert_matches = "1.3.0"

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-log-analyzer"
description = "The solana cluster network analysis tool"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -14,8 +14,8 @@ byte-unit = "3.0.3"
clap = "2.33.0"
serde = "1.0.104"
serde_json = "1.0.46"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
[[bin]]
name = "solana-log-analyzer"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-logger"
version = "1.0.15"
version = "1.0.16"
description = "Solana Logger"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"

View File

@@ -1,7 +1,7 @@
[package]
name = "solana-measure"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "../README.md"
@@ -12,8 +12,8 @@ edition = "2018"
[dependencies]
log = "0.4.8"
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
[target."cfg(unix)".dependencies]
jemallocator = "0.3.2"

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-metrics"
version = "1.0.15"
version = "1.0.16"
description = "Solana Metrics"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -14,7 +14,7 @@ gethostname = "0.2.1"
lazy_static = "1.4.0"
log = "0.4.8"
reqwest = { version = "0.10.1", default-features = false, features = ["blocking", "rustls-tls"] }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
[dev-dependencies]
rand = "0.6.5"

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-net-shaper"
description = "The solana cluster network shaping tool"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -13,8 +13,8 @@ publish = false
clap = "2.33.0"
serde = "1.0.104"
serde_json = "1.0.46"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
rand = "0.6.5"
[[bin]]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-net-utils"
version = "1.0.15"
version = "1.0.16"
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.104"
serde_derive = "1.0.103"
socket2 = "0.3.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
tokio = "0.1"
tokio-codec = "0.1"

View File

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

View File

@@ -1,7 +1,7 @@
[package]
name = "solana-bpf-programs"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
documentation = "https://docs.rs/solana"
homepage = "https://solana.com/"
readme = "README.md"
@@ -22,10 +22,10 @@ walkdir = "2"
bincode = "1.1.4"
byteorder = "1.3.2"
elf = "0.0.10"
solana-bpf-loader-program = { path = "../bpf_loader", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-runtime = { path = "../../runtime", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-bpf-loader-program = { path = "../bpf_loader", version = "1.0.16" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-runtime = { path = "../../runtime", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
solana_rbpf = "=0.1.21"
[[bench]]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-128bit"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,11 +12,11 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "1.0.15" }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
solana-bpf-rust-128bit-dep = { path = "../128bit_dep", version = "1.0.16" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-128bit-dep"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-alloc"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-dep-crate"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -13,10 +13,10 @@ edition = "2018"
[dependencies]
byteorder = { version = "1", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-dup-accounts"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-error-handling"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -14,11 +14,11 @@ edition = "2018"
[dependencies]
num-derive = "0.2"
num-traits = "0.2"
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
thiserror = "1.0"
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-external-spend"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-iter"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-many-args"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,11 +12,11 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "1.0.15" }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
solana-bpf-rust-many-args-dep = { path = "../many_args_dep", version = "1.0.16" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-many-args-dep"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-noop"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-panic"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-param-passing"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,11 +12,11 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "1.0.15" }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
solana-bpf-rust-param-passing-dep = { path = "../param_passing_dep", version = "1.0.16" }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-param-passing-dep"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -3,7 +3,7 @@
[package]
name = "solana-bpf-rust-sysval"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF test program written in Rust"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -12,10 +12,10 @@ homepage = "https://solana.com/"
edition = "2018"
[dependencies]
solana-sdk = { path = "../../../../sdk/", version = "1.0.15", default-features = false }
solana-sdk = { path = "../../../../sdk/", version = "1.0.16", default-features = false }
[dev_dependencies]
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.15" }
solana-sdk-bpf-test = { path = "../../../../sdk/bpf/rust/test", version = "1.0.16" }
[features]
program = ["solana-sdk/program"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-bpf-loader-program"
version = "1.0.15"
version = "1.0.16"
description = "Solana BPF loader"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -15,8 +15,8 @@ libc = "0.2.66"
log = "0.4.8"
num-derive = { version = "0.3" }
num-traits = { version = "0.2" }
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
solana_rbpf = "=0.1.21"
thiserror = "1.0"

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "btc_spv_bin"
version = "1.0.15"
version = "1.0.16"
description = "Solana Bitcoin spv parsing program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-budget-program"
version = "1.0.15"
version = "1.0.16"
description = "Solana Budget program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -16,11 +16,11 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.104"
serde_derive = "1.0.103"
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
thiserror = "1.0"
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "1.0.15" }
solana-runtime = { path = "../../runtime", version = "1.0.16" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-config-program"
version = "1.0.15"
version = "1.0.16"
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.104"
serde_derive = "1.0.103"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-exchange-program"
version = "1.0.15"
version = "1.0.16"
description = "Solana Exchange program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -15,13 +15,13 @@ num-derive = { version = "0.3" }
num-traits = { version = "0.2" }
serde = "1.0.104"
serde_derive = "1.0.103"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-metrics = { path = "../../metrics", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-metrics = { path = "../../metrics", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
thiserror = "1.0"
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "1.0.15" }
solana-runtime = { path = "../../runtime", version = "1.0.16" }
[lib]
crate-type = ["lib", "cdylib"]

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-librapay"
version = "1.0.15"
version = "1.0.16"
description = "Solana Libra Payment"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -11,10 +11,10 @@ edition = "2018"
[dependencies]
bincode = "1.2.0"
log = "0.4.8"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-move-loader-program = { path = "../move_loader", version = "1.0.15" }
solana-runtime = { path = "../../runtime", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-move-loader-program = { path = "../move_loader", version = "1.0.16" }
solana-runtime = { path = "../../runtime", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
types = { version = "0.0.1-sol4", package = "solana_libra_types" }
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-move-loader-program"
version = "1.0.15"
version = "1.0.16"
description = "Solana Move loader"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -16,8 +16,8 @@ serde = "1.0.104"
serde_bytes = "0.11"
serde_derive = "1.0.103"
serde_json = "1.0.46"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
bytecode_verifier = { version = "0.0.1-sol4", package = "solana_libra_bytecode_verifier" }
canonical_serialization = { version = "0.0.1-sol4", package = "solana_libra_canonical_serialization" }

View File

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

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-ownable"
version = "1.0.15"
version = "1.0.16"
description = "ownable program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -10,13 +10,13 @@ edition = "2018"
[dependencies]
bincode = "1.2.1"
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
num-derive = "0.3"
num-traits = "0.2"
thiserror = "1.0"
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "1.0.15" }
solana-runtime = { path = "../../runtime", version = "1.0.16" }
[lib]
crate-type = ["lib", "cdylib"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-stake-program"
version = "1.0.15"
version = "1.0.16"
description = "Solana Stake program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -15,11 +15,11 @@ num-derive = "0.3"
num-traits = "0.2"
serde = "1.0.104"
serde_derive = "1.0.103"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-metrics = { path = "../../metrics", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-vote-program = { path = "../vote", version = "1.0.15" }
solana-config-program = { path = "../config", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-metrics = { path = "../../metrics", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
solana-vote-program = { path = "../vote", version = "1.0.16" }
solana-config-program = { path = "../config", version = "1.0.16" }
thiserror = "1.0"
[lib]

View File

@@ -151,7 +151,8 @@ impl Meta {
) -> Result<(), InstructionError> {
// verify that lockup has expired or that the authorization
// is *also* signed by the custodian
if self.lockup.is_in_force(clock, signers) {
if stake_authorize == StakeAuthorize::Withdrawer && self.lockup.is_in_force(clock, signers)
{
return Err(StakeError::LockupInForce.into());
}
self.authorized
@@ -948,23 +949,28 @@ mod tests {
meta.authorize(&staker, StakeAuthorize::Staker, &signers, &clock),
Ok(())
);
// verify lockup check
// verify staker not subject to lockup, but withdrawer is
meta.lockup.epoch = 1;
assert_eq!(
meta.authorize(&staker, StakeAuthorize::Staker, &signers, &clock),
Ok(())
);
// verify lockup check
assert_eq!(
meta.authorize(&staker, StakeAuthorize::Withdrawer, &signers, &clock),
Err(StakeError::LockupInForce.into())
);
// verify lockup check defeated by custodian
signers.insert(custodian);
assert_eq!(
meta.authorize(&staker, StakeAuthorize::Staker, &signers, &clock),
meta.authorize(&staker, StakeAuthorize::Withdrawer, &signers, &clock),
Ok(())
);
// verify lock expiry
signers.remove(&custodian);
clock.epoch = 1;
assert_eq!(
meta.authorize(&staker, StakeAuthorize::Staker, &signers, &clock),
meta.authorize(&staker, StakeAuthorize::Withdrawer, &signers, &clock),
Ok(())
);
}

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-storage-program"
version = "1.0.15"
version = "1.0.16"
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.104"
serde_derive = "1.0.103"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
[dev-dependencies]
assert_matches = "1.3.0"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-vest-program"
version = "1.0.15"
version = "1.0.16"
description = "Solana Vest program"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -15,12 +15,12 @@ num-derive = "0.2"
num-traits = "0.2"
serde = "1.0.104"
serde_derive = "1.0.103"
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-config-program = { path = "../config", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
solana-config-program = { path = "../config", version = "1.0.16" }
thiserror = "1.0"
[dev-dependencies]
solana-runtime = { path = "../../runtime", version = "1.0.15" }
solana-runtime = { path = "../../runtime", version = "1.0.16" }
[lib]
crate-type = ["lib"]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-vote-program"
version = "1.0.15"
version = "1.0.16"
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.104"
serde_derive = "1.0.103"
solana-logger = { path = "../../logger", version = "1.0.15" }
solana-metrics = { path = "../../metrics", version = "1.0.15" }
solana-sdk = { path = "../../sdk", version = "1.0.15" }
solana-logger = { path = "../../logger", version = "1.0.16" }
solana-metrics = { path = "../../metrics", version = "1.0.16" }
solana-sdk = { path = "../../sdk", version = "1.0.16" }
thiserror = "1.0"
[lib]

View File

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

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-remote-wallet"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -16,7 +16,7 @@ hidapi = { version = "1.1.1", default-features = false }
log = "0.4.8"
parking_lot = "0.10"
semver = "0.9"
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
thiserror = "1.0"
url = "2.1.1"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-runtime"
version = "1.0.15"
version = "1.0.16"
description = "Solana runtime"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -26,15 +26,15 @@ rand = "0.6.5"
rayon = "1.2.0"
serde = { version = "1.0.104", features = ["rc"] }
serde_derive = "1.0.103"
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-measure = { path = "../measure", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-storage-program = { path = "../programs/storage", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-bpf-loader-program = { path = "../programs/bpf_loader", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-measure = { path = "../measure", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-rayon-threadlimit = { path = "../rayon-threadlimit", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-storage-program = { path = "../programs/storage", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
tempfile = "3.1.0"
thiserror = "1.0"
@@ -45,4 +45,4 @@ name = "solana_runtime"
[dev-dependencies]
assert_matches = "1.3.0"
solana-noop-program = { path = "../programs/noop", version = "1.0.15" }
solana-noop-program = { path = "../programs/noop", version = "1.0.16" }

View File

@@ -681,6 +681,74 @@ impl AccountsDB {
drop(accounts_index);
}
fn inc_store_counts(
no_delete_id: AppendVecId,
purges: &HashMap<Pubkey, Vec<(Slot, AccountInfo)>>,
store_counts: &mut HashMap<AppendVecId, usize>,
already_counted: &mut HashSet<AppendVecId>,
) {
if already_counted.contains(&no_delete_id) {
return;
}
*store_counts.get_mut(&no_delete_id).unwrap() += 1;
already_counted.insert(no_delete_id);
let mut affected_pubkeys = HashSet::new();
for (key, account_infos) in purges {
for (_slot, account_info) in account_infos {
if account_info.store_id == no_delete_id {
affected_pubkeys.insert(key);
break;
}
}
}
for key in affected_pubkeys {
for (_slot, account_info) in purges.get(&key).unwrap() {
Self::inc_store_counts(
account_info.store_id,
purges,
store_counts,
already_counted,
);
}
}
}
fn calc_delete_dependencies(
accounts_index: &AccountsIndex<AccountInfo>,
purges: &HashMap<Pubkey, Vec<(Slot, AccountInfo)>>,
store_counts: &mut HashMap<AppendVecId, usize>,
) {
// Another pass to check if there are some filtered accounts which
// do not match the criteria of deleting all appendvecs which contain them
// then increment their storage count.
let mut already_counted = HashSet::new();
for (pubkey, account_infos) in purges.iter() {
let no_delete =
if account_infos.len() as u64 != accounts_index.ref_count_from_storage(&pubkey) {
true
} else {
let mut no_delete = false;
for (_slot, account_info) in account_infos {
if *store_counts.get(&account_info.store_id).unwrap() != 0 {
no_delete = true;
break;
}
}
no_delete
};
if no_delete {
for (_slot_id, account_info) in account_infos {
Self::inc_store_counts(
account_info.store_id,
&purges,
store_counts,
&mut already_counted,
);
}
}
}
}
// Purge zero lamport accounts and older rooted account states as garbage
// collection
// Only remove those accounts where the entire rooted history of the account
@@ -727,29 +795,7 @@ impl AccountsDB {
}
}
// Another pass to check if there are some filtered accounts which
// do not match the criteria of deleting all appendvecs which contain them
// then increment their storage count.
for (pubkey, account_infos) in &purges {
let no_delete =
if account_infos.len() as u64 != accounts_index.ref_count_from_storage(&pubkey) {
true
} else {
let mut no_delete = false;
for (_slot, account_info) in account_infos {
if *store_counts.get(&account_info.store_id).unwrap() != 0 {
no_delete = true;
break;
}
}
no_delete
};
if no_delete {
for (_slot_id, account_info) in account_infos {
*store_counts.get_mut(&account_info.store_id).unwrap() += 1;
}
}
}
Self::calc_delete_dependencies(&accounts_index, &purges, &mut store_counts);
// Only keep purges where the entire history of the account in the root set
// can be purged. All AppendVecs for those updates are dead.
@@ -3388,4 +3434,69 @@ pub mod tests {
dead_slots.insert(10);
accounts.clean_dead_slots(&mut dead_slots);
}
#[test]
fn test_delete_dependencies() {
solana_logger::setup();
let mut accounts_index = AccountsIndex::default();
let key0 = Pubkey::new_from_array([0u8; 32]);
let key1 = Pubkey::new_from_array([1u8; 32]);
let key2 = Pubkey::new_from_array([2u8; 32]);
let info0 = AccountInfo {
store_id: 0,
offset: 0,
lamports: 0,
};
let info1 = AccountInfo {
store_id: 1,
offset: 0,
lamports: 0,
};
let info2 = AccountInfo {
store_id: 2,
offset: 0,
lamports: 0,
};
let info3 = AccountInfo {
store_id: 3,
offset: 0,
lamports: 0,
};
let mut reclaims = vec![];
accounts_index.insert(0, &key0, info0.clone(), &mut reclaims);
accounts_index.insert(1, &key0, info1.clone(), &mut reclaims);
accounts_index.insert(1, &key1, info1.clone(), &mut reclaims);
accounts_index.insert(2, &key1, info2.clone(), &mut reclaims);
accounts_index.insert(2, &key2, info2.clone(), &mut reclaims);
accounts_index.insert(3, &key2, info3.clone(), &mut reclaims);
accounts_index.add_root(0);
accounts_index.add_root(1);
accounts_index.add_root(2);
accounts_index.add_root(3);
let mut purges = HashMap::new();
purges.insert(key0, accounts_index.would_purge(&key0));
purges.insert(key1, accounts_index.would_purge(&key1));
purges.insert(key2, accounts_index.would_purge(&key2));
for (key, list) in &purges {
info!(" purge {} =>", key);
for x in list {
info!(" {:?}", x);
}
}
let mut store_counts = HashMap::new();
store_counts.insert(0, 0);
store_counts.insert(1, 0);
store_counts.insert(2, 0);
store_counts.insert(3, 1);
AccountsDB::calc_delete_dependencies(&accounts_index, &purges, &mut store_counts);
let mut stores: Vec<_> = store_counts.keys().cloned().collect();
stores.sort();
for store in &stores {
info!("store: {:?} : {}", store, store_counts.get(&store).unwrap());
}
for x in 0..3 {
assert!(store_counts[&x] >= 1);
}
}
}

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-scripts"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"

View File

@@ -31,27 +31,33 @@ export RUST_MIN_STACK=8388608
echo "--- remove old coverage results"
if [[ -d target/cov ]]; then
find target/cov -name \*.gcda -delete
find target/cov -type f -name '*.gcda' -delete
fi
rm -rf target/cov/$reportName
mkdir -p target/cov
# Mark the base time for a clean room dir
timing_file=target/cov/before-test
touch "$timing_file"
touch target/cov/before-test
source ci/rust-version.sh nightly
# Force rebuild of possibly-cached proc macro crates and build.rs because
# we always want stable coverage for them
# Don't support odd file names in our repo ever
# shellcheck disable=SC2046
touch \
$(git ls-files :**/build.rs) \
$(git grep -l "proc-macro.*true" :**/Cargo.toml | sed 's|Cargo.toml|src/lib.rs|')
if [[ -n $CI || -z $1 ]]; then
# shellcheck disable=SC2046
touch \
$(git ls-files :**/build.rs) \
$(git grep -l "proc-macro.*true" :**/Cargo.toml | sed 's|Cargo.toml|src/lib.rs|')
fi
RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov --no-run "${packages[@]}"
RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov "${packages[@]}" 2> target/cov/coverage-stderr.log
if RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov "${packages[@]}" 2> target/cov/coverage-stderr.log; then
test_status=0
else
test_status=$?
fi
touch target/cov/after-test
echo "--- grcov"
@@ -62,7 +68,7 @@ mkdir -p target/cov/tmp
# Can't use a simpler construct under the condition of SC2044 and bash 3
# (macOS's default). See: https://github.com/koalaman/shellcheck/wiki/SC2044
find target/cov -name \*.gcda -newer "$timing_file" -print0 |
find target/cov -type f -name '*.gcda' -newer target/cov/before-test ! -newer target/cov/after-test -print0 |
(while IFS= read -r -d '' gcda_file; do
gcno_file="${gcda_file%.gcda}.gcno"
ln -sf "../../../$gcda_file" "target/cov/tmp/$(basename "$gcda_file")"
@@ -115,3 +121,6 @@ genhtml --output-directory target/cov/$reportName \
)
ls -l target/cov/$reportName/index.html
ln -sfT $reportName target/cov/LATEST
exit $test_status

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-sdk-c"
version = "1.0.15"
version = "1.0.16"
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.66"
rand_chacha = "0.1.1"
rand_core = { version = ">=0.2, <0.4", default-features = false }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
ed25519-dalek = "1.0.0-pre.1"
[build-dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-sdk"
version = "1.0.15"
version = "1.0.16"
description = "Solana SDK"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -50,9 +50,9 @@ serde_json = { version = "1.0.46", optional = true }
sha2 = "0.8.1"
thiserror = "1.0"
ed25519-dalek = { version = "=1.0.0-pre.1", optional = true }
solana-crate-features = { path = "../crate-features", version = "1.0.15", optional = true }
solana-logger = { path = "../logger", version = "1.0.15", optional = true }
solana-sdk-macro = { path = "macro", version = "1.0.15" }
solana-crate-features = { path = "../crate-features", version = "1.0.16", optional = true }
solana-logger = { path = "../logger", version = "1.0.16", optional = true }
solana-sdk-macro = { path = "macro", version = "1.0.16" }
[dev-dependencies]
tiny-bip39 = "0.7.0"

View File

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

View File

@@ -12,6 +12,12 @@ download() {
declare url=$1
declare filename=$2
declare progress=$3
declare cache_filename=~/.cache/${filename//:\//_}
if [[ -r $cache_filename ]]; then
ln -s "$cache_filename" "$filename"
return
fi
declare args=(
"$url" -O "$filename"
@@ -19,7 +25,12 @@ download() {
"--retry-connrefused"
"--read-timeout=30"
)
wget "${args[@]}"
if wget "${args[@]}"; then
mkdir -p ~/.cache
cp "$filename" "$cache_filename"
return 0
fi
return 1
}
# Install xargo
@@ -123,11 +134,12 @@ fi
# Install Rust-BPF Sysroot sources
version=v0.12
if [[ ! -f rust-bpf-sysroot-$version.md ]]; then
(
set -ex
rm -rf rust-bpf-sysroot*
rm -rf xargo
cmd="git clone --recursive --single-branch --branch $version https://github.com/solana-labs/rust-bpf-sysroot.git"
cmd="git clone --recursive --depth 1 --single-branch --branch $version https://github.com/solana-labs/rust-bpf-sysroot.git"
$cmd
echo "$cmd" > rust-bpf-sysroot-$version.md

View File

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

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-stake-monitor"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -14,20 +14,20 @@ console = "0.10.0"
log = "0.4.8"
serde = "1.0.105"
serde_yaml = "0.8.11"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-cli-config = { path = "../cli-config", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-stake-program = { path = "../programs/stake", version = "1.0.15" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-cli-config = { path = "../cli-config", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-stake-program = { path = "../programs/stake", version = "1.0.16" }
solana-transaction-status = { path = "../transaction-status", version = "1.0.16" }
[dev-dependencies]
serial_test = "0.4.0"
serial_test_derive = "0.4.0"
solana-local-cluster = { path = "../local-cluster", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-local-cluster = { path = "../local-cluster", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
tempfile = "3.1.0"
[[bin]]

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-sys-tuner"
description = "The solana cluster system tuner daemon"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -13,8 +13,8 @@ publish = true
clap = "2.33.0"
log = "0.4.8"
libc = "0.2.66"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
[target."cfg(unix)".dependencies]
unix_socket2 = "0.5.4"

View File

@@ -1,6 +1,6 @@
[package]
name = "solana-transaction-status"
version = "1.0.15"
version = "1.0.16"
description = "Solana transaction status types"
authors = ["Solana Maintainers <maintainers@solana.com>"]
repository = "https://github.com/solana-labs/solana"
@@ -11,6 +11,6 @@ edition = "2018"
[dependencies]
bincode = "1.2.1"
bs58 = "0.3.0"
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
serde = "1.0.105"
serde_derive = "1.0.103"

View File

@@ -94,6 +94,14 @@ pub struct ConfirmedBlock {
pub rewards: Rewards,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfirmedTransaction {
pub slot: Slot,
#[serde(flatten)]
pub transaction: TransactionWithStatusMeta,
}
/// A duplicate representation of a Transaction for pretty JSON serialization
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]

View File

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

View File

@@ -3,7 +3,7 @@ authors = ["Solana Maintainers <maintainers@solana.com>"]
edition = "2018"
name = "solana-validator"
description = "Blockchain, Rebuilt for Scale"
version = "1.0.15"
version = "1.0.16"
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
@@ -18,19 +18,19 @@ indicatif = "0.14.0"
rand = "0.6.5"
reqwest = { version = "0.10.1", default-features = false, features = ["blocking"] }
serde_json = "1.0.46"
solana-clap-utils = { path = "../clap-utils", version = "1.0.15" }
solana-client = { path = "../client", version = "1.0.15" }
solana-core = { path = "../core", version = "1.0.15" }
solana-faucet = { path = "../faucet", version = "1.0.15" }
solana-ledger = { path = "../ledger", version = "1.0.15" }
solana-logger = { path = "../logger", version = "1.0.15" }
solana-perf = { path = "../perf", version = "1.0.15" }
solana-metrics = { path = "../metrics", version = "1.0.15" }
solana-net-utils = { path = "../net-utils", version = "1.0.15" }
solana-runtime = { path = "../runtime", version = "1.0.15" }
solana-sdk = { path = "../sdk", version = "1.0.15" }
solana-vote-program = { path = "../programs/vote", version = "1.0.15" }
solana-vote-signer = { path = "../vote-signer", version = "1.0.15" }
solana-clap-utils = { path = "../clap-utils", version = "1.0.16" }
solana-client = { path = "../client", version = "1.0.16" }
solana-core = { path = "../core", version = "1.0.16" }
solana-faucet = { path = "../faucet", version = "1.0.16" }
solana-ledger = { path = "../ledger", version = "1.0.16" }
solana-logger = { path = "../logger", version = "1.0.16" }
solana-perf = { path = "../perf", version = "1.0.16" }
solana-metrics = { path = "../metrics", version = "1.0.16" }
solana-net-utils = { path = "../net-utils", version = "1.0.16" }
solana-runtime = { path = "../runtime", version = "1.0.16" }
solana-sdk = { path = "../sdk", version = "1.0.16" }
solana-vote-program = { path = "../programs/vote", version = "1.0.16" }
solana-vote-signer = { path = "../vote-signer", version = "1.0.16" }
tar = "0.4.26"
[target."cfg(unix)".dependencies]

View File

@@ -13,7 +13,9 @@ use solana_clap_utils::{
keypair::SKIP_SEED_PHRASE_VALIDATION_ARG,
};
use solana_client::rpc_client::RpcClient;
use solana_core::ledger_cleanup_service::DEFAULT_MAX_LEDGER_SHREDS;
use solana_core::ledger_cleanup_service::{
DEFAULT_MAX_LEDGER_SHREDS, DEFAULT_MIN_MAX_LEDGER_SHREDS,
};
use solana_core::{
cluster_info::{ClusterInfo, Node, VALIDATOR_PORT_RANGE},
contact_info::ContactInfo,
@@ -1027,10 +1029,10 @@ pub fn main() {
if matches.is_present("limit_ledger_size") {
let limit_ledger_size = value_t_or_exit!(matches, "limit_ledger_size", u64);
if limit_ledger_size < DEFAULT_MAX_LEDGER_SHREDS {
if limit_ledger_size < DEFAULT_MIN_MAX_LEDGER_SHREDS {
eprintln!(
"The provided --limit-ledger-size value was too small, the minimum value is {}",
DEFAULT_MAX_LEDGER_SHREDS
DEFAULT_MIN_MAX_LEDGER_SHREDS
);
exit(1);
}

View File

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

View File

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