Add more details about vote account key rotation

This commit is contained in:
Michael Vines 2022-01-17 00:11:59 -08:00
parent b27976626a
commit 901b2881fb
1 changed files with 25 additions and 2 deletions

View File

@ -155,6 +155,11 @@ creating an account with `--commission 10` will set a 10% commission.
Rotating the vote account authority keys require special handling when dealing
with a live validator.
Note that vote account key rotation has no effect on the stake accounts that
have been delegate to the vote account. For example it is possible to use key
rotation to transfer all authority of a vote account from one entity to another
without any impact to staking rewards.
### Vote Account Validator Identity
You will need access to the _authorized withdrawer_ keypair for the vote account to
@ -198,7 +203,7 @@ migration.
3. Determine the current _vote authority_ keypair by running `solana vote-account ~/vote-account-keypair.json`. It may be validator's
identity account (the default) or some other keypair. The following steps
assume that `~/validator-keypair.json` is that keypair.
4. Run `solana vote-authorize-voter ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json`.
4. Run `solana vote-authorize-voter-checked ~/vote-account-keypair.json ~/validator-keypair.json ~/new-vote-authority.json`.
The new vote authority is scheduled to become active starting at the next epoch.
5. `solana-validator` now needs to be restarted with the old and new vote
authority keypairs, so that it can smoothly transition at the next epoch. Add
@ -209,7 +214,25 @@ migration.
### Vote Account Authorized Withdrawer
No special handling is required. Use the `solana vote-authorize-withdrawer` command as needed.
No special handling or timing considerations are required.
Use the `solana vote-authorize-withdrawer-checked` command as needed.
### Consider Durable Nonces for a Trustless Transfer of the Authorized Voter or Withdrawer
If the Authorized Voter or Withdrawer is to be transferred to another entity
then a two-stage signing process using a [Durable Nonce](../offline-signing/durable-nonce) is recommended.
1. Entity B creates a durable nonce using `solana create-nonce-account`
2. Entity B then runs a `solana vote-authorize-voter-checked` or `solana vote-authorize-withdrawer-checked` command, including:
- the `--sign-only` argument
- the `--nonce`, `--nonce-authority`, and `--blockhash` arguments to specify the nonce particulars
- the address of the Entity A's existing authority, and the keypair for Entity B's new authority
3. When the `solana vote-authorize-...-checked` command successfully executes, it will output transaction signatures that Entity B must share with Entity A
4. Entity A then runs a similar `solana vote-authorize-voter-checked` or `solana vote-authorize-withdrawer-checked` command with the following changes:
- the `--sign-only` argument is removed, and replaced with a `--signer` argument for each of the signatures provided by Entity B
- the address of Entity A's existing authority is replaced with the corresponding keypair, and the the keypair for Entity B's new authority is replaced with the correponding address
On success the authority is now changed without Entity A or B having to reveal keypairs to the other even though both entities signed the transaction.
## Close a Vote Account