From 5318cdac8fbb318680053103a07cdba6ea1dab94 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 11 Dec 2019 17:05:10 -0700 Subject: [PATCH] Add solana-watchtower program --- Cargo.lock | 607 +++++++++++++++++++++-------------------- Cargo.toml | 1 + watchtower/.gitignore | 2 + watchtower/Cargo.toml | 23 ++ watchtower/README.md | 16 ++ watchtower/src/main.rs | 116 ++++++++ 6 files changed, 468 insertions(+), 297 deletions(-) create mode 100644 watchtower/.gitignore create mode 100644 watchtower/Cargo.toml create mode 100644 watchtower/README.md create mode 100644 watchtower/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 3449633902..c56d52475d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -290,7 +290,7 @@ dependencies = [ [[package]] name = "btc_spv_bin" -version = "0.21.3" +version = "0.21.4" dependencies = [ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "hex 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3071,37 +3071,37 @@ dependencies = [ [[package]] name = "solana-archiver" -version = "0.21.3" +version = "0.21.4" dependencies = [ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "console 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-core 0.21.3", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-net-utils 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-core 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-net-utils 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-banking-bench" -version = "0.21.3" +version = "0.21.4" dependencies = [ "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-core 0.21.3", - "solana-ledger 0.21.3", - "solana-logger 0.21.3", - "solana-measure 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-core 0.21.4", + "solana-ledger 0.21.4", + "solana-logger 0.21.4", + "solana-measure 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-bench-exchange" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3117,36 +3117,36 @@ dependencies = [ "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-core 0.21.3", - "solana-drone 0.21.3", - "solana-exchange-program 0.21.3", - "solana-genesis 0.21.3", - "solana-local-cluster 0.21.3", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-net-utils 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-core 0.21.4", + "solana-drone 0.21.4", + "solana-exchange-program 0.21.4", + "solana-genesis 0.21.4", + "solana-local-cluster 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-net-utils 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", "untrusted 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "ws 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-bench-streamer" -version = "0.21.3" +version = "0.21.4" dependencies = [ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-core 0.21.3", - "solana-logger 0.21.3", - "solana-net-utils 0.21.3", + "solana-clap-utils 0.21.4", + "solana-core 0.21.4", + "solana-logger 0.21.4", + "solana-net-utils 0.21.4", ] [[package]] name = "solana-bench-tps" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3158,39 +3158,39 @@ dependencies = [ "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-core 0.21.3", - "solana-drone 0.21.3", - "solana-genesis 0.21.3", - "solana-librapay-api 0.21.3", - "solana-local-cluster 0.21.3", - "solana-logger 0.21.3", - "solana-measure 0.21.3", - "solana-metrics 0.21.3", - "solana-move-loader-program 0.21.3", - "solana-net-utils 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-core 0.21.4", + "solana-drone 0.21.4", + "solana-genesis 0.21.4", + "solana-librapay-api 0.21.4", + "solana-local-cluster 0.21.4", + "solana-logger 0.21.4", + "solana-measure 0.21.4", + "solana-metrics 0.21.4", + "solana-move-loader-program 0.21.4", + "solana-net-utils 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-bpf-loader-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-sdk 0.21.4", "solana_rbpf 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-btc-spv-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3200,12 +3200,12 @@ dependencies = [ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-sdk 0.21.3", + "solana-sdk 0.21.4", ] [[package]] name = "solana-budget-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3214,32 +3214,32 @@ dependencies = [ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-chacha-sys" -version = "0.21.3" +version = "0.21.4" dependencies = [ "cc 1.0.47 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-clap-utils" -version = "0.21.3" +version = "0.21.4" dependencies = [ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "rpassword 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-sdk 0.21.3", + "solana-sdk 0.21.4", "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-cli" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3260,27 +3260,27 @@ dependencies = [ "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-budget-program 0.21.3", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-config-program 0.21.3", - "solana-core 0.21.3", - "solana-drone 0.21.3", - "solana-logger 0.21.3", - "solana-net-utils 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-storage-program 0.21.3", - "solana-vote-program 0.21.3", - "solana-vote-signer 0.21.3", + "solana-budget-program 0.21.4", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-config-program 0.21.4", + "solana-core 0.21.4", + "solana-drone 0.21.4", + "solana-logger 0.21.4", + "solana-net-utils 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-storage-program 0.21.4", + "solana-vote-program 0.21.4", + "solana-vote-signer 0.21.4", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-client" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3293,42 +3293,42 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-net-utils 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-net-utils 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-config-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-config-tests" -version = "0.21.3" +version = "0.21.4" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-config-program 0.21.3", - "solana-logger 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-config-program 0.21.4", + "solana-logger 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-core" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3365,26 +3365,26 @@ dependencies = [ "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-budget-program 0.21.3", - "solana-chacha-sys 0.21.3", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-drone 0.21.3", - "solana-ledger 0.21.3", - "solana-logger 0.21.3", - "solana-measure 0.21.3", - "solana-merkle-tree 0.21.3", - "solana-metrics 0.21.3", - "solana-net-utils 0.21.3", - "solana-perf 0.21.3", - "solana-rayon-threadlimit 0.21.3", + "solana-budget-program 0.21.4", + "solana-chacha-sys 0.21.4", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-drone 0.21.4", + "solana-ledger 0.21.4", + "solana-logger 0.21.4", + "solana-measure 0.21.4", + "solana-merkle-tree 0.21.4", + "solana-metrics 0.21.4", + "solana-net-utils 0.21.4", + "solana-perf 0.21.4", + "solana-rayon-threadlimit 0.21.4", "solana-reed-solomon-erasure 4.0.1-3 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-storage-program 0.21.3", - "solana-vote-program 0.21.3", - "solana-vote-signer 0.21.3", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-storage-program 0.21.4", + "solana-vote-program 0.21.4", + "solana-vote-signer 0.21.4", "symlink 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3397,7 +3397,7 @@ dependencies = [ [[package]] name = "solana-crate-features" -version = "0.21.3" +version = "0.21.4" dependencies = [ "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3420,7 +3420,7 @@ dependencies = [ [[package]] name = "solana-drone" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3429,40 +3429,40 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-sdk 0.21.4", "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-exchange-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-failure-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-fixed-buf" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3471,7 +3471,7 @@ dependencies = [ [[package]] name = "solana-genesis" -version = "0.21.3" +version = "0.21.4" dependencies = [ "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3480,49 +3480,49 @@ dependencies = [ "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-genesis-programs 0.21.3", - "solana-ledger 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-storage-program 0.21.3", - "solana-vote-program 0.21.3", + "solana-clap-utils 0.21.4", + "solana-genesis-programs 0.21.4", + "solana-ledger 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-storage-program 0.21.4", + "solana-vote-program 0.21.4", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-genesis-programs" -version = "0.21.3" +version = "0.21.4" dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-bpf-loader-program 0.21.3", - "solana-budget-program 0.21.3", - "solana-config-program 0.21.3", - "solana-exchange-program 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-storage-program 0.21.3", - "solana-vest-program 0.21.3", - "solana-vote-program 0.21.3", + "solana-bpf-loader-program 0.21.4", + "solana-budget-program 0.21.4", + "solana-config-program 0.21.4", + "solana-exchange-program 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-storage-program 0.21.4", + "solana-vest-program 0.21.4", + "solana-vote-program 0.21.4", ] [[package]] name = "solana-gossip" -version = "0.21.3" +version = "0.21.4" dependencies = [ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-core 0.21.3", - "solana-logger 0.21.3", - "solana-net-utils 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-core 0.21.4", + "solana-logger 0.21.4", + "solana-net-utils 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-install" -version = "0.21.3" +version = "0.21.4" dependencies = [ "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3541,11 +3541,11 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-config-program 0.21.3", - "solana-logger 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-config-program 0.21.4", + "solana-logger 0.21.4", + "solana-sdk 0.21.4", "tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3555,21 +3555,21 @@ dependencies = [ [[package]] name = "solana-keygen" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "dirs 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)", "rpassword 4.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-sdk 0.21.4", "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-ledger" -version = "0.21.3" +version = "0.21.4" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3594,20 +3594,20 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-budget-program 0.21.3", - "solana-client 0.21.3", - "solana-genesis-programs 0.21.3", - "solana-logger 0.21.3", - "solana-measure 0.21.3", - "solana-merkle-tree 0.21.3", - "solana-metrics 0.21.3", - "solana-perf 0.21.3", - "solana-rayon-threadlimit 0.21.3", + "solana-budget-program 0.21.4", + "solana-client 0.21.4", + "solana-genesis-programs 0.21.4", + "solana-logger 0.21.4", + "solana-measure 0.21.4", + "solana-merkle-tree 0.21.4", + "solana-metrics 0.21.4", + "solana-perf 0.21.4", + "solana-rayon-threadlimit 0.21.4", "solana-reed-solomon-erasure 4.0.1-3 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-vote-program 0.21.3", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-vote-program 0.21.4", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3615,7 +3615,7 @@ dependencies = [ [[package]] name = "solana-ledger-tool" -version = "0.21.3" +version = "0.21.4" dependencies = [ "assert_cmd 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3624,59 +3624,59 @@ dependencies = [ "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-ledger 0.21.3", - "solana-logger 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-vote-program 0.21.3", + "solana-clap-utils 0.21.4", + "solana-ledger 0.21.4", + "solana-logger 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-vote-program 0.21.4", ] [[package]] name = "solana-librapay-api" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-move-loader-program 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-move-loader-program 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", "solana_libra_language_e2e_tests 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)", "solana_libra_types 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-local-cluster" -version = "0.21.3" +version = "0.21.4" dependencies = [ "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-client 0.21.3", - "solana-config-program 0.21.3", - "solana-core 0.21.3", - "solana-drone 0.21.3", - "solana-exchange-program 0.21.3", - "solana-genesis-programs 0.21.3", - "solana-ledger 0.21.3", - "solana-logger 0.21.3", - "solana-rayon-threadlimit 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-storage-program 0.21.3", - "solana-vest-program 0.21.3", - "solana-vote-program 0.21.3", + "solana-client 0.21.4", + "solana-config-program 0.21.4", + "solana-core 0.21.4", + "solana-drone 0.21.4", + "solana-exchange-program 0.21.4", + "solana-genesis-programs 0.21.4", + "solana-ledger 0.21.4", + "solana-logger 0.21.4", + "solana-rayon-threadlimit 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-storage-program 0.21.4", + "solana-vest-program 0.21.4", + "solana-vote-program 0.21.4", "symlink 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-log-analyzer" -version = "0.21.3" +version = "0.21.4" dependencies = [ "byte-unit 3.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3685,13 +3685,13 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-logger 0.21.3", + "solana-clap-utils 0.21.4", + "solana-logger 0.21.4", ] [[package]] name = "solana-logger" -version = "0.21.3" +version = "0.21.4" dependencies = [ "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3700,22 +3700,22 @@ dependencies = [ [[package]] name = "solana-measure" -version = "0.21.3" +version = "0.21.4" dependencies = [ - "solana-sdk 0.21.3", + "solana-sdk 0.21.4", ] [[package]] name = "solana-merkle-tree" -version = "0.21.3" +version = "0.21.4" dependencies = [ "hex 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-sdk 0.21.3", + "solana-sdk 0.21.4", ] [[package]] name = "solana-metrics" -version = "0.21.3" +version = "0.21.4" dependencies = [ "env_logger 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3724,13 +3724,13 @@ dependencies = [ "reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serial_test_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-sdk 0.21.3", + "solana-sdk 0.21.4", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-move-loader-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3741,8 +3741,8 @@ dependencies = [ "serde_bytes 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-sdk 0.21.4", "solana_libra_bytecode_verifier 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)", "solana_libra_canonical_serialization 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)", "solana_libra_compiler 0.0.1-sol4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3759,7 +3759,7 @@ dependencies = [ [[package]] name = "solana-net-shaper" -version = "0.21.3" +version = "0.21.4" dependencies = [ "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3768,13 +3768,13 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-logger 0.21.3", + "solana-clap-utils 0.21.4", + "solana-logger 0.21.4", ] [[package]] name = "solana-net-utils" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3785,37 +3785,37 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-logger 0.21.3", + "solana-clap-utils 0.21.4", + "solana-logger 0.21.4", "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-noop-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-ownable-api" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-perf" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "dlopen 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3827,16 +3827,16 @@ dependencies = [ "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-budget-program 0.21.3", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-rayon-threadlimit 0.21.3", - "solana-sdk 0.21.3", + "solana-budget-program 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-rayon-threadlimit 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-rayon-threadlimit" -version = "0.21.3" +version = "0.21.4" dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3854,7 +3854,7 @@ dependencies = [ [[package]] name = "solana-runtime" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bv 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3872,23 +3872,23 @@ dependencies = [ "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-bpf-loader-program 0.21.3", - "solana-logger 0.21.3", - "solana-measure 0.21.3", - "solana-metrics 0.21.3", - "solana-noop-program 0.21.3", - "solana-rayon-threadlimit 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-storage-program 0.21.3", - "solana-vote-program 0.21.3", + "solana-bpf-loader-program 0.21.4", + "solana-logger 0.21.4", + "solana-measure 0.21.4", + "solana-metrics 0.21.4", + "solana-noop-program 0.21.4", + "solana-rayon-threadlimit 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-storage-program 0.21.4", + "solana-vote-program 0.21.4", "sys-info 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-scripts" -version = "0.21.3" +version = "0.21.4" dependencies = [ "csv 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3896,7 +3896,7 @@ dependencies = [ [[package]] name = "solana-sdk" -version = "0.21.3" +version = "0.21.4" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3919,15 +3919,15 @@ dependencies = [ "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-crate-features 0.21.3", - "solana-logger 0.21.3", - "solana-sdk-macro 0.21.3", + "solana-crate-features 0.21.4", + "solana-logger 0.21.4", + "solana-sdk-macro 0.21.4", "tiny-bip39 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-sdk-c" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3937,12 +3937,12 @@ dependencies = [ "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "sha2 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-sdk 0.21.3", + "solana-sdk 0.21.4", ] [[package]] name = "solana-sdk-macro" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3952,7 +3952,7 @@ dependencies = [ [[package]] name = "solana-stake-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3961,29 +3961,29 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-config-program 0.21.3", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-sdk 0.21.3", - "solana-vote-program 0.21.3", + "solana-config-program 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-sdk 0.21.4", + "solana-vote-program 0.21.4", ] [[package]] name = "solana-stake-tests" -version = "0.21.3" +version = "0.21.4" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-stake-program 0.21.3", - "solana-vote-program 0.21.3", + "solana-logger 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-stake-program 0.21.4", + "solana-vote-program 0.21.4", ] [[package]] name = "solana-storage-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3992,35 +3992,35 @@ dependencies = [ "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-storage-tests" -version = "0.21.3" +version = "0.21.4" dependencies = [ "assert_matches 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-storage-program 0.21.3", + "solana-logger 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-storage-program 0.21.4", ] [[package]] name = "solana-upload-perf" -version = "0.21.3" +version = "0.21.4" dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-metrics 0.21.3", + "solana-metrics 0.21.4", ] [[package]] name = "solana-validator" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bzip2 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4031,26 +4031,26 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.22 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-client 0.21.3", - "solana-core 0.21.3", - "solana-drone 0.21.3", - "solana-ledger 0.21.3", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-net-utils 0.21.3", - "solana-perf 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", - "solana-vote-program 0.21.3", - "solana-vote-signer 0.21.3", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-core 0.21.4", + "solana-drone 0.21.4", + "solana-ledger 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-net-utils 0.21.4", + "solana-perf 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", + "solana-vote-program 0.21.4", + "solana-vote-signer 0.21.4", "tar 0.4.26 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "solana-vest-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "chrono 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4059,14 +4059,14 @@ dependencies = [ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-config-program 0.21.3", - "solana-runtime 0.21.3", - "solana-sdk 0.21.3", + "solana-config-program 0.21.4", + "solana-runtime 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-vote-program" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bincode 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4074,14 +4074,14 @@ dependencies = [ "num-traits 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-logger 0.21.3", - "solana-metrics 0.21.3", - "solana-sdk 0.21.3", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-sdk 0.21.4", ] [[package]] name = "solana-vote-signer" -version = "0.21.3" +version = "0.21.4" dependencies = [ "bs58 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4091,9 +4091,22 @@ dependencies = [ "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.103 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-clap-utils 0.21.3", - "solana-metrics 0.21.3", - "solana-sdk 0.21.3", + "solana-clap-utils 0.21.4", + "solana-metrics 0.21.4", + "solana-sdk 0.21.4", +] + +[[package]] +name = "solana-watchtower" +version = "0.21.4" +dependencies = [ + "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-clap-utils 0.21.4", + "solana-client 0.21.4", + "solana-logger 0.21.4", + "solana-metrics 0.21.4", + "solana-sdk 0.21.4", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 348cf99fcf..65019084dc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,6 +51,7 @@ members = [ "vote-signer", "cli", "rayon-threadlimit", + "watchtower", ] exclude = [ diff --git a/watchtower/.gitignore b/watchtower/.gitignore new file mode 100644 index 0000000000..5404b132db --- /dev/null +++ b/watchtower/.gitignore @@ -0,0 +1,2 @@ +/target/ +/farf/ diff --git a/watchtower/Cargo.toml b/watchtower/Cargo.toml new file mode 100644 index 0000000000..3782429ba6 --- /dev/null +++ b/watchtower/Cargo.toml @@ -0,0 +1,23 @@ +[package] +authors = ["Solana Maintainers "] +edition = "2018" +name = "solana-watchtower" +description = "Blockchain, Rebuilt for Scale" +version = "0.21.4" +repository = "https://github.com/solana-labs/solana" +license = "Apache-2.0" +homepage = "https://solana.com/" + +[dependencies] +clap = "2.33.0" +log = "0.4.8" +solana-clap-utils = { path = "../clap-utils", version = "0.21.4" } +solana-client = { path = "../client", version = "0.21.4" } +solana-logger = { path = "../logger", version = "0.21.4" } +solana-metrics = { path = "../metrics", version = "0.21.4" } +solana-sdk = { path = "../sdk", version = "0.21.4" } + +[[bin]] +name = "solana-watchtower" +path = "src/main.rs" + diff --git a/watchtower/README.md b/watchtower/README.md new file mode 100644 index 0000000000..1779eb2528 --- /dev/null +++ b/watchtower/README.md @@ -0,0 +1,16 @@ +The `solana-watchtower` program is used to monitor the health of a cluster. It +periodically polls the cluster over an RPC API to confirm that the transaction +count is advancing, new blockhashes are available, and no validators are +delinquent. Results are reported as InfluxDB metrics. + +### Metrics +#### `watchtower-sanity` +On every iteration this data point will be emitted indicating the overall result +using a boolean `ok` field. + +#### `watchtower-sanity-failure` +On failure this data point contains details about the specific test that failed via +the following fields: +* `test`: name of the sanity test that failed +* `err`: exact sanity failure message + diff --git a/watchtower/src/main.rs b/watchtower/src/main.rs new file mode 100644 index 0000000000..81aca44669 --- /dev/null +++ b/watchtower/src/main.rs @@ -0,0 +1,116 @@ +//! A command-line executable for monitoring the health of a cluster + +use clap::{crate_description, crate_name, value_t_or_exit, App, Arg}; +use log::*; +use solana_clap_utils::input_validators::is_url; +use solana_client::rpc_client::RpcClient; +use solana_metrics::{datapoint_error, datapoint_info}; +use std::{error, io, thread::sleep, time::Duration}; + +fn main() -> Result<(), Box> { + let matches = App::new(crate_name!()) + .about(crate_description!()) + .version(solana_clap_utils::version!()) + .arg( + Arg::with_name("json_rpc_url") + .long("url") + .value_name("URL") + .takes_value(true) + .required(true) + .validator(is_url) + .help("JSON RPC URL for the cluster"), + ) + .arg( + Arg::with_name("interval") + .long("interval") + .value_name("SECONDS") + .takes_value(true) + .default_value("60") + .help("Wait interval seconds between checking the cluster"), + ) + .get_matches(); + + let interval = Duration::from_secs(value_t_or_exit!(matches, "interval", u64)); + let json_rpc_url = value_t_or_exit!(matches, "json_rpc_url", String); + + solana_logger::setup_with_filter("solana=info"); + solana_metrics::set_panic_hook("watchtower"); + + let rpc_client = RpcClient::new(json_rpc_url.to_string()); + + let mut last_transaction_count = 0; + loop { + let ok = rpc_client + .get_transaction_count() + .and_then(|transaction_count| { + info!("Current transaction count: {}", transaction_count); + + if transaction_count > last_transaction_count { + last_transaction_count = transaction_count; + Ok(true) + } else { + Err(io::Error::new( + io::ErrorKind::Other, + format!( + "Transaction count is not advancing: {} <= {}", + transaction_count, last_transaction_count + ), + )) + } + }) + .unwrap_or_else(|err| { + datapoint_error!( + "watchtower-sanity-failure", + ("test", "transaction-count", String), + ("err", err.to_string(), String) + ); + false + }) + && rpc_client + .get_recent_blockhash() + .and_then(|(blockhash, _fee_calculator)| { + info!("Current blockhash: {}", blockhash); + rpc_client.get_new_blockhash(&blockhash) + }) + .and_then(|(blockhash, _fee_calculator)| { + info!("New blockhash: {}", blockhash); + Ok(true) + }) + .unwrap_or_else(|err| { + datapoint_error!( + "watchtower-sanity-failure", + ("test", "blockhash", String), + ("err", err.to_string(), String) + ); + false + }) + && rpc_client + .get_vote_accounts() + .and_then(|vote_accounts| { + info!("Current validator count: {}", vote_accounts.current.len()); + info!( + "Delinquent validator count: {}", + vote_accounts.delinquent.len() + ); + if vote_accounts.delinquent.is_empty() { + Ok(true) + } else { + Err(io::Error::new( + io::ErrorKind::Other, + format!("{} delinquent validators", vote_accounts.delinquent.len()), + )) + } + }) + .unwrap_or_else(|err| { + datapoint_error!( + "watchtower-sanity-failure", + ("test", "delinquent-validators", String), + ("err", err.to_string(), String) + ); + false + }); + + datapoint_info!("watchtower-sanity", ("ok", ok, bool)); + sleep(interval); + } +}