diff --git a/.buildkite/hooks/post-checkout b/.buildkite/hooks/post-checkout index e3c45ccc6b4567..54779337e32300 100644 --- a/.buildkite/hooks/post-checkout +++ b/.buildkite/hooks/post-checkout @@ -4,37 +4,3 @@ CI_BUILD_START=$(date +%s) export CI_BUILD_START source ci/env.sh - -# -# Kill any running docker containers, which are potentially left over from the -# previous CI job -# -( - echo "+++ Killing stale docker containers" - while read -r line; do - read -r id image _ <<<"$line" - - if [[ $image =~ "anzaxyz/ci" ]]; then - if docker kill "$id" >/dev/null; then - echo "kill $id $image" - fi - fi - - done < <(docker ps | tail -n +2) -) - -# Processes from previously aborted CI jobs seem to loiter, unclear why as one -# would expect the buildkite-agent to clean up all child processes of the -# aborted CI job. -# But as a workaround for now manually kill some known loiterers. These -# processes will all have the `init` process as their PPID: -( - victims= - for name in bash cargo docker solana; do - victims="$victims $(pgrep -u "$(id -u)" -P 1 -d \ $name)" - done - for victim in $victims; do - echo "Killing pid $victim" - kill -9 "$victim" || true - done -) diff --git a/.buildkite/scripts/build-bench.sh b/.buildkite/scripts/build-bench.sh index 27f156c141fe03..a4468d9b8f49ac 100755 --- a/.buildkite/scripts/build-bench.sh +++ b/.buildkite/scripts/build-bench.sh @@ -13,7 +13,7 @@ build_steps() { { "name": "$1", "command": "$2", - "timeout_in_minutes": 30, + "timeout_in_minutes": 60, "agent": "$agent", "retry": 3 } @@ -22,5 +22,5 @@ EOF # shellcheck disable=SC2016 group "bench" \ - "$(build_steps "bench-part-1" "ci/docker-run-default-image.sh ci/bench/part1.sh")" \ - "$(build_steps "bench-part-2" "ci/docker-run-default-image.sh ci/bench/part2.sh")" + "$(build_steps "bench-part-1" "ci/bench/part1.sh")" \ + "$(build_steps "bench-part-2" "ci/bench/part2.sh")" diff --git a/.buildkite/scripts/build-bench.test.sh b/.buildkite/scripts/build-bench.test.sh index db806e2f3f1999..1f4a91934618ca 100755 --- a/.buildkite/scripts/build-bench.test.sh +++ b/.buildkite/scripts/build-bench.test.sh @@ -12,7 +12,34 @@ want=$( steps: - name: "bench-part-1" command: "ci/bench/part1.sh" - timeout_in_minutes: 30 + plugins: + - docker#v5.12.0: + image: "anzaxyz/ci:rust_1.78.0_nightly-2024-05-02" + workdir: /solana + propagate-environment: true + propagate-uid-gid: true + environment: + - "RUSTC_WRAPPER=/usr/local/cargo/bin/sccache" + - BUILDKITE_AGENT_ACCESS_TOKEN + - AWS_SECRET_ACCESS_KEY + - AWS_ACCESS_KEY_ID + - SCCACHE_BUCKET + - SCCACHE_REGION + - SCCACHE_S3_KEY_PREFIX + - BUILDKITE_PARALLEL_JOB + - BUILDKITE_PARALLEL_JOB_COUNT + - CI + - CI_BRANCH + - CI_BASE_BRANCH + - CI_TAG + - CI_BUILD_ID + - CI_COMMIT + - CI_JOB_ID + - CI_PULL_REQUEST + - CI_REPO_SLUG + - CRATES_IO_TOKEN + - THREADS_OVERRIDE + timeout_in_minutes: 60 agents: queue: "solana" retry: @@ -20,7 +47,34 @@ want=$( - limit: 3 - name: "bench-part-2" command: "ci/bench/part2.sh" - timeout_in_minutes: 30 + plugins: + - docker#v5.12.0: + image: "anzaxyz/ci:rust_1.78.0_nightly-2024-05-02" + workdir: /solana + propagate-environment: true + propagate-uid-gid: true + environment: + - "RUSTC_WRAPPER=/usr/local/cargo/bin/sccache" + - BUILDKITE_AGENT_ACCESS_TOKEN + - AWS_SECRET_ACCESS_KEY + - AWS_ACCESS_KEY_ID + - SCCACHE_BUCKET + - SCCACHE_REGION + - SCCACHE_S3_KEY_PREFIX + - BUILDKITE_PARALLEL_JOB + - BUILDKITE_PARALLEL_JOB_COUNT + - CI + - CI_BRANCH + - CI_BASE_BRANCH + - CI_TAG + - CI_BUILD_ID + - CI_COMMIT + - CI_JOB_ID + - CI_PULL_REQUEST + - CI_REPO_SLUG + - CRATES_IO_TOKEN + - THREADS_OVERRIDE + timeout_in_minutes: 60 agents: queue: "solana" retry: diff --git a/.buildkite/scripts/build-stable.sh b/.buildkite/scripts/build-stable.sh index f20ca1db358402..294a7c33b85610 100755 --- a/.buildkite/scripts/build-stable.sh +++ b/.buildkite/scripts/build-stable.sh @@ -12,7 +12,7 @@ partitions=$( cat < - github.repository == 'anza-xyz/agave' && + github.repository == 'x1-labs/tachyon' && needs.check.outputs.continue == 1 # the name is used by .mergify.yml as well name: build & deploy docs diff --git a/.github/workflows/release-artifacts-auto.yml b/.github/workflows/release-artifacts-auto.yml index 0cdd176e04396c..7f9c4745694951 100644 --- a/.github/workflows/release-artifacts-auto.yml +++ b/.github/workflows/release-artifacts-auto.yml @@ -14,7 +14,7 @@ concurrency: jobs: release-artifacts: - if: github.repository == 'anza-xyz/agave' + if: github.repository == 'x1-labs/tachyon' uses: ./.github/workflows/release-artifacts.yml with: commit: ${{ github.sha }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 78a6d029d4c063..b08b117c44f931 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: uses: "buildkite/trigger-pipeline-action@v2.0.0" with: buildkite_api_access_token: ${{ secrets.TRIGGER_BK_BUILD_TOKEN }} - pipeline: "anza/agave-secondary" + pipeline: "tachyon-secondary" branch: "${{ github.ref_name }}" build_env_vars: '{"TRIGGERED_BUILDKITE_TAG": "${{ github.ref_name }}"}' commit: "HEAD" diff --git a/.gitignore b/.gitignore index 995129e50d16cc..17849d552aaef2 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,7 @@ target/ **/*.rs.bk .cargo -/config/ +/config .cache @@ -31,3 +31,4 @@ log-*/ .DS_Store # scripts that may be generated by cargo *-bpf commands **/cargo-*-bpf-child-script-*.sh +/config/ diff --git a/.mergify.yml b/.mergify.yml index 5cae9b59853f2f..83b24983d66a82 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -33,7 +33,7 @@ pull_request_rules: actions: request_reviews: teams: - - "@anza-xyz/community-pr-subscribers" + - "@x1-xyz/community-pr-subscribers" - name: label changes from monorepo-triage conditions: - author≠@core-contributors @@ -98,7 +98,7 @@ pull_request_rules: actions: backport: assignees: &BackportAssignee - - "{{ merged_by|replace('mergify[bot]', label|select('equalto', 'community')|first|default(author)|replace('community', '@anza-xyz/community-pr-subscribers')) }}" + - "{{ merged_by|replace('mergify[bot]', label|select('equalto', 'community')|first|default(author)|replace('community', '@x1-xyz/community-pr-subscribers')) }}" title: "{{ destination_branch }}: {{ title }} (backport of #{{ number }})" ignore_conflicts: true labels: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 35ea55e913f1af..be5bebf6a24654 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -255,9 +255,9 @@ before the PR can be merged. Here are the steps: name = "solana-" version = "0.0.1" description = "" -authors = ["Anza Maintainers "] -repository = "https://github.com/anza-xyz/agave" -homepage = "https://anza.xyz" +authors = ["X1 Labs maintainers "] +repository = "https://github.com/x1-labs/tachyon" +homepage = "https://x1.xyz" documentation = "https://docs.rs/solana-" license = "Apache-2.0" edition = "2021" diff --git a/Cargo.lock b/Cargo.lock index a17516cfe652a9..fac69e149d0c76 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -149,61 +149,6 @@ dependencies = [ "winreg", ] -[[package]] -name = "agave-ledger-tool" -version = "2.0.24" -dependencies = [ - "assert_cmd", - "bs58", - "bytecount", - "chrono", - "clap 2.33.3", - "crossbeam-channel", - "csv", - "dashmap", - "futures 0.3.30", - "histogram", - "itertools 0.12.1", - "log", - "num_cpus", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "signal-hook", - "solana-account-decoder", - "solana-accounts-db", - "solana-bpf-loader-program", - "solana-clap-utils", - "solana-cli-output", - "solana-compute-budget", - "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-transaction-status", - "solana-type-overrides", - "solana-unified-scheduler-pool", - "solana-version", - "solana-vote-program", - "solana_rbpf", - "thiserror", - "tikv-jemallocator", - "tokio", -] - [[package]] name = "agave-store-tool" version = "2.0.24" @@ -214,74 +159,6 @@ dependencies = [ "solana-version", ] -[[package]] -name = "agave-validator" -version = "2.0.24" -dependencies = [ - "agave-geyser-plugin-interface", - "chrono", - "clap 2.33.3", - "console", - "core_affinity", - "crossbeam-channel", - "fd-lock", - "indicatif", - "itertools 0.12.1", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-ipc-server", - "lazy_static", - "libc", - "libloading", - "log", - "num_cpus", - "rand 0.8.5", - "rayon", - "serde", - "serde_json", - "serde_yaml 0.9.34+deprecated", - "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-inline-spl", - "solana-ledger", - "solana-logger", - "solana-metrics", - "solana-net-utils", - "solana-perf", - "solana-poh", - "solana-program-runtime", - "solana-rayon-threadlimit", - "solana-rpc", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "solana-storage-bigtable", - "solana-streamer", - "solana-test-validator", - "solana-tpu-client", - "solana-unified-scheduler-pool", - "solana-version", - "solana-vote-program", - "spl-token-2022", - "symlink", - "thiserror", - "tikv-jemallocator", - "tokio", -] - [[package]] name = "agave-watchtower" version = "2.0.24" @@ -3770,9 +3647,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ "bitflags 2.5.0", "cfg-if 1.0.0", @@ -3785,13 +3662,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] @@ -3811,9 +3688,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", @@ -8422,6 +8299,129 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "tachyon-ledger-tool" +version = "2.0.24" +dependencies = [ + "assert_cmd", + "bs58", + "bytecount", + "chrono", + "clap 2.33.3", + "crossbeam-channel", + "csv", + "dashmap", + "futures 0.3.30", + "histogram", + "itertools 0.12.1", + "log", + "num_cpus", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "signal-hook", + "solana-account-decoder", + "solana-accounts-db", + "solana-bpf-loader-program", + "solana-clap-utils", + "solana-cli-output", + "solana-compute-budget", + "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-transaction-status", + "solana-type-overrides", + "solana-unified-scheduler-pool", + "solana-version", + "solana-vote-program", + "solana_rbpf", + "thiserror", + "tikv-jemallocator", + "tokio", +] + +[[package]] +name = "tachyon-validator" +version = "2.0.24" +dependencies = [ + "agave-geyser-plugin-interface", + "chrono", + "clap 2.33.3", + "console", + "core_affinity", + "crossbeam-channel", + "fd-lock", + "indicatif", + "itertools 0.12.1", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-ipc-server", + "lazy_static", + "libc", + "libloading", + "log", + "num_cpus", + "rand 0.8.5", + "rayon", + "serde", + "serde_json", + "serde_yaml 0.9.34+deprecated", + "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-inline-spl", + "solana-ledger", + "solana-logger", + "solana-metrics", + "solana-net-utils", + "solana-perf", + "solana-poh", + "solana-program-runtime", + "solana-rayon-threadlimit", + "solana-rpc", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "solana-storage-bigtable", + "solana-streamer", + "solana-test-validator", + "solana-tpu-client", + "solana-unified-scheduler-pool", + "solana-version", + "solana-vote-program", + "spl-token-2022", + "symlink", + "thiserror", + "tikv-jemallocator", + "tokio", +] + [[package]] name = "tap" version = "1.0.1" diff --git a/Cargo.toml b/Cargo.toml index dfa5b78ee1e231..eadc4e1431d694 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -139,9 +139,9 @@ resolver = "2" [workspace.package] version = "2.0.24" -authors = ["Anza Maintainers "] -repository = "https://github.com/anza-xyz/agave" -homepage = "https://anza.xyz/" +authors = ["X1 Labs maintainers "] +repository = "https://github.com/x1-labs/tachyon" +homepage = "https://x1.xyz/" license = "Apache-2.0" edition = "2021" @@ -175,7 +175,7 @@ bv = "0.11.1" byte-unit = "4.0.19" bytecount = "0.6.8" bytemuck = "1.16.1" -bytemuck_derive = "1.7.0" +bytemuck_derive = "=1.7.0" byteorder = "1.5.0" bytes = "1.6" bzip2 = "0.4.4" diff --git a/README.md b/README.md index 0d855e8cc85c07..b715891838431e 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,24 @@ -

- - Solana - -

