[anza migration] rename crates (#10)

* rename geyser-plugin-interface

* rename cargo registry

* rename watchtower

* rename ledger tool

* rename validator

* rename install

* rename geyser plugin interface when patch
This commit is contained in:
Yihau Chen 2024-02-22 11:44:01 +08:00 committed by Will Hickey
parent ff1d892277
commit 14cb9cff92
74 changed files with 554 additions and 547 deletions

View File

@ -22,3 +22,6 @@ if semverGT "$project_used_solana_version" "$SOLANA_VER"; then
fi fi
./patch.crates-io.sh "$SOLANA_DIR" ./patch.crates-io.sh "$SOLANA_DIR"
# anza migration stopgap. can be removed when agave is fully recommended for public usage.
sed -i 's/solana-geyser-plugin-interface/agave-geyser-plugin-interface/g' ./Cargo.toml

View File

@ -70,7 +70,7 @@ jobs:
mkdir -p "windows-release/$FOLDER_NAME" mkdir -p "windows-release/$FOLDER_NAME"
cp -v "solana-release-x86_64-pc-windows-msvc.tar.bz2" "windows-release/$FOLDER_NAME/" cp -v "solana-release-x86_64-pc-windows-msvc.tar.bz2" "windows-release/$FOLDER_NAME/"
cp -v "solana-release-x86_64-pc-windows-msvc.yml" "windows-release/$FOLDER_NAME/" cp -v "solana-release-x86_64-pc-windows-msvc.yml" "windows-release/$FOLDER_NAME/"
cp -v "solana-install-init-x86_64-pc-windows-msvc"* "windows-release/$FOLDER_NAME" cp -v "agave-install-init-x86_64-pc-windows-msvc"* "windows-release/$FOLDER_NAME"
- name: Upload Artifacts - name: Upload Artifacts
if: ${{ steps.build.outputs.channel != '' || steps.build.outputs.tag != '' }} if: ${{ steps.build.outputs.channel != '' || steps.build.outputs.tag != '' }}

424
Cargo.lock generated
View File

@ -62,6 +62,217 @@ dependencies = [
"zeroize", "zeroize",
] ]
[[package]]
name = "agave-cargo-registry"
version = "1.19.0"
dependencies = [
"clap 2.33.3",
"flate2",
"hex",
"hyper",
"log",
"rustc_version 0.4.0",
"serde",
"serde_json",
"sha2 0.10.8",
"solana-clap-utils",
"solana-cli",
"solana-cli-config",
"solana-cli-output",
"solana-logger",
"solana-remote-wallet",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-sdk",
"solana-version",
"tar",
"tempfile",
"tokio",
"toml 0.8.10",
]
[[package]]
name = "agave-geyser-plugin-interface"
version = "1.19.0"
dependencies = [
"log",
"solana-sdk",
"solana-transaction-status",
"thiserror",
]
[[package]]
name = "agave-install"
version = "1.19.0"
dependencies = [
"atty",
"bincode",
"bzip2",
"chrono",
"clap 2.33.3",
"console",
"crossbeam-channel",
"ctrlc",
"dirs-next",
"indicatif",
"lazy_static",
"nix 0.26.4",
"reqwest",
"scopeguard",
"semver 1.0.22",
"serde",
"serde_yaml 0.8.26",
"serde_yaml 0.9.32",
"solana-clap-utils",
"solana-config-program",
"solana-logger",
"solana-rpc-client",
"solana-sdk",
"solana-version",
"tar",
"tempfile",
"url 2.5.0",
"winapi 0.3.9",
"winreg",
]
[[package]]
name = "agave-ledger-tool"
version = "1.19.0"
dependencies = [
"assert_cmd",
"bs58",
"bytecount",
"chrono",
"clap 2.33.3",
"crossbeam-channel",
"csv",
"dashmap",
"futures 0.3.30",
"histogram",
"itertools",
"log",
"num_cpus",
"regex",
"serde",
"serde_json",
"signal-hook",
"solana-account-decoder",
"solana-accounts-db",
"solana-bpf-loader-program",
"solana-clap-utils",
"solana-cli-output",
"solana-core",
"solana-cost-model",
"solana-entry",
"solana-geyser-plugin-manager",
"solana-gossip",
"solana-ledger",
"solana-logger",
"solana-measure",
"solana-program-runtime",
"solana-rpc",
"solana-runtime",
"solana-sdk",
"solana-stake-program",
"solana-storage-bigtable",
"solana-streamer",
"solana-svm",
"solana-transaction-status",
"solana-unified-scheduler-pool",
"solana-version",
"solana-vote-program",
"solana_rbpf",
"thiserror",
"tikv-jemallocator",
"tokio",
]
[[package]]
name = "agave-validator"
version = "1.19.0"
dependencies = [
"agave-geyser-plugin-interface",
"chrono",
"clap 2.33.3",
"console",
"core_affinity",
"crossbeam-channel",
"fd-lock",
"indicatif",
"itertools",
"jsonrpc-core",
"jsonrpc-core-client",
"jsonrpc-derive",
"jsonrpc-ipc-server",
"jsonrpc-server-utils",
"lazy_static",
"libc",
"libloading",
"log",
"num_cpus",
"rand 0.8.5",
"rayon",
"serde",
"serde_json",
"serde_yaml 0.9.32",
"signal-hook",
"solana-account-decoder",
"solana-accounts-db",
"solana-clap-utils",
"solana-cli-config",
"solana-core",
"solana-download-utils",
"solana-entry",
"solana-faucet",
"solana-genesis-utils",
"solana-geyser-plugin-manager",
"solana-gossip",
"solana-ledger",
"solana-logger",
"solana-metrics",
"solana-net-utils",
"solana-perf",
"solana-poh",
"solana-rpc",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-runtime",
"solana-sdk",
"solana-send-transaction-service",
"solana-storage-bigtable",
"solana-streamer",
"solana-svm",
"solana-test-validator",
"solana-tpu-client",
"solana-unified-scheduler-pool",
"solana-version",
"solana-vote-program",
"spl-token-2022",
"symlink",
"thiserror",
"tikv-jemallocator",
]
[[package]]
name = "agave-watchtower"
version = "1.19.0"
dependencies = [
"clap 2.33.3",
"humantime",
"log",
"solana-clap-utils",
"solana-cli-config",
"solana-cli-output",
"solana-logger",
"solana-metrics",
"solana-notifier",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-sdk",
"solana-version",
]
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.7.6" version = "0.7.6"
@ -5482,35 +5693,6 @@ dependencies = [
"tar", "tar",
] ]
[[package]]
name = "solana-cargo-registry"
version = "1.19.0"
dependencies = [
"clap 2.33.3",
"flate2",
"hex",
"hyper",
"log",
"rustc_version 0.4.0",
"serde",
"serde_json",
"sha2 0.10.8",
"solana-clap-utils",
"solana-cli",
"solana-cli-config",
"solana-cli-output",
"solana-logger",
"solana-remote-wallet",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-sdk",
"solana-version",
"tar",
"tempfile",
"tokio",
"toml 0.8.10",
]
[[package]] [[package]]
name = "solana-cargo-test-bpf" name = "solana-cargo-test-bpf"
version = "1.19.0" version = "1.19.0"
@ -6040,20 +6222,11 @@ dependencies = [
"solana-sdk", "solana-sdk",
] ]
[[package]]
name = "solana-geyser-plugin-interface"
version = "1.19.0"
dependencies = [
"log",
"solana-sdk",
"solana-transaction-status",
"thiserror",
]
[[package]] [[package]]
name = "solana-geyser-plugin-manager" name = "solana-geyser-plugin-manager"
version = "1.19.0" version = "1.19.0"
dependencies = [ dependencies = [
"agave-geyser-plugin-interface",
"bs58", "bs58",
"crossbeam-channel", "crossbeam-channel",
"json5", "json5",
@ -6064,7 +6237,6 @@ dependencies = [
"serde_json", "serde_json",
"solana-accounts-db", "solana-accounts-db",
"solana-entry", "solana-entry",
"solana-geyser-plugin-interface",
"solana-ledger", "solana-ledger",
"solana-measure", "solana-measure",
"solana-metrics", "solana-metrics",
@ -6126,41 +6298,6 @@ dependencies = [
"thiserror", "thiserror",
] ]
[[package]]
name = "solana-install"
version = "1.19.0"
dependencies = [
"atty",
"bincode",
"bzip2",
"chrono",
"clap 2.33.3",
"console",
"crossbeam-channel",
"ctrlc",
"dirs-next",
"indicatif",
"lazy_static",
"nix 0.26.4",
"reqwest",
"scopeguard",
"semver 1.0.22",
"serde",
"serde_yaml 0.8.26",
"serde_yaml 0.9.32",
"solana-clap-utils",
"solana-config-program",
"solana-logger",
"solana-rpc-client",
"solana-sdk",
"solana-version",
"tar",
"tempfile",
"url 2.5.0",
"winapi 0.3.9",
"winreg",
]
[[package]] [[package]]
name = "solana-keygen" name = "solana-keygen"
version = "1.19.0" version = "1.19.0"
@ -6248,58 +6385,6 @@ dependencies = [
"trees", "trees",
] ]
[[package]]
name = "solana-ledger-tool"
version = "1.19.0"
dependencies = [
"assert_cmd",
"bs58",
"bytecount",
"chrono",
"clap 2.33.3",
"crossbeam-channel",
"csv",
"dashmap",
"futures 0.3.30",
"histogram",
"itertools",
"log",
"num_cpus",
"regex",
"serde",
"serde_json",
"signal-hook",
"solana-account-decoder",
"solana-accounts-db",
"solana-bpf-loader-program",
"solana-clap-utils",
"solana-cli-output",
"solana-core",
"solana-cost-model",
"solana-entry",
"solana-geyser-plugin-manager",
"solana-gossip",
"solana-ledger",
"solana-logger",
"solana-measure",
"solana-program-runtime",
"solana-rpc",
"solana-runtime",
"solana-sdk",
"solana-stake-program",
"solana-storage-bigtable",
"solana-streamer",
"solana-svm",
"solana-transaction-status",
"solana-unified-scheduler-pool",
"solana-version",
"solana-vote-program",
"solana_rbpf",
"thiserror",
"tikv-jemallocator",
"tokio",
]
[[package]] [[package]]
name = "solana-loader-v4-program" name = "solana-loader-v4-program"
version = "1.19.0" version = "1.19.0"
@ -7463,72 +7548,6 @@ dependencies = [
"solana-metrics", "solana-metrics",
] ]
[[package]]
name = "solana-validator"
version = "1.19.0"
dependencies = [
"chrono",
"clap 2.33.3",
"console",
"core_affinity",
"crossbeam-channel",
"fd-lock",
"indicatif",
"itertools",
"jsonrpc-core",
"jsonrpc-core-client",
"jsonrpc-derive",
"jsonrpc-ipc-server",
"jsonrpc-server-utils",
"lazy_static",
"libc",
"libloading",
"log",
"num_cpus",
"rand 0.8.5",
"rayon",
"serde",
"serde_json",
"serde_yaml 0.9.32",
"signal-hook",
"solana-account-decoder",
"solana-accounts-db",
"solana-clap-utils",
"solana-cli-config",
"solana-core",
"solana-download-utils",
"solana-entry",
"solana-faucet",
"solana-genesis-utils",
"solana-geyser-plugin-interface",
"solana-geyser-plugin-manager",
"solana-gossip",
"solana-ledger",
"solana-logger",
"solana-metrics",
"solana-net-utils",
"solana-perf",
"solana-poh",
"solana-rpc",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-runtime",
"solana-sdk",
"solana-send-transaction-service",
"solana-storage-bigtable",
"solana-streamer",
"solana-svm",
"solana-test-validator",
"solana-tpu-client",
"solana-unified-scheduler-pool",
"solana-version",
"solana-vote-program",
"spl-token-2022",
"symlink",
"thiserror",
"tikv-jemallocator",
]
[[package]] [[package]]
name = "solana-version" name = "solana-version"
version = "1.19.0" version = "1.19.0"
@ -7585,25 +7604,6 @@ dependencies = [
"thiserror", "thiserror",
] ]
[[package]]
name = "solana-watchtower"
version = "1.19.0"
dependencies = [
"clap 2.33.3",
"humantime",
"log",
"solana-clap-utils",
"solana-cli-config",
"solana-cli-output",
"solana-logger",
"solana-metrics",
"solana-notifier",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-sdk",
"solana-version",
]
[[package]] [[package]]
name = "solana-wen-restart" name = "solana-wen-restart"
version = "1.19.0" version = "1.19.0"

View File

@ -317,7 +317,7 @@ solana-bench-tps = { path = "bench-tps", version = "=1.19.0" }
solana-bloom = { path = "bloom", version = "=1.19.0" } solana-bloom = { path = "bloom", version = "=1.19.0" }
solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=1.19.0" } solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=1.19.0" }
solana-bucket-map = { path = "bucket_map", version = "=1.19.0" } solana-bucket-map = { path = "bucket_map", version = "=1.19.0" }
solana-cargo-registry = { path = "cargo-registry", version = "=1.19.0" } agave-cargo-registry = { path = "cargo-registry", version = "=1.19.0" }
solana-clap-utils = { path = "clap-utils", version = "=1.19.0" } solana-clap-utils = { path = "clap-utils", version = "=1.19.0" }
solana-clap-v3-utils = { path = "clap-v3-utils", version = "=1.19.0" } solana-clap-v3-utils = { path = "clap-v3-utils", version = "=1.19.0" }
solana-cli = { path = "cli", version = "=1.19.0" } solana-cli = { path = "cli", version = "=1.19.0" }
@ -336,7 +336,7 @@ solana-frozen-abi = { path = "frozen-abi", version = "=1.19.0" }
solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=1.19.0" } solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=1.19.0" }
solana-genesis = { path = "genesis", version = "=1.19.0" } solana-genesis = { path = "genesis", version = "=1.19.0" }
solana-genesis-utils = { path = "genesis-utils", version = "=1.19.0" } solana-genesis-utils = { path = "genesis-utils", version = "=1.19.0" }
solana-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=1.19.0" } agave-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=1.19.0" }
solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=1.19.0" } solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=1.19.0" }
solana-gossip = { path = "gossip", version = "=1.19.0" } solana-gossip = { path = "gossip", version = "=1.19.0" }
solana-ledger = { path = "ledger", version = "=1.19.0" } solana-ledger = { path = "ledger", version = "=1.19.0" }

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-cargo-registry" name = "agave-cargo-registry"
description = "Solana cargo registry" description = "Solana cargo registry"
documentation = "https://docs.rs/solana-cargo-registry" documentation = "https://docs.rs/agave-cargo-registry"
version = { workspace = true } version = { workspace = true }
authors = { workspace = true } authors = { workspace = true }
repository = { workspace = true } repository = { workspace = true }

View File

