[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 yihau
parent 91e3dd2250
commit 3f9a7a52ea
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
./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"
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-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
if: ${{ steps.build.outputs.channel != '' || steps.build.outputs.tag != '' }}

424
Cargo.lock generated
View File

@ -62,6 +62,217 @@ dependencies = [
"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]]
name = "ahash"
version = "0.7.6"
@ -5482,35 +5693,6 @@ dependencies = [
"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]]
name = "solana-cargo-test-bpf"
version = "1.19.0"
@ -6040,20 +6222,11 @@ dependencies = [
"solana-sdk",
]
[[package]]
name = "solana-geyser-plugin-interface"
version = "1.19.0"
dependencies = [
"log",
"solana-sdk",
"solana-transaction-status",
"thiserror",
]
[[package]]
name = "solana-geyser-plugin-manager"
version = "1.19.0"
dependencies = [
"agave-geyser-plugin-interface",
"bs58",
"crossbeam-channel",
"json5",
@ -6064,7 +6237,6 @@ dependencies = [
"serde_json",
"solana-accounts-db",
"solana-entry",
"solana-geyser-plugin-interface",
"solana-ledger",
"solana-measure",
"solana-metrics",
@ -6126,41 +6298,6 @@ dependencies = [
"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]]
name = "solana-keygen"
version = "1.19.0"
@ -6248,58 +6385,6 @@ dependencies = [
"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]]
name = "solana-loader-v4-program"
version = "1.19.0"
@ -7463,72 +7548,6 @@ dependencies = [
"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]]
name = "solana-version"
version = "1.19.0"
@ -7585,25 +7604,6 @@ dependencies = [
"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]]
name = "solana-wen-restart"
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-bpf-loader-program = { path = "programs/bpf_loader", 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-v3-utils = { path = "clap-v3-utils", 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-genesis = { path = "genesis", 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-gossip = { path = "gossip", version = "=1.19.0" }
solana-ledger = { path = "ledger", version = "=1.19.0" }

View File

@ -1,7 +1,7 @@
[package]
name = "solana-cargo-registry"
name = "agave-cargo-registry"
description = "Solana cargo registry"
documentation = "https://docs.rs/solana-cargo-registry"
documentation = "https://docs.rs/agave-cargo-registry"
version = { workspace = true }
authors = { 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
# (dynamic nodes, -x, are just killed)
echo "--- RPC exit"
$solana_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"/bootstrap-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
sleep 2

View File

@ -31,7 +31,7 @@ SOLANA_RELEASE=$CHANNEL_OR_TAG
SOLANA_INSTALL_INIT_ARGS=$CHANNEL_OR_TAG
SOLANA_DOWNLOAD_ROOT=https://release.anza.xyz
EOF
cat install/solana-install-init.sh >>release.anza.xyz-install
cat install/agave-install-init.sh >>release.anza.xyz-install
echo --- GCS: "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}"
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
)
@ -110,7 +110,7 @@ fi
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
upload-ci-artifact "$file"
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)
done
$solana_validator --ledger config/ledger exit --force || true
$agave_validator --ledger config/ledger exit --force || true
wait $pid

View File

@ -76,7 +76,7 @@ Major releases:
- [`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-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:

View File

@ -56,7 +56,7 @@ Please update your PATH environment variable to include the solana programs:
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.
---
@ -74,7 +74,7 @@ solana --version
installer into a temporary directory:
```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
@ -82,7 +82,7 @@ cmd /c "curl https://release.solana.com/LATEST_SOLANA_RELEASE_VERSION/solana-ins
to allow the program to run.
```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.
@ -97,12 +97,12 @@ C:\solana-install-tmp\solana-install-init.exe LATEST_SOLANA_RELEASE_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.
## 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.
### Linux
@ -255,7 +255,7 @@ You can then run the following command to obtain the same result as with
prebuilt binaries:
```bash
solana-install init
agave-install init
```
## 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
```
##### Example `solana-validator` command-line
##### Example `agave-validator` command-line
```bash
$ solana-validator \
$ agave-validator \
--identity validator-keypair.json \
--vote-account vote-account-keypair.json \
--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
```
##### Example `solana-validator` command-line
##### Example `agave-validator` command-line
```bash
$ solana-validator \
$ agave-validator \
--identity validator-keypair.json \
--vote-account vote-account-keypair.json \
--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
```
##### Example `solana-validator` command-line
##### Example `agave-validator` command-line
```bash
$ solana-validator \
$ agave-validator \
--identity ~/validator-keypair.json \
--vote-account ~/vote-account-keypair.json \
--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.
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
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:
```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:
```bash
$ init_args=.... # arguments for `solana-install-init ...`
$ curl -sSf https://raw.githubusercontent.com/solana-labs/solana/v1.0.0/install/solana-install-init.sh | sh -s - ${init_args}
$ init_args=.... # arguments for `agave-install-init ...`
$ 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
@ -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:
```bash
$ curl -o solana-install-init https://github.com/solana-labs/solana/releases/download/v1.0.0/solana-install-init-x86_64-apple-darwin
$ chmod +x ./solana-install-init
$ ./solana-install-init --help
$ 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 ./agave-install-init
$ ./agave-install-init --help
```
### 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
$ 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
```bash
$ solana-install init --pubkey 92DMonmBYXwEMHJ99c9ceRSpAmk9v6i3RdvDdXaVcrfj # <-- pubkey is obtained from whoever is deploying the updates
$ export PATH=~/.local/share/solana-install/bin:$PATH
$ agave-install init --pubkey 92DMonmBYXwEMHJ99c9ceRSpAmk9v6i3RdvDdXaVcrfj # <-- pubkey is obtained from whoever is deploying the updates
$ export PATH=~/.local/share/agave-install/bin:$PATH
$ 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
@ -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
@ -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.
`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.
- `...` -- 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:
@ -122,11 +122,11 @@ It manages the following files and directories in the user's home directory:
### Command-line Interface
```text
solana-install 0.16.0
agave-install 0.16.0
The solana cluster software installer
USAGE:
solana-install [OPTIONS] <SUBCOMMAND>
agave-install [OPTIONS] <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
@ -145,11 +145,11 @@ SUBCOMMANDS:
```
```text
solana-install-init
agave-install-init
initializes a new installation
USAGE:
solana-install init [OPTIONS]
agave-install init [OPTIONS]
FLAGS:
-h, --help Prints help information
@ -161,11 +161,11 @@ OPTIONS:
```
```text
solana-install info
agave-install info
displays information about the current installation
USAGE:
solana-install info [FLAGS]
agave-install info [FLAGS]
FLAGS:
-h, --help Prints help information
@ -173,11 +173,11 @@ FLAGS:
```
```text
solana-install deploy
agave-install deploy
deploys a new update
USAGE:
solana-install deploy <download_url> <update_manifest_keypair>
agave-install deploy <download_url> <update_manifest_keypair>
FLAGS:
-h, --help Prints help information
@ -188,22 +188,22 @@ ARGS:
```
```text
solana-install update
agave-install update
checks for an update, and if available downloads and applies it
USAGE:
solana-install update
agave-install update
FLAGS:
-h, --help Prints help information
```
```text
solana-install run
agave-install run
Runs a program while periodically checking and applying software updates
USAGE:
solana-install run <program_name> [program_arguments]...
agave-install run <program_name> [program_arguments]...
FLAGS:
-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
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.
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
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
available.
```
solana-validator --help
agave-validator --help
```
## Restarting your validator
@ -49,14 +49,14 @@ solana leader-schedule
Based on the current slot and the leader schedule, you can calculate open time
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
window is reached. Assuming that you have systemd implemented for your validator
process, the validator should restart automatically after the exit. See the
below help command for details:
```
solana-validator exit --help
agave-validator exit --help
```
## Upgrading
@ -75,28 +75,28 @@ process.
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
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
CPU), you can target your specific architecture using the `-march` flag. Refer
to the following doc for
[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
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
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
`.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.
> **Note** this command only works if you already have the solana cli installed.
@ -106,7 +106,7 @@ options.
### Restart
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.
### Verifying version
@ -132,13 +132,13 @@ have state locally. In other cases such as restarts for upgrades, a snapshot
download should be avoided.
To avoid downloading a snapshot on restart, add the following flag to the
`solana-validator` command:
`agave-validator` command:
```
--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
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
@ -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 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
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
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
```
> **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.
## Withdrawing From The Vote Account

View File

@ -4,34 +4,34 @@ sidebar_label: 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 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
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`:
```
solana-watchtower --monitor-active-stake --validator-identity \
agave-watchtower --monitor-active-stake --validator-identity \
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
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
@ -41,7 +41,7 @@ To send validator health notifications to your Telegram account, we are going to
2. Send a message to the bot
3. Create a Telegram group that will get the watchtower notifications
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
@ -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.
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>
@ -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.
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>
```
#### 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`.

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
optimistically confirmed slot your validator observed:
```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
@ -34,11 +34,11 @@ instead.
### Step 4. Create a new snapshot for slot `SLOT_X` with a hard fork at slot `SLOT_X`
```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.
`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.
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:
>
> ```bash
> solana-validator
> agave-validator
> --wait-for-supermajority SLOT_X # <-- 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
@ -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:
>
> ```bash
> solana-validator
> agave-validator
> --wait-for-supermajority SLOT_X # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
> --expected-bank-hash NEW_BANK_HASH # <-- NEW! IMPORTANT! REMOVE AFTER THIS RESTART
> --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
> ```
>
> 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
>
@ -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
```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_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
### 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:
```
solana-validator ... \
agave-validator ... \
--tower-storage etcd \
--etcd-cacert-file certs/etcd-ca.pem \
--etcd-cert-file certs/validator.pem \
@ -103,7 +103,7 @@ that your etcd endpoint remain accessible at all times.
### Secondary Validator
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`
* Add `--no-check-vote-account`
* 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
command on the secondary validator:
```bash
$ solana-validator wait-for-restart-window --identity validator-keypair.json \
&& solana-validator set-identity validator-keypair.json
$ agave-validator wait-for-restart-window --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
@ -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.
## 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.
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
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
that CUDA is enabled: `"[<timestamp> solana::validator] CUDA is enabled"`
@ -47,7 +47,7 @@ the following commands.
#### **Optimize sysctl knobs**
```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
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
@ -63,7 +63,7 @@ EOF"
```
```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**
@ -261,7 +261,7 @@ Read more about [creating and managing a vote account](./vote-accounts.md).
## Known validators
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
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,
@ -277,13 +277,13 @@ account state divergence.
Connect to the cluster by running:
```bash
solana-validator \
agave-validator \
--identity ~/validator-keypair.json \
--vote-account ~/vote-account-keypair.json \
--rpc-port 8899 \
--entrypoint entrypoint.devnet.solana.com:8001 \
--limit-ledger-size \
--log ~/solana-validator.log
--log ~/agave-validator.log
```
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)
> for your `--identity` and/or
> `--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.
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
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.
### 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
`solana-validator` command-line. Ensure that the 'exec' command is used to
start the validator process (i.e. "exec solana-validator ..."). This is
`agave-validator` command-line. Ensure that the 'exec' command is used to
start the validator process (i.e. "exec agave-validator ..."). This is
important because without it, logrotate will end up killing the validator
every time the logs are rotated.
@ -394,14 +394,14 @@ to be reverted and the issue reproduced before help can be provided.
#### 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.
The validator will re-open its log file when it receives the `USR1` signal, which is the
basic primitive that enables log rotation.
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
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
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
# Setup log rotation
cat > logrotate.sol <<EOF
/home/sol/solana-validator.log {
/home/sol/agave-validator.log {
rotate 7
daily
missingok
@ -430,7 +430,7 @@ systemctl restart logrotate.service
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
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
it.
@ -465,7 +465,7 @@ Example configuration:
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`
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.
### 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
[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
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
validator process to keep voting successfully when the network reaches an epoch
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
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.
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`.
The new vote authority is scheduled to become active starting at the next
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
the two arguments on restart:
`--authorized-voter ~/validator-keypair.json --authorized-voter ~/new-vote-authority.json`
6. After the cluster reaches the next epoch, remove the
`--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

View File

@ -307,7 +307,7 @@ not start without the settings below.
#### **Optimize sysctl knobs**
```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
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
@ -323,7 +323,7 @@ EOF"
```
```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**
@ -409,7 +409,7 @@ nano /home/sol/bin/validator.sh
Copy and paste the following contents into `validator.sh` then save the file:
```
exec solana-validator \
exec agave-validator \
--identity validator-keypair.json \
--vote-account vote-account-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
@ -417,7 +417,7 @@ exec solana-validator \
--known-validator Ft5fbkqNa76vnsjYNwjDZUXoTWpP7VYm3mtsaQckQADN \
--known-validator 9QxCLckBiJc783jnMvXZubK4wH86Eqqvashtrwvcsgkv \
--only-known-rpc \
--log /home/sol/solana-validator.log \
--log /home/sol/agave-validator.log \
--ledger /mnt/ledger \
--rpc-port 8899 \
--dynamic-port-range 8000-8020 \
@ -429,7 +429,7 @@ exec solana-validator \
--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
[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
```
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:
```
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.
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
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
@ -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:
```
tail -f /home/sol/solana-validator*.log
tail -f /home/sol/agave-validator*.log
```
## 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
[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.
## 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.
- `--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
exec solana-validator \
exec agave-validator \
--identity /home/sol/validator-keypair.json \
--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \

View File

@ -24,20 +24,20 @@ implementation for the PostgreSQL database.
### Important Crates:
- [`solana-geyser-plugin-interface`] &mdash; This crate defines the plugin
- [`agave-geyser-plugin-interface`] &mdash; This crate defines the plugin
interfaces.
- [`solana-accountsdb-plugin-postgres`] &mdash; The crate for the referential
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-sdk`]: https://docs.rs/solana-sdk
[`solana-transaction-status`]: https://docs.rs/solana-transaction-status
## 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
trait and expose a "C" function `_create_plugin` to return the pointer to this
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.
For more details, please refer to the Rust documentation in
[`solana-geyser-plugin-interface`].
[`agave-geyser-plugin-interface`].
## Example PostgreSQL Plugin

View File

@ -1,7 +1,7 @@
[package]
name = "solana-geyser-plugin-interface"
name = "agave-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 }
authors = { workspace = true }
repository = { workspace = true }

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
# except according to those terms.
# 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.
{ # this ensures the entire script is downloaded #
@ -24,11 +24,11 @@ set -e
usage() {
cat 1>&2 <<EOF
solana-install-init
agave-install-init
initializes a new installation
USAGE:
solana-install-init [FLAGS] [OPTIONS] --data_dir <PATH> --pubkey <PUBKEY>
agave-install-init [FLAGS] [OPTIONS] --data_dir <PATH> --pubkey <PUBKEY>
FLAGS:
-h, --help Prints help information
@ -81,7 +81,7 @@ main() {
esac
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"
# Check for SOLANA_RELEASE environment variable override. Otherwise fetch
@ -101,8 +101,8 @@ main() {
fi
fi
download_url="$SOLANA_DOWNLOAD_ROOT/$release/solana-install-init-$TARGET"
solana_install_init="$temp_dir/solana-install-init"
download_url="$SOLANA_DOWNLOAD_ROOT/$release/agave-install-init-$TARGET"
solana_install_init="$temp_dir/agave-install-init"
printf 'downloading %s installer\n' "$release" 1>&2
@ -111,7 +111,7 @@ main() {
ensure chmod u+x "$solana_install_init"
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' "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
fi
@ -130,7 +130,7 @@ main() {
}
err() {
printf 'solana-install-init: %s\n' "$1" >&2
printf 'agave-install-init: %s\n' "$1" >&2
exit 1
}

View File

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

View File

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

View File

@ -540,7 +540,7 @@ pub fn init(
explicit_release: Option<ExplicitRelease>,
) -> Result<(), String> {
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
let mut current_config = Config::load(config_file).unwrap_or_default();
current_config.current_update_manifest = None;
@ -870,7 +870,7 @@ fn check_for_newer_github_release(
prerelease_allowed: bool,
) -> Result<Option<String>, String> {
let client = reqwest::blocking::Client::builder()
.user_agent("solana-install")
.user_agent("agave-install")
.build()
.map_err(|err| err.to_string())?;

View File

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

View File

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

View File

@ -1,7 +1,7 @@
[package]
name = "solana-ledger-tool"
name = "agave-ledger-tool"
description = "Blockchain, Rebuilt for Scale"
documentation = "https://docs.rs/solana-ledger-tool"
documentation = "https://docs.rs/agave-ledger-tool"
version = { workspace = true }
authors = { 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.",
)
// 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::with_name("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") {
// 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
// of solana-validator.
// of agave-validator.
if !blockstore.is_primary_access() {
// 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
// the Primary access instead of holding it to give priority to solana-validator over
// solana-ledger-tool should solana-validator start before we've finished.
// the Primary access instead of holding it to give priority to agave-validator over
// agave-ledger-tool should agave-validator start before we've finished.
info!(
"Checking if another process currently holding Primary access to {:?}",
blockstore.ledger_path()

View File

@ -431,7 +431,7 @@ impl Rocks {
info!(
"Opening Rocks with secondary (read only) access at: {secondary_path:?}. \
This secondary access could temporarily degrade other accesses, such as \
by solana-validator"
by agave-validator"
);
DB::open_cf_descriptors_as_secondary(
&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
// procedure with `solana-ledger-tool create-snapshot`
// procedure with `agave-ledger-tool create-snapshot`
let genesis_slot = 0;
{
let blockstore_a = Blockstore::open(&val_a_ledger_path).unwrap();
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
// in the ledger roots column family reliably.
// 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
if [[ -n $SOLANA_CUDA ]]; then
program=$solana_validator_cuda
program=$agave_validator_cuda
else
program=$solana_validator
program=$agave_validator
fi
no_restart=0

View File

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

View File

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

View File

@ -122,7 +122,7 @@ Operate a configured testnet
sanity/start-specific options:
-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
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.
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)
(-t option must be supplied as well)
@ -514,11 +514,11 @@ deployUpdate() {
declare bootstrapLeader=${validatorIpList[0]}
for updatePlatform in $updatePlatforms; do
echo "--- Deploying solana-install update: $updatePlatform"
echo "--- Deploying agave-install update: $updatePlatform"
(
set -x
scripts/solana-install-update-manifest-keypair.sh "$updatePlatform"
scripts/agave-install-update-manifest-keypair.sh "$updatePlatform"
timeout 30s scp "${sshOptions[@]}" \
update_manifest_keypair.json "$bootstrapLeader:solana/update_manifest_keypair.json"

View File

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

View File

@ -121,7 +121,7 @@ cat >> ~/solana/on-reboot <<EOF
echo \$! > system-stats.pid
if ${GPU_CUDA_OK} && [[ -e /dev/nvidia0 ]]; then
echo Selecting solana-validator-cuda
echo Selecting agave-validator-cuda
export SOLANA_CUDA=1
elif ${GPU_FAIL_IF_NONE} ; then
echo "Expected GPU, found none!"
@ -257,13 +257,13 @@ EOF
if [[ -n "$maybeWarpSlot" ]]; then
# 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
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
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"
echo "$bankHash" > config/bank-hash
fi

View File

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

View File

@ -19,7 +19,7 @@
///
/// To receive a Twilio SMS notification on failure, having a Twilio account,
/// and a sending number owned by that account,
/// define environment variable before running `solana-watchtower`:
/// define environment variable before running `agave-watchtower`:
/// ```bash
/// 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(),
};
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";
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",
]
[[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]]
name = "ahash"
version = "0.7.6"
@ -5044,20 +5118,11 @@ dependencies = [
"solana-sdk",
]
[[package]]
name = "solana-geyser-plugin-interface"
version = "1.19.0"
dependencies = [
"log",
"solana-sdk",
"solana-transaction-status",
"thiserror",
]
[[package]]
name = "solana-geyser-plugin-manager"
version = "1.19.0"
dependencies = [
"agave-geyser-plugin-interface",
"bs58",
"crossbeam-channel",
"json5",
@ -5068,7 +5133,6 @@ dependencies = [
"serde_json",
"solana-accounts-db",
"solana-entry",
"solana-geyser-plugin-interface",
"solana-ledger",
"solana-measure",
"solana-metrics",
@ -6055,11 +6119,11 @@ dependencies = [
name = "solana-sbf-rust-simulation"
version = "1.19.0"
dependencies = [
"agave-validator",
"solana-logger",
"solana-program",
"solana-program-test",
"solana-sdk",
"solana-validator",
]
[[package]]
@ -6462,70 +6526,6 @@ dependencies = [
"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]]
name = "solana-version"
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-sdk = { path = "../../sdk", 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-svm = { path = "../../svm", version = "=1.19.0" }
solana_rbpf = "=0.8.0"

View File

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

View File

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

View File

@ -33,7 +33,7 @@
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are
//! disabled on RPC nodes. They can be enabled by passing
//! `--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
//! message.
//!
@ -381,7 +381,7 @@ impl PubsubClient {
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
///
/// 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
///
@ -452,7 +452,7 @@ impl PubsubClient {
/// votes are observed prior to confirmation and may never be confirmed.
///
/// 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
///

View File

@ -32,7 +32,7 @@
//! By default the [`block_subscribe`] and [`vote_subscribe`] events are
//! disabled on RPC nodes. They can be enabled by passing
//! `--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
//! message.
//!
@ -416,7 +416,7 @@ impl PubsubClient {
/// Receives messages of type [`RpcBlockUpdate`] when a block is confirmed or finalized.
///
/// 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
///
@ -578,7 +578,7 @@ impl PubsubClient {
/// votes are observed prior to confirmation and may never be confirmed.
///
/// 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
///

View File

@ -1,6 +1,6 @@
fn main() {
println!(
r##"rbpf-cli is replaced by solana-ledger-tool program run subcommand.
Please, use 'solana-ledger-tool program run --help' for more information."##
r##"rbpf-cli is replaced by agave-ledger-tool program run subcommand.
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")]
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
#[rpc(meta, name = "getVoteAccounts")]
fn get_vote_accounts(
@ -2570,7 +2570,7 @@ pub mod rpc_minimal {
config: Option<RpcGetVoteAccountsConfig>,
) -> 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
#[rpc(meta, name = "getLeaderSchedule")]
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
fn get_vote_accounts(
&self,
@ -2707,7 +2707,7 @@ pub mod rpc_minimal {
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
fn get_leader_schedule(
&self,

View File

@ -26,7 +26,7 @@ if [[ -z $URL || -z $TAG ]]; then
fi
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
case "$OS" in
@ -76,4 +76,4 @@ if [[ $balance = "0 lamports" ]]; then
fi
# 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-sbf
solana
solana-install
solana-install-init
agave-install
agave-install-init
solana-keygen
solana-stake-accounts
solana-test-validator
@ -106,12 +106,12 @@ else
solana-bench-tps
solana-faucet
solana-gossip
solana-install
agave-install
solana-keygen
solana-ledger-tool
agave-ledger-tool
solana-log-analyzer
solana-net-shaper
solana-validator
agave-validator
rbpf-cli
)
@ -123,11 +123,11 @@ else
cargo-test-bpf
cargo-test-sbf
solana-dos
solana-install-init
agave-install-init
solana-stake-accounts
solana-test-validator
solana-tokens
solana-watchtower
agave-watchtower
)
fi

View File

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

View File

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

View File

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

View File

@ -19,14 +19,14 @@ solanaInstallGlobalOpts=(
bootstrapInstall() {
declare v=$1
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
export PATH="$solanaInstallDataDir/active_release/bin/:$PATH"
}
bootstrapInstall "edge"
solana-install-init --version
solana-install-init edge
agave-install-init --version
agave-install-init edge
solana-gossip --version
solana-dos --version

View File

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

View File

@ -1,4 +1,8 @@
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},
crossbeam_channel::unbounded,
itertools::Itertools,
@ -28,10 +32,6 @@ use {
},
solana_streamer::socket::SocketAddrSpace,
solana_test_validator::*,
solana_validator::{
admin_rpc_service, cli, dashboard::Dashboard, ledger_lockfile, lock_ledger,
println_name_value, redirect_stderr_to_file,
},
std::{
collections::HashSet,
fs, io,

View File

@ -447,7 +447,7 @@ pub fn attempt_download_genesis_and_snapshot(
)
.unwrap_or_else(|err| {
// 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.
//
// Power users can always use the `--no-check-vote-account` option to

View File

@ -2,6 +2,15 @@
#[cfg(not(target_env = "msvc"))]
use jemallocator::Jemalloc;
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},
console::style,
crossbeam_channel::unbounded,
@ -60,15 +69,6 @@ use {
solana_streamer::socket::SocketAddrSpace,
solana_svm::runtime_config::RuntimeConfig,
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::{
collections::{HashSet, VecDeque},
env,
@ -917,7 +917,7 @@ pub fn main() {
let logfile = matches
.value_of("logfile")
.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 == "-" {
None

View File

@ -1,7 +1,7 @@
[package]
name = "solana-watchtower"
name = "agave-watchtower"
description = "Blockchain, Rebuilt for Scale"
documentation = "https://docs.rs/solana-watchtower"
documentation = "https://docs.rs/agave-watchtower"
version = { workspace = true }
authors = { 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
count is advancing, new blockhashes are available, and no validators are
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!())
.after_help("ADDITIONAL HELP:
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 DISCORD_WEBHOOK=...
@ -63,7 +63,7 @@ fn get_config() -> Config {
To receive a Twilio SMS notification on failure, having a Twilio 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>'")
.arg({
@ -166,7 +166,7 @@ fn get_config() -> Config {
.value_name("SUFFIX")
.takes_value(true)
.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();
@ -381,7 +381,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
if let Some((failure_test_name, failure_error_message)) = &failure {
let notification_msg = format!(
"solana-watchtower{}: Error: {}: {}",
"agave-watchtower{}: Error: {}: {}",
config.name_suffix, failure_test_name, failure_error_message
);
num_consecutive_failures += 1;
@ -415,7 +415,7 @@ fn main() -> Result<(), Box<dyn error::Error>> {
);
info!("{}", all_clear_msg);
notifier.send(
&format!("solana-watchtower{}: {}", config.name_suffix, all_clear_msg),
&format!("agave-watchtower{}: {}", config.name_suffix, all_clear_msg),
&NotificationType::Resolve { incident },
);
}