+# X1: Tachyon Validator Node -[![Solana crate](https://img.shields.io/crates/v/solana-core.svg)](https://crates.io/crates/solana-core) -[![Solana documentation](https://docs.rs/solana-core/badge.svg)](https://docs.rs/solana-core) -[![Build status](https://badge.buildkite.com/8cc350de251d61483db98bdfc895b9ea0ac8ffa4a32ee850ed.svg?branch=master)](https://buildkite.com/solana-labs/solana/builds?branch=master) -[![codecov](https://codecov.io/gh/solana-labs/solana/branch/master/graph/badge.svg)](https://codecov.io/gh/solana-labs/solana) +## Building -# Building - -## **1. Install rustc, cargo and rustfmt.** +### **1. Install rustc, cargo and rustfmt.** ```bash -$ curl https://sh.rustup.rs -sSf | sh -$ source $HOME/.cargo/env -$ rustup component add rustfmt +curl https://sh.rustup.rs -sSf | sh +source $HOME/.cargo/env +rustup component add rustfmt ``` When building the master branch, please make sure you are using the latest stable rust version by running: ```bash -$ rustup update +rustup update ``` When building a specific release branch, you should check the rust version in `ci/rust-version.sh` and if necessary, install that version by running: ```bash -$ rustup install VERSION +rustup install VERSION ``` Note that if this is not the latest rust version on your machine, cargo commands may require an [override](https://rust-lang.github.io/rustup/overrides.html) in order to use the correct version. @@ -35,71 +26,70 @@ On Linux systems you may need to install libssl-dev, pkg-config, zlib1g-dev, pro On Ubuntu: ```bash -$ sudo apt-get update -$ sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler +sudo apt-get update +sudo apt-get install libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler ``` On Fedora: ```bash -$ sudo dnf install openssl-devel systemd-devel pkg-config zlib-devel llvm clang cmake make protobuf-devel protobuf-compiler perl-core +sudo dnf install openssl-devel systemd-devel pkg-config zlib-devel llvm clang cmake make protobuf-devel protobuf-compiler perl-core ``` -## **2. Download the source code.** +### **2. Download the source code.** ```bash -$ git clone https://github.com/anza-xyz/agave.git -$ cd agave +git clone https://github.com/x1-labs/tachyon.git +cd tachyon ``` -## **3. Build.** +### **3. Build.** ```bash -$ ./cargo build +# To build with debug profile for development only +cargo build + +# To build with release profile for production +cargo build --release ``` -# Testing +## Testing **Run the test suite:** ```bash -$ ./cargo test +cargo test ``` -### Starting a local testnet - -Start your own testnet locally, instructions are in the [online docs](https://docs.solanalabs.com/clusters/benchmark). - -### Accessing the remote development cluster +#### Accessing the remote testnet cluster -* `devnet` - stable public cluster for development accessible via -devnet.solana.com. Runs 24/7. Learn more about the [public clusters](https://docs.solanalabs.com/clusters) +* `testnet` - stable public cluster for development accessible via https://rpc.testnet.x1.xyz -# Benchmarking +## Benchmarking First, install the nightly build of rustc. `cargo bench` requires the use of the unstable features only available in the nightly build. ```bash -$ rustup install nightly +rustup install nightly ``` Run the benchmarks: ```bash -$ cargo +nightly bench +cargo +nightly bench ``` -# Release Process +## Release Process The release process for this project is described [here](RELEASE.md). -# Code coverage +## Code coverage To generate code coverage statistics: ```bash -$ scripts/coverage.sh -$ open target/cov/lcov-local/index.html +scripts/coverage.sh +open target/cov/lcov-local/index.html ``` Why coverage? While most see coverage as a code quality metric, we see it primarily as a developer diff --git a/RELEASE.md b/RELEASE.md index 14cc160ed8bef4..f93f16bc7ba680 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -1,4 +1,4 @@ -# Agave Release process +# Tachyon Release process ## Branches and Tags @@ -70,7 +70,7 @@ There are three release channels that map to branches as follows: 1. Determine the new branch name. The name should be "v" + the first 2 version fields from Cargo.toml. For example, a Cargo.toml with version = "0.9.0" implies the next branch name is "v0.9". -1. Create the new branch and push this branch to the `agave` repository: +1. Create the new branch and push this branch to the `tachyon` repository: ``` git checkout -b git push -u origin @@ -99,15 +99,15 @@ Alternatively use the Github UI. ### Miscellaneous Clean up 1. Pin the spl-token-cli version in the newly promoted stable branch by setting `splTokenCliVersion` in scripts/spl-token-cli-version.sh to the latest release that depends on the stable branch (usually this will be the latest spl-token-cli release). -1. Update [mergify.yml](https://github.com/anza-xyz/agave/blob/master/.mergify.yml) to add backport actions for the new branch and remove actions for the obsolete branch. -1. Adjust the [Github backport labels](https://github.com/anza-xyz/agave/labels) to add the new branch label and remove the label for the obsolete branch. +1. Update [mergify.yml](https://github.com/x1-labs/tachyon/blob/master/.mergify.yml) to add backport actions for the new branch and remove actions for the obsolete branch. +1. Adjust the [Github backport labels](https://github.com/x1-labs/tachyon/labels) to add the new branch label and remove the label for the obsolete branch. 1. Announce on Discord #development that the release branch exists so people know to use the new backport labels. ## Steps to Create a Release ### Create the Release Tag on GitHub -1. Go to [GitHub Releases](https://github.com/anza-xyz/agave/releases) for tagging a release. +1. Go to [GitHub Releases](https://github.com/x1-labs/tachyon/releases) for tagging a release. 1. Click "Draft new release". The release tag must exactly match the `version` field in `/Cargo.toml` prefixed by `v`. 1. If the Cargo.toml version field is **0.12.3**, then the release tag must be **v0.12.3** @@ -115,7 +115,7 @@ Alternatively use the Github UI. 1. If you want to release v0.12.0, the target branch must be v0.12 1. Fill the release notes. 1. If this is the first release on the branch (e.g. v0.13.**0**), paste in [this - template](https://raw.githubusercontent.com/anza-xyz/agave/master/.github/RELEASE_TEMPLATE.md). Engineering Lead can provide summary contents for release notes if needed. + template](https://raw.githubusercontent.com/x1-labs/tachyon/master/.github/RELEASE_TEMPLATE.md). Engineering Lead can provide summary contents for release notes if needed. 1. If this is a patch release, review all the commits since the previous release on this branch and add details as needed. 1. Click "Save Draft", then confirm the release notes look good and the tag name and branch are correct. 1. Ensure all desired commits (usually backports) are landed on the branch by now. @@ -126,24 +126,24 @@ Alternatively use the Github UI. ### Update release branch with the next patch version -[This action](https://github.com/anza-xyz/agave/blob/master/.github/workflows/increment-cargo-version-on-release.yml) ensures that publishing a release will trigger the creation of a PR to update the Cargo.toml files on **release branch** to the next semantic version (e.g. 0.9.0 -> 0.9.1). Ensure that the created PR makes it through CI and gets submitted. +[This action](https://github.com/x1-labs/tachyon/blob/master/.github/workflows/increment-cargo-version-on-release.yml) ensures that publishing a release will trigger the creation of a PR to update the Cargo.toml files on **release branch** to the next semantic version (e.g. 0.9.0 -> 0.9.1). Ensure that the created PR makes it through CI and gets submitted. Note: As of 2024-03-26 the above action is failing so version bumps are done manually. The version bump script is incorrectly updating hashbrown and proc-macro2 versions which should be reverted. ### Prepare for the next release -1. Go to [GitHub Releases](https://github.com/anza-xyz/agave/releases) and create a new draft release for `X.Y.Z+1` with empty release notes. This allows people to incrementally add new release notes until it's time for the next release +1. Go to [GitHub Releases](https://github.com/x1-labs/tachyon/releases) and create a new draft release for `X.Y.Z+1` with empty release notes. This allows people to incrementally add new release notes until it's time for the next release 1. Also, point the branch field to the same branch and mark the release as **"This is a pre-release"**. ### Verify release automation success -Go to [Agave Releases](https://github.com/anza-xyz/agave/releases) and click on the latest release that you just published. +Go to [Tachyon Releases](https://github.com/x1-labs/tachyon/releases) and click on the latest release that you just published. Verify that all of the build artifacts are present (15 assets), then uncheck **"This is a pre-release"** for the release. Build artifacts can take up to 60 minutes after creating the tag before appearing. To check for progress: -* The `agave-secondary` Buildkite pipeline handles creating the Linux and macOS release artifacts and updated crates. Look for a job under the tag name of the release: https://buildkite.com/anza-xyz/agave-secondary. -* The Windows release artifacts are produced by GitHub Actions. Look for a job under the tag name of the release: https://github.com/anza-xyz/agave/actions. +* The `tachyon-secondary` Buildkite pipeline handles creating the Linux and macOS release artifacts and updated crates. Look for a job under the tag name of the release: https://buildkite.com/x1-labs/tachyon-secondary. +* The Windows release artifacts are produced by GitHub Actions. Look for a job under the tag name of the release: https://github.com/x1-labs/tachyon/actions. -[Crates.io agave-validator](https://crates.io/crates/agave-validator) should have an updated agave-validator version. This can take 2-3 hours, and sometimes fails in the `agave-secondary` job. +[Crates.io tachyon-validator](https://crates.io/crates/tachyon-validator) should have an updated tachyon-validator version. This can take 2-3 hours, and sometimes fails in the `tachyon-secondary` job. If this happens and the error is non-fatal, click "Retry" on the "publish crate" job ### Update software on testnet.solana.com diff --git a/SECURITY.md b/SECURITY.md index b1c898106427d5..c1b88b7b058ed9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -5,11 +5,11 @@ 2. [Incident Response Process](#process) -## Reporting security problems in the Agave Validator +## Reporting security problems in the Tachyon Validator **DO NOT CREATE A GITHUB ISSUE** to report a security problem. -Instead please use this [Report a Vulnerability](https://github.com/anza-xyz/agave/security/advisories/new) link. +Instead please use this [Report a Vulnerability](https://github.com/x1-labs/tachyon/security/advisories/new) link. Provide a helpful title, detailed description of the vulnerability and an exploit proof-of-concept. Speculative submissions without proof-of-concept will be closed with no further consideration. @@ -25,15 +25,10 @@ Expect a response as fast as possible in the advisory, typically within 72 hours -- If you do not receive a response in the advisory, send an email to -security@anza.xyz with the full URL of the advisory you have created. DO NOT +security@x1.xyz with the full URL of the advisory you have created. DO NOT include attachments or provide detail sufficient for exploitation regarding the security issue in this email. **Only provide such details in the advisory**. -If you do not receive a response from security@anza.xyz please followup with -the team directly. You can do this in the `#core-technology` channel of the -[Solana Tech discord server](https://solana.com/discord), by pinging the `Anza` -role in the channel and referencing the fact that you submitted a security problem. - ## Incident Response Process @@ -42,18 +37,18 @@ followed to contain, respond and remediate: ### 1. Accept the new report In response a newly reported security problem, a member of the -`anza-xyz/admins` group will accept the report to turn it into a draft -advisory. The `anza-xyz/security-incident-response` group should be added to +`x1-xyz/admins` group will accept the report to turn it into a draft +advisory. The `x1-xyz/security-incident-response` group should be added to the draft security advisory, and create a private fork of the repository (grey button towards the bottom of the page) if necessary. If the advisory is the result of an audit finding, follow the same process as above but add the auditor's github user(s) and begin the title with "[Audit]". -If the report is out of scope, a member of the `anza-xyz/admins` group will +If the report is out of scope, a member of the `x1-xyz/admins` group will comment as such and then close the report. ### 2. Triage -Within the draft security advisory, discuss and determine the severity of the issue. If necessary, members of the anza-xyz/security-incident-response group may add other github users to the advisory to assist. +Within the draft security advisory, discuss and determine the severity of the issue. If necessary, members of the x1-xyz/security-incident-response group may add other github users to the advisory to assist. If it is determined that this is not a critical network issue then the advisory should be closed and if more follow-up is required a normal Solana public github issue should be created. ### 3. Prepare Fixes @@ -62,7 +57,7 @@ There is no CI available in the private repository so you must build from source Code review from the reporter is ideal, as well as from multiple members of the core development team. ### 4. Notify Security Group Validators -Once an ETA is available for the fix, a member of the anza-xyz/security-incident-response group should notify the validators so they can prepare for an update using the "Solana Red Alert" notification system. +Once an ETA is available for the fix, a member of the x1-xyz/security-incident-response group should notify the validators so they can prepare for an update using the "Solana Red Alert" notification system. The teams are all over the world and it's critical to provide actionable information at the right time. Don't be the person that wakes everybody up at 2am when a fix won't be available for hours. ### 5. Ship the patch diff --git a/ci/buildkite-pipeline-in-disk.sh b/ci/buildkite-pipeline-in-disk.sh index 81b084ea75e82b..9fd837ea491e8d 100755 --- a/ci/buildkite-pipeline-in-disk.sh +++ b/ci/buildkite-pipeline-in-disk.sh @@ -114,8 +114,8 @@ EOF trigger_secondary_step() { cat >> "$output_file" <<"EOF" - - name: "Trigger Build on solana-secondary" - trigger: "solana-secondary" + - name: "Trigger Build on tachyon-secondary" + trigger: "tachyon-secondary" branches: "!pull/*" async: true build: @@ -132,7 +132,7 @@ wait_step() { } all_test_steps() { - command_step checks ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-checks.sh" 20 + command_step checks ". ci/rust-version.sh; ci/docker-run.sh \$\$ci_docker_image ci/test-checks.sh" 20 wait_step # Coverage... @@ -144,7 +144,7 @@ all_test_steps() { ^ci/test-coverage.sh \ ^scripts/coverage.sh \ ; then - command_step coverage ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-coverage.sh" 80 + command_step coverage ". ci/rust-version.sh; ci/docker-run.sh \$\$ci_docker_image ci/test-coverage.sh" 80 wait_step else annotate --style info --context test-coverage \ @@ -159,7 +159,7 @@ all_test_steps() { ^ci/test-coverage.sh \ ^scripts/coverage-in-disk.sh \ ; then - command_step coverage-in-disk ". ci/rust-version.sh; ci/docker-run.sh \$\$rust_nightly_docker_image ci/test-coverage.sh" 80 + command_step coverage-in-disk ". ci/rust-version.sh; ci/docker-run.sh \$\$ci_docker_image ci/test-coverage.sh" 80 wait_step else annotate --style info --context test-coverage \ @@ -289,7 +289,7 @@ if [[ -n $BUILDKITE_TAG ]]; then start_pipeline "Tag pipeline for $BUILDKITE_TAG" annotate --style info --context release-tag \ - "https://github.com/anza-xyz/agave/releases/$BUILDKITE_TAG" + "https://github.com/x1-labs/tachyon/releases/$BUILDKITE_TAG" # Jump directly to the secondary build to publish release artifacts quickly trigger_secondary_step @@ -307,7 +307,7 @@ if [[ $BUILDKITE_BRANCH =~ ^pull ]]; then # Add helpful link back to the corresponding Github Pull Request annotate --style info --context pr-backlink \ - "Github Pull Request: https://github.com/anza-xyz/agave/$BUILDKITE_BRANCH" + "Github Pull Request: https://github.com/x1-labs/tachyon/$BUILDKITE_BRANCH" pull_or_push_steps exit 0 diff --git a/ci/buildkite-pipeline.sh b/ci/buildkite-pipeline.sh index f01797aea074fa..919531f7e9e022 100755 --- a/ci/buildkite-pipeline.sh +++ b/ci/buildkite-pipeline.sh @@ -6,13 +6,19 @@ set -e cd "$(dirname "$0")"/.. +source ci/env.sh + output_file=${1:-/dev/stderr} if [[ -n $CI_PULL_REQUEST ]]; then - # filter pr number from ci branch. - [[ $CI_BRANCH =~ pull/([0-9]+)/head ]] - pr_number=${BASH_REMATCH[1]} - echo "get affected files from PR: $pr_number" + if [[ -n $BUILDKITE_PULL_REQUEST ]]; then + pr_number=$BUILDKITE_PULL_REQUEST + else + # filter pr number from ci branch. + [[ $CI_BRANCH =~ pull/([0-9]+)/head ]] + pr_number=${BASH_REMATCH[1]} + fi + echo "get affected files from PR: $pr_number" # get affected files readarray -t affected_files < <(gh pr diff --name-only "$pr_number") @@ -101,7 +107,6 @@ affects_other_than() { return 1 # not affected } - start_pipeline() { echo "# $*" > "$output_file" echo "steps:" >> "$output_file" @@ -118,11 +123,48 @@ command_step() { EOF } +docker_command_step() { + cat >> "$output_file" <> "$output_file" <<"EOF" - - name: "Trigger Build on agave-secondary" - trigger: "agave-secondary" + - name: "Trigger Build on tachyon-secondary" + trigger: "tachyon-secondary" branches: "!pull/*" async: true soft_fail: true @@ -140,10 +182,11 @@ wait_step() { } all_test_steps() { - command_step checks1 "ci/docker-run-default-image.sh ci/test-checks.sh" 20 check - command_step checks2 "ci/docker-run-default-image.sh ci/test-dev-context-only-utils.sh check-bins" 15 check - command_step checks3 "ci/docker-run-default-image.sh ci/test-dev-context-only-utils.sh check-all-targets" 30 check - command_step miri "ci/docker-run-default-image.sh ci/test-miri.sh" 5 check + . ci/rust-version.sh + docker_command_step checks1 "ci/test-checks.sh" "$ci_docker_image" 20 check + docker_command_step checks2 "ci/test-dev-context-only-utils.sh check-bins" "$ci_docker_image" 20 check + docker_command_step checks3 "ci/test-dev-context-only-utils.sh check-all-targets" "$ci_docker_image" 30 check + docker_command_step miri "ci/test-miri.sh" "$ci_docker_image" 5 check wait_step # Full test suite @@ -157,7 +200,7 @@ all_test_steps() { ^ci/rust-version.sh \ ^ci/test-docs.sh \ ; then - command_step doctest "ci/docker-run-default-image.sh ci/test-docs.sh" 15 + docker_command_step doctest "ci/test-docs.sh" "$ci_docker_image" 15 else annotate --style info --context test-docs \ "Docs skipped as no .rs files were modified" @@ -183,7 +226,32 @@ all_test_steps() { cargo-test-sbf$ \ ; then cat >> "$output_file" <<"EOF" - - command: "ci/docker-run-default-image.sh ci/test-stable-sbf.sh" + - command: "ci/test-stable-sbf.sh" + plugins: + - docker#v5.12.0: + image: "$ci_docker_image" + workdir: /solana + propagate-environment: true + propagate-uid-gid: true + environment: + - "RUSTC_WRAPPER=/usr/local/cargo/bin/sccache" + - AWS_SECRET_ACCESS_KEY + - AWS_ACCESS_KEY_ID + - SCCACHE_BUCKET + - SCCACHE_REGION + - SCCACHE_S3_KEY_PREFIX + - BUILDKITE_PARALLEL_JOB + - BUILDKITE_PARALLEL_JOB_COUNT + - CI + - CI_BRANCH + - CI_BASE_BRANCH + - CI_TAG + - CI_BUILD_ID + - CI_COMMIT + - CI_JOB_ID + - CI_PULL_REQUEST + - CI_REPO_SLUG + - CRATES_IO_TOKEN name: "stable-sbf" timeout_in_minutes: 35 artifact_paths: "sbf-dumps.tar.bz2" @@ -227,7 +295,7 @@ EOF ^ci/test-stable.sh \ ^sdk/ \ ; then - command_step wasm "ci/docker-run-default-image.sh ci/test-wasm.sh" 20 + docker_command_step wasm "ci/test-wasm.sh" "$ci_docker_image" 20 else annotate --style info \ "wasm skipped as no relevant files were modified" @@ -259,7 +327,7 @@ EOF ^ci/test-coverage.sh \ ^scripts/coverage.sh \ ; then - command_step coverage "ci/docker-run-default-image.sh ci/test-coverage.sh" 80 + docker_command_step coverage "ci/test-coverage.sh" "$ci_docker_image" 80 else annotate --style info --context test-coverage \ "Coverage skipped as no .rs files were modified" @@ -297,7 +365,7 @@ pull_or_push_steps() { if [ -z "$diff_other_than_version_bump" ]; then echo "Diff only contains version bump." - command_step checks "ci/docker-run-default-image.sh ci/test-checks.sh" 20 + docker_command_step checks "ci/test-checks.sh" "$ci_docker_image" 20 exit 0 fi fi @@ -316,7 +384,7 @@ if [[ -n $BUILDKITE_TAG ]]; then start_pipeline "Tag pipeline for $BUILDKITE_TAG" annotate --style info --context release-tag \ - "https://github.com/anza-xyz/agave/releases/$BUILDKITE_TAG" + "https://github.com/X1-labs/tachyon/releases/$BUILDKITE_TAG" # Jump directly to the secondary build to publish release artifacts quickly trigger_secondary_step @@ -334,7 +402,7 @@ if [[ $BUILDKITE_BRANCH =~ ^pull ]]; then # Add helpful link back to the corresponding Github Pull Request annotate --style info --context pr-backlink \ - "Github Pull Request: https://github.com/anza-xyz/agave/$BUILDKITE_BRANCH" + "Github Pull Request: https://github.com/X1-labs/tachyon/$BUILDKITE_BRANCH" pull_or_push_steps exit 0 diff --git a/ci/buildkite-solana-private.sh b/ci/buildkite-solana-private.sh index d514ac0ad25c65..b7a4195ec28fec 100755 --- a/ci/buildkite-solana-private.sh +++ b/ci/buildkite-solana-private.sh @@ -116,8 +116,8 @@ EOF # trigger_secondary_step() { # cat >> "$output_file" <<"EOF" -# - name: "Trigger Build on solana-secondary" -# trigger: "solana-secondary" +# - name: "Trigger Build on tachyon-secondary" +# trigger: "tachyon-secondary" # branches: "!pull/*" # async: true # build: @@ -287,7 +287,7 @@ if [[ $BUILDKITE_BRANCH =~ ^pull ]]; then # Add helpful link back to the corresponding Github Pull Request annotate --style info --context pr-backlink \ - "Github Pull Request: https://github.com/anza-xyz/agave/$BUILDKITE_BRANCH" + "Github Pull Request: https://github.com/X1-labs/tachyon/$BUILDKITE_BRANCH" pull_or_push_steps exit 0 diff --git a/ci/channel-info.sh b/ci/channel-info.sh index 2bb808365653c6..e5cf9ef9c36326 100755 --- a/ci/channel-info.sh +++ b/ci/channel-info.sh @@ -11,7 +11,7 @@ here="$(dirname "$0")" # shellcheck source=ci/semver_bash/semver.sh source "$here"/semver_bash/semver.sh -remote=https://github.com/anza-xyz/agave.git +remote=https://github.com/X1-labs/tachyon.git # Fetch all vX.Y.Z tags # diff --git a/ci/common/limit-threads.sh b/ci/common/limit-threads.sh index c6843b2ce58a08..17f120649886a7 100755 --- a/ci/common/limit-threads.sh +++ b/ci/common/limit-threads.sh @@ -11,6 +11,9 @@ fi NPROC=$(nproc) JOBS=$((JOBS > NPROC ? NPROC : JOBS)) +if [[ -n $THREADS_OVERRIDE ]]; then + JOBS=$THREADS_OVERRIDE +fi export NPROC export JOBS diff --git a/ci/do-audit.sh b/ci/do-audit.sh index 0e63dcef22a423..6f9cee7e8888bb 100755 --- a/ci/do-audit.sh +++ b/ci/do-audit.sh @@ -50,6 +50,17 @@ cargo_audit_ignores=( # the server to exit cleanly on accepting a tcp/tls stream. # Ignoring because we do not use this functionality. --ignore RUSTSEC-2024-0376 + + # Crate: idna + # Version: 0.1.5 + # Title: `idna` accepts Punycode labels that do not produce any non-ASCII when decoded + # Date: 2024-12-09 + # ID: RUSTSEC-2024-0421 + # URL: https://rustsec.org/advisories/RUSTSEC-2024-0421 + # Solution: Upgrade to >=1.0.0 + # need to solve this depentant tree: + # jsonrpc-core-client v18.0.0 -> jsonrpc-client-transports v18.0.0 -> url v1.7.2 -> idna v0.1.5 + --ignore RUSTSEC-2024-0421 ) scripts/cargo-for-all-lock-files.sh audit "${cargo_audit_ignores[@]}" | $dep_tree_filter # we want the `cargo audit` exit code, not `$dep_tree_filter`'s diff --git a/ci/env.sh b/ci/env.sh index 953e880e399b28..a634b4a3389fa6 100644 --- a/ci/env.sh +++ b/ci/env.sh @@ -37,14 +37,14 @@ if [[ -n $CI ]]; then esac if [[ -n $BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG ]]; then - # The solana-secondary pipeline should use the slug of the pipeline that + # The tachyon-secondary pipeline should use the slug of the pipeline that # triggered it export CI_REPO_SLUG=$BUILDKITE_ORGANIZATION_SLUG/$BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG else export CI_REPO_SLUG=$BUILDKITE_ORGANIZATION_SLUG/$BUILDKITE_PIPELINE_SLUG fi # TRIGGERED_BUILDKITE_TAG is a workaround to propagate BUILDKITE_TAG into - # the solana-secondary pipeline + # the tachyon-secondary pipeline if [[ -n $TRIGGERED_BUILDKITE_TAG ]]; then export CI_TAG=$TRIGGERED_BUILDKITE_TAG else @@ -126,4 +126,5 @@ CI_PULL_REQUEST=$CI_PULL_REQUEST CI_OS_NAME=$CI_OS_NAME CI_REPO_SLUG=$CI_REPO_SLUG CI_TAG=$CI_TAG +THREADS_OVERRIDE=$THREADS_OVERRIDE EOF diff --git a/ci/localnet-sanity.sh b/ci/localnet-sanity.sh index b01eca31d50d81..7891568e2703fa 100755 --- a/ci/localnet-sanity.sh +++ b/ci/localnet-sanity.sh @@ -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" - $agave_validator --ledger "$SOLANA_CONFIG_DIR"/bootstrap-validator exit --force || true - $agave_validator --ledger "$SOLANA_CONFIG_DIR"/validator exit --force || true + $tachyon_validator --ledger "$SOLANA_CONFIG_DIR"/bootstrap-validator exit --force || true + $tachyon_validator --ledger "$SOLANA_CONFIG_DIR"/validator exit --force || true # Give the nodes a splash of time to cleanly exit before killing them sleep 2 diff --git a/ci/publish-installer.sh b/ci/publish-installer.sh index f7d98ffd5ddcf9..323175ecd638a9 100755 --- a/ci/publish-installer.sh +++ b/ci/publish-installer.sh @@ -26,14 +26,14 @@ fi # upload install script source ci/upload-ci-artifact.sh -cat >release.anza.xyz-install <release.x1.xyz-install <>release.anza.xyz-install +cat install/agave-install-init.sh >>release.x1.xyz-install echo --- GCS: "install" -upload-gcs-artifact "/solana/release.anza.xyz-install" "gs://anza-release/$CHANNEL_OR_TAG/install" +upload-gcs-artifact "/solana/release.x1.xyz-install" "gs://anza-release/$CHANNEL_OR_TAG/install" echo Published to: -ci/format-url.sh https://release.anza.xyz/"$CHANNEL_OR_TAG"/install +ci/format-url.sh https://release.x1.xyz/"$CHANNEL_OR_TAG"/install diff --git a/ci/publish-tarball.sh b/ci/publish-tarball.sh index 4746e9fb2ff94b..1d0f7665a762e7 100755 --- a/ci/publish-tarball.sh +++ b/ci/publish-tarball.sh @@ -122,7 +122,7 @@ for file in "${TARBALL_BASENAME}"-$TARGET.tar.bz2 "${TARBALL_BASENAME}"-$TARGET. upload-gcs-artifact "/solana/$file" gs://anza-release/"$CHANNEL_OR_TAG"/"$file" echo Published to: - $DRYRUN ci/format-url.sh https://release.anza.xyz/"$CHANNEL_OR_TAG"/"$file" + $DRYRUN ci/format-url.sh https://release.x1.xyz/"$CHANNEL_OR_TAG"/"$file" if [[ -n $TAG ]]; then ci/upload-github-release-asset.sh "$file" diff --git a/ci/run-sanity.sh b/ci/run-sanity.sh index 88a6f40b1adf28..0c09089fc75c82 100755 --- a/ci/run-sanity.sh +++ b/ci/run-sanity.sh @@ -31,7 +31,7 @@ while [[ $latest_slot -le $((snapshot_slot + 1)) ]]; do latest_slot=$($solana_cli --url http://localhost:8899 slot --commitment processed) done -$agave_validator --ledger config/ledger exit --force || true +$tachyon_validator --ledger config/ledger exit --force || true wait $pid diff --git a/ci/test-coverage.sh b/ci/test-coverage.sh index f4288285a41e93..168fd02d9dd87c 100755 --- a/ci/test-coverage.sh +++ b/ci/test-coverage.sh @@ -40,5 +40,5 @@ else codecov -t "${CODECOV_TOKEN}" --dir "$here/../target/cov/${SHORT_CI_COMMIT}" annotate --style success --context codecov.io \ - "CodeCov report: https://codecov.io/github/anza-xyz/agave/commit/$CI_COMMIT" + "CodeCov report: https://codecov.io/github/x1-labs/tachyon/commit/$CI_COMMIT" fi diff --git a/ci/upload-ci-artifact.sh b/ci/upload-ci-artifact.sh index e7cc34ab2b2d8c..8ddd3ec0c8e3c1 100644 --- a/ci/upload-ci-artifact.sh +++ b/ci/upload-ci-artifact.sh @@ -43,10 +43,4 @@ upload-s3-artifact() { upload-gcs-artifact() { echo "--- artifact: $1 to $2" - docker run --rm \ - -v "$GCS_RELEASE_BUCKET_WRITER_CREDIENTIAL:/application_default_credentials.json" \ - -v "$PWD:/solana" \ - -e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/application_default_credentials.json \ - gcr.io/google.com/cloudsdktool/google-cloud-cli:latest \ - gcloud storage cp "$1" "$2" } diff --git a/ci/upload-github-release-asset.sh b/ci/upload-github-release-asset.sh index 229fb8993edafd..07d14f360862d6 100755 --- a/ci/upload-github-release-asset.sh +++ b/ci/upload-github-release-asset.sh @@ -26,7 +26,7 @@ fi # Force CI_REPO_SLUG since sometimes # BUILDKITE_TRIGGERED_FROM_BUILD_PIPELINE_SLUG is not set correctly, causing the # artifact upload to fail -CI_REPO_SLUG=anza-xyz/agave +CI_REPO_SLUG=X1-labs/tachyon #if [[ -z $CI_REPO_SLUG ]]; then # echo Error: CI_REPO_SLUG not defined # exit 1 diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js index 767c3b18f6bb3e..fe079518a4857c 100644 --- a/docs/docusaurus.config.js +++ b/docs/docusaurus.config.js @@ -1,14 +1,14 @@ const math = require("remark-math"); const katex = require("rehype-katex"); module.exports = { - title: "Agave", + title: "Tachyon", tagline: - "Agave is an open source project implementing a new, high-performance, permissionless blockchain.", - url: "https://docs.anza.xyz", + "Tachyon is an open source project implementing a new, high-performance, permissionless blockchain.", + url: "https://docs.x1.xyz", baseUrl: "/", favicon: "img/favicon.ico", - organizationName: "anza-xyz", // Usually your GitHub org/user name. - projectName: "agave", // Usually your repo name. + organizationName: "x1-labs", // Usually your GitHub org/user name. + projectName: "tachyon", // Usually your repo name. onBrokenLinks: "throw", stylesheets: [ { @@ -93,7 +93,7 @@ module.exports = { position: "right", }, { - href: "https://github.com/anza-xyz/agave/", + href: "https://github.com/x1-labs/tachyon/", // label: "GitHub", className: "header-link-icon header-github-link", "aria-label": "GitHub repository", @@ -141,7 +141,7 @@ module.exports = { }, { label: "GitHub »", - href: "https://github.com/anza-xyz/agave", + href: "https://github.com/x1-labs/tachyon", }, { label: "Discord »", @@ -175,7 +175,7 @@ module.exports = { ], }, ], - copyright: `Copyright © ${new Date().getFullYear()} Anza`, + copyright: `Copyright © ${new Date().getFullYear()} X1 Labs`, }, }, presets: [ diff --git a/docs/publish-docs.sh b/docs/publish-docs.sh index c14e9bc9dc3dea..d158c1e67ba0ca 100755 --- a/docs/publish-docs.sh +++ b/docs/publish-docs.sh @@ -9,15 +9,15 @@ fi CONFIG_FILE=vercel.json if [[ -n $CI_TAG ]]; then - PROJECT_NAME=docs-anza-xyz + PROJECT_NAME=docs-x1-xyz else eval "$(../ci/channel-info.sh)" case $CHANNEL in edge) - PROJECT_NAME=edge-docs-anza-xyz + PROJECT_NAME=edge-docs-x1-xyz ;; beta) - PROJECT_NAME=beta-docs-anza-xyz + PROJECT_NAME=beta-docs-x1-xyz ;; *) PROJECT_NAME=docs diff --git a/docs/src/cli/index.md b/docs/src/cli/index.md index 27deffd485dfc9..c6d34671f0cb1b 100644 --- a/docs/src/cli/index.md +++ b/docs/src/cli/index.md @@ -11,7 +11,7 @@ cluster by delegating stake. To interact with a Solana cluster, we will use its command-line interface, also known as the CLI. We use the command-line because it is the first place the -Anza core team deploys new functionality. The command-line interface is not +X1 Labs core team deploys new functionality. The command-line interface is not necessarily the easiest to use, but it provides the most direct, flexible, and secure access to your Solana accounts. diff --git a/docs/src/cli/install.md b/docs/src/cli/install.md index c9a5c682d40592..8b383c81fdd68d 100644 --- a/docs/src/cli/install.md +++ b/docs/src/cli/install.md @@ -19,26 +19,26 @@ on your preferred workflow: - Open your favorite Terminal application -- Install the Agave release - [LATEST_AGAVE_RELEASE_VERSION](https://github.com/anza-xyz/agave/releases/tag/LATEST_AGAVE_RELEASE_VERSION) +- Install the Tachyon release + [LATEST_TACHYON_RELEASE_VERSION](https://github.com/x1-labs/tachyon/releases/tag/LATEST_TACHYON_RELEASE_VERSION) on your machine by running: ```bash -sh -c "$(curl -sSfL https://release.anza.xyz/LATEST_AGAVE_RELEASE_VERSION/install)" +sh -c "$(curl -sSfL https://release.x1.xyz/LATEST_TACHYON_RELEASE_VERSION/install)" ``` -- You can replace `LATEST_AGAVE_RELEASE_VERSION` with the release tag matching +- You can replace `LATEST_TACHYON_RELEASE_VERSION` with the release tag matching the software version of your desired release, or use one of the three symbolic channel names: `stable`, `beta`, or `edge`. - The following output indicates a successful update: ```text -downloading LATEST_AGAVE_RELEASE_VERSION installer +downloading LATEST_TACHYON_RELEASE_VERSION installer Configuration: /home/solana/.config/solana/install/config.yml Active release directory: /home/solana/.local/share/solana/install/active_release -* Release version: LATEST_AGAVE_RELEASE_VERSION -* Release URL: https://github.com/anza-xyz/agave/releases/download/LATEST_AGAVE_RELEASE_VERSION/solana-release-x86_64-unknown-linux-gnu.tar.bz2 +* Release version: LATEST_TACHYON_RELEASE_VERSION +* Release URL: https://github.com/x1-labs/tachyon/releases/download/LATEST_TACHYON_RELEASE_VERSION/solana-release-x86_64-unknown-linux-gnu.tar.bz2 Update successful ``` @@ -56,7 +56,7 @@ Please update your PATH environment variable to include the solana programs: solana --version ``` -- After a successful install, `agave-install update` may be used to easily +- After a successful install, `tachyon-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.anza.xyz/LATEST_AGAVE_RELEASE_VERSION/agave-install-init-x86_64-pc-windows-msvc.exe --output C:\agave-install-tmp\agave-install-init.exe --create-dirs" +cmd /c "curl https://release.x1.xyz/LATEST_TACHYON_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 @@ -108,7 +108,7 @@ manually download and install the binaries. ### Linux Download the binaries by navigating to -[https://github.com/anza-xyz/agave/releases/latest](https://github.com/anza-xyz/agave/releases/latest), +[https://github.com/x1-labs/tachyon/releases/latest](https://github.com/x1-labs/tachyon/releases/latest), download **solana-release-x86_64-unknown-linux-gnu.tar.bz2**, then extract the archive: @@ -121,7 +121,7 @@ export PATH=$PWD/bin:$PATH ### MacOS Download the binaries by navigating to -[https://github.com/anza-xyz/agave/releases/latest](https://github.com/anza-xyz/agave/releases/latest), +[https://github.com/x1-labs/tachyon/releases/latest](https://github.com/x1-labs/tachyon/releases/latest), download **solana-release-x86_64-apple-darwin.tar.bz2**, then extract the archive: @@ -134,7 +134,7 @@ export PATH=$PWD/bin:$PATH ### Windows - Download the binaries by navigating to - [https://github.com/anza-xyz/agave/releases/latest](https://github.com/anza-xyz/agave/releases/latest), + [https://github.com/x1-labs/tachyon/releases/latest](https://github.com/x1-labs/tachyon/releases/latest), download **solana-release-x86_64-pc-windows-msvc.tar.bz2**, then extract the archive using WinZip or similar. @@ -242,7 +242,7 @@ above. After installing the prerequisites, proceed with building Solana from source, navigate to -[Solana's GitHub releases page](https://github.com/anza-xyz/agave/releases/latest), +[Solana's GitHub releases page](https://github.com/x1-labs/tachyon/releases/latest), and download the **Source Code** archive. Extract the code and build the binaries with: diff --git a/docs/src/clusters/available.md b/docs/src/clusters/available.md index 52a7d469ad0cc5..17fd42fb3050d8 100644 --- a/docs/src/clusters/available.md +++ b/docs/src/clusters/available.md @@ -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 `agave-validator` command-line +##### Example `tachyon-validator` command-line ```bash -$ agave-validator \ +$ tachyon-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 `agave-validator` command-line +##### Example `tachyon-validator` command-line ```bash -$ agave-validator \ +$ tachyon-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 `agave-validator` command-line +##### Example `tachyon-validator` command-line ```bash -$ agave-validator \ +$ tachyon-validator \ --identity ~/validator-keypair.json \ --vote-account ~/vote-account-keypair.json \ --known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \ @@ -173,4 +173,4 @@ $ agave-validator \ :::info The above four [`--known-validator`s](../operations/guides/validator-start.md#known-validators) are operated by Solana Labs. -::: \ No newline at end of file +::: diff --git a/docs/src/clusters/benchmark.md b/docs/src/clusters/benchmark.md index 35978cdd0967dd..d59dcbaa64418f 100644 --- a/docs/src/clusters/benchmark.md +++ b/docs/src/clusters/benchmark.md @@ -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 _agave-validator_: +You can also attach to a running process with GDB. The leader's process is named _tachyon-validator_: ```bash sudo gdb diff --git a/docs/src/implemented-proposals/installer.md b/docs/src/implemented-proposals/installer.md index c052aa7b4e54e5..07f5e4796a70a0 100644 --- a/docs/src/implemented-proposals/installer.md +++ b/docs/src/implemented-proposals/installer.md @@ -60,7 +60,7 @@ $ agave-install deploy http://example.com/path/to/solana-release.tar.bz2 update- $ 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 -$ agave-install run agave-validator ... # <-- runs a validator, restarting it as necessary when an update is applied +$ agave-install run tachyon-validator ... # <-- runs a validator, restarting it as necessary when an update is applied ``` ## On-chain Update Manifest diff --git a/docs/src/implemented-proposals/rpc-transaction-history.md b/docs/src/implemented-proposals/rpc-transaction-history.md index 607a79ce658b98..16d04f1607e563 100644 --- a/docs/src/implemented-proposals/rpc-transaction-history.md +++ b/docs/src/implemented-proposals/rpc-transaction-history.md @@ -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 `agave-ledger-tool` command that will convert rocksdb data for +the use of a new `tachyon-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 diff --git a/docs/src/index.mdx b/docs/src/index.mdx index 6314ed65581456..d150bd08653080 100644 --- a/docs/src/index.mdx +++ b/docs/src/index.mdx @@ -3,19 +3,19 @@ slug: / id: home title: Home sidebar_label: Home -pagination_label: Agave Validator Documentation Home -description: "Agave is a validator for the Solana blockchain maintained by the Anza core engineering team \ +pagination_label: Tachyon Validator Documentation Home +description: "Tachyon is a validator for the Solana blockchain maintained by the X1 Labs core engineering team \ it is a fork of the original Solana validator software." --- -# Agave Validator Documentation +# Tachyon Validator Documentation Solana is a blockchain built for mass adoption. It's a high performance network that is utilized for a range of use cases, including finance, NFTs, payments, and gaming. Solana operates as a single global state machine, and is open, -interoperable and decentralized. Agave is a fork of the original Solana validator -previously maintained by the Solana Labs team. Agave is now under active development by the -core engineering team at Anza, one of several Solana validator clients. +interoperable and decentralized. Tachyon is a fork of the original Solana validator +previously maintained by the Solana Labs team. Tachyon is now under active development by the +core engineering team at X1 Labs, one of several Solana validator clients. ## Command Line Interface and Tool Suite @@ -44,7 +44,7 @@ works: ## Running a Validator -Explore what it takes to operate an Agave validator and help secure the network. +Explore what it takes to operate an Tachyon validator and help secure the network. - [Validator vs RPC node](./operations/validator-or-rpc-node.md) - Understand the important differences between voting and non-voting validators on the diff --git a/docs/src/operations/best-practices/general.md b/docs/src/operations/best-practices/general.md index 3e531b0160c571..86c7f97efb5d41 100644 --- a/docs/src/operations/best-practices/general.md +++ b/docs/src/operations/best-practices/general.md @@ -23,12 +23,12 @@ watch past workshops through the ## Help with the validator command line -From within the Solana CLI, you can execute the `agave-validator` command with +From within the Solana CLI, you can execute the `tachyon-validator` command with the `--help` flag to get a better understanding of the flags and sub commands available. ``` -agave-validator --help +tachyon-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 `agave-validator exit` +Assuming you are ready to restart, you may use the `tachyon-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: ``` -agave-validator exit --help +tachyon-validator exit --help ``` ## Upgrading @@ -75,14 +75,14 @@ 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 `agave-validator` binary to your specific hardware. +your `tachyon-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). -### agave-install +### tachyon-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 @@ -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 `agave-validator exit` to restart +the newly installed version is in use. Use `tachyon-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 -`agave-validator` command: +`tachyon-validator` command: ``` --no-snapshot-fetch ``` -If you use this flag with the `agave-validator` command, make sure that you run +If you use this flag with the `tachyon-validator` command, make sure that you run `solana catchup ` 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 `agave-validator` software. How much SOL you should store there is +running the `tachyon-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: diff --git a/docs/src/operations/best-practices/monitoring.md b/docs/src/operations/best-practices/monitoring.md index a0f2ef9df9fa22..57098634f2abe9 100644 --- a/docs/src/operations/best-practices/monitoring.md +++ b/docs/src/operations/best-practices/monitoring.md @@ -27,11 +27,11 @@ The command will monitor your validator, but you will not get notifications unle It is a best practice to run the `agave-watchtower` command on a separate server from your validator. -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. +In the case that you run `agave-watchtower` on the same computer as your `tachyon-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 `tachyon-validator` process. 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 `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. +Instead, you could run your `agave-watchtower` command as a system process similar to `tachyon-validator`. In the system process file, you can specify the environment variables for your bot. ### Setup Telegram Notifications @@ -83,4 +83,4 @@ export TELEGRAM_CHAT_ID= 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`. \ No newline at end of file +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`. diff --git a/docs/src/operations/guides/restart-cluster.md b/docs/src/operations/guides/restart-cluster.md index cda3f30a5a016d..c8dd6acccde411 100644 --- a/docs/src/operations/guides/restart-cluster.md +++ b/docs/src/operations/guides/restart-cluster.md @@ -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 -agave-ledger-tool -l ledger latest-optimistic-slots +tachyon-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 -$ agave-ledger-tool -l --snapshot-archive-path --incremental-snapshot-archive-path create-snapshot SLOT_X --hard-fork SLOT_X +$ tachyon-ledger-tool -l --snapshot-archive-path --incremental-snapshot-archive-path create-snapshot SLOT_X --hard-fork SLOT_X ``` The snapshots directory should now contain the new snapshot. -`agave-ledger-tool create-snapshot` will also output the new shred version, and bank hash value, +`tachyon-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 -> agave-validator +> tachyon-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 -> agave-validator +> tachyon-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: `agave-ledger-tool -l path/to/ledger bounds` +> You can check for which slots your ledger has with: `tachyon-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 ` arguments for each of the non-responsive validator's vote account address ```bash -$ agave-ledger-tool -l ledger create-snapshot SLOT_X ledger --hard-fork SLOT_X \ +$ tachyon-ledger-tool -l ledger create-snapshot SLOT_X ledger --hard-fork SLOT_X \ --destake-vote-account \ --destake-vote-account \ . diff --git a/docs/src/operations/guides/validator-failover.md b/docs/src/operations/guides/validator-failover.md index b7b3fea568194b..e309314718eea2 100644 --- a/docs/src/operations/guides/validator-failover.md +++ b/docs/src/operations/guides/validator-failover.md @@ -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 `agave-validator` parameters are required to enable +The following additional `tachyon-validator` parameters are required to enable tower storage into etcd: ``` -agave-validator ... \ +tachyon-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 `agave-validator` command-line argument changes: +following `tachyon-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 -$ agave-validator wait-for-restart-window --identity validator-keypair.json \ - && agave-validator set-identity validator-keypair.json +$ tachyon-validator wait-for-restart-window --identity validator-keypair.json \ + && tachyon-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 `agave-validator set-identity +Monitoring of your choosing can invoke the `tachyon-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 diff --git a/docs/src/operations/guides/validator-start.md b/docs/src/operations/guides/validator-start.md index 5907064105c794..02fdf4d1ffeb61 100644 --- a/docs/src/operations/guides/validator-start.md +++ b/docs/src/operations/guides/validator-start.md @@ -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 `agave-validator`. +the `--cuda` argument to `tachyon-validator`. When your validator is started look for the following log message to indicate that CUDA is enabled: `"[ solana::validator] CUDA is enabled"` @@ -47,7 +47,7 @@ the following commands. #### **Optimize sysctl knobs** ```bash -sudo bash -c "cat >/etc/sysctl.d/21-agave-validator.conf </etc/sysctl.d/21-tachyon-validator.conf <` argument to -`agave-validator`. You can specify multiple ones by repeating the argument +`tachyon-validator`. You can specify multiple ones by repeating the argument `--known-validator --known-validator `. This has the effect that when the validator is booting with `--only-known-rpc`, it will only ask that set of known nodes for downloading genesis and snapshot data. @@ -275,13 +275,13 @@ state download. Connect to the cluster by running: ```bash -agave-validator \ +tachyon-validator \ --identity ~/validator-keypair.json \ --vote-account ~/vote-account-keypair.json \ --rpc-port 8899 \ --entrypoint entrypoint.devnet.solana.com:8001 \ --limit-ledger-size \ - --log ~/agave-validator.log + --log ~/tachyon-validator.log ``` To force validator logging to the console add a `--log -` argument, otherwise @@ -294,7 +294,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 -> `agave-validator --identity ASK ... --authorized-voter ASK ...` +> `tachyon-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 @@ -310,7 +310,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, `agave-validator --dynamic-port-range 11000-11020 ...` will restrict +example, `tachyon-validator --dynamic-port-range 11000-11020 ...` will restrict the validator to ports 11000-11020. ### Limiting ledger size to conserve disk space @@ -364,8 +364,8 @@ WantedBy=multi-user.target ``` Now create `/home/sol/bin/validator.sh` to include the desired -`agave-validator` command-line. Ensure that the 'exec' command is used to -start the validator process (i.e. "exec agave-validator ..."). This is +`tachyon-validator` command-line. Ensure that the 'exec' command is used to +start the validator process (i.e. "exec tachyon-validator ..."). This is important because without it, logrotate will end up killing the validator every time the logs are rotated. @@ -392,14 +392,14 @@ to be reverted and the issue reproduced before help can be provided. #### Log rotation -The validator log file, as specified by `--log ~/agave-validator.log`, can get +The validator log file, as specified by `--log ~/tachyon-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 agave-validator ...`) when using logrotate. +launch the process with `exec` (`exec tachyon-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. @@ -407,13 +407,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/agave-validator.log: +/home/sol/tachyon-validator.log: ```bash # Setup log rotation cat > logrotate.sol </etc/sysctl.d/21-agave-validator.conf </etc/sysctl.d/21-tachyon-validator.conf < For more explanation on the flags used in the command, refer to the `agave-validator --help` command +> For more explanation on the flags used in the command, refer to the `tachyon-validator --help` command ``` #!/bin/bash -exec agave-validator \ +exec tachyon-validator \ --identity /home/sol/validator-keypair.json \ --known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \ --known-validator dDzy5SR3AXdYWVqbDEkVFdvSPCtS9ihF5kJkHCtXoFs \ diff --git a/docs/src/runtime/zk-elgamal-proof.md b/docs/src/runtime/zk-elgamal-proof.md index e3372f03f383fb..6f4af7dae9ed1a 100644 --- a/docs/src/runtime/zk-elgamal-proof.md +++ b/docs/src/runtime/zk-elgamal-proof.md @@ -12,7 +12,7 @@ so that they can be combined to enable a number different applications. - Program id: `ZkE1Gama1Proof11111111111111111111111111111` - Instructions: - [ProofInstruction](https://github.com/anza-xyz/agave/blob/master/zk-sdk/src/zk_elgamal_proof_program/instruction.rs) + [ProofInstruction](https://github.com/x1-labs/tachyon/blob/master/zk-sdk/src/zk_elgamal_proof_program/instruction.rs) ### Pedersen commitments and ElGamal encryption @@ -98,14 +98,14 @@ proofs. - The ElGamal public-key validity proof instruction certifies that an ElGamal public-key is a properly formed public key. - Mathematical description and proof of security: - [[Notes]](https://github.com/anza-xyz/agave/blob/master/docs/src/runtime/zk-docs/pubkey_proof.pdf) + [[Notes]](https://github.com/x1-labs/tachyon/blob/master/docs/src/runtime/zk-docs/pubkey_proof.pdf) - `VerifyZeroCiphertext`: - The zero-ciphertext proof certifies that an ElGamal ciphertext encrypts the number zero. - Mathematical description and proof of security: - [[Notes]](https://github.com/anza-xyz/agave/blob/master/docs/src/runtime/zk-docs/zero_proof.pdf) + [[Notes]](https://github.com/x1-labs/tachyon/blob/master/docs/src/runtime/zk-docs/zero_proof.pdf) #### Equality proofs @@ -114,14 +114,14 @@ proofs. - The ciphertext-commitment equality proof certifies that an ElGamal ciphertext and a Pedersen commitment encode the same message. - Mathematical description and proof of security: - [[Notes]](https://github.com/anza-xyz/agave/blob/master/docs/src/runtime/zk-docs/ciphertext_commitment_equality.pdf) + [[Notes]](https://github.com/x1-labs/tachyon/blob/master/docs/src/runtime/zk-docs/ciphertext_commitment_equality.pdf) - `VerifyCiphertextCiphertextEquality`: - The ciphertext-ciphertext equality proof certifies that two ElGamal ciphertexts encrypt the same message. - Mathematical description and proof of security: - [[Notes]](https://github.com/anza-xyz/agave/blob/master/docs/src/runtime/zk-docs/ciphertext_ciphertext_equality.pdf) + [[Notes]](https://github.com/x1-labs/tachyon/blob/master/docs/src/runtime/zk-docs/ciphertext_ciphertext_equality.pdf) #### Ciphertext Validity proofs @@ -130,4 +130,4 @@ proofs. - The grouped ciphertext validity proof certifies that a grouped ElGamal cipehrtext is well-formed - Mathematical description and proof of security: - [[Notes]](https://github.com/anza-xyz/agave/blob/master/docs/src/runtime/zk-docs/ciphertext_validity.pdf) + [[Notes]](https://github.com/x1-labs/tachyon/blob/master/docs/src/runtime/zk-docs/ciphertext_validity.pdf) diff --git a/install/agave-install-init.sh b/install/agave-install-init.sh index cf2d1babf3c306..6bc726fbc305c0 100755 --- a/install/agave-install-init.sh +++ b/install/agave-install-init.sh @@ -16,9 +16,9 @@ { # this ensures the entire script is downloaded # if [ -z "$SOLANA_DOWNLOAD_ROOT" ]; then - SOLANA_DOWNLOAD_ROOT="https://github.com/anza-xyz/agave/releases/download/" + SOLANA_DOWNLOAD_ROOT="https://github.com/x1-labs/tachyon/releases/download/" fi -GH_LATEST_RELEASE="https://api.github.com/repos/anza-xyz/agave/releases/latest" +GH_LATEST_RELEASE="https://api.github.com/repos/x1-labs/tachyon/releases/latest" set -e diff --git a/install/src/command.rs b/install/src/command.rs index 8a81e1d72337ec..ae5d2b0c33689a 100644 --- a/install/src/command.rs +++ b/install/src/command.rs @@ -568,7 +568,7 @@ pub fn init( fn github_release_download_url(release_semver: &str) -> String { format!( - "https://github.com/anza-xyz/agave/releases/download/v{}/solana-release-{}.tar.bz2", + "https://github.com/x1-labs/tachyon/releases/download/v{}/solana-release-{}.tar.bz2", release_semver, crate::build_env::TARGET ) @@ -576,7 +576,7 @@ fn github_release_download_url(release_semver: &str) -> String { fn release_channel_download_url(release_channel: &str) -> String { format!( - "https://release.anza.xyz/{}/solana-release-{}.tar.bz2", + "https://release.x1.xyz/{}/solana-release-{}.tar.bz2", release_channel, crate::build_env::TARGET ) @@ -584,7 +584,7 @@ fn release_channel_download_url(release_channel: &str) -> String { fn release_channel_version_url(release_channel: &str) -> String { format!( - "https://release.anza.xyz/{}/solana-release-{}.yml", + "https://release.x1.xyz/{}/solana-release-{}.yml", release_channel, crate::build_env::TARGET ) @@ -901,7 +901,7 @@ fn check_for_newer_github_release( while page == 1 || releases.len() == PER_PAGE { let url = reqwest::Url::parse_with_params( - "https://api.github.com/repos/anza-xyz/agave/releases", + "https://api.github.com/repos/x1-labs/tachyon/releases", &[ ("per_page", &format!("{PER_PAGE}")), ("page", &format!("{page}")), diff --git a/ledger-tool/Cargo.toml b/ledger-tool/Cargo.toml index d9e55d9771b36c..02b9670763cc57 100644 --- a/ledger-tool/Cargo.toml +++ b/ledger-tool/Cargo.toml @@ -1,7 +1,7 @@ [package] -name = "agave-ledger-tool" +name = "tachyon-ledger-tool" description = "Blockchain, Rebuilt for Scale" -documentation = "https://docs.rs/agave-ledger-tool" +documentation = "https://docs.rs/tachyon-ledger-tool" version = { workspace = true } authors = { workspace = true } repository = { workspace = true } diff --git a/ledger-tool/src/blockstore.rs b/ledger-tool/src/blockstore.rs index e8c9ef2a223fb6..474a2a5b383359 100644 --- a/ledger-tool/src/blockstore.rs +++ b/ledger-tool/src/blockstore.rs @@ -353,7 +353,7 @@ pub fn blockstore_subcommands<'a, 'b>(hidden: bool) -> Vec> { 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 agave-ledger-tool + // such that the subcommand will be visible as the top level of tachyon-ledger-tool .arg( Arg::with_name("num_slots") .long("num-slots") diff --git a/ledger-tool/src/ledger_utils.rs b/ledger-tool/src/ledger_utils.rs index 0ff1384bc4e003..20b34c611ad369 100644 --- a/ledger-tool/src/ledger_utils.rs +++ b/ledger-tool/src/ledger_utils.rs @@ -202,14 +202,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 (agave-validator) can hold + // If this blockstore access is Primary, no other process (tachyon-validator) can hold // Primary access. So, allow a custom accounts path without worry of wiping the accounts - // of agave-validator. + // of tachyon-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 agave-validator over - // agave-ledger-tool should agave-validator start before we've finished. + // the Primary access instead of holding it to give priority to tachyon-validator over + // tachyon-ledger-tool should tachyon-validator start before we've finished. info!( "Checking if another process currently holding Primary access to {:?}", blockstore.ledger_path() diff --git a/ledger-tool/src/main.rs b/ledger-tool/src/main.rs index 2a882d58fa2da8..683704cb0934aa 100644 --- a/ledger-tool/src/main.rs +++ b/ledger-tool/src/main.rs @@ -1451,7 +1451,7 @@ fn main() { ("bank-hash", Some(_)) => { eprintln!( "The bank-hash command has been deprecated, use \ - agave-ledger-tool verify --print-bank-hash ... instead" + tachyon-ledger-tool verify --print-bank-hash ... instead" ); } ("verify", Some(arg_matches)) => { @@ -2123,9 +2123,13 @@ fn main() { }; let bank = if let Some(warp_slot) = warp_slot { - // need to flush the write cache in order to use Storages to calculate - // the accounts hash, and need to root `bank` before flushing the cache - bank.rc.accounts.accounts_db.add_root(bank.slot()); + // Need to flush the write cache in order to use + // Storages to calculate the accounts hash, and need to + // root `bank` before flushing the cache. Use squash to + // root all unrooted parents as well and avoid panicking + // during snapshot creation if we try to add roots out + // of order. + bank.squash(); bank.force_flush_accounts_cache(); Arc::new(Bank::warp_from_parent( bank.clone(), diff --git a/ledger/src/blockstore_db.rs b/ledger/src/blockstore_db.rs index 00eea6f811ebcb..67228b16dda6a4 100644 --- a/ledger/src/blockstore_db.rs +++ b/ledger/src/blockstore_db.rs @@ -441,7 +441,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 \ - agave-validator" + tachyon-validator" ); DB::open_cf_descriptors_as_secondary( &db_options, diff --git a/local-cluster/tests/local_cluster.rs b/local-cluster/tests/local_cluster.rs index 8826ca0a17ed8c..032c872212f3f9 100644 --- a/local-cluster/tests/local_cluster.rs +++ b/local-cluster/tests/local_cluster.rs @@ -62,7 +62,7 @@ use { solana_sdk::{ account::AccountSharedData, client::AsyncClient, - clock::{self, Slot, DEFAULT_TICKS_PER_SLOT, MAX_PROCESSING_AGE}, + clock::{Slot, DEFAULT_TICKS_PER_SLOT, MAX_PROCESSING_AGE}, commitment_config::CommitmentConfig, epoch_schedule::{DEFAULT_SLOTS_PER_EPOCH, MINIMUM_SLOTS_PER_EPOCH}, genesis_config::ClusterType, @@ -356,50 +356,6 @@ fn test_forwarding() { ); } -#[test] -#[serial] -fn test_restart_node() { - solana_logger::setup_with_default(RUST_LOG_FILTER); - error!("test_restart_node"); - let slots_per_epoch = MINIMUM_SLOTS_PER_EPOCH * 2; - let ticks_per_slot = 16; - let validator_config = ValidatorConfig::default_for_test(); - let mut cluster = LocalCluster::new( - &mut ClusterConfig { - node_stakes: vec![DEFAULT_NODE_STAKE], - cluster_lamports: DEFAULT_CLUSTER_LAMPORTS, - validator_configs: vec![safe_clone_config(&validator_config)], - ticks_per_slot, - slots_per_epoch, - stakers_slot_offset: slots_per_epoch, - skip_warmup_slots: true, - ..ClusterConfig::default() - }, - SocketAddrSpace::Unspecified, - ); - let nodes = cluster.get_node_pubkeys(); - cluster_tests::sleep_n_epochs( - 1.0, - &cluster.genesis_config.poh_config, - clock::DEFAULT_TICKS_PER_SLOT, - slots_per_epoch, - ); - cluster.exit_restart_node(&nodes[0], validator_config, SocketAddrSpace::Unspecified); - cluster_tests::sleep_n_epochs( - 0.5, - &cluster.genesis_config.poh_config, - clock::DEFAULT_TICKS_PER_SLOT, - slots_per_epoch, - ); - cluster_tests::send_many_transactions( - &cluster.entry_point_info, - &cluster.funding_keypair, - &cluster.connection_cache, - 10, - 1, - ); -} - #[test] #[serial] fn test_mainnet_beta_cluster_type() { @@ -2300,13 +2256,13 @@ fn test_hard_fork_with_gap_in_roots() { ); // create hard-forked snapshot only for validator a, emulating the manual cluster restart - // procedure with `agave-ledger-tool create-snapshot` + // procedure with `tachyon-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 agave-validator unbootable by replaying blocks from the genesis to + // Intentionally make tachyon-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 diff --git a/multinode-demo/bootstrap-validator.sh b/multinode-demo/bootstrap-validator.sh index 374a9288f11597..ffb213a565ee63 100755 --- a/multinode-demo/bootstrap-validator.sh +++ b/multinode-demo/bootstrap-validator.sh @@ -14,9 +14,9 @@ if [[ "$SOLANA_GPU_MISSING" -eq 1 ]]; then fi if [[ -n $SOLANA_CUDA ]]; then - program=$agave_validator_cuda + program=$tachyon_validator_cuda else - program=$agave_validator + program=$tachyon_validator fi no_restart=0 diff --git a/multinode-demo/common.sh b/multinode-demo/common.sh index db43dd15cffaaf..fc05cb1ceb5b6f 100644 --- a/multinode-demo/common.sh +++ b/multinode-demo/common.sh @@ -30,7 +30,9 @@ if [[ -n $USE_INSTALL || ! -f "$SOLANA_ROOT"/Cargo.toml ]]; then if [[ -z $program ]]; then printf "solana" else - if [[ $program == "validator" || $program == "ledger-tool" || $program == "watchtower" || $program == "install" ]]; then + if [[ $program == "validator" || $program == "ledger-tool" ]]; then + printf "tachyon-%s" "$program" + elif [[ $program == "watchtower" || $program == "install" ]]; then printf "agave-%s" "$program" else printf "solana-%s" "$program" @@ -44,7 +46,9 @@ else if [[ -z $program ]]; then crate="cli" program="solana" - elif [[ $program == "validator" || $program == "ledger-tool" || $program == "watchtower" || $program == "install" ]]; then + elif [[ $program == "validator" || $program == "ledger-tool" ]]; then + program="tachyon-$program" + elif [[ $program == "watchtower" || $program == "install" ]]; then program="agave-$program" else program="solana-$program" @@ -69,8 +73,8 @@ fi solana_bench_tps=$(solana_program bench-tps) solana_faucet=$(solana_program faucet) -agave_validator=$(solana_program validator) -agave_validator_cuda="$agave_validator --cuda" +tachyon_validator=$(solana_program validator) +tachyon_validator_cuda="$tachyon_validator --cuda" solana_genesis=$(solana_program genesis) solana_gossip=$(solana_program gossip) solana_keygen=$(solana_program keygen) diff --git a/multinode-demo/validator.sh b/multinode-demo/validator.sh index 77082f6589245b..eaf07909a96f45 100755 --- a/multinode-demo/validator.sh +++ b/multinode-demo/validator.sh @@ -64,7 +64,7 @@ while [[ -n $1 ]]; do elif [[ $1 = --no-airdrop ]]; then airdrops_enabled=0 shift - # agave-validator options + # tachyon-validator options elif [[ $1 = --expected-genesis-hash ]]; then args+=("$1" "$2") shift 2 @@ -267,9 +267,9 @@ if [[ $maybeRequireTower = true ]]; then fi if [[ -n $SOLANA_CUDA ]]; then - program=$agave_validator_cuda + program=$tachyon_validator_cuda else - program=$agave_validator + program=$tachyon_validator fi set -e diff --git a/net/net.sh b/net/net.sh index b82872f5046d8e..3f96768a1a0400 100755 --- a/net/net.sh +++ b/net/net.sh @@ -563,7 +563,7 @@ prepareDeploy() { if [[ -n $releaseChannel ]]; then echo "Downloading release from channel: $releaseChannel" rm -f "$SOLANA_ROOT"/solana-release.tar.bz2 - declare updateDownloadUrl=https://release.anza.xyz/"$releaseChannel"/solana-release-x86_64-unknown-linux-gnu.tar.bz2 + declare updateDownloadUrl=https://release.x1.xyz/"$releaseChannel"/solana-release-x86_64-unknown-linux-gnu.tar.bz2 ( set -x curl -L -I "$updateDownloadUrl" diff --git a/net/remote/remote-node.sh b/net/remote/remote-node.sh index 882f7891702cde..f7d81883e752d3 100755 --- a/net/remote/remote-node.sh +++ b/net/remote/remote-node.sh @@ -121,7 +121,7 @@ cat >> ~/solana/on-reboot < system-stats.pid if ${GPU_CUDA_OK} && [[ -e /dev/nvidia0 ]]; then - echo Selecting agave-validator-cuda + echo Selecting tachyon-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 - agave-ledger-tool -l config/bootstrap-validator create-snapshot 0 config/bootstrap-validator $maybeWarpSlot + tachyon-ledger-tool -l config/bootstrap-validator create-snapshot 0 config/bootstrap-validator $maybeWarpSlot fi - agave-ledger-tool -l config/bootstrap-validator shred-version --max-genesis-archive-unpacked-size 1073741824 | tee config/shred-version + tachyon-ledger-tool -l config/bootstrap-validator shred-version --max-genesis-archive-unpacked-size 1073741824 | tee config/shred-version if [[ -n "$maybeWaitForSupermajority" ]]; then - bankHash=$(agave-ledger-tool -l config/bootstrap-validator verify --halt-at-slot 0 --print-bank-hash --output json | jq -r ".hash") + bankHash=$(tachyon-ledger-tool -l config/bootstrap-validator verify --halt-at-slot 0 --print-bank-hash --output json | jq -r ".hash") shredVersion="$(cat "$SOLANA_CONFIG_DIR"/shred-version)" extraNodeArgs="$extraNodeArgs --expected-bank-hash $bankHash --expected-shred-version $shredVersion" echo "$bankHash" > config/bank-hash diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 98dacaa6e3c6e9..fb4f159f0af793 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -73,71 +73,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "agave-validator" -version = "2.0.24" -dependencies = [ - "agave-geyser-plugin-interface", - "chrono", - "clap 2.33.3", - "console", - "core_affinity", - "crossbeam-channel", - "fd-lock", - "indicatif", - "itertools 0.12.1", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-ipc-server", - "lazy_static", - "libc", - "libloading 0.7.4", - "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-program-runtime", - "solana-rayon-threadlimit", - "solana-rpc", - "solana-rpc-client", - "solana-rpc-client-api", - "solana-runtime", - "solana-sdk", - "solana-send-transaction-service", - "solana-storage-bigtable", - "solana-streamer", - "solana-test-validator", - "solana-tpu-client", - "solana-unified-scheduler-pool", - "solana-version", - "solana-vote-program", - "symlink", - "thiserror", - "tikv-jemallocator", - "tokio", -] - [[package]] name = "ahash" version = "0.7.8" @@ -3166,9 +3101,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ "bitflags 2.5.0", "cfg-if 1.0.0", @@ -3207,9 +3142,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", @@ -5645,7 +5580,6 @@ dependencies = [ name = "solana-sbf-programs" version = "2.0.24" dependencies = [ - "agave-validator", "bincode", "byteorder 1.5.0", "elf", @@ -5672,6 +5606,7 @@ dependencies = [ "solana-transaction-status", "solana-type-overrides", "solana_rbpf", + "tachyon-validator", ] [[package]] @@ -7040,6 +6975,71 @@ dependencies = [ "libc", ] +[[package]] +name = "tachyon-validator" +version = "2.0.24" +dependencies = [ + "agave-geyser-plugin-interface", + "chrono", + "clap 2.33.3", + "console", + "core_affinity", + "crossbeam-channel", + "fd-lock", + "indicatif", + "itertools 0.12.1", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-ipc-server", + "lazy_static", + "libc", + "libloading 0.7.4", + "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-program-runtime", + "solana-rayon-threadlimit", + "solana-rpc", + "solana-rpc-client", + "solana-rpc-client-api", + "solana-runtime", + "solana-sdk", + "solana-send-transaction-service", + "solana-storage-bigtable", + "solana-streamer", + "solana-test-validator", + "solana-tpu-client", + "solana-unified-scheduler-pool", + "solana-version", + "solana-vote-program", + "symlink", + "thiserror", + "tikv-jemallocator", + "tokio", +] + [[package]] name = "tar" version = "0.4.41" diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 509ddf0f38d1a0..e3e6074a93110f 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -1,9 +1,9 @@ [workspace.package] version = "2.0.24" description = "Solana SBF test program written in Rust" -authors = ["Anza Maintainers "] -repository = "https://github.com/anza-xyz/agave" -homepage = "https://anza.xyz" +authors = ["X1 Labs maintainers "] +repository = "https://github.com/x1-labs/tachyon" +homepage = "https://x1.xyz" license = "Apache-2.0" edition = "2021" @@ -51,7 +51,7 @@ solana-sdk = { path = "../../sdk", version = "=2.0.24" } solana-svm = { path = "../../svm", version = "=2.0.24" } solana-transaction-status = { path = "../../transaction-status", version = "=2.0.24" } solana-type-overrides = { path = "../../type-overrides", version = "=2.0.24" } -agave-validator = { path = "../../validator", version = "=2.0.24" } +tachyon-validator = { path = "../../validator", version = "=2.0.24" } solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.0.24" } solana_rbpf = "=0.8.4" thiserror = "1.0" @@ -80,7 +80,6 @@ sbf_rust = [] dummy-for-ci-check = ["sbf_c", "sbf_rust"] [dev-dependencies] -agave-validator = { workspace = true } bincode = { workspace = true } byteorder = { workspace = true } elf = { workspace = true } @@ -107,6 +106,7 @@ solana-svm = { workspace = true } solana-transaction-status = { workspace = true } solana-type-overrides = { workspace = true } solana_rbpf = { workspace = true } +tachyon-validator = { workspace = true } [[bench]] name = "bpf_loader" diff --git a/programs/sbf/tests/simulation.rs b/programs/sbf/tests/simulation.rs index 6b799c05690c0b..6acfaa5003a99d 100644 --- a/programs/sbf/tests/simulation.rs +++ b/programs/sbf/tests/simulation.rs @@ -1,5 +1,4 @@ use { - agave_validator::test_validator::*, solana_runtime::{ bank::Bank, bank_client::BankClient, @@ -14,6 +13,7 @@ use { sysvar::{clock, slot_history}, transaction::{SanitizedTransaction, Transaction}, }, + tachyon_validator::test_validator::*, }; #[test] diff --git a/pubsub-client/src/nonblocking/pubsub_client.rs b/pubsub-client/src/nonblocking/pubsub_client.rs index 44663b3372cb2c..97a935deab5406 100644 --- a/pubsub-client/src/nonblocking/pubsub_client.rs +++ b/pubsub-client/src/nonblocking/pubsub_client.rs @@ -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 `agave-validator`. When these +//! `--rpc-pubsub-enable-vote-subscription` to `tachyon-validator`. When these //! methods are disabled, the RPC server will return a "Method not found" error //! message. //! @@ -347,7 +347,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 `agave-validator`. + /// `--rpc-pubsub-enable-block-subscription` to `tachyon-validator`. /// /// # RPC Reference /// @@ -404,7 +404,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 `agave-validator`. + /// `--rpc-pubsub-enable-vote-subscription` to `tachyon-validator`. /// /// # RPC Reference /// diff --git a/pubsub-client/src/pubsub_client.rs b/pubsub-client/src/pubsub_client.rs index 5247bdb8b9e263..ff7ace0233f30d 100644 --- a/pubsub-client/src/pubsub_client.rs +++ b/pubsub-client/src/pubsub_client.rs @@ -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 `agave-validator`. When these +//! `--rpc-pubsub-enable-vote-subscription` to `tachyon-validator`. When these //! methods are disabled, the RPC server will return a "Method not found" error //! message. //! @@ -386,7 +386,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 `agave-validator`. + /// `--rpc-pubsub-enable-block-subscription` to `tachyon-validator`. /// /// # RPC Reference /// @@ -538,7 +538,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 `agave-validator`. + /// `--rpc-pubsub-enable-vote-subscription` to `tachyon-validator`. /// /// # RPC Reference /// diff --git a/rbpf-cli/src/main.rs b/rbpf-cli/src/main.rs index 9e243f0836aa0f..a2e6a7627f5cd0 100644 --- a/rbpf-cli/src/main.rs +++ b/rbpf-cli/src/main.rs @@ -1,6 +1,6 @@ fn main() { println!( - r##"rbpf-cli is replaced by agave-ledger-tool program run subcommand. -Please, use 'agave-ledger-tool program run --help' for more information."## + r##"rbpf-cli is replaced by tachyon-ledger-tool program run subcommand. +Please, use 'tachyon-ledger-tool program run --help' for more information."## ); } diff --git a/rpc/src/rpc.rs b/rpc/src/rpc.rs index 798995f697c9ea..67781056445476 100644 --- a/rpc/src/rpc.rs +++ b/rpc/src/rpc.rs @@ -2591,7 +2591,7 @@ pub mod rpc_minimal { #[rpc(meta, name = "getVersion")] fn get_version(&self, meta: Self::Metadata) -> Result; - // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so + // TODO: Refactor `tachyon-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( @@ -2600,7 +2600,7 @@ pub mod rpc_minimal { config: Option, ) -> Result; - // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so + // TODO: Refactor `tachyon-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( @@ -2726,7 +2726,7 @@ pub mod rpc_minimal { }) } - // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so + // TODO: Refactor `tachyon-validator wait-for-restart-window` to not require this method, so // it can be removed from rpc_minimal fn get_vote_accounts( &self, @@ -2737,7 +2737,7 @@ pub mod rpc_minimal { meta.get_vote_accounts(config) } - // TODO: Refactor `agave-validator wait-for-restart-window` to not require this method, so + // TODO: Refactor `tachyon-validator wait-for-restart-window` to not require this method, so // it can be removed from rpc_minimal fn get_leader_schedule( &self, diff --git a/scripts/agave-install-deploy.sh b/scripts/agave-install-deploy.sh index dcdec14ffb635d..c928e927edc9f9 100755 --- a/scripts/agave-install-deploy.sh +++ b/scripts/agave-install-deploy.sh @@ -57,10 +57,10 @@ esac case $TAG in edge|beta) - DOWNLOAD_URL=https://release.anza.xyz/"$TAG"/solana-release-$TARGET.tar.bz2 + DOWNLOAD_URL=https://release.x1.xyz/"$TAG"/solana-release-$TARGET.tar.bz2 ;; *) - DOWNLOAD_URL=https://github.com/anza-xyz/agave/releases/download/"$TAG"/solana-release-$TARGET.tar.bz2 + DOWNLOAD_URL=https://github.com/x1-labs/tachyon/releases/download/"$TAG"/solana-release-$TARGET.tar.bz2 ;; esac diff --git a/scripts/cargo-install-all.sh b/scripts/cargo-install-all.sh index fd70b70f8035ec..04839bd55f6473 100755 --- a/scripts/cargo-install-all.sh +++ b/scripts/cargo-install-all.sh @@ -108,10 +108,10 @@ else solana-gossip agave-install solana-keygen - agave-ledger-tool + tachyon-ledger-tool solana-log-analyzer solana-net-shaper - agave-validator + tachyon-validator rbpf-cli ) diff --git a/scripts/check-dev-context-only-utils.sh b/scripts/check-dev-context-only-utils.sh index 65382d20663e46..ddc9977277db95 100755 --- a/scripts/check-dev-context-only-utils.sh +++ b/scripts/check-dev-context-only-utils.sh @@ -31,7 +31,7 @@ source ci/rust-version.sh nightly declare tainted_packages=( solana-accounts-bench solana-banking-bench - agave-ledger-tool + tachyon-ledger-tool solana-bench-tps agave-store-tool agave-accounts-hash-cache-tool diff --git a/scripts/reserve-cratesio-package-name.sh b/scripts/reserve-cratesio-package-name.sh index e172e1640094d0..2170be74908fe8 100755 --- a/scripts/reserve-cratesio-package-name.sh +++ b/scripts/reserve-cratesio-package-name.sh @@ -103,10 +103,10 @@ if pushd "${tmpdir}" &>/dev/null; then name = "${package_name}" version = "0.0.0" description = "reserved for future use" -authors = ["Anza Maintainers "] -repository = "https://github.com/anza-xyz/agave" +authors = ["X1 Labs maintainers "] +repository = "https://github.com/x1-labs/tachyon" license = "Apache-2.0" -homepage = "https://anza.xyz" +homepage = "https://x1.xyz" documentation = "https://docs.rs/${package_name}" edition = "2021" EOF diff --git a/scripts/run.sh b/scripts/run.sh index 70994c921f47ac..3b68fa305e8b2f 100755 --- a/scripts/run.sh +++ b/scripts/run.sh @@ -26,7 +26,7 @@ ok=true for program in solana-{faucet,genesis,keygen}; do $program -V || ok=false done -agave-validator -V || ok=false +tachyon-validator -V || ok=false $ok || { echo @@ -117,7 +117,7 @@ args=( --no-os-network-limits-test ) # shellcheck disable=SC2086 -agave-validator "${args[@]}" $SOLANA_RUN_SH_VALIDATOR_ARGS & +tachyon-validator "${args[@]}" $SOLANA_RUN_SH_VALIDATOR_ARGS & validator=$! wait "$validator" diff --git a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml index 4bc42fbb1e8211..b5e718d954e375 100644 --- a/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/fail/Cargo.toml @@ -2,10 +2,10 @@ name = "fail" version = "2.0.24" description = "Solana SBF test program written in Rust" -authors = ["Anza Maintainers "] -repository = "https://github.com/anza-xyz/agave" +authors = ["X1 Labs maintainers "] +repository = "https://github.com/x1-labs/tachyon" license = "Apache-2.0" -homepage = "https://anza.xyz" +homepage = "https://x1.xyz" edition = "2021" publish = false diff --git a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml index 1a050989749605..4547846139a9fe 100644 --- a/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml +++ b/sdk/cargo-build-sbf/tests/crates/noop/Cargo.toml @@ -2,10 +2,10 @@ name = "noop" version = "2.0.24" description = "Solana SBF test program written in Rust" -authors = ["Anza Maintainers "] -repository = "https://github.com/anza-xyz/agave" +authors = ["X1 Labs maintainers "] +repository = "https://github.com/x1-labs/tachyon" license = "Apache-2.0" -homepage = "https://anza.xyz" +homepage = "https://x1.xyz" edition = "2021" publish = false diff --git a/sdk/src/feature_set.rs b/sdk/src/feature_set.rs index ac5dbe6765f41e..36ed0d1a2f0c50 100644 --- a/sdk/src/feature_set.rs +++ b/sdk/src/feature_set.rs @@ -39,7 +39,7 @@ pub mod pico_inflation { pub mod full_inflation { pub mod devnet_and_testnet { - solana_sdk::declare_id!("DT4n6ABDqs6w4bnfwrXT9rsprcPf6cdDga1egctaPkLC"); + solana_sdk::declare_id!("3qTfebr3GDnsBwiifmVsU6uPqfinCzwYqgCtN3FFjgJd"); } pub mod mainnet { @@ -95,7 +95,7 @@ pub mod system_transfer_zero_check { } pub mod blake3_syscall_enabled { - solana_sdk::declare_id!("HTW2pSyErTj4BV6KBM9NZ9VBUJVxt7sacNWcf76wtzb3"); + solana_sdk::declare_id!("5VAACbCZispumFXMb9frTAFJwzLcFC39pKcWrpDdpu99"); } pub mod dedupe_config_program_signers { @@ -139,7 +139,7 @@ pub mod stake_merge_with_unmatched_credits_observed { } pub mod zk_token_sdk_enabled { - solana_sdk::declare_id!("zk1snxsc6Fh3wsGNbbHAJNHiJoYgF29mMnTSusGx5EJ"); + solana_sdk::declare_id!("43XuaFmpSgY6mejuttRGhXc8FsuUQxFZdBMG95bhv17M"); } pub mod curve25519_syscall_enabled { @@ -155,7 +155,7 @@ pub mod versioned_tx_message_enabled { } pub mod libsecp256k1_fail_on_bad_count { - solana_sdk::declare_id!("8aXvSuopd1PUj7UhehfXJRg6619RHp8ZvwTyyJHdUYsj"); + solana_sdk::declare_id!("6ugpUDwk4mm3oyhJPgzEerwNyeGqXT2c28xt1jpTD9JH"); } pub mod libsecp256k1_fail_on_bad_count2 { @@ -195,7 +195,7 @@ pub mod sol_log_data_syscall_enabled { } pub mod stakes_remove_delegation_if_inactive { - solana_sdk::declare_id!("HFpdDDNQjvcXnXKec697HDDsyk6tFoWS2o8fkxuhQZpL"); + solana_sdk::declare_id!("DPxADooexTiz7mJYdTjrXqB6qdVh6iFy7V1ZRUoptAte"); } pub mod do_support_realloc { @@ -283,7 +283,7 @@ pub mod stake_deactivate_delinquent_instruction { } pub mod stake_redelegate_instruction { - solana_sdk::declare_id!("2KKG3C6RBnxQo9jVVrbzsoSh41TDXLK7gBc9gduyxSzW"); + solana_sdk::declare_id!("9LvAA5zHnJJbitZkkibMVcRmC8pDHcACKFKNdTR2oKCW"); } pub mod vote_withdraw_authority_may_change_authorized_voter { @@ -370,11 +370,11 @@ pub mod update_rewards_from_cached_accounts { solana_sdk::declare_id!("28s7i3htzhahXQKqmS2ExzbEoUypg9krwvtK2M9UWXh9"); } pub mod enable_partitioned_epoch_reward { - solana_sdk::declare_id!("9bn2vTJUsUcnpiZWbu2woSKtTGW3ErZC9ERv88SDqQjK"); + solana_sdk::declare_id!("GpiwqcgFnNCrQtifhooVNnMDttuCbNcwDPTzPjmrDEmF"); } pub mod partitioned_epoch_rewards_superfeature { - solana_sdk::declare_id!("PERzQrt5gBD1XEe2c9XdFWqwgHY3mr7cYWbm5V772V8"); + solana_sdk::declare_id!("6RV2Lg6pWaRoXXfmJuA13VYYs62Vh6aEm85TrAJha36i"); } pub mod spl_token_v3_4_0 { @@ -399,11 +399,11 @@ pub mod require_static_program_ids_in_transaction { pub mod stake_raise_minimum_delegation_to_1_sol { // This is a feature-proposal *feature id*. The feature keypair address is `GQXzC7YiSNkje6FFUk6sc2p53XRvKoaZ9VMktYzUMnpL`. - solana_sdk::declare_id!("9onWzzvCzNC2jfhxxeqRgs5q7nFAAKpCUvkj6T6GJK9i"); + solana_sdk::declare_id!("C1xe15McRHEXgrPgwvXwFRjexp5Z6eCw5y4P91PddTa7"); } pub mod stake_minimum_delegation_for_rewards { - solana_sdk::declare_id!("G6ANXD6ptCSyNd9znZm7j4dEczAJCfx7Cy43oBx3rKHJ"); + solana_sdk::declare_id!("Ee1LkFn6TgUXQ7Qem6D2peS8BFa2t8sHauuTi6LbjPk8"); } pub mod add_set_compute_unit_price_ix { @@ -479,7 +479,7 @@ pub mod cap_bpf_program_instruction_accounts { } pub mod loosen_cpi_size_restriction { - solana_sdk::declare_id!("GDH5TVdbTPUpRnXaRyQqiKUa7uZAbZ28Q2N9bhbKoMLm"); + solana_sdk::declare_id!("E58Zgc3dt388eJHxCbsUn5fqt1gxxJHwfxbMiVxgZZzo"); } pub mod use_default_units_in_fee_calculation { @@ -539,7 +539,7 @@ pub mod disable_rehash_for_rent_epoch { } pub mod increase_tx_account_lock_limit { - solana_sdk::declare_id!("9LZdXeKGeBV6hRLdxS1rHbHoEUsKqesCC2ZAPTPKJAbK"); + solana_sdk::declare_id!("A3Waa59UgY6mW9pVhtQmv8o5k1jqTwC8rB4ARL5BaZXD"); } pub mod limit_max_instruction_trace_length { @@ -579,7 +579,7 @@ pub mod enable_turbine_fanout_experiments { } pub mod disable_turbine_fanout_experiments { - solana_sdk::declare_id!("Gz1aLrbeQ4Q6PTSafCZcGWZXz91yVRi7ASFzFEr1U4sa"); + solana_sdk::declare_id!("Gs72Tfm4r2AHCTx5jZyYH1fb9W9uEskQFotUxkZgKbF"); } pub mod move_serialized_len_ptr_in_cpi { @@ -591,7 +591,7 @@ pub mod update_hashes_per_tick { } pub mod enable_big_mod_exp_syscall { - solana_sdk::declare_id!("EBq48m8irRKuE7ZnMTLvLg2UuGSqhe8s8oMqnmja1fJw"); + solana_sdk::declare_id!("AfhVLYsJaGJmkhoex1xJa3Me8hX8QUvoXBfecTqnc7rr"); } pub mod disable_builtin_loader_ownership_chains { @@ -619,10 +619,10 @@ pub mod delay_visibility_of_program_deployment { } pub mod apply_cost_tracker_during_replay { - solana_sdk::declare_id!("2ry7ygxiYURULZCrypHhveanvP5tzZ4toRwVp89oCNSj"); + solana_sdk::declare_id!("ASCW2GdNG2NL6yY6FxzA8qwMXck4F6sH27pbuWDVaF5R"); } pub mod bpf_account_data_direct_mapping { - solana_sdk::declare_id!("EenyoWx9UMXYKpR8mW5Jmfmy2fRjzUtM7NduYMY8bx33"); + solana_sdk::declare_id!("AofbNyvMA4Cm82gkTAntx5crAH1guxykoaie9U8uN1sh"); } pub mod add_set_tx_loaded_accounts_data_size_instruction { @@ -642,7 +642,7 @@ pub mod remove_bpf_loader_incorrect_program_id { } pub mod include_loaded_accounts_data_size_in_fee_calculation { - solana_sdk::declare_id!("EaQpmC6GtRssaZ3PCUM5YksGqUdMLeZ46BQXYtHYakDS"); + solana_sdk::declare_id!("B13W9CVw5Y8aJz8hVeufEvkDnhsEN7vj3N4Hxutmec19"); } pub mod native_programs_consume_cu { @@ -686,15 +686,15 @@ pub mod enable_poseidon_syscall { } pub mod timely_vote_credits { - solana_sdk::declare_id!("tvcF6b1TRz353zKuhBjinZkKzjmihXmBAHJdjNYw1sQ"); + solana_sdk::declare_id!("9KJNDPGuTnfn5s1GouSTacWLhPykiwWSKu4rM6VbRWJi"); } pub mod remaining_compute_units_syscall_enabled { - solana_sdk::declare_id!("5TuppMutoyzhUSfuYdhgzD47F92GL1g89KpCZQKqedxP"); + solana_sdk::declare_id!("2nYzqcvNZL3ZSs1Pi1n6KV2J7FAsxkd8B3xxWX7Ef8Br"); } pub mod enable_program_runtime_v2_and_loader_v4 { - solana_sdk::declare_id!("8oBxsYqnCvUTGzgEpxPcnVf7MLbWWPYddE33PftFeBBd"); + solana_sdk::declare_id!("HtcKzpZN5XNGVYhm8p8J9cAtq9kGMzQpXRTFV2tE3mYm"); } pub mod require_rent_exempt_split_destination { @@ -730,11 +730,11 @@ pub mod validate_fee_collector_account { } pub mod disable_rent_fees_collection { - solana_sdk::declare_id!("CJzY83ggJHqPGDq8VisV3U91jDJLuEaALZooBrXtnnLU"); + solana_sdk::declare_id!("7AGXomaRfTPdvQf2u8UcuYA2FvtjkHuA89JmwUEaDmkR"); } pub mod enable_zk_transfer_with_fee { - solana_sdk::declare_id!("zkNLP7EQALfC1TYeB3biDU7akDckj8iPkvh9y2Mt2K3"); + solana_sdk::declare_id!("CHmwMhpP6xzvDYmNhw4gnqRqXVh85WwP9BCDPCyVWPTE"); } pub mod drop_legacy_shreds { @@ -742,11 +742,11 @@ pub mod drop_legacy_shreds { } pub mod allow_commission_decrease_at_any_time { - solana_sdk::declare_id!("decoMktMcnmiq6t3u7g5BfgcQu91nKZr6RvMYf9z1Jb"); + solana_sdk::declare_id!("4UfcHnpkGmXywhfc64GpcdMX9vvKqWRbCkhm5xa3s1kh"); } pub mod add_new_reserved_account_keys { - solana_sdk::declare_id!("8U4skmMVnF6k2kMvrWbQuRUT3qQSiTYpSjqmhmgfthZu"); + solana_sdk::declare_id!("BXX4YtTzSytrSVtQS9Z4QkzqigBbvCiCi2qxcrrNqigC"); } pub mod consume_blockstore_duplicate_proofs { @@ -766,11 +766,11 @@ pub mod disable_bpf_loader_instructions { } pub mod enable_zk_proof_from_account { - solana_sdk::declare_id!("zkiTNuzBKxrCLMKehzuQeKZyLtX2yvFcEKMML8nExU8"); + solana_sdk::declare_id!("3N5XWwvVqYQoaaHe1GNjjKUkw7GJNp7vGbSQmeGNxAPk"); } pub mod cost_model_requested_write_lock_cost { - solana_sdk::declare_id!("wLckV1a64ngtcKPRGU4S4grVTestXjmNjxBjaKZrAcn"); + solana_sdk::declare_id!("DntdotNCp9vpUHuLnfaxmByBgXYTQqYnXLiUs72dWFTR"); } pub mod enable_gossip_duplicate_proof_ingestion { @@ -778,19 +778,19 @@ pub mod enable_gossip_duplicate_proof_ingestion { } pub mod chained_merkle_conflict_duplicate_proofs { - solana_sdk::declare_id!("chaie9S2zVfuxJKNRGkyTDokLwWxx6kD2ZLsqQHaDD8"); + solana_sdk::declare_id!("2CbuwkZK29P7xG3d2gSnAeXSQjXAqgGZYDTxAab1VWxc"); } pub mod enable_chained_merkle_shreds { - solana_sdk::declare_id!("7uZBkJXJ1HkuP6R3MJfZs7mLwymBcDbKdqbF51ZWLier"); + solana_sdk::declare_id!("8jZbyCfqexBiQAbAZGbzaJpMsjtquyBJfh9bs88m847b"); } pub mod remove_rounding_in_fee_calculation { - solana_sdk::declare_id!("BtVN7YjDzNE6Dk7kTT7YTDgMNUZTNgiSJgsdzAeTg2jF"); + solana_sdk::declare_id!("CqdEoqodBTXnMyiu7FsBb9E9RWNWgDoFjHeLGb9V647i"); } pub mod enable_tower_sync_ix { - solana_sdk::declare_id!("tSynMCspg4xFiCj1v3TDb4c7crMR5tSBhLz4sF7rrNA"); + solana_sdk::declare_id!("HUEndw3RHoHH4S53PbsRuxMGenyB1V2Wn9xA3tWqKjBK"); } pub mod deprecate_unused_legacy_vote_plumbing { @@ -798,67 +798,67 @@ pub mod deprecate_unused_legacy_vote_plumbing { } pub mod reward_full_priority_fee { - solana_sdk::declare_id!("3opE3EzAKnUftUDURkzMgwpNgimBAypW1mNDYH4x4Zg7"); + solana_sdk::declare_id!("2XpLmpsc1hzebVpeLXRdeFV3dwSgDju19kPns7JMzU61"); } pub mod get_sysvar_syscall_enabled { - solana_sdk::declare_id!("CLCoTADvV64PSrnR6QXty6Fwrt9Xc6EdxSJE4wLRePjq"); + solana_sdk::declare_id!("FEgZJQb5dVHjrz54XTtT3qdjz7S75jJQcZ6LHHCmFhFi"); } pub mod abort_on_invalid_curve { - solana_sdk::declare_id!("FuS3FPfJDKSNot99ECLXtp3rueq36hMNStJkPJwWodLh"); + solana_sdk::declare_id!("6YnJWqMgY6VD9PL4uw5QsweoSDuTYmoHLsSHuFn7t7TH"); } pub mod migrate_feature_gate_program_to_core_bpf { - solana_sdk::declare_id!("4eohviozzEeivk1y9UbrnekbAFMDQyJz5JjA9Y6gyvky"); + solana_sdk::declare_id!("3hp1YAnRUPSi6af3hgPHUWquuQuDGFewacZyPT1z8B2U"); } pub mod vote_only_full_fec_sets { - solana_sdk::declare_id!("ffecLRhhakKSGhMuc6Fz2Lnfq4uT9q3iu9ZsNaPLxPc"); + solana_sdk::declare_id!("tVBwmaFrFsLU6TVMbUSxsbRGkbspH7EeBPqkpAL2iy9"); } pub mod migrate_config_program_to_core_bpf { - solana_sdk::declare_id!("2Fr57nzzkLYXW695UdDxDeR5fhnZWSttZeZYemrnpGFV"); + solana_sdk::declare_id!("HJQ15RuGc2jpdDhLGWQp3dJ4Tn4bKLAW1UdX3g38dfZe"); } pub mod enable_get_epoch_stake_syscall { - solana_sdk::declare_id!("7mScTYkJXsbdrcwTQRs7oeCSXoJm4WjzBsRyf8bCU3Np"); + solana_sdk::declare_id!("BfHftpufmhttQSbmaH98ArbsWwJoqY67MhH84yBALXdL"); } pub mod migrate_address_lookup_table_program_to_core_bpf { - solana_sdk::declare_id!("C97eKZygrkU4JxJsZdjgbUY7iQR7rKTr4NyDWo2E5pRm"); + solana_sdk::declare_id!("8fqszxYA2HscUsVHtGGrb1Kx6KxRbLbT3oo76BZ97kay"); } pub mod zk_elgamal_proof_program_enabled { - solana_sdk::declare_id!("zkhiy5oLowR7HY4zogXjCjeMXyruLqBwSWH21qcFtnv"); + solana_sdk::declare_id!("GQoUMg4TcmEcMP5GEpPZ6KAj5ZNJamCNi8S3XrdgNSSs"); } pub mod move_stake_and_move_lamports_ixs { - solana_sdk::declare_id!("7bTK6Jis8Xpfrs8ZoUfiMDPazTcdPcTWheZFJTA5Z6X4"); + solana_sdk::declare_id!("FEyzUKsMzdQfZVFqkZsQPrKoa4Czry6UMLJNxBvnU2aN"); } pub mod ed25519_precompile_verify_strict { - solana_sdk::declare_id!("ed9tNscbWLYBooxWA7FE2B5KHWs8A6sxfY8EzezEcoo"); + solana_sdk::declare_id!("548TrfeYwJMbmWq6QnUQEzsc3TvRQjQFBwyW9kSW2PjT"); } pub mod verify_retransmitter_signature { - solana_sdk::declare_id!("BZ5g4hRbu5hLQQBdPyo2z9icGyJ8Khiyj3QS6dhWijTb"); + solana_sdk::declare_id!("5YR5DAcXTLuEaRXKij5xgqKrNYg9v7BMNKZJX7icZYPQ"); } pub mod vote_only_retransmitter_signed_fec_sets { - solana_sdk::declare_id!("RfEcA95xnhuwooVAhUUksEJLZBF7xKCLuqrJoqk4Zph"); + solana_sdk::declare_id!("EtBvWkoRp8PeYXLEzaJ1FTHhRtUhydeAgesvD6HFktL6"); } pub mod enable_turbine_extended_fanout_experiments { - solana_sdk::declare_id!("BZn14Liea52wtBwrXUxTv6vojuTTmfc7XGEDTXrvMD7b"); + solana_sdk::declare_id!("DaDfuqRRqwYpeX1NfAGp84ExR6nUbDiRq8PTyC2h3891"); } pub mod deprecate_legacy_vote_ixs { - solana_program::declare_id!("mustrekeyysGrhwdiwU42tCadZL8GcBb1i2GYhMopQv"); + solana_program::declare_id!("29Zvc7JoHZeCMHMCHmNXde496UhgohU3gnFTxy6DMoQ2"); } pub mod disable_account_loader_special_case { - solana_program::declare_id!("EQUMpNFr7Nacb1sva56xn1aLfBxppEoSBH8RRVdkcD1x"); + solana_program::declare_id!("7QkayNydJtEKXghHvc4EqedXWsadK3crvFs732jruVXM"); } lazy_static! { diff --git a/system-test/abi-testcases/mixed-validator-test.sh b/system-test/abi-testcases/mixed-validator-test.sh index c0400560dc519e..52c598300e8339 100755 --- a/system-test/abi-testcases/mixed-validator-test.sh +++ b/system-test/abi-testcases/mixed-validator-test.sh @@ -113,7 +113,7 @@ for v in "${otherVersions[@]}"; do ( set -x tmux new-window -t abi -n "$v" " \ - $SOLANA_BIN/agave-validator \ + $SOLANA_BIN/tachyon-validator \ --ledger $ledger \ --no-snapshot-fetch \ --entrypoint 127.0.0.1:8001 \ diff --git a/turbine/src/broadcast_stage/standard_broadcast_run.rs b/turbine/src/broadcast_stage/standard_broadcast_run.rs index 92187fa26ecd74..f3050ca90b2c15 100644 --- a/turbine/src/broadcast_stage/standard_broadcast_run.rs +++ b/turbine/src/broadcast_stage/standard_broadcast_run.rs @@ -506,13 +506,12 @@ impl BroadcastRun for StandardBroadcastRun { } } -fn should_chain_merkle_shreds(slot: Slot, cluster_type: ClusterType) -> bool { +fn should_chain_merkle_shreds(_slot: Slot, cluster_type: ClusterType) -> bool { match cluster_type { ClusterType::Development => true, ClusterType::Devnet => true, - // Roll out chained Merkle shreds to ~21% of mainnet slots. - ClusterType::MainnetBeta => slot % 19 < 4, - ClusterType::Testnet => true, + ClusterType::MainnetBeta => false, + ClusterType::Testnet => false, } } diff --git a/validator/Cargo.toml b/validator/Cargo.toml index 6222435906a31d..559f54bc6f7ae6 100644 --- a/validator/Cargo.toml +++ b/validator/Cargo.toml @@ -1,8 +1,8 @@ [package] -name = "agave-validator" +name = "tachyon-validator" description = "Blockchain, Rebuilt for Scale" -documentation = "https://docs.rs/agave-validator" -default-run = "agave-validator" +documentation = "https://docs.rs/tachyon-validator" +default-run = "tachyon-validator" version = { workspace = true } authors = { workspace = true } repository = { workspace = true } diff --git a/validator/src/bin/solana-test-validator.rs b/validator/src/bin/solana-test-validator.rs index 7f7865d8ac18e8..1393306a6b789c 100644 --- a/validator/src/bin/solana-test-validator.rs +++ b/validator/src/bin/solana-test-validator.rs @@ -1,8 +1,4 @@ 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, @@ -40,6 +36,10 @@ use { sync::{Arc, RwLock}, time::{Duration, SystemTime, UNIX_EPOCH}, }, + tachyon_validator::{ + admin_rpc_service, cli, dashboard::Dashboard, ledger_lockfile, lock_ledger, + println_name_value, redirect_stderr_to_file, + }, }; #[derive(PartialEq, Eq)] diff --git a/validator/src/bootstrap.rs b/validator/src/bootstrap.rs index 63084741f03a3e..f47547aae7bb7b 100644 --- a/validator/src/bootstrap.rs +++ b/validator/src/bootstrap.rs @@ -446,7 +446,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 `agave-validator` command-line arguments) rather than the + // incorrect `tachyon-validator` command-line arguments) rather than the // RPC node failing. // // Power users can always use the `--no-check-vote-account` option to diff --git a/validator/src/main.rs b/validator/src/main.rs index 8467bcaa9d2570..df19c1c10bb7ad 100644 --- a/validator/src/main.rs +++ b/validator/src/main.rs @@ -2,15 +2,6 @@ #[cfg(not(target_env = "msvc"))] use jemallocator::Jemalloc; use { - agave_validator::{ - admin_rpc_service, - admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides}, - bootstrap, - cli::{self, 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, @@ -85,6 +76,15 @@ use { sync::{Arc, RwLock}, time::{Duration, SystemTime}, }, + tachyon_validator::{ + admin_rpc_service, + admin_rpc_service::{load_staked_nodes_overrides, StakedNodesOverrides}, + bootstrap, + cli::{self, app, warn_for_deprecated_arguments, DefaultArgs}, + dashboard::Dashboard, + ledger_lockfile, lock_ledger, new_spinner_progress_bar, println_name_value, + redirect_stderr_to_file, + }, }; #[cfg(not(target_env = "msvc"))] @@ -921,7 +921,7 @@ pub fn main() { let logfile = matches .value_of("logfile") .map(|s| s.into()) - .unwrap_or_else(|| format!("agave-validator-{}.log", identity_keypair.pubkey())); + .unwrap_or_else(|| format!("tachyon-validator-{}.log", identity_keypair.pubkey())); if logfile == "-" { None diff --git a/version/src/lib.rs b/version/src/lib.rs index f570188f1d12b0..cac6c2a2ad2314 100644 --- a/version/src/lib.rs +++ b/version/src/lib.rs @@ -19,6 +19,7 @@ enum ClientId { JitoLabs, Firedancer, Agave, + Tachyon, // If new variants are added, update From and TryFrom. Unknown(u16), } @@ -79,7 +80,7 @@ impl Default for Version { commit: compute_commit(option_env!("CI_COMMIT")).unwrap_or_default(), feature_set, // Other client implementations need to modify this line. - client: u16::try_from(ClientId::Agave).unwrap(), + client: u16::try_from(ClientId::Tachyon).unwrap(), } } } @@ -114,6 +115,7 @@ impl From for ClientId { 1u16 => Self::JitoLabs, 2u16 => Self::Firedancer, 3u16 => Self::Agave, + 4u16 => Self::Tachyon, _ => Self::Unknown(client), } } @@ -128,7 +130,8 @@ impl TryFrom for u16 { ClientId::JitoLabs => Ok(1u16), ClientId::Firedancer => Ok(2u16), ClientId::Agave => Ok(3u16), - ClientId::Unknown(client @ 0u16..=3u16) => Err(format!("Invalid client: {client}")), + ClientId::Tachyon => Ok(4u16), + ClientId::Unknown(client @ 0u16..=4u16) => Err(format!("Invalid client: {client}")), ClientId::Unknown(client) => Ok(client), } } @@ -166,20 +169,22 @@ mod test { assert_eq!(ClientId::from(1u16), ClientId::JitoLabs); assert_eq!(ClientId::from(2u16), ClientId::Firedancer); assert_eq!(ClientId::from(3u16), ClientId::Agave); - for client in 4u16..=u16::MAX { + assert_eq!(ClientId::from(4u16), ClientId::Tachyon); + for client in 5u16..=u16::MAX { assert_eq!(ClientId::from(client), ClientId::Unknown(client)); } assert_eq!(u16::try_from(ClientId::SolanaLabs), Ok(0u16)); assert_eq!(u16::try_from(ClientId::JitoLabs), Ok(1u16)); assert_eq!(u16::try_from(ClientId::Firedancer), Ok(2u16)); assert_eq!(u16::try_from(ClientId::Agave), Ok(3u16)); - for client in 0..=3u16 { + assert_eq!(u16::try_from(ClientId::Tachyon), Ok(4u16)); + for client in 0..=4u16 { assert_eq!( u16::try_from(ClientId::Unknown(client)), Err(format!("Invalid client: {client}")) ); } - for client in 4u16..=u16::MAX { + for client in 5u16..=u16::MAX { assert_eq!(u16::try_from(ClientId::Unknown(client)), Ok(client)); } }