@ -202,8 +202,8 @@ killNodes() {
# Try to use the RPC exit API to cleanly exit the first two nodes # Try to use the RPC exit API to cleanly exit the first two nodes
# (dynamic nodes, -x, are just killed) # (dynamic nodes, -x, are just killed)
echo "--- RPC exit" echo "--- RPC exit"
$solana_validator --ledger "$SOLANA_CONFIG_DIR"/bootstrap-validator exit --force || true $agave_validator --ledger "$SOLANA_CONFIG_DIR"/bootstrap-validator exit --force || true
$solana_validator --ledger "$SOLANA_CONFIG_DIR"/validator exit --force || true $agave_validator --ledger "$SOLANA_CONFIG_DIR"/validator exit --force || true
# Give the nodes a splash of time to cleanly exit before killing them # Give the nodes a splash of time to cleanly exit before killing them
sleep 2 sleep 2

View File

@ -31,7 +31,7 @@ SOLANA_RELEASE=$CHANNEL_OR_TAG
SOLANA_INSTALL_INIT_ARGS=$CHANNEL_OR_TAG SOLANA_INSTALL_INIT_ARGS=$CHANNEL_OR_TAG
SOLANA_DOWNLOAD_ROOT=https://release.anza.xyz SOLANA_DOWNLOAD_ROOT=https://release.anza.xyz
EOF EOF
cat install/solana-install-init.sh >>release.anza.xyz-install cat install/agave-install-init.sh >>release.anza.xyz-install
echo --- GCS: "install" echo --- GCS: "install"
upload-gcs-artifact "/solana/release.anza.xyz-install" "gs://anza-release/$CHANNEL_OR_TAG/install" upload-gcs-artifact "/solana/release.anza.xyz-install" "gs://anza-release/$CHANNEL_OR_TAG/install"

View File

@ -93,7 +93,7 @@ echo --- Creating release tarball
tar cvf "${TARBALL_BASENAME}"-$TARGET.tar "${RELEASE_BASENAME}" tar cvf "${TARBALL_BASENAME}"-$TARGET.tar "${RELEASE_BASENAME}"
bzip2 "${TARBALL_BASENAME}"-$TARGET.tar bzip2 "${TARBALL_BASENAME}"-$TARGET.tar
cp "${RELEASE_BASENAME}"/bin/solana-install-init solana-install-init-$TARGET cp "${RELEASE_BASENAME}"/bin/agave-install-init agave-install-init-$TARGET
cp "${RELEASE_BASENAME}"/version.yml "${TARBALL_BASENAME}"-$TARGET.yml cp "${RELEASE_BASENAME}"/version.yml "${TARBALL_BASENAME}"-$TARGET.yml
) )
@ -110,7 +110,7 @@ fi
source ci/upload-ci-artifact.sh source ci/upload-ci-artifact.sh
for file in "${TARBALL_BASENAME}"-$TARGET.tar.bz2 "${TARBALL_BASENAME}"-$TARGET.yml solana-install-init-"$TARGET"* $MAYBE_TARBALLS; do for file in "${TARBALL_BASENAME}"-$TARGET.tar.bz2 "${TARBALL_BASENAME}"-$TARGET.yml agave-install-init-"$TARGET"* $MAYBE_TARBALLS; do
if [[ -n $DO_NOT_PUBLISH_TAR ]]; then if [[ -n $DO_NOT_PUBLISH_TAR ]]; then
upload-ci-artifact "$file" upload-ci-artifact "$file"
echo "Skipped $file due to DO_NOT_PUBLISH_TAR" echo "Skipped $file due to DO_NOT_PUBLISH_TAR"

View File

