Identity Transition
Transition identity from one voting Solana validator to another
Based on Identity Transition Demo by mvines
Hot Swap Configuration Requirements
Two non-delinquent validator nodes
Junk identities on both validators to use when not actively voting
Validator startup scripts both modified to use symbolic link as the identity
Validator startup scripts both modified to include staked identity as authorized voter
Generating Junk Identities
Both validators need to have secondary identities to assume when not actively voting. You can generate these "junk" identities on each of your validators like so:
Validator Startup Script Modifications
The identity flag and authorized voter flags should be modified on both validators.
Note that identity.json
is not a real file but a symbolic link we will create shortly - so don't worry about whether or not that file exists. However, the authorized voter flag does need to point to your staked identity file (your main identity). I renamed mine to staked-identity.json
for clarity and simplicity. You can certainly name yours whatever you'd like, just make sure they are specified as authorized voters as shown below.
Summary:
Identity is a symbolic link we will create in the next section. It may point to your staked identity or your inactive "junk" identity.
Vote account is exactly what you think it is. No changes. Just shown for context.
Authorized voter points to your main, staked identity.
Creating Identity Symlinks
An important part of how this system functions is the identity.json
symbolic link. This link allows us to soft link the desired identity so that the validator can restart or stop/start with the same identity we last intended it to have.
On your actively voting validator, link this to your staked identity
On your inactive, non-voting validator, link this to your unstaked "junk" identity
Transition Preparation Checklist
At this point on both validators you should have:
Generated unstaked "junk" identities
Updated your validator startup scripts
Created symbolic links to point to respective identities
If you have done this - great! You're ready to transition!
Transition Process
Active Validator
Wait for a restart window
Set identity to unstaked "junk" identity
Correct symbolic link to reflect this change
Copy the tower file to the inactive validator
(At this point your primary identity is no longer voting)
Inactive Validator
Set identity to your staked identity (requiring the tower)
Rewrite symbolic link to reflect this
Verification
Verify identities transitioned successfully using either monitor or solana catchup --our-localhost 8899
Last updated