Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: verifier rotations doc #1082

Merged
merged 5 commits into from
Aug 5, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/layouts/navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,10 @@ export const getNavigation = (section) => {
title: "Verifier Rewards",
href: "/validator/amplifier/verifier-rewards",
},
{
title: "Verifier Rotations",
href: "/validator/amplifier/verifier-rotations"
},
],
},
],
Expand Down
63 changes: 63 additions & 0 deletions src/pages/validator/amplifier/verifier-rotations.mdx
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
ffe9f8 marked this conversation as resolved.
Show resolved Hide resolved
--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
```
ffe9f8 marked this conversation as resolved.
Show resolved Hide resolved