@ -31,7 +31,7 @@ while [[ $latest_slot -le $((snapshot_slot + 1)) ]]; do
latest_slot=$($solana_cli --url http://localhost:8899 slot --commitment processed) latest_slot=$($solana_cli --url http://localhost:8899 slot --commitment processed)
done done
$solana_validator --ledger config/ledger exit --force || true $agave_validator --ledger config/ledger exit --force || true
wait $pid wait $pid

View File

@ -76,7 +76,7 @@ Major releases:
- [`solana-program`](https://docs.rs/solana-program/) - Rust SDK for writing programs - [`solana-program`](https://docs.rs/solana-program/) - Rust SDK for writing programs
- [`solana-client`](https://docs.rs/solana-client/) - Rust client for connecting to RPC API - [`solana-client`](https://docs.rs/solana-client/) - Rust client for connecting to RPC API
- [`solana-cli-config`](https://docs.rs/solana-cli-config/) - Rust client for managing Solana CLI config files - [`solana-cli-config`](https://docs.rs/solana-cli-config/) - Rust client for managing Solana CLI config files
- [`solana-geyser-plugin-interface`](https://docs.rs/solana-geyser-plugin-interface/) - Rust interface for developing Solana Geyser plugins. - [`agave-geyser-plugin-interface`](https://docs.rs/agave-geyser-plugin-interface/) - Rust interface for developing Solana Geyser plugins.
Patch releases: Patch releases:

View File

@ -56,7 +56,7 @@ Please update your PATH environment variable to include the solana programs:
solana --version solana --version
``` ```
- After a successful install, `solana-install update` may be used to easily - After a successful install, `agave-install update` may be used to easily
update the Solana software to a newer version at any time. update the Solana software to a newer version at any time.
--- ---
@ -74,7 +74,7 @@ solana --version
installer into a temporary directory: installer into a temporary directory:
```bash ```bash
cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/solana-install-init-x86_64-pc-windows-msvc.exe --output C:\solana-install-tmp\solana-install-init.exe --create-dirs" cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/agave-install-init-x86_64-pc-windows-msvc.exe --output C:\agave-install-tmp\agave-install-init.exe --create-dirs"
``` ```
- Copy and paste the following command, then press Enter to install the latest - Copy and paste the following command, then press Enter to install the latest
@ -82,7 +82,7 @@ cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/solana-ins
to allow the program to run. to allow the program to run.
```bash ```bash
C:\solana-install-tmp\solana-install-init.exe LATEST_SOLANA_RELEASE_VERSION C:\agave-install-tmp\agave-install-init.exe LATEST_SOLANA_RELEASE_VERSION
``` ```
- When the installer is finished, press Enter. - When the installer is finished, press Enter.
@ -97,12 +97,12 @@ C:\solana-install-tmp\solana-install-init.exe LATEST_SOLANA_RELEASE_VERSION
solana --version solana --version
``` ```
- After a successful install, `solana-install update` may be used to easily - After a successful install, `agave-install update` may be used to easily
update the Solana software to a newer version at any time. update the Solana software to a newer version at any time.
## Download Prebuilt Binaries ## Download Prebuilt Binaries
If you would rather not use `solana-install` to manage the install, you can If you would rather not use `agave-install` to manage the install, you can
manually download and install the binaries. manually download and install the binaries.
### Linux ### Linux
@ -255,7 +255,7 @@ You can then run the following command to obtain the same result as with
prebuilt binaries: prebuilt binaries:
```bash ```bash
solana-install init agave-install init
``` ```
## Use Homebrew ## Use Homebrew

View File

@ -41,10 +41,10 @@ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=devnet,u=s
solana config set --url https://api.devnet.solana.com solana config set --url https://api.devnet.solana.com
``` ```
##### Example `solana-validator` command-line ##### Example `agave-validator` command-line
```bash ```bash
$ solana-validator \ $ agave-validator \
--identity validator-keypair.json \ --identity validator-keypair.json \
--vote-account vote-account-keypair.json \ --vote-account vote-account-keypair.json \
--known-validator dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92 \ --known-validator dv1ZAGvdsz5hHLwWXsVnM94hWf1pjbKVau1QVkaMJ92 \
@ -93,10 +93,10 @@ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=tds,u=test
solana config set --url https://api.testnet.solana.com solana config set --url https://api.testnet.solana.com
``` ```
##### Example `solana-validator` command-line ##### Example `agave-validator` command-line
```bash ```bash
$ solana-validator \ $ agave-validator \
--identity validator-keypair.json \ --identity validator-keypair.json \
--vote-account vote-account-keypair.json \ --vote-account vote-account-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
@ -145,10 +145,10 @@ export SOLANA_METRICS_CONFIG="host=https://metrics.solana.com:8086,db=mainnet-be
solana config set --url https://api.mainnet-beta.solana.com solana config set --url https://api.mainnet-beta.solana.com
``` ```
##### Example `solana-validator` command-line ##### Example `agave-validator` command-line
```bash ```bash
$ solana-validator \ $ agave-validator \
--identity ~/validator-keypair.json \ --identity ~/validator-keypair.json \
--vote-account ~/vote-account-keypair.json \ --vote-account ~/vote-account-keypair.json \
--known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \ --known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \

View File

@ -108,7 +108,7 @@ For example
Generally we are using `debug` for infrequent debug messages, `trace` for potentially frequent messages and `info` for performance-related logging. Generally we are using `debug` for infrequent debug messages, `trace` for potentially frequent messages and `info` for performance-related logging.
You can also attach to a running process with GDB. The leader's process is named _solana-validator_: You can also attach to a running process with GDB. The leader's process is named _agave-validator_:
```bash ```bash
sudo gdb sudo gdb

View File

@ -13,16 +13,16 @@ This document proposes an easy to use software install and updater that can be u
The easiest install method for supported platforms: The easiest install method for supported platforms:
```bash ```bash
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/solana-install-init.sh | sh $ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/agave-install-init.sh | sh
``` ```
This script will check github for the latest tagged release and download and run the `solana-install-init` binary from there. This script will check github for the latest tagged release and download and run the `agave-install-init` binary from there.
If additional arguments need to be specified during the installation, the following shell syntax is used: If additional arguments need to be specified during the installation, the following shell syntax is used:
```bash ```bash
$ init_args=.... # arguments for `solana-install-init ...` $ init_args=.... # arguments for `agave-install-init ...`
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/solana-install-init.sh | sh -s - ${init_args} $ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/agave-install-init.sh | sh -s - ${init_args}
``` ```
### Fetch and run a pre-built installer from a Github release ### Fetch and run a pre-built installer from a Github release
@ -30,9 +30,9 @@ $ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/
With a well-known release URL, a pre-built binary can be obtained for supported platforms: With a well-known release URL, a pre-built binary can be obtained for supported platforms:
```bash ```bash
$ curl -o solana-install-init https://github.com/solana-labs/solana/releases/download/v1.0.0/solana-install-init-x86_64-apple-darwin $ curl -o agave-install-init https://github.com/solana-labs/solana/releases/download/v1.0.0/agave-install-init-x86_64-apple-darwin
$ chmod +x ./solana-install-init $ chmod +x ./agave-install-init
$ ./solana-install-init --help $ ./agave-install-init --help
``` ```
### Build and run the installer from source ### Build and run the installer from source
@ -51,16 +51,16 @@ Given a solana release tarball \(as created by `ci/publish-tarball.sh`\) that ha
```bash ```bash
$ solana-keygen new -o update-manifest.json # <-- only generated once, the public key is shared with users $ solana-keygen new -o update-manifest.json # <-- only generated once, the public key is shared with users
$ solana-install deploy http://example.com/path/to/solana-release.tar.bz2 update-manifest.json $ agave-install deploy http://example.com/path/to/solana-release.tar.bz2 update-manifest.json
``` ```
### Run a validator node that auto updates itself ### Run a validator node that auto updates itself
```bash ```bash
$ solana-install init --pubkey 92DMonmBYXwEMHJ99c9ceRSpAmk9v6i3RdvDdXaVcrfj # <-- pubkey is obtained from whoever is deploying the updates $ agave-install init --pubkey 92DMonmBYXwEMHJ99c9ceRSpAmk9v6i3RdvDdXaVcrfj # <-- pubkey is obtained from whoever is deploying the updates
$ export PATH=~/.local/share/solana-install/bin:$PATH $ export PATH=~/.local/share/agave-install/bin:$PATH
$ solana-keygen ... # <-- runs the latest solana-keygen $ solana-keygen ... # <-- runs the latest solana-keygen
$ solana-install run solana-validator ... # <-- runs a validator, restarting it as necessary when an update is applied $ agave-install run agave-validator ... # <-- runs a validator, restarting it as necessary when an update is applied
``` ```
## On-chain Update Manifest ## On-chain Update Manifest
@ -87,9 +87,9 @@ pub struct SignedUpdateManifest {
} }
``` ```
Note that the `manifest` field itself contains a corresponding signature \(`manifest_signature`\) to guard against man-in-the-middle attacks between the `solana-install` tool and the solana cluster RPC API. Note that the `manifest` field itself contains a corresponding signature \(`manifest_signature`\) to guard against man-in-the-middle attacks between the `agave-install` tool and the solana cluster RPC API.
To guard against rollback attacks, `solana-install` will refuse to install an update with an older `timestamp_secs` than what is currently installed. To guard against rollback attacks, `agave-install` will refuse to install an update with an older `timestamp_secs` than what is currently installed.
## Release Archive Contents ## Release Archive Contents
@ -101,17 +101,17 @@ A release archive is expected to be a tar file compressed with bzip2 with the fo
- `/bin/` -- directory containing available programs in the release. - `/bin/` -- directory containing available programs in the release.
`solana-install` will symlink this directory to `agave-install` will symlink this directory to
`~/.local/share/solana-install/bin` for use by the `PATH` environment `~/.local/share/agave-install/bin` for use by the `PATH` environment
variable. variable.
- `...` -- any additional files and directories are permitted - `...` -- any additional files and directories are permitted
## solana-install Tool ## agave-install Tool
The `solana-install` tool is used by the user to install and update their cluster software. The `agave-install` tool is used by the user to install and update their cluster software.
It manages the following files and directories in the user's home directory: It manages the following files and directories in the user's home directory:
@ -122,11 +122,11 @@ It manages the following files and directories in the user's home directory:
### Command-line Interface ### Command-line Interface
```text ```text
solana-install 0.16.0 agave-install 0.16.0
The solana cluster software installer The solana cluster software installer
USAGE: USAGE:
solana-install [OPTIONS] <SUBCOMMAND> agave-install [OPTIONS] <SUBCOMMAND>
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information
@ -145,11 +145,11 @@ SUBCOMMANDS:
``` ```
```text ```text
solana-install-init agave-install-init
initializes a new installation initializes a new installation
USAGE: USAGE:
solana-install init [OPTIONS] agave-install init [OPTIONS]
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information
@ -161,11 +161,11 @@ OPTIONS:
``` ```
```text ```text
solana-install info agave-install info
displays information about the current installation displays information about the current installation
USAGE: USAGE:
solana-install info [FLAGS] agave-install info [FLAGS]
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information
@ -173,11 +173,11 @@ FLAGS:
``` ```
```text ```text
solana-install deploy agave-install deploy
deploys a new update deploys a new update
USAGE: USAGE:
solana-install deploy <download_url> <update_manifest_keypair> agave-install deploy <download_url> <update_manifest_keypair>
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information
@ -188,22 +188,22 @@ ARGS:
``` ```
```text ```text
solana-install update agave-install update
checks for an update, and if available downloads and applies it checks for an update, and if available downloads and applies it
USAGE: USAGE:
solana-install update agave-install update
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information
``` ```
```text ```text
solana-install run agave-install run
Runs a program while periodically checking and applying software updates Runs a program while periodically checking and applying software updates
USAGE: USAGE:
solana-install run <program_name> [program_arguments]... agave-install run <program_name> [program_arguments]...
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information

View File

@ -68,7 +68,7 @@ the results of BigTable queries more complicated but is not a significant issue.
## Data Population ## Data Population
The ongoing population of instance data will occur on an epoch cadence through The ongoing population of instance data will occur on an epoch cadence through
the use of a new `solana-ledger-tool` command that will convert rocksdb data for the use of a new `agave-ledger-tool` command that will convert rocksdb data for
a given slot range into the instance schema. a given slot range into the instance schema.
The same process will be run once, manually, to backfill the existing ledger The same process will be run once, manually, to backfill the existing ledger

View File

@ -23,12 +23,12 @@ watch past workshops through the
## Help with the validator command line ## Help with the validator command line
From within the Solana CLI, you can execute the `solana-validator` command with From within the Solana CLI, you can execute the `agave-validator` command with
the `--help` flag to get a better understanding of the flags and sub commands the `--help` flag to get a better understanding of the flags and sub commands
available. available.
``` ```
solana-validator --help agave-validator --help
``` ```
## Restarting your validator ## Restarting your validator
@ -49,14 +49,14 @@ solana leader-schedule
Based on the current slot and the leader schedule, you can calculate open time Based on the current slot and the leader schedule, you can calculate open time
windows where your validator is not expected to produce blocks. windows where your validator is not expected to produce blocks.
Assuming you are ready to restart, you may use the `solana-validator exit` Assuming you are ready to restart, you may use the `agave-validator exit`
command. The command exits your validator process when an appropriate idle time command. The command exits your validator process when an appropriate idle time
window is reached. Assuming that you have systemd implemented for your validator window is reached. Assuming that you have systemd implemented for your validator
process, the validator should restart automatically after the exit. See the process, the validator should restart automatically after the exit. See the
below help command for details: below help command for details:
``` ```
solana-validator exit --help agave-validator exit --help
``` ```
## Upgrading ## Upgrading
@ -75,28 +75,28 @@ process.
It is a best practice to always build your Solana binaries from source. If you It is a best practice to always build your Solana binaries from source. If you
build from source, you are certain that the code you are building has not been build from source, you are certain that the code you are building has not been
tampered with before the binary was created. You may also be able to optimize tampered with before the binary was created. You may also be able to optimize
your `solana-validator` binary to your specific hardware. your `agave-validator` binary to your specific hardware.
If you build from source on the validator machine (or a machine with the same If you build from source on the validator machine (or a machine with the same
CPU), you can target your specific architecture using the `-march` flag. Refer CPU), you can target your specific architecture using the `-march` flag. Refer
to the following doc for to the following doc for
[instructions on building from source](../../cli/install.md#build-from-source). [instructions on building from source](../../cli/install.md#build-from-source).
### solana-install ### agave-install
If you are not comfortable building from source, or you need to quickly install If you are not comfortable building from source, or you need to quickly install
a new version to test something out, you could instead try using the a new version to test something out, you could instead try using the
`solana-install` command. `agave-install` command.
Assuming you want to install Solana version `1.14.17`, you would execute the Assuming you want to install Solana version `1.14.17`, you would execute the
following: following:
``` ```
solana-install init 1.14.17 agave-install init 1.14.17
``` ```
This command downloads the executable for `1.14.17` and installs it into a This command downloads the executable for `1.14.17` and installs it into a
`.local` directory. You can also look at `solana-install --help` for more `.local` directory. You can also look at `agave-install --help` for more
options. options.
> **Note** this command only works if you already have the solana cli installed. > **Note** this command only works if you already have the solana cli installed.
@ -106,7 +106,7 @@ options.
### Restart ### Restart
For all install methods, the validator process will need to be restarted before For all install methods, the validator process will need to be restarted before
the newly installed version is in use. Use `solana-validator exit` to restart the newly installed version is in use. Use `agave-validator exit` to restart
your validator process. your validator process.
### Verifying version ### Verifying version
@ -132,13 +132,13 @@ have state locally. In other cases such as restarts for upgrades, a snapshot
download should be avoided. download should be avoided.
To avoid downloading a snapshot on restart, add the following flag to the To avoid downloading a snapshot on restart, add the following flag to the
`solana-validator` command: `agave-validator` command:
``` ```
--no-snapshot-fetch --no-snapshot-fetch
``` ```
If you use this flag with the `solana-validator` command, make sure that you run If you use this flag with the `agave-validator` command, make sure that you run
`solana catchup <pubkey>` after your validator starts to make sure that the `solana catchup <pubkey>` after your validator starts to make sure that the
validator is catching up in a reasonable time. After some time (potentially a validator is catching up in a reasonable time. After some time (potentially a
few hours), if it appears that your validator continues to fall behind, then you few hours), if it appears that your validator continues to fall behind, then you
@ -199,7 +199,7 @@ It is important that you do not accidentally run out of funds in your identity
account, as your node will stop voting. It is also important to note that this account, as your node will stop voting. It is also important to note that this
account keypair is the most vulnerable of the three keypairs in a vote account account keypair is the most vulnerable of the three keypairs in a vote account
because the keypair for the identity account is stored on your validator when because the keypair for the identity account is stored on your validator when
running the `solana-validator` software. How much SOL you should store there is running the `agave-validator` software. How much SOL you should store there is
up to you. As a best practice, make sure to check the account regularly and up to you. As a best practice, make sure to check the account regularly and
refill or deduct from it as needed. To check the account balance do: refill or deduct from it as needed. To check the account balance do:
@ -207,7 +207,7 @@ refill or deduct from it as needed. To check the account balance do:
solana balance validator-keypair.json solana balance validator-keypair.json
``` ```
> **Note** `solana-watchtower` can monitor for a minimum validator identity > **Note** `agave-watchtower` can monitor for a minimum validator identity
> balance. See [monitoring best practices](./monitoring.md) for details. > balance. See [monitoring best practices](./monitoring.md) for details.
## Withdrawing From The Vote Account ## Withdrawing From The Vote Account

View File

@ -4,34 +4,34 @@ sidebar_label: Monitoring
pagination_label: "Best Practices: Validator Monitoring" pagination_label: "Best Practices: Validator Monitoring"
--- ---
It is essential that you have monitoring in place on your validator. In the event that your validator is delinquent (behind the rest of the network) you want to respond immediately to fix the issue. One very useful tool to monitor your validator is [`solana-watchtower`](#solana-watchtower). It is essential that you have monitoring in place on your validator. In the event that your validator is delinquent (behind the rest of the network) you want to respond immediately to fix the issue. One very useful tool to monitor your validator is [`agave-watchtower`](#agave-watchtower).
## Solana Watchtower ## Solana Watchtower
Solana Watchtower is an extremely useful monitoring tool that will regularly monitor the health of your validator. It can monitor your validator for delinquency then notify you on your application of choice: Slack, Discord, Telegram or Twilio. Additionally, `solana-watchtower` has the ability to monitor the health of the entire cluster so that you can be aware of any cluster wide problems. Solana Watchtower is an extremely useful monitoring tool that will regularly monitor the health of your validator. It can monitor your validator for delinquency then notify you on your application of choice: Slack, Discord, Telegram or Twilio. Additionally, `agave-watchtower` has the ability to monitor the health of the entire cluster so that you can be aware of any cluster wide problems.
### Getting Started ### Getting Started
To get started with Solana Watchtower, run `solana-watchtower --help`. From the help menu, you can see the optional flags and an explanation of the command. To get started with Solana Watchtower, run `agave-watchtower --help`. From the help menu, you can see the optional flags and an explanation of the command.
Here is a sample command that will monitor a validator node with an identity public key of `2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp`: Here is a sample command that will monitor a validator node with an identity public key of `2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp`:
``` ```
solana-watchtower --monitor-active-stake --validator-identity \ agave-watchtower --monitor-active-stake --validator-identity \
2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp 2uTk98rqqwENevkPH2AHHzGHXgeGc1h6ku8hQUqWeXZp
``` ```
The command will monitor your validator, but you will not get notifications unless you added the environment variables mentioned in `solana-watchtower --help`. Since getting each of these services setup for notifications is not straight forward, the next section will walk through [setting up watchtower notifications on Telegram](#setup-telegram-notifications). The command will monitor your validator, but you will not get notifications unless you added the environment variables mentioned in `agave-watchtower --help`. Since getting each of these services setup for notifications is not straight forward, the next section will walk through [setting up watchtower notifications on Telegram](#setup-telegram-notifications).
### Best Practices ### Best Practices
It is a best practice to run the `solana-watchtower` command on a separate server from your validator. It is a best practice to run the `agave-watchtower` command on a separate server from your validator.
In the case that you run `solana-watchtower` on the same computer as your `solana-validator` process, then during catastrophic events like a power outage, you will not be aware of the issue, because your `solana-watchtower` process will stop at the same time as your `solana-validator` process. In the case that you run `agave-watchtower` on the same computer as your `agave-validator` process, then during catastrophic events like a power outage, you will not be aware of the issue, because your `agave-watchtower` process will stop at the same time as your `agave-validator` process.
Additionally, while running the `solana-watchtower` process manually with environment variables set in the terminal is a good way to test out the command, it is not operationally sound because the process will not be restarted when the terminal closes or during a system restart. Additionally, while running the `agave-watchtower` process manually with environment variables set in the terminal is a good way to test out the command, it is not operationally sound because the process will not be restarted when the terminal closes or during a system restart.
Instead, you could run your `solana-watchtower` command as a system process similar to `solana-validator`. In the system process file, you can specify the environment variables for your bot. Instead, you could run your `agave-watchtower` command as a system process similar to `agave-validator`. In the system process file, you can specify the environment variables for your bot.
### Setup Telegram Notifications ### Setup Telegram Notifications
@ -41,7 +41,7 @@ To send validator health notifications to your Telegram account, we are going to
2. Send a message to the bot 2. Send a message to the bot
3. Create a Telegram group that will get the watchtower notifications 3. Create a Telegram group that will get the watchtower notifications
4. Add the environment variables to your command line environment 4. Add the environment variables to your command line environment
5. Restart the `solana-watchtower` command 5. Restart the `agave-watchtower` command
#### Create a Bot Using BotFather #### Create a Bot Using BotFather
@ -61,7 +61,7 @@ In Telegram, click on the new message icon and then select new group. Find your
Now that you have a bot setup, you will need to set the environment variables for the bot so that watchtower can send notifications. Now that you have a bot setup, you will need to set the environment variables for the bot so that watchtower can send notifications.
First, recall the chat message that you got from _@BotFather_. In the message, there was an HTTP API token for your bot. The token will have this format: `389178471:MMTKMrnZB4ErUzJmuFIXTKE6DupLSgoa7h4o`. You will use that token to set the `TELEGRAM_BOT_TOKEN` environment variable. In the terminal where you plan to run `solana-watchtower`, run the following: First, recall the chat message that you got from _@BotFather_. In the message, there was an HTTP API token for your bot. The token will have this format: `389178471:MMTKMrnZB4ErUzJmuFIXTKE6DupLSgoa7h4o`. You will use that token to set the `TELEGRAM_BOT_TOKEN` environment variable. In the terminal where you plan to run `agave-watchtower`, run the following:
``` ```
export TELEGRAM_BOT_TOKEN=<HTTP API Token> export TELEGRAM_BOT_TOKEN=<HTTP API Token>
@ -73,14 +73,14 @@ Next, in your browser, go to `https://api.telegram.org/bot<HTTP API Token>/getUp
The response should be in JSON. Search for the string `"chat":` in the JSON. The `id` value of that chat is your `TELEGRAM_CHAT_ID`. It will be a negative number like: `-781559558`. Remember to include the negative sign! If you cannot find `"chat":` in the JSON, then you may have to remove the bot from your chat group and add it again. The response should be in JSON. Search for the string `"chat":` in the JSON. The `id` value of that chat is your `TELEGRAM_CHAT_ID`. It will be a negative number like: `-781559558`. Remember to include the negative sign! If you cannot find `"chat":` in the JSON, then you may have to remove the bot from your chat group and add it again.
With your Telegram chat id in hand, export the environment variable where you plan to run `solana-watchtower`: With your Telegram chat id in hand, export the environment variable where you plan to run `agave-watchtower`:
``` ```
export TELEGRAM_CHAT_ID=<negative chat id number> export TELEGRAM_CHAT_ID=<negative chat id number>
``` ```
#### Restart solana-watchtower #### Restart agave-watchtower
Once your environment variables are set, restart `solana-watchtower`. You should see output about your validator. Once your environment variables are set, restart `agave-watchtower`. You should see output about your validator.
To test that your Telegram configuration is working properly, you could stop your validator briefly until it is labeled as delinquent. Up to a minute after the validator is delinquent, you should receive a message in the Telegram group from your bot. Start the validator again and verify that you get another message in your Telegram group from the bot. The message should say `all clear`. To test that your Telegram configuration is working properly, you could stop your validator briefly until it is labeled as delinquent. Up to a minute after the validator is delinquent, you should receive a message in the Telegram group from your bot. Start the validator again and verify that you get another message in your Telegram group from the bot. The message should say `all clear`.

View File

@ -11,7 +11,7 @@ pagination_label: "Validator Guides: Restart a Cluster"
In Solana 1.14 or greater, run the following command to output the latest In Solana 1.14 or greater, run the following command to output the latest
optimistically confirmed slot your validator observed: optimistically confirmed slot your validator observed:
```bash ```bash
solana-ledger-tool -l ledger latest-optimistic-slots agave-ledger-tool -l ledger latest-optimistic-slots
``` ```
In Solana 1.13 or less, the latest optimistically confirmed can be found by looking for the more recent occurrence of In Solana 1.13 or less, the latest optimistically confirmed can be found by looking for the more recent occurrence of
@ -34,11 +34,11 @@ instead.
### Step 4. Create a new snapshot for slot `SLOT_X` with a hard fork at slot `SLOT_X` ### Step 4. Create a new snapshot for slot `SLOT_X` with a hard fork at slot `SLOT_X`
```bash ```bash
$ solana-ledger-tool -l <LEDGER_PATH> --snapshot-archive-path <SNAPSHOTS_PATH> --incremental-snapshot-archive-path <INCREMENTAL_SNAPSHOTS_PATH> create-snapshot SLOT_X <SNAPSHOTS_PATH> --hard-fork SLOT_X $ agave-ledger-tool -l <LEDGER_PATH> --snapshot-archive-path <SNAPSHOTS_PATH> --incremental-snapshot-archive-path <INCREMENTAL_SNAPSHOTS_PATH> create-snapshot SLOT_X <SNAPSHOTS_PATH> --hard-fork SLOT_X
``` ```
The snapshots directory should now contain the new snapshot. The snapshots directory should now contain the new snapshot.
`solana-ledger-tool create-snapshot` will also output the new shred version, and bank hash value, `agave-ledger-tool create-snapshot` will also output the new shred version, and bank hash value,
call this NEW_SHRED_VERSION and NEW_BANK_HASH respectively. call this NEW_SHRED_VERSION and NEW_BANK_HASH respectively.
Adjust your validator's arguments: Adjust your validator's arguments:
@ -68,7 +68,7 @@ Post something like the following to #announcements (adjusting the text as appro
> 2. a. Preferred method, start from your local ledger with: > 2. a. Preferred method, start from your local ledger with:
> >
> ```bash > ```bash
> solana-validator > agave-validator
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART > --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART > --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
> --hard-fork SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART > --hard-fork SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
@ -84,7 +84,7 @@ Post something like the following to #announcements (adjusting the text as appro
> b. If your validator doesn't have ledger up to slot SLOT_X or if you have deleted your ledger, have it instead download a snapshot with: > b. If your validator doesn't have ledger up to slot SLOT_X or if you have deleted your ledger, have it instead download a snapshot with:
> >
> ```bash > ```bash
> solana-validator > agave-validator
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART > --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART > --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
> --entrypoint entrypoint.testnet.solana.com:8001 > --entrypoint entrypoint.testnet.solana.com:8001
@ -95,7 +95,7 @@ Post something like the following to #announcements (adjusting the text as appro
> ... # <-- your other --identity/--vote-account/etc arguments > ... # <-- your other --identity/--vote-account/etc arguments
> ``` > ```
> >
> You can check for which slots your ledger has with: `solana-ledger-tool -l path/to/ledger bounds` > You can check for which slots your ledger has with: `agave-ledger-tool -l path/to/ledger bounds`
> >
> 3. Wait until 80% of the stake comes online > 3. Wait until 80% of the stake comes online
> >
@ -122,7 +122,7 @@ and create a new snapshot with additional `--destake-vote-account <PUBKEY>`
arguments for each of the non-responsive validator's vote account address arguments for each of the non-responsive validator's vote account address
```bash ```bash
$ solana-ledger-tool -l ledger create-snapshot SLOT_X ledger --hard-fork SLOT_X \ $ agave-ledger-tool -l ledger create-snapshot SLOT_X ledger --hard-fork SLOT_X \
--destake-vote-account <VOTE_ACCOUNT_1> \ --destake-vote-account <VOTE_ACCOUNT_1> \
--destake-vote-account <VOTE_ACCOUNT_2> \ --destake-vote-account <VOTE_ACCOUNT_2> \
. .

View File

@ -85,11 +85,11 @@ For more information on etcd TLS setup, please refer to
https://etcd.io/docs/v3.5/op-guide/security/#example-2-client-to-server-authentication-with-https-client-certificates https://etcd.io/docs/v3.5/op-guide/security/#example-2-client-to-server-authentication-with-https-client-certificates
### Primary Validator ### Primary Validator
The following additional `solana-validator` parameters are required to enable The following additional `agave-validator` parameters are required to enable
tower storage into etcd: tower storage into etcd:
``` ```
solana-validator ... \ agave-validator ... \
--tower-storage etcd \ --tower-storage etcd \
--etcd-cacert-file certs/etcd-ca.pem \ --etcd-cacert-file certs/etcd-ca.pem \
--etcd-cert-file certs/validator.pem \ --etcd-cert-file certs/validator.pem \
@ -103,7 +103,7 @@ that your etcd endpoint remain accessible at all times.
### Secondary Validator ### Secondary Validator
Configure the secondary validator like the primary with the exception of the Configure the secondary validator like the primary with the exception of the
following `solana-validator` command-line argument changes: following `agave-validator` command-line argument changes:
* Generate and use a secondary validator identity: `--identity secondary-validator-keypair.json` * Generate and use a secondary validator identity: `--identity secondary-validator-keypair.json`
* Add `--no-check-vote-account` * Add `--no-check-vote-account`
* Add `--authorized-voter validator-keypair.json` (where * Add `--authorized-voter validator-keypair.json` (where
@ -114,8 +114,8 @@ When both validators are running normally and caught up to the cluster, a
failover from primary to secondary can be triggered by running the following failover from primary to secondary can be triggered by running the following
command on the secondary validator: command on the secondary validator:
```bash ```bash
$ solana-validator wait-for-restart-window --identity validator-keypair.json \ $ agave-validator wait-for-restart-window --identity validator-keypair.json \
&& solana-validator set-identity validator-keypair.json && agave-validator set-identity validator-keypair.json
``` ```
The secondary validator will acquire a lock on the tower in etcd to ensure The secondary validator will acquire a lock on the tower in etcd to ensure
@ -131,7 +131,7 @@ exit. However if/when the secondary validator restarts, it will do so using the
secondary validator identity and thus the restart cycle is broken. secondary validator identity and thus the restart cycle is broken.
## Triggering a failover via monitoring ## Triggering a failover via monitoring
Monitoring of your choosing can invoke the `solana-validator set-identity Monitoring of your choosing can invoke the `agave-validator set-identity
validator-keypair.json` command mentioned in the previous section. validator-keypair.json` command mentioned in the previous section.
It is not necessary to guarantee the primary validator has halted before failing It is not necessary to guarantee the primary validator has halted before failing

View File

@ -32,7 +32,7 @@ detail on cluster activity.
## Enabling CUDA ## Enabling CUDA
If your machine has a GPU with CUDA installed \(Linux-only currently\), include If your machine has a GPU with CUDA installed \(Linux-only currently\), include
the `--cuda` argument to `solana-validator`. the `--cuda` argument to `agave-validator`.
When your validator is started look for the following log message to indicate When your validator is started look for the following log message to indicate
that CUDA is enabled: `"[<timestamp> solana::validator] CUDA is enabled"` that CUDA is enabled: `"[<timestamp> solana::validator] CUDA is enabled"`
@ -47,7 +47,7 @@ the following commands.
#### **Optimize sysctl knobs** #### **Optimize sysctl knobs**
```bash ```bash
sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF sudo bash -c "cat >/etc/sysctl.d/21-agave-validator.conf <<EOF
# Increase UDP buffer sizes # Increase UDP buffer sizes
net.core.rmem_default = 134217728 net.core.rmem_default = 134217728
net.core.rmem_max = 134217728 net.core.rmem_max = 134217728
@ -63,7 +63,7 @@ EOF"
``` ```
```bash ```bash
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf sudo sysctl -p /etc/sysctl.d/21-agave-validator.conf
``` ```
#### **Increase systemd and session file limits** #### **Increase systemd and session file limits**
@ -261,7 +261,7 @@ Read more about [creating and managing a vote account](./vote-accounts.md).
## Known validators ## Known validators
If you know and respect other validator operators, you can specify this on the command line with the `--known-validator <PUBKEY>` If you know and respect other validator operators, you can specify this on the command line with the `--known-validator <PUBKEY>`
argument to `solana-validator`. You can specify multiple ones by repeating the argument `--known-validator <PUBKEY1> --known-validator <PUBKEY2>`. argument to `agave-validator`. You can specify multiple ones by repeating the argument `--known-validator <PUBKEY1> --known-validator <PUBKEY2>`.
This has two effects, one is when the validator is booting with `--only-known-rpc`, it will only ask that set of This has two effects, one is when the validator is booting with `--only-known-rpc`, it will only ask that set of
known nodes for downloading genesis and snapshot data. Another is that in combination with the `--halt-on-known-validators-accounts-hash-mismatch` option, known nodes for downloading genesis and snapshot data. Another is that in combination with the `--halt-on-known-validators-accounts-hash-mismatch` option,
it will monitor the merkle root hash of the entire accounts state of other known nodes on gossip and if the hashes produce any mismatch, it will monitor the merkle root hash of the entire accounts state of other known nodes on gossip and if the hashes produce any mismatch,
@ -277,13 +277,13 @@ account state divergence.
Connect to the cluster by running: Connect to the cluster by running:
```bash ```bash
solana-validator \ agave-validator \
--identity ~/validator-keypair.json \ --identity ~/validator-keypair.json \
--vote-account ~/vote-account-keypair.json \ --vote-account ~/vote-account-keypair.json \
--rpc-port 8899 \ --rpc-port 8899 \
--entrypoint entrypoint.devnet.solana.com:8001 \ --entrypoint entrypoint.devnet.solana.com:8001 \
--limit-ledger-size \ --limit-ledger-size \
--log ~/solana-validator.log --log ~/agave-validator.log
``` ```
To force validator logging to the console add a `--log -` argument, otherwise To force validator logging to the console add a `--log -` argument, otherwise
@ -296,7 +296,7 @@ The ledger will be placed in the `ledger/` directory by default, use the
> [paper wallet seed phrase](../../cli/wallets/paper.md) > [paper wallet seed phrase](../../cli/wallets/paper.md)
> for your `--identity` and/or > for your `--identity` and/or
> `--authorized-voter` keypairs. To use these, pass the respective argument as > `--authorized-voter` keypairs. To use these, pass the respective argument as
> `solana-validator --identity ASK ... --authorized-voter ASK ...` > `agave-validator --identity ASK ... --authorized-voter ASK ...`
> and you will be prompted to enter your seed phrases and optional passphrase. > and you will be prompted to enter your seed phrases and optional passphrase.
Confirm your validator is connected to the network by opening a new terminal and Confirm your validator is connected to the network by opening a new terminal and
@ -312,7 +312,7 @@ If your validator is connected, its public key and IP address will appear in the
By default the validator will dynamically select available network ports in the By default the validator will dynamically select available network ports in the
8000-10000 range, and may be overridden with `--dynamic-port-range`. For 8000-10000 range, and may be overridden with `--dynamic-port-range`. For
example, `solana-validator --dynamic-port-range 11000-11020 ...` will restrict example, `agave-validator --dynamic-port-range 11000-11020 ...` will restrict
the validator to ports 11000-11020. the validator to ports 11000-11020.
### Limiting ledger size to conserve disk space ### Limiting ledger size to conserve disk space
@ -366,8 +366,8 @@ WantedBy=multi-user.target
``` ```
Now create `/home/sol/bin/validator.sh` to include the desired Now create `/home/sol/bin/validator.sh` to include the desired
`solana-validator` command-line. Ensure that the 'exec' command is used to `agave-validator` command-line. Ensure that the 'exec' command is used to
start the validator process (i.e. "exec solana-validator ..."). This is start the validator process (i.e. "exec agave-validator ..."). This is
important because without it, logrotate will end up killing the validator important because without it, logrotate will end up killing the validator
every time the logs are rotated. every time the logs are rotated.
@ -394,14 +394,14 @@ to be reverted and the issue reproduced before help can be provided.
#### Log rotation #### Log rotation
The validator log file, as specified by `--log ~/solana-validator.log`, can get The validator log file, as specified by `--log ~/agave-validator.log`, can get
very large over time and it's recommended that log rotation be configured. very large over time and it's recommended that log rotation be configured.
The validator will re-open its log file when it receives the `USR1` signal, which is the The validator will re-open its log file when it receives the `USR1` signal, which is the
basic primitive that enables log rotation. basic primitive that enables log rotation.
If the validator is being started by a wrapper shell script, it is important to If the validator is being started by a wrapper shell script, it is important to
launch the process with `exec` (`exec solana-validator ...`) when using logrotate. launch the process with `exec` (`exec agave-validator ...`) when using logrotate.
This will prevent the `USR1` signal from being sent to the script's process This will prevent the `USR1` signal from being sent to the script's process
instead of the validator's, which will kill them both. instead of the validator's, which will kill them both.
@ -409,13 +409,13 @@ instead of the validator's, which will kill them both.
An example setup for the `logrotate`, which assumes that the validator is An example setup for the `logrotate`, which assumes that the validator is
running as a systemd service called `sol.service` and writes a log file at running as a systemd service called `sol.service` and writes a log file at
/home/sol/solana-validator.log: /home/sol/agave-validator.log:
```bash ```bash
# Setup log rotation # Setup log rotation
cat > logrotate.sol <<EOF cat > logrotate.sol <<EOF
/home/sol/solana-validator.log { /home/sol/agave-validator.log {
rotate 7 rotate 7
daily daily
missingok missingok
@ -430,7 +430,7 @@ systemctl restart logrotate.service
As mentioned earlier, be sure that if you use logrotate, any script you create As mentioned earlier, be sure that if you use logrotate, any script you create
which starts the solana validator process uses "exec" to do so (example: "exec which starts the solana validator process uses "exec" to do so (example: "exec
solana-validator ..."); otherwise, when logrotate sends its signal to the agave-validator ..."); otherwise, when logrotate sends its signal to the
validator, the enclosing script will die and take the validator process with validator, the enclosing script will die and take the validator process with
it. it.
@ -465,7 +465,7 @@ Example configuration:
5. Enable swap with `sudo swapon -a` and mount the tmpfs with `sudo mount /mnt/solana-accounts/` 5. Enable swap with `sudo swapon -a` and mount the tmpfs with `sudo mount /mnt/solana-accounts/`
6. Confirm swap is active with `free -g` and the tmpfs is mounted with `mount` 6. Confirm swap is active with `free -g` and the tmpfs is mounted with `mount`
Now add the `--accounts /mnt/solana-accounts` argument to your `solana-validator` Now add the `--accounts /mnt/solana-accounts` argument to your `agave-validator`
command-line arguments and restart the validator. command-line arguments and restart the validator.
### Account indexing ### Account indexing

View File

@ -94,7 +94,7 @@ The vote authority can be changed at most once per epoch. If the authority is
changed with changed with
[vote-authorize-voter-checked](../../cli/usage.md#solana-vote-authorize-voter-checked), [vote-authorize-voter-checked](../../cli/usage.md#solana-vote-authorize-voter-checked),
this will not take effect until the beginning of the next epoch. To support a this will not take effect until the beginning of the next epoch. To support a
smooth transition of the vote signing, `solana-validator` allows the smooth transition of the vote signing, `agave-validator` allows the
`--authorized-voter` argument to be specified multiple times. This allows the `--authorized-voter` argument to be specified multiple times. This allows the
validator process to keep voting successfully when the network reaches an epoch validator process to keep voting successfully when the network reaches an epoch
boundary at which the validator's vote authority account changes. boundary at which the validator's vote authority account changes.
@ -213,7 +213,7 @@ no longer listed in the `solana leader-schedule` output.
### Vote Account Authorized Voter ### Vote Account Authorized Voter
The _vote authority_ keypair may only be changed at epoch boundaries and The _vote authority_ keypair may only be changed at epoch boundaries and
requires some additional arguments to `solana-validator` for a seamless requires some additional arguments to `agave-validator` for a seamless
migration. migration.
1. Run `solana epoch-info`. If there is not much time remaining time in the 1. Run `solana epoch-info`. If there is not much time remaining time in the
@ -229,13 +229,13 @@ migration.
`solana vote-authorize-voter-checked ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json`. `solana vote-authorize-voter-checked ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json`.
The new vote authority is scheduled to become active starting at the next The new vote authority is scheduled to become active starting at the next
epoch. epoch.
5. `solana-validator` now needs to be restarted with the old and new vote 5. `agave-validator` now needs to be restarted with the old and new vote
authority keypairs, so that it can smoothly transition at the next epoch. Add authority keypairs, so that it can smoothly transition at the next epoch. Add
the two arguments on restart: the two arguments on restart:
`--authorized-voter ~/validator-keypair.json --authorized-voter ~/new-vote-authority.json` `--authorized-voter ~/validator-keypair.json --authorized-voter ~/new-vote-authority.json`
6. After the cluster reaches the next epoch, remove the 6. After the cluster reaches the next epoch, remove the
`--authorized-voter ~/validator-keypair.json` argument and restart `--authorized-voter ~/validator-keypair.json` argument and restart
`solana-validator`, as the old vote authority keypair is no longer required. `agave-validator`, as the old vote authority keypair is no longer required.
### Vote Account Authorized Withdrawer ### Vote Account Authorized Withdrawer

View File

@ -307,7 +307,7 @@ not start without the settings below.
#### **Optimize sysctl knobs** #### **Optimize sysctl knobs**
```bash ```bash
sudo bash -c "cat >/etc/sysctl.d/21-solana-validator.conf <<EOF sudo bash -c "cat >/etc/sysctl.d/21-agave-validator.conf <<EOF
# Increase UDP buffer sizes # Increase UDP buffer sizes
net.core.rmem_default = 134217728 net.core.rmem_default = 134217728
net.core.rmem_max = 134217728 net.core.rmem_max = 134217728
@ -323,7 +323,7 @@ EOF"
``` ```
```bash ```bash
sudo sysctl -p /etc/sysctl.d/21-solana-validator.conf sudo sysctl -p /etc/sysctl.d/21-agave-validator.conf
``` ```
#### **Increase systemd and session file limits** #### **Increase systemd and session file limits**
@ -409,7 +409,7 @@ nano /home/sol/bin/validator.sh
Copy and paste the following contents into `validator.sh` then save the file: Copy and paste the following contents into `validator.sh` then save the file:
``` ```
exec solana-validator \ exec agave-validator \
--identity validator-keypair.json \ --identity validator-keypair.json \
--vote-account vote-account-keypair.json \ --vote-account vote-account-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
@ -417,7 +417,7 @@ exec solana-validator \
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \ --known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \ --known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
--only-known-rpc \ --only-known-rpc \
--log /home/sol/solana-validator.log \ --log /home/sol/agave-validator.log \
--ledger /mnt/ledger \ --ledger /mnt/ledger \
--rpc-port 8899 \ --rpc-port 8899 \
--dynamic-port-range 8000-8020 \ --dynamic-port-range 8000-8020 \
@ -429,7 +429,7 @@ exec solana-validator \
--limit-ledger-size --limit-ledger-size
``` ```
Refer to `solana-validator --help` for more information on what each flag is Refer to `agave-validator --help` for more information on what each flag is
doing in this script. Also refer to the section on doing in this script. Also refer to the section on
[best practices for operating a validator](./best-practices/general.md). [best practices for operating a validator](./best-practices/general.md).
@ -442,14 +442,14 @@ Test that your `validator.sh` file is running properly by executing the
/home/sol/bin/validator.sh /home/sol/bin/validator.sh
``` ```
The script should execute the `solana-validator` process. In a new terminal The script should execute the `agave-validator` process. In a new terminal
window, shh into your server, then verify that the process is running: window, shh into your server, then verify that the process is running:
``` ```
ps aux | grep solana-validator ps aux | grep agave-validator
``` ```
You should see a line in the output that includes `solana-validator` with all You should see a line in the output that includes `agave-validator` with all
the flags that were added to your `validator.sh` script. the flags that were added to your `validator.sh` script.
Next, we need to look at the logs to make sure everything is operating properly. Next, we need to look at the logs to make sure everything is operating properly.
@ -464,7 +464,7 @@ In a new terminal window, ssh into your validator machine, switch users to the
``` ```
su - sol su - sol
tail -f solana-validator.log tail -f agave-validator.log
``` ```
The `tail` command will continue to display the output of a file as the file The `tail` command will continue to display the output of a file as the file
@ -567,14 +567,14 @@ Now verify that the validator is running properly by tailing the logs and using
the commands mentioned earlier to check gossip and Solana validators: the commands mentioned earlier to check gossip and Solana validators:
``` ```
tail -f /home/sol/solana-validator*.log tail -f /home/sol/agave-validator*.log
``` ```
## Monitoring ## Monitoring
`solana-watchtower` is a command you can run on a separate machine to monitor `agave-watchtower` is a command you can run on a separate machine to monitor
your server. You can read more about handling your server. You can read more about handling
[automatic restarts and monitoring](./best-practices/monitoring.md#solana-watchtower) [automatic restarts and monitoring](./best-practices/monitoring.md#agave-watchtower)
using Solana Watchtower here in the docs. using Solana Watchtower here in the docs.
## Common issues ## Common issues

View File

@ -18,11 +18,11 @@ You will want to be aware of the following flags:
- `--no-voting`: runs the validator without participating in consensus. Typically, you do not want to run a validator as _both_ a consensus node and a full RPC node due to resource constraints. - `--no-voting`: runs the validator without participating in consensus. Typically, you do not want to run a validator as _both_ a consensus node and a full RPC node due to resource constraints.
- `--private-rpc`: does not publish the validator's open RPC port in the `solana gossip` command - `--private-rpc`: does not publish the validator's open RPC port in the `solana gossip` command
> For more explanation on the flags used in the command, refer to the `solana-validator --help` command > For more explanation on the flags used in the command, refer to the `agave-validator --help` command
``` ```
#!/bin/bash #!/bin/bash
exec solana-validator \ exec agave-validator \
--identity /home/sol/validator-keypair.json \ --identity /home/sol/validator-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \ --known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \

View File

@ -24,20 +24,20 @@ implementation for the PostgreSQL database.
### Important Crates: ### Important Crates:
- [`solana-geyser-plugin-interface`] &mdash; This crate defines the plugin - [`agave-geyser-plugin-interface`] &mdash; This crate defines the plugin
interfaces. interfaces.
- [`solana-accountsdb-plugin-postgres`] &mdash; The crate for the referential - [`solana-accountsdb-plugin-postgres`] &mdash; The crate for the referential
plugin implementation for the PostgreSQL database. plugin implementation for the PostgreSQL database.
[`solana-geyser-plugin-interface`]: https://docs.rs/solana-geyser-plugin-interface [`agave-geyser-plugin-interface`]: https://docs.rs/agave-geyser-plugin-interface
[`solana-accountsdb-plugin-postgres`]: https://docs.rs/solana-accountsdb-plugin-postgres [`solana-accountsdb-plugin-postgres`]: https://docs.rs/solana-accountsdb-plugin-postgres
[`solana-sdk`]: https://docs.rs/solana-sdk [`solana-sdk`]: https://docs.rs/solana-sdk
[`solana-transaction-status`]: https://docs.rs/solana-transaction-status [`solana-transaction-status`]: https://docs.rs/solana-transaction-status
## The Plugin Interface ## The Plugin Interface
The Plugin interface is declared in [`solana-geyser-plugin-interface`]. It The Plugin interface is declared in [`agave-geyser-plugin-interface`]. It
is defined by the trait `GeyserPlugin`. The plugin should implement the is defined by the trait `GeyserPlugin`. The plugin should implement the
trait and expose a "C" function `_create_plugin` to return the pointer to this trait and expose a "C" function `_create_plugin` to return the pointer to this
trait. For example, in the referential implementation, the following code trait. For example, in the referential implementation, the following code
@ -166,7 +166,7 @@ please refer to [`solana-sdk`] and [`solana-transaction-status`]
The `slot` points to the slot the transaction is executed at. The `slot` points to the slot the transaction is executed at.
For more details, please refer to the Rust documentation in For more details, please refer to the Rust documentation in
[`solana-geyser-plugin-interface`]. [`agave-geyser-plugin-interface`].
## Example PostgreSQL Plugin ## Example PostgreSQL Plugin

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-geyser-plugin-interface" name = "agave-geyser-plugin-interface"
description = "The Solana Geyser plugin interface." description = "The Solana Geyser plugin interface."
documentation = "https://docs.rs/solana-geyser-plugin-interface" documentation = "https://docs.rs/agave-geyser-plugin-interface"
version = { workspace = true } version = { workspace = true }
authors = { workspace = true } authors = { workspace = true }
repository = { workspace = true } repository = { workspace = true }

View File

@ -327,7 +327,7 @@ pub trait GeyserPlugin: Any + Send + Sync + std::fmt::Debug {
/// # Examples /// # Examples
/// ///
/// ``` /// ```
/// use solana_geyser_plugin_interface::geyser_plugin_interface::{GeyserPlugin, /// use agave_geyser_plugin_interface::geyser_plugin_interface::{GeyserPlugin,
/// GeyserPluginError, Result}; /// GeyserPluginError, Result};
/// ///
/// #[derive(Debug)] /// #[derive(Debug)]

View File

@ -10,6 +10,7 @@ license = { workspace = true }
edition = { workspace = true } edition = { workspace = true }
[dependencies] [dependencies]
agave-geyser-plugin-interface = { workspace = true }
bs58 = { workspace = true } bs58 = { workspace = true }
crossbeam-channel = { workspace = true } crossbeam-channel = { workspace = true }
json5 = { workspace = true } json5 = { workspace = true }
@ -20,7 +21,6 @@ log = { workspace = true }
serde_json = { workspace = true } serde_json = { workspace = true }
solana-accounts-db = { workspace = true } solana-accounts-db = { workspace = true }
solana-entry = { workspace = true } solana-entry = { workspace = true }
solana-geyser-plugin-interface = { workspace = true }
solana-ledger = { workspace = true } solana-ledger = { workspace = true }
solana-measure = { workspace = true } solana-measure = { workspace = true }
solana-metrics = { workspace = true } solana-metrics = { workspace = true }

View File

@ -1,14 +1,14 @@
/// Module responsible for notifying plugins of account updates /// Module responsible for notifying plugins of account updates
use { use {
crate::geyser_plugin_manager::GeyserPluginManager, crate::geyser_plugin_manager::GeyserPluginManager,
agave_geyser_plugin_interface::geyser_plugin_interface::{
ReplicaAccountInfoV3, ReplicaAccountInfoVersions,
},
log::*, log::*,
solana_accounts_db::{ solana_accounts_db::{
account_storage::meta::StoredAccountMeta, account_storage::meta::StoredAccountMeta,
accounts_update_notifier_interface::AccountsUpdateNotifierInterface, accounts_update_notifier_interface::AccountsUpdateNotifierInterface,
}, },
solana_geyser_plugin_interface::geyser_plugin_interface::{
ReplicaAccountInfoV3, ReplicaAccountInfoVersions,
},
solana_measure::measure::Measure, solana_measure::measure::Measure,
solana_metrics::*, solana_metrics::*,
solana_sdk::{ solana_sdk::{

View File

@ -3,10 +3,10 @@ use {
block_metadata_notifier_interface::BlockMetadataNotifier, block_metadata_notifier_interface::BlockMetadataNotifier,
geyser_plugin_manager::GeyserPluginManager, geyser_plugin_manager::GeyserPluginManager,
}, },
log::*, agave_geyser_plugin_interface::geyser_plugin_interface::{
solana_geyser_plugin_interface::geyser_plugin_interface::{
ReplicaBlockInfoV3, ReplicaBlockInfoVersions, ReplicaBlockInfoV3, ReplicaBlockInfoVersions,
}, },
log::*,
solana_measure::measure::Measure, solana_measure::measure::Measure,
solana_metrics::*, solana_metrics::*,
solana_sdk::{clock::UnixTimestamp, pubkey::Pubkey, reward_info::RewardInfo}, solana_sdk::{clock::UnixTimestamp, pubkey::Pubkey, reward_info::RewardInfo},

View File

@ -1,11 +1,11 @@
/// Module responsible for notifying plugins about entries /// Module responsible for notifying plugins about entries
use { use {
crate::geyser_plugin_manager::GeyserPluginManager, crate::geyser_plugin_manager::GeyserPluginManager,
log::*, agave_geyser_plugin_interface::geyser_plugin_interface::{
solana_entry::entry::EntrySummary,
solana_geyser_plugin_interface::geyser_plugin_interface::{
ReplicaEntryInfoV2, ReplicaEntryInfoVersions, ReplicaEntryInfoV2, ReplicaEntryInfoVersions,
}, },
log::*,
solana_entry::entry::EntrySummary,
solana_ledger::entry_notifier_interface::EntryNotifier, solana_ledger::entry_notifier_interface::EntryNotifier,
solana_measure::measure::Measure, solana_measure::measure::Measure,
solana_metrics::*, solana_metrics::*,

View File

@ -1,9 +1,9 @@
use { use {
agave_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
jsonrpc_core::{ErrorCode, Result as JsonRpcResult}, jsonrpc_core::{ErrorCode, Result as JsonRpcResult},
jsonrpc_server_utils::tokio::sync::oneshot::Sender as OneShotSender, jsonrpc_server_utils::tokio::sync::oneshot::Sender as OneShotSender,
libloading::Library, libloading::Library,
log::*, log::*,
solana_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
std::{ std::{
ops::{Deref, DerefMut}, ops::{Deref, DerefMut},
path::Path, path::Path,
@ -442,8 +442,8 @@ mod tests {
crate::geyser_plugin_manager::{ crate::geyser_plugin_manager::{
GeyserPluginManager, LoadedGeyserPlugin, TESTPLUGIN2_CONFIG, TESTPLUGIN_CONFIG, GeyserPluginManager, LoadedGeyserPlugin, TESTPLUGIN2_CONFIG, TESTPLUGIN_CONFIG,
}, },
agave_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
libloading::Library, libloading::Library,
solana_geyser_plugin_interface::geyser_plugin_interface::GeyserPlugin,
std::sync::{Arc, RwLock}, std::sync::{Arc, RwLock},
}; };

View File

@ -1,7 +1,7 @@
use { use {
crate::geyser_plugin_manager::GeyserPluginManager, crate::geyser_plugin_manager::GeyserPluginManager,
agave_geyser_plugin_interface::geyser_plugin_interface::SlotStatus,
log::*, log::*,
solana_geyser_plugin_interface::geyser_plugin_interface::SlotStatus,
solana_measure::measure::Measure, solana_measure::measure::Measure,
solana_metrics::*, solana_metrics::*,
solana_sdk::clock::Slot, solana_sdk::clock::Slot,

View File

@ -1,10 +1,10 @@
/// Module responsible for notifying plugins of transactions /// Module responsible for notifying plugins of transactions
use { use {
crate::geyser_plugin_manager::GeyserPluginManager, crate::geyser_plugin_manager::GeyserPluginManager,
log::*, agave_geyser_plugin_interface::geyser_plugin_interface::{
solana_geyser_plugin_interface::geyser_plugin_interface::{
ReplicaTransactionInfoV2, ReplicaTransactionInfoVersions, ReplicaTransactionInfoV2, ReplicaTransactionInfoVersions,
}, },
log::*,
solana_measure::measure::Measure, solana_measure::measure::Measure,
solana_metrics::*, solana_metrics::*,
solana_rpc::transaction_notifier_interface::TransactionNotifier, solana_rpc::transaction_notifier_interface::TransactionNotifier,

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-install" name = "agave-install"
description = "The solana cluster software installer" description = "The solana cluster software installer"
documentation = "https://docs.rs/solana-install" documentation = "https://docs.rs/agave-install"
version = { workspace = true } version = { workspace = true }
authors = { workspace = true } authors = { workspace = true }
repository = { workspace = true } repository = { workspace = true }

View File

@ -10,7 +10,7 @@
# except according to those terms. # except according to those terms.
# This is just a little script that can be downloaded from the internet to # This is just a little script that can be downloaded from the internet to
# install solana-install. It just does platform detection, downloads the installer # install agave-install. It just does platform detection, downloads the installer
# and runs it. # and runs it.
{ # this ensures the entire script is downloaded # { # this ensures the entire script is downloaded #
@ -24,11 +24,11 @@ set -e
usage() { usage() {
cat 1>&2 <<EOF cat 1>&2 <<EOF
solana-install-init agave-install-init
initializes a new installation initializes a new installation
USAGE: USAGE:
solana-install-init [FLAGS] [OPTIONS] --data_dir <PATH> --pubkey <PUBKEY> agave-install-init [FLAGS] [OPTIONS] --data_dir <PATH> --pubkey <PUBKEY>
FLAGS: FLAGS:
-h, --help Prints help information -h, --help Prints help information
@ -81,7 +81,7 @@ main() {
esac esac
TARGET="${_cputype}-${_ostype}" TARGET="${_cputype}-${_ostype}"
temp_dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t solana-install-init)" temp_dir="$(mktemp -d 2>/dev/null || ensure mktemp -d -t agave-install-init)"
ensure mkdir -p "$temp_dir" ensure mkdir -p "$temp_dir"
# Check for SOLANA_RELEASE environment variable override. Otherwise fetch # Check for SOLANA_RELEASE environment variable override. Otherwise fetch
@ -101,8 +101,8 @@ main() {
fi fi
fi fi
download_url="$SOLANA_DOWNLOAD_ROOT/$release/solana-install-init-$TARGET" download_url="$SOLANA_DOWNLOAD_ROOT/$release/agave-install-init-$TARGET"
solana_install_init="$temp_dir/solana-install-init" solana_install_init="$temp_dir/agave-install-init"
printf 'downloading %s installer\n' "$release" 1>&2 printf 'downloading %s installer\n' "$release" 1>&2
@ -111,7 +111,7 @@ main() {
ensure chmod u+x "$solana_install_init" ensure chmod u+x "$solana_install_init"
if [ ! -x "$solana_install_init" ]; then if [ ! -x "$solana_install_init" ]; then
printf '%s\n' "Cannot execute $solana_install_init (likely because of mounting /tmp as noexec)." 1>&2 printf '%s\n' "Cannot execute $solana_install_init (likely because of mounting /tmp as noexec)." 1>&2
printf '%s\n' "Please copy the file to a location where you can execute binaries and run ./solana-install-init." 1>&2 printf '%s\n' "Please copy the file to a location where you can execute binaries and run ./agave-install-init." 1>&2
exit 1 exit 1
fi fi
@ -130,7 +130,7 @@ main() {
} }
err() { err() {
printf 'solana-install-init: %s\n' "$1" >&2 printf 'agave-install-init: %s\n' "$1" >&2
exit 1 exit 1
} }

View File

@ -4,11 +4,11 @@ set -e
cd "$(dirname "$0")"/.. cd "$(dirname "$0")"/..
cargo="$(readlink -f "./cargo")" cargo="$(readlink -f "./cargo")"
"$cargo" build --package solana-install "$cargo" build --package agave-install
export PATH=$PWD/target/debug:$PATH export PATH=$PWD/target/debug:$PATH
echo "\`\`\`manpage" echo "\`\`\`manpage"
solana-install --help agave-install --help
echo "\`\`\`" echo "\`\`\`"
echo "" echo ""
@ -16,7 +16,7 @@ commands=(init info deploy update run)
for x in "${commands[@]}"; do for x in "${commands[@]}"; do
echo "\`\`\`manpage" echo "\`\`\`manpage"
solana-install "${x}" --help agave-install "${x}" --help
echo "\`\`\`" echo "\`\`\`"
echo "" echo ""
done done

View File

@ -16,7 +16,7 @@ fn press_enter() {
} }
fn main() { fn main() {
solana_install::main_init().unwrap_or_else(|err| { agave_install::main_init().unwrap_or_else(|err| {
println!("Error: {err}"); println!("Error: {err}");
press_enter(); press_enter();
exit(1); exit(1);

View File

@ -540,7 +540,7 @@ pub fn init(
explicit_release: Option<ExplicitRelease>, explicit_release: Option<ExplicitRelease>,
) -> Result<(), String> { ) -> Result<(), String> {
let config = { let config = {
// Write new config file only if different, so that running |solana-install init| // Write new config file only if different, so that running |agave-install init|
// repeatedly doesn't unnecessarily re-download // repeatedly doesn't unnecessarily re-download
let mut current_config = Config::load(config_file).unwrap_or_default(); let mut current_config = Config::load(config_file).unwrap_or_default();
current_config.current_update_manifest = None; current_config.current_update_manifest = None;
@ -870,7 +870,7 @@ fn check_for_newer_github_release(
prerelease_allowed: bool, prerelease_allowed: bool,
) -> Result<Option<String>, String> { ) -> Result<Option<String>, String> {
let client = reqwest::blocking::Client::builder() let client = reqwest::blocking::Client::builder()
.user_agent("solana-install") .user_agent("agave-install")
.build() .build()
.map_err(|err| err.to_string())?; .map_err(|err| err.to_string())?;

View File

@ -281,7 +281,7 @@ pub fn main() -> Result<(), String> {
pub fn main_init() -> Result<(), String> { pub fn main_init() -> Result<(), String> {
solana_logger::setup(); solana_logger::setup();
let matches = App::new("solana-install-init") let matches = App::new("agave-install-init")
.about("Initializes a new installation") .about("Initializes a new installation")
.version(solana_version::version!()) .version(solana_version::version!())
.arg({ .arg({

View File

@ -1,3 +1,3 @@
fn main() -> Result<(), String> { fn main() -> Result<(), String> {
solana_install::main() agave_install::main()
} }

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-ledger-tool" name = "agave-ledger-tool"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
documentation = "https://docs.rs/solana-ledger-tool" documentation = "https://docs.rs/agave-ledger-tool"
version = { workspace = true } version = { workspace = true }
authors = { workspace = true } authors = { workspace = true }
repository = { workspace = true } repository = { workspace = true }

View File

@ -359,7 +359,7 @@ pub fn blockstore_subcommands<'a, 'b>(hidden: bool) -> Vec<App<'a, 'b>> {
and timestamps.", and timestamps.",
) )
// This command is important in cluster restart scenarios, so do not hide it ever // This command is important in cluster restart scenarios, so do not hide it ever
// such that the subcommand will be visible as the top level of solana-ledger-tool // such that the subcommand will be visible as the top level of agave-ledger-tool
.arg( .arg(
Arg::with_name("num_slots") Arg::with_name("num_slots")
.long("num-slots") .long("num-slots")

View File

@ -187,14 +187,14 @@ pub fn load_and_process_ledger(
} }
let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") { let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") {
// If this blockstore access is Primary, no other process (solana-validator) can hold // If this blockstore access is Primary, no other process (agave-validator) can hold
// Primary access. So, allow a custom accounts path without worry of wiping the accounts // Primary access. So, allow a custom accounts path without worry of wiping the accounts
// of solana-validator. // of agave-validator.
if !blockstore.is_primary_access() { if !blockstore.is_primary_access() {
// Attempt to open the Blockstore in Primary access; if successful, no other process // Attempt to open the Blockstore in Primary access; if successful, no other process
// was holding Primary so allow things to proceed with custom accounts path. Release // was holding Primary so allow things to proceed with custom accounts path. Release
// the Primary access instead of holding it to give priority to solana-validator over // the Primary access instead of holding it to give priority to agave-validator over
// solana-ledger-tool should solana-validator start before we've finished. // agave-ledger-tool should agave-validator start before we've finished.
info!( info!(
"Checking if another process currently holding Primary access to {:?}", "Checking if another process currently holding Primary access to {:?}",
blockstore.ledger_path() blockstore.ledger_path()

View File

@ -431,7 +431,7 @@ impl Rocks {
info!( info!(
"Opening Rocks with secondary (read only) access at: {secondary_path:?}. \ "Opening Rocks with secondary (read only) access at: {secondary_path:?}. \
This secondary access could temporarily degrade other accesses, such as \ This secondary access could temporarily degrade other accesses, such as \
by solana-validator" by agave-validator"
); );
DB::open_cf_descriptors_as_secondary( DB::open_cf_descriptors_as_secondary(
&db_options, &db_options,

View File

@ -2321,13 +2321,13 @@ fn test_hard_fork_with_gap_in_roots() {
); );
// create hard-forked snapshot only for validator a, emulating the manual cluster restart // create hard-forked snapshot only for validator a, emulating the manual cluster restart
// procedure with `solana-ledger-tool create-snapshot` // procedure with `agave-ledger-tool create-snapshot`
let genesis_slot = 0; let genesis_slot = 0;
{ {
let blockstore_a = Blockstore::open(&val_a_ledger_path).unwrap(); let blockstore_a = Blockstore::open(&val_a_ledger_path).unwrap();
create_snapshot_to_hard_fork(&blockstore_a, hard_fork_slot, vec![hard_fork_slot]); create_snapshot_to_hard_fork(&blockstore_a, hard_fork_slot, vec![hard_fork_slot]);
// Intentionally make solana-validator unbootable by replaying blocks from the genesis to // Intentionally make agave-validator unbootable by replaying blocks from the genesis to
// ensure the hard-forked snapshot is used always. Otherwise, we couldn't create a gap // ensure the hard-forked snapshot is used always. Otherwise, we couldn't create a gap
// in the ledger roots column family reliably. // in the ledger roots column family reliably.
// There was a bug which caused the hard-forked snapshot at an unrooted slot to forget // There was a bug which caused the hard-forked snapshot at an unrooted slot to forget

View File

@ -14,9 +14,9 @@ if [[ "$SOLANA_GPU_MISSING" -eq 1 ]]; then
fi fi
if [[ -n $SOLANA_CUDA ]]; then if [[ -n $SOLANA_CUDA ]]; then
program=$solana_validator_cuda program=$agave_validator_cuda
else else
program=$solana_validator program=$agave_validator
fi fi
no_restart=0 no_restart=0

View File

@ -40,6 +40,8 @@ else
if [[ -z $program ]]; then if [[ -z $program ]]; then
crate="cli" crate="cli"
program="solana" program="solana"
elif [[ $program == "validator" || $program == "ledger-tool" || $program == "watchtower" || $program == "install" ]]; then
program="agave-$program"
else else
program="solana-$program" program="solana-$program"
fi fi
@ -63,8 +65,8 @@ fi
solana_bench_tps=$(solana_program bench-tps) solana_bench_tps=$(solana_program bench-tps)
solana_faucet=$(solana_program faucet) solana_faucet=$(solana_program faucet)
solana_validator=$(solana_program validator) agave_validator=$(solana_program validator)
solana_validator_cuda="$solana_validator --cuda" agave_validator_cuda="$agave_validator --cuda"
solana_genesis=$(solana_program genesis) solana_genesis=$(solana_program genesis)
solana_gossip=$(solana_program gossip) solana_gossip=$(solana_program gossip)
solana_keygen=$(solana_program keygen) solana_keygen=$(solana_program keygen)

View File

@ -64,7 +64,7 @@ while [[ -n $1 ]]; do
elif [[ $1 = --no-airdrop ]]; then elif [[ $1 = --no-airdrop ]]; then
airdrops_enabled=0 airdrops_enabled=0
shift shift
# solana-validator options # agave-validator options
elif [[ $1 = --expected-genesis-hash ]]; then elif [[ $1 = --expected-genesis-hash ]]; then
args+=("$1" "$2") args+=("$1" "$2")
shift 2 shift 2
@ -270,9 +270,9 @@ if [[ $maybeRequireTower = true ]]; then
fi fi
if [[ -n $SOLANA_CUDA ]]; then if [[ -n $SOLANA_CUDA ]]; then
program=$solana_validator_cuda program=$agave_validator_cuda
else else
program=$solana_validator program=$agave_validator
fi fi
set -e set -e

View File

@ -122,7 +122,7 @@ Operate a configured testnet
sanity/start-specific options: sanity/start-specific options:
-F - Discard validator nodes that didn't bootup successfully -F - Discard validator nodes that didn't bootup successfully
-o noInstallCheck - Skip solana-install sanity -o noInstallCheck - Skip agave-install sanity
-o rejectExtraNodes - Require the exact number of nodes -o rejectExtraNodes - Require the exact number of nodes
stop-specific options: stop-specific options:
@ -138,7 +138,7 @@ Operate a configured testnet
--netem-cmd - Optional command argument to netem. Default is "add". Use "cleanup" to remove rules. --netem-cmd - Optional command argument to netem. Default is "add". Use "cleanup" to remove rules.
update-specific options: update-specific options:
--platform linux|osx|windows - Deploy the tarball using 'solana-install deploy ...' for the --platform linux|osx|windows - Deploy the tarball using 'agave-install deploy ...' for the
given platform (multiple platforms may be specified) given platform (multiple platforms may be specified)
(-t option must be supplied as well) (-t option must be supplied as well)
@ -514,11 +514,11 @@ deployUpdate() {
declare bootstrapLeader=${validatorIpList[0]} declare bootstrapLeader=${validatorIpList[0]}
for updatePlatform in $updatePlatforms; do for updatePlatform in $updatePlatforms; do
echo "--- Deploying solana-install update: $updatePlatform" echo "--- Deploying agave-install update: $updatePlatform"
( (
set -x set -x
scripts/solana-install-update-manifest-keypair.sh "$updatePlatform" scripts/agave-install-update-manifest-keypair.sh "$updatePlatform"
timeout 30s scp "${sshOptions[@]}" \ timeout 30s scp "${sshOptions[@]}" \
update_manifest_keypair.json "$bootstrapLeader:solana/update_manifest_keypair.json" update_manifest_keypair.json "$bootstrapLeader:solana/update_manifest_keypair.json"

View File

@ -35,6 +35,6 @@ loadConfigFile
PATH="$HOME"/.cargo/bin:"$PATH" PATH="$HOME"/.cargo/bin:"$PATH"
set -x set -x
scripts/solana-install-deploy.sh \ scripts/agave-install-deploy.sh \
--keypair config/faucet.json \ --keypair config/faucet.json \
localhost "$releaseChannel" "$updatePlatform" localhost "$releaseChannel" "$updatePlatform"

View File

@ -121,7 +121,7 @@ cat >> ~/solana/on-reboot <<EOF
echo \$! > system-stats.pid echo \$! > system-stats.pid
if ${GPU_CUDA_OK} && [[ -e /dev/nvidia0 ]]; then if ${GPU_CUDA_OK} && [[ -e /dev/nvidia0 ]]; then
echo Selecting solana-validator-cuda echo Selecting agave-validator-cuda
export SOLANA_CUDA=1 export SOLANA_CUDA=1
elif ${GPU_FAIL_IF_NONE} ; then elif ${GPU_FAIL_IF_NONE} ; then
echo "Expected GPU, found none!" echo "Expected GPU, found none!"
@ -257,13 +257,13 @@ EOF
if [[ -n "$maybeWarpSlot" ]]; then if [[ -n "$maybeWarpSlot" ]]; then
# shellcheck disable=SC2086 # Do not want to quote $maybeWarSlot # shellcheck disable=SC2086 # Do not want to quote $maybeWarSlot
solana-ledger-tool -l config/bootstrap-validator create-snapshot 0 config/bootstrap-validator $maybeWarpSlot agave-ledger-tool -l config/bootstrap-validator create-snapshot 0 config/bootstrap-validator $maybeWarpSlot
fi fi
solana-ledger-tool -l config/bootstrap-validator shred-version --max-genesis-archive-unpacked-size 1073741824 | tee config/shred-version agave-ledger-tool -l config/bootstrap-validator shred-version --max-genesis-archive-unpacked-size 1073741824 | tee config/shred-version
if [[ -n "$maybeWaitForSupermajority" ]]; then if [[ -n "$maybeWaitForSupermajority" ]]; then
bankHash=$(solana-ledger-tool -l config/bootstrap-validator bank-hash --halt-at-slot 0) bankHash=$(agave-ledger-tool -l config/bootstrap-validator bank-hash --halt-at-slot 0)
extraNodeArgs="$extraNodeArgs --expected-bank-hash $bankHash" extraNodeArgs="$extraNodeArgs --expected-bank-hash $bankHash"
echo "$bankHash" > config/bank-hash echo "$bankHash" > config/bank-hash
fi fi

View File

@ -65,7 +65,7 @@ local|tar|skip)
export USE_INSTALL=1 export USE_INSTALL=1
solana_cli=solana solana_cli=solana
solana_gossip=solana-gossip solana_gossip=solana-gossip
solana_install=solana-install solana_install=agave-install
;; ;;
*) *)
echo "Unknown deployment method: $deployMethod" echo "Unknown deployment method: $deployMethod"
@ -122,7 +122,7 @@ else
fi fi
if $installCheck && [[ -r update_manifest_keypair.json ]]; then if $installCheck && [[ -r update_manifest_keypair.json ]]; then
echo "--- $sanityTargetIp: solana-install test" echo "--- $sanityTargetIp: agave-install test"
( (
set -x set -x

View File

@ -19,7 +19,7 @@
/// ///
/// To receive a Twilio SMS notification on failure, having a Twilio account, /// To receive a Twilio SMS notification on failure, having a Twilio account,
/// and a sending number owned by that account, /// and a sending number owned by that account,
/// define environment variable before running `solana-watchtower`: /// define environment variable before running `agave-watchtower`:
/// ```bash /// ```bash
/// export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>' /// export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'
/// ``` /// ```
@ -208,7 +208,7 @@ impl Notifier {
NotificationType::Resolve { ref incident } => incident.clone().to_string(), NotificationType::Resolve { ref incident } => incident.clone().to_string(),
}; };
let data = json!({"payload":{"summary":msg,"source":"solana-watchtower","severity":"critical"},"routing_key":routing_key,"event_action":event_action,"dedup_key":dedup_key}); let data = json!({"payload":{"summary":msg,"source":"agave-watchtower","severity":"critical"},"routing_key":routing_key,"event_action":event_action,"dedup_key":dedup_key});
let url = "https://events.pagerduty.com/v2/enqueue"; let url = "https://events.pagerduty.com/v2/enqueue";
if let Err(err) = self.client.post(url).json(&data).send() { if let Err(err) = self.client.post(url).json(&data).send() {

152
programs/sbf/Cargo.lock generated
View File

@ -63,6 +63,80 @@ dependencies = [
"zeroize", "zeroize",
] ]
[[package]]
name = "agave-geyser-plugin-interface"
version = "1.19.0"
dependencies = [
"log",
"solana-sdk",
"solana-transaction-status",
"thiserror",
]
[[package]]
name = "agave-validator"
version = "1.19.0"
dependencies = [
"agave-geyser-plugin-interface",
"chrono",
"clap 2.33.3",
"console",
"core_affinity",
"crossbeam-channel",
"fd-lock",
"indicatif",
"itertools",
"jsonrpc-core",
"jsonrpc-core-client",
"jsonrpc-derive",
"jsonrpc-ipc-server",
"jsonrpc-server-utils",
"lazy_static",
"libc",
"libloading",
"log",
"num_cpus",
"rand 0.8.5",
"rayon",
"serde",
"serde_json",
"serde_yaml",
"signal-hook",
"solana-accounts-db",
"solana-clap-utils",
"solana-cli-config",
"solana-core",
"solana-download-utils",
"solana-entry",
"solana-faucet",
"solana-genesis-utils",
"solana-geyser-plugin-manager",
"solana-gossip",
"solana-ledger",
"solana-logger",
"solana-metrics",
"solana-net-utils",
"solana-perf",
"solana-poh",
"solana-rpc",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-runtime",
"solana-sdk",
"solana-send-transaction-service",
"solana-storage-bigtable",
"solana-streamer",
"solana-svm",
"solana-test-validator",
"solana-tpu-client",
"solana-unified-scheduler-pool",
"solana-version",
"solana-vote-program",
"symlink",
"thiserror",
"tikv-jemallocator",
]
[[package]] [[package]]
name = "ahash" name = "ahash"
version = "0.7.6" version = "0.7.6"
@ -5044,20 +5118,11 @@ dependencies = [
"solana-sdk", "solana-sdk",
] ]
[[package]]
name = "solana-geyser-plugin-interface"
version = "1.19.0"
dependencies = [
"log",
"solana-sdk",
"solana-transaction-status",
"thiserror",
]
[[package]] [[package]]
name = "solana-geyser-plugin-manager" name = "solana-geyser-plugin-manager"
version = "1.19.0" version = "1.19.0"
dependencies = [ dependencies = [
"agave-geyser-plugin-interface",
"bs58", "bs58",
"crossbeam-channel", "crossbeam-channel",
"json5", "json5",
@ -5068,7 +5133,6 @@ dependencies = [
"serde_json", "serde_json",
"solana-accounts-db", "solana-accounts-db",
"solana-entry", "solana-entry",
"solana-geyser-plugin-interface",
"solana-ledger", "solana-ledger",
"solana-measure", "solana-measure",
"solana-metrics", "solana-metrics",
@ -6055,11 +6119,11 @@ dependencies = [
name = "solana-sbf-rust-simulation" name = "solana-sbf-rust-simulation"
version = "1.19.0" version = "1.19.0"
dependencies = [ dependencies = [
"agave-validator",
"solana-logger", "solana-logger",
"solana-program", "solana-program",
"solana-program-test", "solana-program-test",
"solana-sdk", "solana-sdk",
"solana-validator",
] ]
[[package]] [[package]]
@ -6462,70 +6526,6 @@ dependencies = [
"solana-vote", "solana-vote",
] ]
[[package]]
name = "solana-validator"
version = "1.19.0"
dependencies = [
"chrono",
"clap 2.33.3",
"console",
"core_affinity",
"crossbeam-channel",
"fd-lock",
"indicatif",
"itertools",
"jsonrpc-core",
"jsonrpc-core-client",
"jsonrpc-derive",
"jsonrpc-ipc-server",
"jsonrpc-server-utils",
"lazy_static",
"libc",
"libloading",
"log",
"num_cpus",
"rand 0.8.5",
"rayon",
"serde",
"serde_json",
"serde_yaml",
"signal-hook",
"solana-accounts-db",
"solana-clap-utils",
"solana-cli-config",
"solana-core",
"solana-download-utils",
"solana-entry",
"solana-faucet",
"solana-genesis-utils",
"solana-geyser-plugin-interface",
"solana-geyser-plugin-manager",
"solana-gossip",
"solana-ledger",
"solana-logger",
"solana-metrics",
"solana-net-utils",
"solana-perf",
"solana-poh",
"solana-rpc",
"solana-rpc-client",
"solana-rpc-client-api",
"solana-runtime",
"solana-sdk",
"solana-send-transaction-service",
"solana-storage-bigtable",
"solana-streamer",
"solana-svm",
"solana-test-validator",
"solana-tpu-client",
"solana-unified-scheduler-pool",
"solana-version",
"solana-vote-program",
"symlink",
"thiserror",
"tikv-jemallocator",
]
[[package]] [[package]]
name = "solana-version" name = "solana-version"
version = "1.19.0" version = "1.19.0"

View File

@ -46,7 +46,7 @@ solana-sbf-rust-realloc = { path = "rust/realloc", version = "=1.19.0", default-
solana-sbf-rust-realloc-invoke = { path = "rust/realloc_invoke", version = "=1.19.0" } solana-sbf-rust-realloc-invoke = { path = "rust/realloc_invoke", version = "=1.19.0" }
solana-sdk = { path = "../../sdk", version = "=1.19.0" } solana-sdk = { path = "../../sdk", version = "=1.19.0" }
solana-transaction-status = { path = "../../transaction-status", version = "=1.19.0" } solana-transaction-status = { path = "../../transaction-status", version = "=1.19.0" }
solana-validator = { path = "../../validator", version = "=1.19.0" } agave-validator = { path = "../../validator", version = "=1.19.0" }
solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=1.19.0" } solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=1.19.0" }
solana-svm = { path = "../../svm", version = "=1.19.0" } solana-svm = { path = "../../svm", version = "=1.19.0" }
solana_rbpf = "=0.8.0" solana_rbpf = "=0.8.0"

View File

@ -16,10 +16,10 @@ test-bpf = []
solana-program = { workspace = true } solana-program = { workspace = true }
[dev-dependencies] [dev-dependencies]
agave-validator = { workspace = true }
solana-logger = { workspace = true } solana-logger = { workspace = true }
solana-program-test = { workspace = true } solana-program-test = { workspace = true }
solana-sdk = { workspace = true } solana-sdk = { workspace = true }
solana-validator = { workspace = true }
[lib] [lib]
crate-type = ["cdylib", "lib"] crate-type = ["cdylib", "lib"]

View File

@ -1,13 +1,13 @@
#![cfg(feature = "test-bpf")] #![cfg(feature = "test-bpf")]
use { use {
agave_validator::test_validator::*,
solana_program::{ solana_program::{
instruction::{AccountMeta, Instruction}, instruction::{AccountMeta, Instruction},
pubkey::Pubkey, pubkey::Pubkey,
sysvar, sysvar,
}, },
solana_sdk::{signature::Signer, transaction::Transaction}, solana_sdk::{signature::Signer, transaction::Transaction},
solana_validator::test_validator::*,
}; };
#[test] #[test]

View File

@ -33,7 +33,7 @@
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are //! By default the [`block_subscribe`] and [`vote_subscribe`] events are
//! disabled on RPC nodes. They can be enabled by passing //! disabled on RPC nodes. They can be enabled by passing
//! `--rpc-pubsub-enable-block-subscription` and //! `--rpc-pubsub-enable-block-subscription` and
//! `--rpc-pubsub-enable-vote-subscription` to `solana-validator`. When these //! `--rpc-pubsub-enable-vote-subscription` to `agave-validator`. When these
//! methods are disabled, the RPC server will return a "Method not found" error //! methods are disabled, the RPC server will return a "Method not found" error
//! message. //! message.
//! //!
@ -381,7 +381,7 @@ impl PubsubClient {
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized. /// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
/// ///
/// This method is disabled by default. It can be enabled by passing /// This method is disabled by default. It can be enabled by passing
/// `--rpc-pubsub-enable-block-subscription` to `solana-validator`. /// `--rpc-pubsub-enable-block-subscription` to `agave-validator`.
/// ///
/// # RPC Reference /// # RPC Reference
/// ///
@ -452,7 +452,7 @@ impl PubsubClient {
/// votes are observed prior to confirmation and may never be confirmed. /// votes are observed prior to confirmation and may never be confirmed.
/// ///
/// This method is disabled by default. It can be enabled by passing /// This method is disabled by default. It can be enabled by passing
/// `--rpc-pubsub-enable-vote-subscription` to `solana-validator`. /// `--rpc-pubsub-enable-vote-subscription` to `agave-validator`.
/// ///
/// # RPC Reference /// # RPC Reference
/// ///

View File

@ -32,7 +32,7 @@
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are //! By default the [`block_subscribe`] and [`vote_subscribe`] events are
//! disabled on RPC nodes. They can be enabled by passing //! disabled on RPC nodes. They can be enabled by passing
//! `--rpc-pubsub-enable-block-subscription` and //! `--rpc-pubsub-enable-block-subscription` and
//! `--rpc-pubsub-enable-vote-subscription` to `solana-validator`. When these //! `--rpc-pubsub-enable-vote-subscription` to `agave-validator`. When these
//! methods are disabled, the RPC server will return a "Method not found" error //! methods are disabled, the RPC server will return a "Method not found" error
//! message. //! message.
//! //!
@ -416,7 +416,7 @@ impl PubsubClient {
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized. /// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
/// ///
/// This method is disabled by default. It can be enabled by passing /// This method is disabled by default. It can be enabled by passing
/// `--rpc-pubsub-enable-block-subscription` to `solana-validator`. /// `--rpc-pubsub-enable-block-subscription` to `agave-validator`.
/// ///
/// # RPC Reference /// # RPC Reference
/// ///
@ -578,7 +578,7 @@ impl PubsubClient {
/// votes are observed prior to confirmation and may never be confirmed. /// votes are observed prior to confirmation and may never be confirmed.
/// ///
/// This method is disabled by default. It can be enabled by passing /// This method is disabled by default. It can be enabled by passing
/// `--rpc-pubsub-enable-vote-subscription` to `solana-validator`. /// `--rpc-pubsub-enable-vote-subscription` to `agave-validator`.
/// ///
/// # RPC Reference /// # RPC Reference
/// ///

View File

@ -1,6 +1,6 @@
fn main() { fn main() {
println!( println!(
r##"rbpf-cli is replaced by solana-ledger-tool program run subcommand. r##"rbpf-cli is replaced by agave-ledger-tool program run subcommand.
Please, use 'solana-ledger-tool program run --help' for more information."## Please, use 'agave-ledger-tool program run --help' for more information."##
); );
} }

View File

@ -2561,7 +2561,7 @@ pub mod rpc_minimal {
#[rpc(meta, name = "getVersion")] #[rpc(meta, name = "getVersion")]
fn get_version(&self, meta: Self::Metadata) -> Result<RpcVersionInfo>; fn get_version(&self, meta: Self::Metadata) -> Result<RpcVersionInfo>;
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
// it can be removed from rpc_minimal // it can be removed from rpc_minimal
#[rpc(meta, name = "getVoteAccounts")] #[rpc(meta, name = "getVoteAccounts")]
fn get_vote_accounts( fn get_vote_accounts(
@ -2570,7 +2570,7 @@ pub mod rpc_minimal {
config: Option<RpcGetVoteAccountsConfig>, config: Option<RpcGetVoteAccountsConfig>,
) -> Result<RpcVoteAccountStatus>; ) -> Result<RpcVoteAccountStatus>;
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
// it can be removed from rpc_minimal // it can be removed from rpc_minimal
#[rpc(meta, name = "getLeaderSchedule")] #[rpc(meta, name = "getLeaderSchedule")]
fn get_leader_schedule( fn get_leader_schedule(
@ -2696,7 +2696,7 @@ pub mod rpc_minimal {
}) })
} }
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
// it can be removed from rpc_minimal // it can be removed from rpc_minimal
fn get_vote_accounts( fn get_vote_accounts(
&self, &self,
@ -2707,7 +2707,7 @@ pub mod rpc_minimal {
meta.get_vote_accounts(config) meta.get_vote_accounts(config)
} }
// TODO: Refactor `solana-validator wait-for-restart-window` to not require this method, so // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so
// it can be removed from rpc_minimal // it can be removed from rpc_minimal
fn get_leader_schedule( fn get_leader_schedule(
&self, &self,

View File

@ -26,7 +26,7 @@ if [[ -z $URL || -z $TAG ]]; then
fi fi
if [[ ! -f update_manifest_keypair.json ]]; then if [[ ! -f update_manifest_keypair.json ]]; then
"$SOLANA_ROOT"/scripts/solana-install-update-manifest-keypair.sh "$OS" "$SOLANA_ROOT"/scripts/agave-install-update-manifest-keypair.sh "$OS"
fi fi
case "$OS" in case "$OS" in
@ -76,4 +76,4 @@ if [[ $balance = "0 lamports" ]]; then
fi fi
# shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair # shellcheck disable=SC2086 # Don't want to double quote $maybeKeypair
solana-install deploy $maybeKeypair --url "$URL" "$DOWNLOAD_URL" update_manifest_keypair.json agave-install deploy $maybeKeypair --url "$URL" "$DOWNLOAD_URL" update_manifest_keypair.json

View File

@ -91,8 +91,8 @@ if [[ $CI_OS_NAME = windows ]]; then
cargo-test-bpf cargo-test-bpf
cargo-test-sbf cargo-test-sbf
solana solana
solana-install agave-install
solana-install-init agave-install-init
solana-keygen solana-keygen
solana-stake-accounts solana-stake-accounts
solana-test-validator solana-test-validator
@ -106,12 +106,12 @@ else
solana-bench-tps solana-bench-tps
solana-faucet solana-faucet
solana-gossip solana-gossip
solana-install agave-install
solana-keygen solana-keygen
solana-ledger-tool agave-ledger-tool
solana-log-analyzer solana-log-analyzer
solana-net-shaper solana-net-shaper
solana-validator agave-validator
rbpf-cli rbpf-cli
) )
@ -123,11 +123,11 @@ else
cargo-test-bpf cargo-test-bpf
cargo-test-sbf cargo-test-sbf
solana-dos solana-dos
solana-install-init agave-install-init
solana-stake-accounts solana-stake-accounts
solana-test-validator solana-test-validator
solana-tokens solana-tokens
solana-watchtower agave-watchtower
) )
fi fi

View File

@ -31,7 +31,7 @@ source ci/rust-version.sh nightly
declare tainted_packages=( declare tainted_packages=(
solana-accounts-bench solana-accounts-bench
solana-banking-bench solana-banking-bench
solana-ledger-tool agave-ledger-tool
) )
# convert to comma separeted (ref: https://stackoverflow.com/a/53839433) # convert to comma separeted (ref: https://stackoverflow.com/a/53839433)

View File

@ -23,9 +23,11 @@ fi
PATH=$PWD/target/$profile:$PATH PATH=$PWD/target/$profile:$PATH
ok=true ok=true
for program in solana-{faucet,genesis,keygen,validator}; do for program in solana-{faucet,genesis,keygen}; do
$program -V || ok=false $program -V || ok=false
done done
agave-validator -V || ok=false
$ok || { $ok || {
echo echo
echo "Unable to locate required programs. Try building them first with:" echo "Unable to locate required programs. Try building them first with:"
@ -115,7 +117,7 @@ args=(
--no-os-network-limits-test --no-os-network-limits-test
) )
# shellcheck disable=SC2086 # shellcheck disable=SC2086
solana-validator "${args[@]}" $SOLANA_RUN_SH_VALIDATOR_ARGS & agave-validator "${args[@]}" $SOLANA_RUN_SH_VALIDATOR_ARGS &
validator=$! validator=$!
wait "$validator" wait "$validator"

View File

@ -30,14 +30,14 @@ solanaInstallGlobalOpts=(
bootstrapInstall() { bootstrapInstall() {
declare v=$1 declare v=$1
if [[ ! -h $solanaInstallDataDir/active_release ]]; then if [[ ! -h $solanaInstallDataDir/active_release ]]; then
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}" sh "$SOLANA_ROOT"/install/agave-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
fi fi
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH" export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
} }
bootstrapInstall "$baselineVersion" bootstrapInstall "$baselineVersion"
for v in "${otherVersions[@]}"; do for v in "${otherVersions[@]}"; do
solana-install-init "${solanaInstallGlobalOpts[@]}" "$v" agave-install-init "${solanaInstallGlobalOpts[@]}" "$v"
solana -V solana -V
done done
@ -113,7 +113,7 @@ for v in "${otherVersions[@]}"; do
( (
set -x set -x
tmux new-window -t abi -n "$v" " \ tmux new-window -t abi -n "$v" " \
$SOLANA_BIN/solana-validator \ $SOLANA_BIN/agave-validator \
--ledger $ledger \ --ledger $ledger \
--no-snapshot-fetch \ --no-snapshot-fetch \
--entrypoint 127.0.0.1:8001 \ --entrypoint 127.0.0.1:8001 \

View File

@ -19,14 +19,14 @@ solanaInstallGlobalOpts=(
bootstrapInstall() { bootstrapInstall() {
declare v=$1 declare v=$1
if [[ ! -h $solanaInstallDataDir/active_release ]]; then if [[ ! -h $solanaInstallDataDir/active_release ]]; then
sh "$SOLANA_ROOT"/install/solana-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}" sh "$SOLANA_ROOT"/install/agave-install-init.sh "$v" "${solanaInstallGlobalOpts[@]}"
fi fi
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH" export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
} }
bootstrapInstall "edge" bootstrapInstall "edge"
solana-install-init --version agave-install-init --version
solana-install-init edge agave-install-init edge
solana-gossip --version solana-gossip --version
solana-dos --version solana-dos --version

View File

@ -1,8 +1,8 @@
[package] [package]
name = "solana-validator" name = "agave-validator"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
documentation = "https://docs.rs/solana-validator" documentation = "https://docs.rs/agave-validator"
default-run = "solana-validator" default-run = "agave-validator"
version = { workspace = true } version = { workspace = true }
authors = { workspace = true } authors = { workspace = true }
repository = { workspace = true } repository = { workspace = true }
@ -11,6 +11,7 @@ license = { workspace = true }
edition = { workspace = true } edition = { workspace = true }
[dependencies] [dependencies]
agave-geyser-plugin-interface = { workspace = true }
chrono = { workspace = true, features = ["default", "serde"] } chrono = { workspace = true, features = ["default", "serde"] }
clap = { workspace = true } clap = { workspace = true }
console = { workspace = true } console = { workspace = true }
@ -41,7 +42,6 @@ solana-download-utils = { workspace = true }
solana-entry = { workspace = true } solana-entry = { workspace = true }
solana-faucet = { workspace = true } solana-faucet = { workspace = true }
solana-genesis-utils = { workspace = true } solana-genesis-utils = { workspace = true }
solana-geyser-plugin-interface = { workspace = true }
solana-geyser-plugin-manager = { workspace = true } solana-geyser-plugin-manager = { workspace = true }
solana-gossip = { workspace = true } solana-gossip = { workspace = true }
solana-ledger = { workspace = true } solana-ledger = { workspace = true }

View File

@ -1,4 +1,8 @@
use { use {
agave_validator::{
admin_rpc_service, cli, dashboard::Dashboard, ledger_lockfile, lock_ledger,
println_name_value, redirect_stderr_to_file,
},
clap::{crate_name, value_t, value_t_or_exit, values_t_or_exit}, clap::{crate_name, value_t, value_t_or_exit, values_t_or_exit},
crossbeam_channel::unbounded, crossbeam_channel::unbounded,
itertools::Itertools, itertools::Itertools,
@ -28,10 +32,6 @@ use {
}, },
solana_streamer::socket::SocketAddrSpace, solana_streamer::socket::SocketAddrSpace,
solana_test_validator::*, solana_test_validator::*,
solana_validator::{
admin_rpc_service, cli, dashboard::Dashboard, ledger_lockfile, lock_ledger,
println_name_value, redirect_stderr_to_file,
},
std::{ std::{
collections::HashSet, collections::HashSet,
fs, io, fs, io,

View File

@ -447,7 +447,7 @@ pub fn attempt_download_genesis_and_snapshot(
) )
.unwrap_or_else(|err| { .unwrap_or_else(|err| {
// Consider failures here to be more likely due to user error (eg, // Consider failures here to be more likely due to user error (eg,
// incorrect `solana-validator` command-line arguments) rather than the // incorrect `agave-validator` command-line arguments) rather than the
// RPC node failing. // RPC node failing.
// //
// Power users can always use the `--no-check-vote-account` option to // Power users can always use the `--no-check-vote-account` option to

View File

@ -2,6 +2,15 @@
#[cfg(not(target_env = "msvc"))] #[cfg(not(target_env = "msvc"))]
use jemallocator::Jemalloc; use jemallocator::Jemalloc;
use { use {
agave_validator::{
admin_rpc_service,
admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides},
bootstrap,
cli::{app, warn_for_deprecated_arguments, DefaultArgs},
dashboard::Dashboard,
ledger_lockfile, lock_ledger, new_spinner_progress_bar, println_name_value,
redirect_stderr_to_file,
},
clap::{crate_name, value_t, value_t_or_exit, values_t, values_t_or_exit, ArgMatches}, clap::{crate_name, value_t, value_t_or_exit, values_t, values_t_or_exit, ArgMatches},
console::style, console::style,
crossbeam_channel::unbounded, crossbeam_channel::unbounded,
@ -60,15 +69,6 @@ use {
solana_streamer::socket::SocketAddrSpace, solana_streamer::socket::SocketAddrSpace,
solana_svm::runtime_config::RuntimeConfig, solana_svm::runtime_config::RuntimeConfig,
solana_tpu_client::tpu_client::DEFAULT_TPU_ENABLE_UDP, solana_tpu_client::tpu_client::DEFAULT_TPU_ENABLE_UDP,
solana_validator::{
admin_rpc_service,
admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides},
bootstrap,
cli::{app, warn_for_deprecated_arguments, DefaultArgs},
dashboard::Dashboard,
ledger_lockfile, lock_ledger, new_spinner_progress_bar, println_name_value,
redirect_stderr_to_file,
},
std::{ std::{
collections::{HashSet, VecDeque}, collections::{HashSet, VecDeque},
env, env,
@ -917,7 +917,7 @@ pub fn main() {
let logfile = matches let logfile = matches
.value_of("logfile") .value_of("logfile")
.map(|s| s.into()) .map(|s| s.into())
.unwrap_or_else(|| format!("solana-validator-{}.log", identity_keypair.pubkey())); .unwrap_or_else(|| format!("agave-validator-{}.log", identity_keypair.pubkey()));
if logfile == "-" { if logfile == "-" {
None None

View File

@ -1,7 +1,7 @@
[package] [package]
name = "solana-watchtower" name = "agave-watchtower"
description = "Blockchain, Rebuilt for Scale" description = "Blockchain, Rebuilt for Scale"
documentation = "https://docs.rs/solana-watchtower" documentation = "https://docs.rs/agave-watchtower"
version = { workspace = true } version = { workspace = true }
authors = { workspace = true } authors = { workspace = true }
repository = { workspace = true } repository = { workspace = true }

View File

@ -1,4 +1,4 @@
The `solana-watchtower` program is used to monitor the health of a cluster. It The `agave-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 periodically polls the cluster over an RPC API to confirm that the transaction
count is advancing, new blockhashes are available, and no validators are count is advancing, new blockhashes are available, and no validators are
delinquent. Results are reported as InfluxDB metrics, with an optional push delinquent. Results are reported as InfluxDB metrics, with an optional push

View File

@ -47,7 +47,7 @@ fn get_config() -> Config {
.version(solana_version::version!()) .version(solana_version::version!())
.after_help("ADDITIONAL HELP: .after_help("ADDITIONAL HELP:
To receive a Slack, Discord, PagerDuty and/or Telegram notification on sanity failure, To receive a Slack, Discord, PagerDuty and/or Telegram notification on sanity failure,
define environment variables before running `solana-watchtower`: define environment variables before running `agave-watchtower`:
export SLACK_WEBHOOK=... export SLACK_WEBHOOK=...
export DISCORD_WEBHOOK=... export DISCORD_WEBHOOK=...
@ -63,7 +63,7 @@ fn get_config() -> Config {
To receive a Twilio SMS notification on failure, having a Twilio account, To receive a Twilio SMS notification on failure, having a Twilio account,
and a sending number owned by that account, and a sending number owned by that account,
define environment variable before running `solana-watchtower`: define environment variable before running `agave-watchtower`:
export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'") export TWILIO_CONFIG='ACCOUNT=<account>,TOKEN=<securityToken>,TO=<receivingNumber>,FROM=<sendingNumber>'")
.arg({ .arg({
@ -166,7 +166,7 @@ fn get_config() -> Config {
.value_name("SUFFIX") .value_name("SUFFIX")
.takes_value(true) .takes_value(true)
.default_value("") .default_value("")
.help("Add this string into all notification messages after \"solana-watchtower\"") .help("Add this string into all notification messages after \"agave-watchtower\"")
) )
.get_matches(); .get_matches();
@ -381,7 +381,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
if let Some((failure_test_name, failure_error_message)) = &failure { if let Some((failure_test_name, failure_error_message)) = &failure {
let notification_msg = format!( let notification_msg = format!(
"solana-watchtower{}: Error: {}: {}", "agave-watchtower{}: Error: {}: {}",
config.name_suffix, failure_test_name, failure_error_message config.name_suffix, failure_test_name, failure_error_message
); );
num_consecutive_failures += 1; num_consecutive_failures += 1;
@ -415,7 +415,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
); );
info!("{}", all_clear_msg); info!("{}", all_clear_msg);
notifier.send( notifier.send(
&format!("solana-watchtower{}: {}", config.name_suffix, all_clear_msg), &format!("agave-watchtower{}: {}", config.name_suffix, all_clear_msg),
&NotificationType::Resolve { incident }, &NotificationType::Resolve { incident },
); );
} }