-
Notifications
You must be signed in to change notification settings - Fork 140
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: verifier rotations doc (#1082)
- Loading branch information
Showing
2 changed files
with
67 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# Verifier Rotations | ||
|
||
One type of message the network can sign and prove to a destination chain is a message containing an update to the verifier set. To make an update to the verifier set for a chain, the previous verifier set must sign a message communicating the changes. | ||
|
||
## Check if a verifier is in an active set | ||
|
||
Use `current_verifier_set` to get the active verifier set for an integrated chain. This is the same as the signer set unless there is a verifier set update in progress, since the prover requires a few extra steps before active verifier sets can be confirmed as signers. | ||
|
||
```bash | ||
export CHAIN_MULTISIG_PROVER_ADDRESS="axelar1xz4cya4qm2ws6nzperhvc40wdjcq4872fl6d3j2s4cytyx8j80eqenv87g" | ||
export RPC="http://devnet-verifiers.axelar.dev:26657" | ||
``` | ||
|
||
```bash | ||
axelard q wasm contract-state smart $CHAIN_MULTISIG_PROVER_ADDRESS \ | ||
'"current_verifier_set"' \ | ||
--node $RPC | ||
``` | ||
|
||
## Get proof of a verifier set change | ||
|
||
[`get_proof`](https://github.com/axelarnetwork/axelar-amplifier/blob/f76dc8a775b8bb529cf50147bab9259d1ec7f784/contracts/multisig-prover/src/msg.rs#L81) communicates with a destination chain that a [verifier set has been changed](https://github.com/axelarnetwork/axelar-amplifier/blob/main/doc/src/contracts/multisig_prover.md#update-and-confirm-verifierset-sequence-diagram), and tells the destination chain that it must accept signatures from these new verifiers. | ||
|
||
```bash | ||
export MULTISIG_SESSION_ID="3457" | ||
``` | ||
|
||
```bash | ||
axelard q wasm contract-state smart $CHAIN_MULTISIG_PROVER_ADDRESS \ | ||
'{ | ||
"get_proof":{ | ||
"multisig_session_id":"'"$MULTISIG_SESSION_ID"'" | ||
} | ||
}' \ | ||
--node $RPC | ||
``` | ||
|
||
## Update the verifier set for a given chain | ||
|
||
When a verifier set is rotated for a given chain, the existing signers verify the new signers via the `update_verifier_set` command. This is temporarily permissioned to the admin contract established by the network. | ||
|
||
```bash | ||
axelard tx wasm execute $CHAIN_MULTISIG_PROVER_ADDRESS \ | ||
'"update_verifier_set"' \ | ||
--from wallet | ||
--gas auto --gas-adjustment 1.5 --gas-prices 0.007uverifiers \ | ||
--chain-id=devnet-verifiers \ | ||
--node $RPC | ||
``` | ||
|
||
## Confirm the verifier set after a vote | ||
|
||
Use `confirm_verifier_set` to confirm a verifier set update. | ||
|
||
```bash | ||
axelard tx wasm execute $CHAIN_MULTISIG_PROVER_ADDRESS \ | ||
'"confirm_verifier_set"' \ | ||
--keyring-backend test | ||
--from wallet | ||
--gas auto --gas-adjustment 1.5 --gas-prices 0.007uverifiers \ | ||
--chain-id=devnet-verifiers \ | ||
--node $RPC | ||
``` |