Skip to content

2025 12 06 Testnet rollback and restart

WillHickey edited this page Dec 6, 2025 · 2 revisions

This testnet restart is NOT urgent. Follow these instructions when you have time, but don't skip sleep or disrupt other plans for this.

Summary

Attribute Value
Ledger tool version v3.1.4
Validator version Agave: v3.1.4 Frankendancer: v0.806.30102
Snapshot slot 374301608
Restart slot 374301609
Shred version 6045
Expected bank hash Bn8ULiSxvGdyedFFENjrcLU4PUUqX9NGASHHjuSMAKA1

Step 1. Stop the validator process if you haven't already

Step 2: Install the correct version of agave-ledger-tool

This is necessary to create the correct snapshot in step 3.

Build Agave v3.1.4. Build instructions are available here: https://docs.anza.xyz/cli/install#build-from-source

Confirm that agave-ledger-tool --version shows version v3.1.4

Step 3. Create snapshot

This command creates a snapshot but removes some activated feature gate accounts. Notice the --hard-fork flag is passed twice. This is necessary since the earlier restart failed.

If you created a snapshot at slot 374301609 for the previous restart move it to a backup directory before creating the new snapshot.

agave-ledger-tool --ledger <ledger-path> create-snapshot \
--fix-testnet-ed25519-precompile-account \
--incremental \
--snapshots <snapshot-path> \
--hard-fork 374301609 \
--hard-fork 374301609 \
--deactivate-feature-gate \
    ENTRYnPAoT5Swwx73YDGzMp3XnNH1kxacyvLosRHza1i \
--enable-capitalization-change \
--  374301608 <snapshot-path>

The output should include this at (or near) the end:

    Successfully created snapshot for slot 374301609, hash Bn8ULiSxvGdyedFFENjrcLU4PUUqX9NGASHHjuSMAKA1, base slot: <BASE_SLOT>: /home/sol/ledger-snapshots/incremental-snapshot-<BASE_SLOT>-374301609-<SNAPSHOT_HASH>.tar.zst
    Capitalization change: -953520 lamports
    Shred version: 6045

The capitalization change is expected because we deactivated a feature gate.

Note that each operator's snapshot file name may contain different base slot number and hash, but

  • the bank hash should be Bn8ULiSxvGdyedFFENjrcLU4PUUqX9NGASHHjuSMAKA1
  • the second slot number should be 374301609
  • the shred version should be 6045

Once you have created a snapshot, move all the other snapshots to a backup directory, so your snapshot directory contains one full snapshot and one incremental snapshot. Note that the <BASE_SLOT> in these two filenames should match.

snapshot-<BASE_SLOT>-<BASE_SNAPSHOT_HASH>.tar.zst
incremental-snapshot-<BASE_SLOT>-374301609-<SNAPSHOT_HASH>.tar.zst

If you fail to create a snapshot, see the appendix for possible fixes.

Step 4: Install Restart Version

This is the version we want to use to restart the cluster.

Agave: v3.1.4

Frankendancer: v0.806.30102

Step 5: Update startup config and start your validator

Agave

Add these arguments to your validator startup script:

--wait-for-supermajority 374301609 \
--expected-shred-version 6045 \
--expected-bank-hash Bn8ULiSxvGdyedFFENjrcLU4PUUqX9NGASHHjuSMAKA1 \

As it starts, the validator will load the snapshot for slot 374301609 and wait for 80% of the stake to come online before producing/validating new blocks.

To confirm your restarted validator is correctly waiting for 80% stake, look for this periodic log message to confirm it is waiting:

INFO  solana_core::validator] Waiting for 80% of activated stake at slot 374301609 to be in gossip...

And if you have RPC enabled, ask it for the current slot:

solana --url http://127.0.0.1:8899 slot

Any number other than 374301609 means you did not complete the steps correctly.

Once started, you should see log entries for “active stake” visible in gossip and “waiting for 80% of stake” to be visible. You can track these to see how the stake progresses.


Appendix (use this only if step 3 failed)

If you get an error like this:

Error: Slot 374301608 is not available

Or this:

Unable to process blockstore from starting slot <slot> to 374301608; the ending slot is less than the starting slot. The starting slot will be the latest snapshot slot, or genesis if the --no-snapshot flag is specified or if no snapshots are found.

Your snapshots directory contains a snapshot that is for a slot >374301608. If you also have a snapshot for slot <=374301608 then move snapshots for slots >374301608 to a backup directory and run the agave-ledger-tool command again. If you do not have a snapshot for slot <=374301608 then you will need to download a snapshot

If you successfully created a snapshot, resume the instructions above starting at Step 4. If you are unable to create a snapshot, follow the instructions below on downloading a snapshot.

If you could not produce your snapshot locally, follow these appendix steps

Step 1: Download a snapshot from a known validator

If you are unable to generate a snapshot locally for slot 374301609 you will need to download one from a known validator. Add these lines to your startup script.

--known-validator 5D1fNXzvv5NjV1ysLjirC4WY92RNsVH18vjmcszZd8on \
--expected-shred-version 6045 \

Remove the flag --no-snapshot-fetch in your startup script if it is present.

Step 2: After download, restart

Verify that you have a new snapshot in your snapshot directory. If the snapshot is done downloading, stop your validator process.

Add the flag --no-snapshot-fetch to your startup script

Resume the instructions above starting at Step 4.

Clone this wiki locally