diff --git a/src/pages/guide/node/operate-validator.mdx b/src/pages/guide/node/operate-validator.mdx index 2b266c03..0dc4bccf 100644 --- a/src/pages/guide/node/operate-validator.mdx +++ b/src/pages/guide/node/operate-validator.mdx @@ -7,12 +7,7 @@ description: Day-to-day operations for Tempo validators. Node lifecycle, monitor This guide covers day-to-day operations for running a Tempo validator in production. -Validator management differs depending on which ValidatorConfig version is active: - -- **[ValidatorConfig V2](/guide/node/validator-config-v2)** (post-T2) — self-service key rotation, IP updates, and ownership transfers -- **[ValidatorConfig V1](/guide/node/validator-config-v1)** (pre-T2, legacy) — all management operations require coordinating with the Tempo team - -For validator states and lifecycle transitions, see the respective V1 and V2 pages. +- **[Validator Configuration](/guide/node/validator-config-v2)** — self-service key rotation, IP updates, and ownership transfers ## Checking your validator's state @@ -109,14 +104,13 @@ The node will finish processing the current block before shutting down. Avoid us **You cannot reset a validator's data and continue with the same identity.** Doing so risks inconsistent voting, which can cause irrecoverable network safety failures. ::: -If you need to reset your validator's data, you must rotate to a new validator identity. See key rotation under [ValidatorConfig V2](/guide/node/validator-config-v2#rotate-validator-identity) or [ValidatorConfig V1](/guide/node/validator-config-v1#signing-key-rotation). +If you need to reset your validator's data, you must rotate to a new validator identity. See key rotation under [Validator Configuration](/guide/node/validator-config-v2#rotate-validator-identity). ## Key Management For signing key rotation, IP address updates, signing share recovery, and ownership transfers, see: -- **[ValidatorConfig V2](/guide/node/validator-config-v2)** (post-T2) — self-service operations -- **[ValidatorConfig V1](/guide/node/validator-config-v1#key-management)** (pre-T2) — coordinated through the Tempo team +- **[Validator Configuration](/guide/node/validator-config-v2)** (post-T2) — self-service operations ## Log Management diff --git a/src/pages/guide/node/validator-config-v1.mdx b/src/pages/guide/node/validator-config-v1.mdx deleted file mode 100644 index 15098a6b..00000000 --- a/src/pages/guide/node/validator-config-v1.mdx +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: ValidatorConfig V1 (Legacy) -description: Legacy validator management via ValidatorConfig V1. Key rotation, IP updates, and signing share recovery pre-T2. ---- - -# ValidatorConfig V1 (Legacy) - -:::warning -This page documents ValidatorConfig V1 behavior, which applies **before the T2 hardfork**. Once T2 is active and migration from V1 to V2 is complete, use [ValidatorConfig V2](/guide/node/validator-config-v2) instead. You can [check if V2 is initialized](/guide/node/validator-config-v2#check-if-v2-is-active) to confirm the migration is complete. -::: - -ValidatorConfig V1 is the original precompile for managing consensus participants. All management operations are permissioned and require coordinating with the Tempo team. - -## Validator states - -Under V1, your validator goes through the following states after being added on-chain. Each transition happens on epoch boundaries. - -```mermaid -flowchart TD - A[Inactive] -->|epoch ends| B["Syncer
The validator starts syncing"] - B -->|+1 epoch| C["Syncer and Player"] - C -->|"+1 epoch, receives share"| D["Syncer
Player
Dealer"] - D -->|"once fully synced"| E["Voter ↔ Proposer"] - - click A "#not-a-participant-e" - click B "#syncer-epoch-e1" - click C "#player-epoch-e2" - click D "#dealer-epoch-e3" - click E "#dealer-epoch-e3" -``` - -Currently, on mainnet and testnet, the epoch length is around 3 hours, which means that your validator will transition through these states approximately every 3 hours. - -#### Not a participant (E) - -Epoch E marks the addition of your validator to the on-chain validator configuration smart contract. Your validator isn't considered a peer by validators yet. This is because the validator hasn't been refreshed in the current epoch yet. It is normal that no height metrics progress during this period, your node has to be considered a syncer to receive blocks. - -#### Syncer (epoch E+1) - -Your validator is now considered a peer by validators. It's syncing with the network and will be considered a player in the next epoch. - -#### Player (epoch E+2) - -Your validator is receiving consensus signing shares from dealers during the ceremony. - -#### Dealer (epoch E+3) - -Your validator is distributing consensus signing shares to other validators during the ceremony. Once your node is fully synced up, it will also be able to propose blocks and vote for other validators' proposed blocks. - -## Key Management - -### Signing Key Rotation - -1. Generate a new keypair: - -```bash -tempo consensus generate-private-key --output -tempo consensus calculate-public-key --private-key -``` - -2. Contact the Tempo team to update your validator's public key on-chain - -3. Once confirmed, update your node configuration to use the new key and restart. Once the node is running, your validator will go through the [validator states](#validator-states) again. - -:::warning -The old validator identity must be deactivated before the new one is activated. -::: - -### Signing Share Recovery - -If you lose your signing share, coordinate with the Tempo team to deactivate your old identity and register a new one. - -### Update IP Addresses - -Contact the Tempo team to update your validator's ingress and egress addresses on-chain. diff --git a/src/pages/guide/node/validator-config-v2.mdx b/src/pages/guide/node/validator-config-v2.mdx index 9a33b2fb..94bb86a0 100644 --- a/src/pages/guide/node/validator-config-v2.mdx +++ b/src/pages/guide/node/validator-config-v2.mdx @@ -5,13 +5,11 @@ description: Manage your validator with ValidatorConfig V2. Self-service key rot # ValidatorConfig V2 -ValidatorConfig V2 ([TIP-1017](/protocol/tips/tip-1017)) is a new precompile for managing consensus participants. It replaces the original ValidatorConfig with stronger safety guarantees: ed25519 signature verification at registration, append-only history, and self-service operations for validators. - -V2 was [activated on mainnet](https://explore.mainnet.tempo.xyz/receipt/0x4716147e3c2bf5c8d014b8c27d6e2af0042d5a5f29bdead256d6f33038702d64) after the T2 hardfork. +ValidatorConfig V2 ([TIP-1017](/protocol/tips/tip-1017)) is the precompile that manages consensus participants. This config was [activated on mainnet](https://explore.mainnet.tempo.xyz/receipt/0x4716147e3c2bf5c8d014b8c27d6e2af0042d5a5f29bdead256d6f33038702d64) after the T2 hardfork. ## Validator states -With V2, the syncer warmup phase from V1 is removed. Once added, a validator immediately becomes a player in the next epoch. +Once added, a validator immediately becomes a player in the next epoch. ```mermaid flowchart TD @@ -19,12 +17,9 @@ flowchart TD B -->|"+1 epoch, receives share"| C["Player
Dealer"] C -->|"once fully synced"| D["Voter ↔ Proposer"] ``` - -Compare this to the [V1 validator states](/guide/node/validator-config-v1#validator-states), which required an additional syncer epoch before becoming a player. - ## What changes for operators -With V2, validators can perform several operations themselves without coordinating with the Tempo team: +Validators can perform several operations themselves without coordinating with the Tempo team: - **Rotate your validator identity** — swap to a new ed25519 key without losing your committee slot - **Update IP addresses** — change ingress and egress endpoints independently (V2 supports asymmetric ingress/egress IPs) @@ -144,8 +139,6 @@ tempo consensus set-validator-fee-recipient
If your node's network endpoints change, update them on-chain. The change takes effect at the next finalized block. -Unlike V1, V2 supports asymmetric ingress and egress IPs — they no longer need to share the same address. Both can be updated together or individually by supplying only `--ingress` or `--egress`. The values not supplied will pulled from the chain and left unchanged in the submitted transaction. - ```bash tempo consensus set-validator-ip-address
--ingress :NEW_PROT> @@ -160,7 +153,7 @@ Ingress addresses must be unique across all active validators. The transaction w ### Rotate validator identity -V2 lets you rotate to a new ed25519 key while keeping your validator index stable. This is useful for key rotation or recovery without leaving and re-joining the committee. [Generate a new signing key](#generating-a-signing-key) first. +The ed25519 key can be changed while keeping your validator index stable. This is useful for key rotation or recovery without leaving and re-joining the committee. [Generate a new signing key](#generating-a-signing-key) first. The simplest way to rotate is using the `tempo` CLI, which handles signature creation and the on-chain transaction in one step: @@ -219,15 +212,3 @@ tempo consensus deactivate-validator
--rpc-url https://rpc.tempo.xyz \ --private-key ``` - -## Differences from V1 - -| | V1 | V2 | -|---|---|---| -| **Key ownership** | No verification | Ed25519 signature required | -| **History** | Mutable, toggle active/inactive | Append-only, deactivate-once | -| **Validator index** | Could change | Stable for lifetime | -| **Self-service ops** | None (owner only) | IP updates, rotation, transfer | -| **Historical queries** | Required warmup state, bloated snapshots | `addedAtHeight` / `deactivatedAtHeight` fields | - - diff --git a/src/pages/guide/node/validator.mdx b/src/pages/guide/node/validator.mdx index 02d7ae32..188ebf4f 100644 --- a/src/pages/guide/node/validator.mdx +++ b/src/pages/guide/node/validator.mdx @@ -86,7 +86,7 @@ INFO handle_propose{epoch=18 view=387213 parent.view=387212 parent.digest=0x4388 ``` If you do not see logs like these: -- please check that your validator is part of the active set, and is both a player and a dealer (see validator states under [V2](/guide/node/validator-config-v2#validator-states) or [V1](/guide/node/validator-config-v1#validator-states)) +- please check that your validator is part of the active set, and is both a player and a dealer. See [validator states](/guide/node/validator-config-v2#validator-states) - please check that your node is synced up to the [latest block height](https://explorer.tempo.xyz/). - please check that your outgoing IP address matches the one whitelisted on the validator smart contract: diff --git a/vocs.config.ts b/vocs.config.ts index 15b43f3c..72e0861a 100644 --- a/vocs.config.ts +++ b/vocs.config.ts @@ -731,10 +731,6 @@ export default defineConfig({ text: 'ValidatorConfig V2', link: '/guide/node/validator-config-v2', }, - { - text: 'ValidatorConfig V1 (Legacy)', - link: '/guide/node/validator-config-v1', - }, ], }, {