diff --git a/docs/Validator Rewards.es.md b/docs/Validator Rewards.es.md index 6ba2cba..52efb12 100644 --- a/docs/Validator Rewards.es.md +++ b/docs/Validator Rewards.es.md @@ -1,36 +1,28 @@ # Recompensas para Validadores !!! warning "Al conectarse a DoubleZero, acepto los [Términos de Uso de DoubleZero](https://doublezero.xyz/terms-protocol)" -Los validadores que publican leader shreds en DoubleZero Edge obtienen recompensas en cada epoch. Antes de que las recompensas puedan ser pagadas, cada validador debe registrar **dónde** se enviarán las recompensas configurando una cuenta `ValidatorPublisherRewards` en Solana. Dicha cuenta almacena: +## Cómo Funciona -- el **mint de recompensas** — el token en el que se pagan las recompensas `2z` (a menos que se cambie manualmente) -- el **propietario de recompensas** — la wallet que posee la Cuenta de Token Asociada (ATA) que recibe las recompensas +Los validadores que publican leader shreds en DoubleZero Edge obtienen recompensas en cada época. Antes de que se puedan pagar las recompensas, cada validador debe registrar **dónde** se envían las recompensas configurando una cuenta `ValidatorPublisherRewards` en Solana. Esa cuenta almacena: -El comando `configure` establecerá estos campos, y los pagos automáticos se realizarán epoch a epoch a partir de ese momento. Puede volver a ejecutar `configure` más adelante para cambiar cualquiera de los campos. +- el **mint de recompensas** — el token en el que se pagan las recompensas es 2z (a menos que se cambie manualmente) +- el **propietario de recompensas** — la wallet que posee la Associated Token Account (ATA) que recibe las recompensas + +El comando `configure` establecerá estos campos, y los pagos automáticos se realizarán época por época a partir de ese momento. Puede volver a ejecutar `configure` más adelante para cambiar cualquiera de los campos. !!! info "Si aún no ha completado la [Configuración](setup.md), la [Conexión del Validador a Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) y la [Conexión Multicast del Validador](Validator%20Multicast%20Connection.md), hágalo primero." -## Requisitos previos +## Requisitos Previos -- Validadores publicando leader shreds — consulte [Conexión Multicast del Validador](Validator%20Multicast%20Connection.md). +- Validadores publicando leader shreds - consulte [Conexión Multicast del Validador](Validator%20Multicast%20Connection.md). - La última versión del CLI `doublezero-solana`: `sudo apt update && sudo apt install doublezero-solana`, como mínimo `0.5.6`. - Acceso al **keypair de identidad del validador**, ya sea en la misma máquina o mantenido offline con la capacidad de firmar un mensaje. - Una pubkey de wallet de destino que será propietaria de la ATA de recompensas. ---- - -## 1. Elija una ruta de autenticación - -Configurar la cuenta de recompensas requiere autorización de la clave de identidad del validador. Hay dos formas de proporcionarla: - -| Ruta | Cuándo usarla | -|---|---| -| **Directa** | El keypair de identidad del validador está en la máquina desde la que ejecuta los comandos. | -| **Offchain** | El keypair de identidad del validador se mantiene offline o en una máquina diferente a la de la wallet que paga las comisiones. | --- -## 2a. Ruta directa +## 1. Configurar para Reclamar Recompensas Ejecute `configure` con el keypair de identidad del validador como `-k`. @@ -40,7 +32,7 @@ doublezero-solana shreds publisher-rewards configure \ --rewards-token-owner \ -k ``` -Salida de ejemplo +Ejemplo de Salida ```bash Shred subscription - Configure Validator Publisher Rewards Node ID: ValidatorIdentity111111111111111111111111111 @@ -50,26 +42,39 @@ Rewards ATA: 11111111111Pt3PatTj59dG5BhYuqPb9QJDUr1111111 Auth path: direct Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf11111112jjzBJsr1B2JrTRff4dSGe1pdM1111111TMADi3Nz ``` -`Configured validator publisher rewards: ` muestra la transacción que puede visualizar en un explorador de bloques. +`Configured validator publisher rewards: ` muestra el txt que puede ver en un explorador de bloques. | Flag | Descripción | |---|---| | `--node-id` | Pubkey de identidad del nodo validador. | | `--rewards-token-owner` | Wallet que será propietaria de la ATA receptora. | -| `--rewards-token-mint` | El token en el que se recibirán las recompensas de la wallet `2z`. Los tokens compatibles también incluyen `usdc` y `wsol`. | -| `-k` | Ruta al keypair de identidad del validador. En la ruta directa, la pubkey del keypair debe coincidir con `--node-id` o el comando dará error e indicará que cambie a la ruta offchain. | +| `--rewards-token-mint` | El token en el que se recibirán las recompensas de la wallet en `2z`. Los tokens soportados también incluyen `usdc` y `wsol`. | +| `-k` | Ruta al keypair de identidad del validador. En la ruta directa, la pubkey del keypair debe coincidir con `--node-id` o el comando devolverá un error indicando que cambie a la ruta offchain. | La ATA se inicializa automáticamente en la misma transacción si aún no existe. -Continúe directamente al [paso 3](#3-verificar-la-configuracion). + +!!! note "Si se Devuelve un Error" + Si la pubkey de `-k` no coincide con `--node-id` + + El keypair del pagador de comisiones que proporcionó no es la identidad del validador. Proporcione el keypair de identidad del validador como `-k`, o cambie a la [ruta offchain](#apendix-alternativa-de-ruta-offchain). +--- + +## 2. Verificar la Configuración + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +El comando muestra el `Node ID`, `Rewards owner`, `Rewards mint`, la dirección ATA resuelta y el estado de la ATA. La **ATA Resuelta** es la dirección determinística derivada del propietario de recompensas + mint de recompensas — es donde se depositarán las recompensas en cada época. --- -## 2b. Ruta offchain +## Apéndice: Alternativa de Ruta Offchain -Tres subpasos: preparar, firmar, configurar. +Tres sub-pasos: preparar, firmar, configurar. -### 2b.i. Preparar el mensaje offchain +### 1. Preparar el mensaje offchain Ejecute esto en cualquier lugar — es de solo lectura y no necesita el keypair de identidad del validador. Imprime el blob hexadecimal a firmar y el slot absoluto en el que expira la firma. @@ -79,7 +84,7 @@ doublezero-solana shreds publisher-rewards prepare-offchain-message \ --rewards-token-owner \ --valid-for 1h ``` -Salida de ejemplo +Ejemplo de Salida ```bash Hex message: 123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3 @@ -99,14 +104,14 @@ Then submit: |---|---| | `--node-id` | Pubkey de identidad del nodo validador. | | `--rewards-token-owner` | Wallet que será propietaria de la ATA receptora. | -| `--rewards-token-mint` | El token en el que se recibirán las recompensas de la wallet `2z`. Los tokens compatibles también incluyen `usdc` y `wsol`. | -| `--valid-for` | Tiempo de vida de la firma relativo al slot actual. Acepta `s`, `m` o `h`. Valor predeterminado: `1h`. | +| `--rewards-token-mint` | El token en el que se recibirán las recompensas de la wallet en `2z`. Los tokens soportados también incluyen `usdc` y `wsol`. | +| `--valid-for` | Tiempo de vida de la firma relativo al slot actual. Acepta `s`, `m`, o `h`. Por defecto: `1h`. | | `--deadline-slot` | Alternativa a `--valid-for`: slot absoluto en el que expira la autorización. Mutuamente excluyente con `--valid-for`. | | `--json` | Emite JSON (`{ hex, deadline_slot }`) en lugar del resumen legible. | -El comando imprime el mensaje de autorización codificado en hexadecimal, el slot límite resuelto y fragmentos de shell listos para ejecutar para los dos pasos siguientes. +El comando imprime el mensaje de autorización codificado en hexadecimal, el slot de vencimiento resuelto y fragmentos de shell listos para ejecutar para los dos pasos siguientes. -### 2b.ii. Firmar el mensaje +### 2. Firmar el mensaje En la máquina que contiene el keypair de identidad del validador: @@ -117,13 +122,13 @@ solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c Esto imprime una firma en base58. -Salida de ejemplo +Ejemplo de Salida ```bash SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. Enviar `configure` +### 3. Enviar `configure` De vuelta en la máquina con su wallet pagadora de comisiones: @@ -135,12 +140,11 @@ doublezero-solana shreds publisher-rewards configure \ --deadline-slot ``` -`--signature` y `--deadline-slot` deben pasarse juntos. Los valores deben coincidir con los producidos en los pasos 2b.i y 2b.ii. +`--signature` y `--deadline-slot` deben proporcionarse juntos. Los valores deben coincidir con los producidos en los pasos 2b.i y 2b.ii. La ATA se inicializa automáticamente en la misma transacción si aún no existe. - -Salida de ejemplo +Ejemplo de Salida ```bash Shred subscription - Configure Validator Publisher Rewards @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. Verificar la configuración - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -El comando imprime el `Node ID`, `Rewards owner`, `Rewards mint`, la dirección ATA resuelta y el estado de la ATA. La **ATA resuelta** es la dirección determinística derivada del propietario de recompensas + mint de recompensas — es donde se depositarán las recompensas en cada epoch. - ---- - -## Solución de problemas - -### Ruta directa: la pubkey de `-k` no coincide con `--node-id` - -El keypair pagador de comisiones que proporcionó no es la identidad del validador. Pase el keypair de identidad del validador como `-k`, o cambie a la [ruta offchain](#2b-ruta-offchain). - -### Firma expirada - -Cada firma offchain tiene un slot límite. Si pasa demasiado tiempo entre `prepare-offchain-message` y `configure`, vuelva a ejecutar `prepare-offchain-message`, firme nuevamente y reenvíe. La validez predeterminada es de 1 hora — extiéndala con `--valid-for 4h` o similar si necesita más tiempo para un flujo de firma offline. \ No newline at end of file +!!! note "Nota: Si la Firma ha Expirado" + Cada firma offchain tiene un slot de vencimiento. Si pasa demasiado tiempo entre `prepare-offchain-message` y `configure`, vuelva a ejecutar `prepare-offchain-message`, firme de nuevo y reenvíe. La validez por defecto es de 1 hora — extiéndala con `--valid-for 4h` o similar si necesita más tiempo para un flujo de firma offline. \ No newline at end of file diff --git a/docs/Validator Rewards.fr.md b/docs/Validator Rewards.fr.md index 2a93452..d7481a6 100644 --- a/docs/Validator Rewards.fr.md +++ b/docs/Validator Rewards.fr.md @@ -1,38 +1,30 @@ # Récompenses des validateurs !!! warning "En me connectant à DoubleZero, j'accepte les [Conditions d'utilisation de DoubleZero](https://doublezero.xyz/terms-protocol)" -Les validateurs qui publient des leader shreds vers DoubleZero Edge reçoivent des récompenses à chaque époque. Avant que les récompenses puissent être versées, chaque validateur doit enregistrer **où** les récompenses sont envoyées en configurant un compte `ValidatorPublisherRewards` sur Solana. Ce compte stocke : +## Fonctionnement -- le **mint des récompenses** — le jeton dans lequel les récompenses sont versées, 2z (sauf modification manuelle) -- le **propriétaire des récompenses** — le portefeuille qui détient le compte de jetons associé (ATA) recevant les récompenses +Les validateurs qui publient des leader shreds vers DoubleZero Edge gagnent des récompenses à chaque epoch. Avant que les récompenses puissent être versées, chaque validateur doit enregistrer **où** les récompenses seront envoyées en configurant un compte `ValidatorPublisherRewards` sur Solana. Ce compte stocke : -La commande `configure` définira ces champs, et les versements automatiques se feront époque par époque par la suite. Vous pouvez relancer `configure` ultérieurement pour modifier l'un ou l'autre champ. +- le **mint des récompenses** — le jeton dans lequel les récompenses sont versées 2z (sauf modification manuelle) +- le **propriétaire des récompenses** — le portefeuille qui possède le compte de jetons associé (ATA) recevant les récompenses -!!! info "Si vous n'avez pas encore terminé la [Configuration](setup.md), la [Connexion Validateur Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) et la [Connexion Multicast Validateur](Validator%20Multicast%20Connection.md), faites-le d'abord." +La commande `configure` définira ces champs, et les paiements automatiques se feront ensuite sur une base epoch par epoch. Vous pouvez relancer `configure` ultérieurement pour modifier l'un ou l'autre champ. + +!!! info "Si vous n'avez pas encore terminé la [Configuration](setup.md), la [Connexion du validateur au Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) et la [Connexion Multicast du validateur](Validator%20Multicast%20Connection.md), faites-le d'abord." ## Prérequis -- Validateurs publiant des leader shreds — voir [Connexion Multicast Validateur](Validator%20Multicast%20Connection.md). -- La dernière version du CLI `doublezero-solana` : `sudo apt update && sudo apt install doublezero-solana`, au minimum `0.5.6`. +- Validateurs publiant des leader shreds - voir [Connexion Multicast du validateur](Validator%20Multicast%20Connection.md). +- Le dernier CLI `doublezero-solana` : `sudo apt update && sudo apt install doublezero-solana`, au minimum `0.5.6`. - Accès à la **paire de clés d'identité du validateur**, soit sur la même machine, soit conservée hors ligne avec la possibilité de signer un message. -- Une clé publique de portefeuille de destination qui détiendra l'ATA des récompenses. - ---- - -## 1. Choisir un chemin d'authentification +- Une clé publique de portefeuille de destination qui sera propriétaire de l'ATA des récompenses. -La configuration du compte de récompenses nécessite une autorisation de la clé d'identité du validateur. Il existe deux façons de la fournir : - -| Chemin | Quand l'utiliser | -|---|---| -| **Direct** | La paire de clés d'identité du validateur se trouve sur la machine depuis laquelle vous exécutez les commandes. | -| **Hors chaîne** | La paire de clés d'identité du validateur est conservée hors ligne ou sur une machine distincte de celle du portefeuille payeur de frais. | --- -## 2a. Chemin direct +## 1. Configurer pour réclamer les récompenses -Exécutez `configure` avec la paire de clés d'identité du validateur en tant que `-k`. +Exécutez `configure` avec la paire de clés d'identité du validateur comme `-k`. ```bash doublezero-solana shreds publisher-rewards configure \ @@ -55,21 +47,34 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf | Drapeau | Description | |---|---| | `--node-id` | Clé publique d'identité du nœud validateur. | -| `--rewards-token-owner` | Portefeuille qui détiendra l'ATA recevant les récompenses. | -| `--rewards-token-mint` | Le jeton dans lequel les récompenses seront reçues, `2z`. Les jetons pris en charge incluent également `usdc` et `wsol`. | -| `-k` | Chemin vers la paire de clés d'identité du validateur. Sur le chemin direct, la clé publique de la paire de clés doit correspondre à `--node-id`, sinon la commande échouera et vous indiquera de passer au chemin hors chaîne. | +| `--rewards-token-owner` | Portefeuille qui sera propriétaire de l'ATA de réception. | +| `--rewards-token-mint` | Le jeton dans lequel les récompenses du portefeuille seront reçues `2z`. Les jetons pris en charge incluent également `usdc` et `wsol`. | +| `-k` | Chemin vers la paire de clés d'identité du validateur. Sur le chemin direct, la clé publique de la paire de clés doit correspondre à `--node-id`, sinon la commande renverra une erreur et vous indiquera de passer au chemin offchain. | L'ATA est automatiquement initialisé dans la même transaction s'il n'existe pas encore. -Passez directement à l'[étape 3](#3-verifier-la-configuration). + +!!! note "Si une erreur est retournée" + Si la clé publique de `-k` ne correspond pas à `--node-id` + + La paire de clés du payeur de frais que vous avez passée n'est pas l'identité du validateur. Passez soit la paire de clés d'identité du validateur comme `-k`, soit passez au [chemin offchain](#annexe-alternative-du-chemin-offchain). +--- + +## 2. Vérifier la configuration + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +La commande affiche le `Node ID`, le `Rewards owner`, le `Rewards mint`, l'adresse ATA résolue et le statut de l'ATA. L'**ATA résolu** est l'adresse déterministe dérivée du propriétaire des récompenses + le mint des récompenses — c'est là que les récompenses seront déposées à chaque epoch. --- -## 2b. Chemin hors chaîne +## Annexe : Alternative du chemin offchain Trois sous-étapes : préparer, signer, configurer. -### 2b.i. Préparer le message hors chaîne +### 1. Préparer le message offchain Exécutez ceci n'importe où — c'est en lecture seule et ne nécessite pas la paire de clés d'identité du validateur. La commande affiche le blob hexadécimal à signer et le slot absolu auquel la signature expire. @@ -98,15 +103,15 @@ Then submit: | Drapeau | Description | |---|---| | `--node-id` | Clé publique d'identité du nœud validateur. | -| `--rewards-token-owner` | Portefeuille qui détiendra l'ATA recevant les récompenses. | -| `--rewards-token-mint` | Le jeton dans lequel les récompenses seront reçues, `2z`. Les jetons pris en charge incluent également `usdc` et `wsol`. | +| `--rewards-token-owner` | Portefeuille qui sera propriétaire de l'ATA de réception. | +| `--rewards-token-mint` | Le jeton dans lequel les récompenses du portefeuille seront reçues `2z`. Les jetons pris en charge incluent également `usdc` et `wsol`. | | `--valid-for` | Durée de vie de la signature relative au slot actuel. Accepte `s`, `m` ou `h`. Par défaut : `1h`. | | `--deadline-slot` | Alternative à `--valid-for` : slot absolu auquel l'autorisation expire. Mutuellement exclusif avec `--valid-for`. | | `--json` | Émet du JSON (`{ hex, deadline_slot }`) au lieu du résumé lisible. | -La commande affiche le message d'authentification encodé en hexadécimal, le slot limite résolu et des extraits de commandes shell prêts à l'emploi pour les deux étapes suivantes. +La commande affiche le message d'autorisation encodé en hexadécimal, le slot d'échéance résolu et des extraits de commandes prêts à l'emploi pour les deux étapes suivantes. -### 2b.ii. Signer le message +### 2. Signer le message Sur la machine qui détient la paire de clés d'identité du validateur : @@ -123,7 +128,7 @@ Exemple de sortie SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. Soumettre `configure` +### 3. Soumettre `configure` De retour sur la machine avec votre portefeuille payeur de frais : @@ -139,7 +144,6 @@ doublezero-solana shreds publisher-rewards configure \ L'ATA est automatiquement initialisé dans la même transaction s'il n'existe pas encore. - Exemple de sortie ```bash @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. Vérifier la configuration - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -La commande affiche le `Node ID`, le `Rewards owner`, le `Rewards mint`, l'adresse ATA résolue et le statut de l'ATA. Le **Resolved ATA** est l'adresse déterministe dérivée du propriétaire des récompenses + du mint des récompenses — c'est là que les récompenses seront déposées à chaque époque. - ---- - -## Dépannage - -### Chemin direct : la clé publique de `-k` ne correspond pas à `--node-id` - -La paire de clés du payeur de frais que vous avez fournie n'est pas l'identité du validateur. Passez soit la paire de clés d'identité du validateur en tant que `-k`, soit basculez vers le [chemin hors chaîne](#2b-chemin-hors-chaine). - -### Signature expirée - -Chaque signature hors chaîne a un slot limite. Si trop de temps s'écoule entre `prepare-offchain-message` et `configure`, relancez `prepare-offchain-message`, re-signez et re-soumettez. La validité par défaut est de 1 heure — prolongez avec `--valid-for 4h` ou similaire si vous avez besoin de plus de temps pour un processus de signature hors ligne. \ No newline at end of file +!!! note "Note : Si la signature est expirée" + Chaque signature offchain a un slot d'échéance. Si trop de temps s'écoule entre `prepare-offchain-message` et `configure`, relancez `prepare-offchain-message`, re-signez et resoumettez. La validité par défaut est de 1 heure — prolongez avec `--valid-for 4h` ou similaire si vous avez besoin de plus de temps pour un flux de signature hors ligne. \ No newline at end of file diff --git a/docs/Validator Rewards.it.md b/docs/Validator Rewards.it.md index 07b5d99..5dc06a7 100644 --- a/docs/Validator Rewards.it.md +++ b/docs/Validator Rewards.it.md @@ -1,36 +1,28 @@ # Ricompense per i Validatori -!!! warning "Collegandosi a DoubleZero, accetto i [Termini di Utilizzo di DoubleZero](https://doublezero.xyz/terms-protocol)" +!!! warning "Collegandomi a DoubleZero, accetto i [Termini di Utilizzo di DoubleZero](https://doublezero.xyz/terms-protocol)" -I validatori che pubblicano leader shred su DoubleZero Edge ricevono ricompense a ogni epoca. Prima che le ricompense possano essere distribuite, ogni validatore deve registrare **dove** verranno inviate le ricompense configurando un account `ValidatorPublisherRewards` su Solana. Questo account contiene: +## Come Funziona -- il **mint delle ricompense** — il token in cui vengono pagate le ricompense è `2z` (salvo modifica manuale) +I validatori che pubblicano leader shred su DoubleZero Edge guadagnano ricompense ad ogni epoca. Prima che le ricompense possano essere pagate, ogni validatore deve registrare **dove** le ricompense devono essere inviate configurando un account `ValidatorPublisherRewards` su Solana. Tale account contiene: + +- il **mint delle ricompense** — il token in cui vengono pagate le ricompense 2z (salvo modifica manuale) - il **proprietario delle ricompense** — il wallet che possiede l'Associated Token Account (ATA) che riceve le ricompense -Il comando `configure` imposterà questi campi, e i pagamenti automatici avverranno su base epocale da quel momento in poi. È possibile rieseguire `configure` in seguito per modificare uno dei due campi. +Il comando `configure` imposterà questi campi e i pagamenti automatici avverranno su base epocale da quel momento in poi. È possibile rieseguire `configure` in seguito per modificare uno dei due campi. -!!! info "Se non hai ancora completato il [Setup](setup.md), la [Connessione Validator Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) e la [Connessione Multicast del Validatore](Validator%20Multicast%20Connection.md), fallo prima." +!!! info "Se non hai ancora completato il [Setup](setup.md), la [Connessione del Validatore a Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) e la [Connessione Multicast del Validatore](Validator%20Multicast%20Connection.md), fallo prima." ## Prerequisiti - Validatori che pubblicano leader shred - vedi [Connessione Multicast del Validatore](Validator%20Multicast%20Connection.md). - L'ultima versione della CLI `doublezero-solana`: `sudo apt update && sudo apt install doublezero-solana`, minimo `0.5.6`. -- Accesso al **keypair dell'identità del validatore**, sulla stessa macchina oppure conservato offline con la possibilità di firmare un messaggio. +- Accesso al **keypair dell'identità del validatore**, sia sulla stessa macchina che conservato offline con la possibilità di firmare un messaggio. - Una chiave pubblica del wallet di destinazione che sarà proprietario dell'ATA delle ricompense. ---- - -## 1. Scegliere un Percorso di Autorizzazione - -La configurazione dell'account delle ricompense richiede l'autorizzazione dalla chiave di identità del validatore. Ci sono due modi per fornirla: - -| Percorso | Quando utilizzarlo | -|---|---| -| **Diretto** | Il keypair dell'identità del validatore si trova sulla macchina da cui si eseguono i comandi.| -| **Offchain** | Il keypair dell'identità del validatore è conservato offline o su una macchina diversa da quella del wallet fee-payer. | --- -## 2a. Percorso Diretto +## 1. Configurare per Richiedere le Ricompense Eseguire `configure` con il keypair dell'identità del validatore come `-k`. @@ -40,7 +32,7 @@ doublezero-solana shreds publisher-rewards configure \ --rewards-token-owner \ -k ``` -Output di esempio +Output di Esempio ```bash Shred subscription - Configure Validator Publisher Rewards Node ID: ValidatorIdentity111111111111111111111111111 @@ -50,28 +42,41 @@ Rewards ATA: 11111111111Pt3PatTj59dG5BhYuqPb9QJDUr1111111 Auth path: direct Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf11111112jjzBJsr1B2JrTRff4dSGe1pdM1111111TMADi3Nz ``` -`Configured validator publisher rewards: ` restituisce la tx che puoi visualizzare in un block explorer. +`Configured validator publisher rewards: ` restituisce il txt che puoi visualizzare in un block explorer. | Flag | Descrizione | |---|---| | `--node-id` | Chiave pubblica dell'identità del nodo validatore. | | `--rewards-token-owner` | Wallet che sarà proprietario dell'ATA ricevente. | -| `--rewards-token-mint` | Il token in cui verranno ricevute le ricompense `2z`. I token supportati includono anche `usdc` e `wsol`. | -| `-k` | Percorso del keypair dell'identità del validatore. Nel percorso diretto, la chiave pubblica del keypair deve corrispondere a `--node-id`, altrimenti il comando restituirà un errore indicando di passare al percorso offchain. | +| `--rewards-token-mint` | Il token in cui verranno ricevute le ricompense del wallet `2z`. I token supportati includono anche `usdc` e `wsol`. | +| `-k` | Percorso al keypair dell'identità del validatore. Nel percorso diretto, la chiave pubblica del keypair deve corrispondere a `--node-id` altrimenti il comando restituirà un errore indicando di passare al percorso offchain. | + +L'ATA viene auto-inizializzato nella stessa transazione se non esiste ancora. -L'ATA viene inizializzato automaticamente nella stessa transazione se non esiste ancora. -Vai direttamente al [passo 3](#3-verificare-la-configurazione). +!!! note "Se Viene Restituito un Errore" + Se la chiave pubblica di `-k` non corrisponde a `--node-id` + + Il keypair del fee-payer che hai fornito non è l'identità del validatore. Passa il keypair dell'identità del validatore come `-k`, oppure passa al [percorso offchain](#appendice-percorso-offchain-alternativo). +--- + +## 2. Verificare la Configurazione + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +Il comando stampa il `Node ID`, il `Rewards owner`, il `Rewards mint`, l'indirizzo ATA risolto e lo stato dell'ATA. L'**ATA Risolto** è l'indirizzo deterministico derivato dal proprietario delle ricompense + mint delle ricompense — è dove le ricompense verranno depositate ad ogni epoca. --- -## 2b. Percorso Offchain +## Appendice: Percorso Offchain Alternativo Tre sotto-passaggi: preparazione, firma, configurazione. -### 2b.i. Preparare il messaggio offchain +### 1. Preparare il messaggio offchain -Questo comando può essere eseguito ovunque — è in sola lettura e non richiede il keypair dell'identità del validatore. Stampa il blob esadecimale da firmare e lo slot assoluto alla scadenza della firma. +Eseguire questo ovunque — è in sola lettura e non necessita del keypair dell'identità del validatore. Stampa il blob esadecimale da firmare e lo slot assoluto alla scadenza della firma. ```bash doublezero-solana shreds publisher-rewards prepare-offchain-message \ @@ -79,7 +84,7 @@ doublezero-solana shreds publisher-rewards prepare-offchain-message \ --rewards-token-owner \ --valid-for 1h ``` -Output di esempio +Output di Esempio ```bash Hex message: 123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3 @@ -99,14 +104,14 @@ Then submit: |---|---| | `--node-id` | Chiave pubblica dell'identità del nodo validatore. | | `--rewards-token-owner` | Wallet che sarà proprietario dell'ATA ricevente. | -| `--rewards-token-mint` | Il token in cui verranno ricevute le ricompense `2z`. I token supportati includono anche `usdc` e `wsol`. | -| `--valid-for` | Durata della validità della firma rispetto allo slot corrente. Accetta `s`, `m` o `h`. Valore predefinito: `1h`. | +| `--rewards-token-mint` | Il token in cui verranno ricevute le ricompense del wallet `2z`. I token supportati includono anche `usdc` e `wsol`. | +| `--valid-for` | Durata della firma relativa allo slot corrente. Accetta `s`, `m` o `h`. Predefinito: `1h`. | | `--deadline-slot` | Alternativa a `--valid-for`: slot assoluto alla scadenza dell'autorizzazione. Mutuamente esclusivo con `--valid-for`. | -| `--json` | Produce output JSON (`{ hex, deadline_slot }`) invece del riepilogo leggibile. | +| `--json` | Produce JSON (`{ hex, deadline_slot }`) invece del riepilogo leggibile. | Il comando stampa il messaggio di autorizzazione codificato in esadecimale, lo slot di scadenza risolto e frammenti di comandi shell pronti all'uso per i due passaggi successivi. -### 2b.ii. Firmare il messaggio +### 2. Firmare il messaggio Sulla macchina che contiene il keypair dell'identità del validatore: @@ -117,15 +122,15 @@ solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c Questo stampa una firma in base58. -Output di esempio +Output di Esempio ```bash SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. Inviare `configure` +### 3. Inviare `configure` -Tornando sulla macchina con il wallet fee-payer: +Di nuovo sulla macchina con il wallet del fee-payer: ```bash doublezero-solana shreds publisher-rewards configure \ @@ -137,10 +142,9 @@ doublezero-solana shreds publisher-rewards configure \ `--signature` e `--deadline-slot` devono essere passati insieme. I valori devono corrispondere a quelli prodotti nei passaggi 2b.i e 2b.ii. -L'ATA viene inizializzato automaticamente nella stessa transazione se non esiste ancora. - +L'ATA viene auto-inizializzato nella stessa transazione se non esiste ancora. -Output di esempio +Output di Esempio ```bash Shred subscription - Configure Validator Publisher Rewards @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. Verificare la Configurazione - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -Il comando stampa il `Node ID`, il `Rewards owner`, il `Rewards mint`, l'indirizzo ATA risolto e lo stato dell'ATA. L'**ATA Risolto** è l'indirizzo deterministico derivato dal proprietario delle ricompense + il mint delle ricompense — è lì dove le ricompense verranno depositate a ogni epoca. - ---- - -## Risoluzione dei Problemi - -### Percorso diretto: la chiave pubblica di `-k` non corrisponde a `--node-id` - -Il keypair fee-payer che hai passato non è l'identità del validatore. Passa il keypair dell'identità del validatore come `-k`, oppure passa al [percorso offchain](#2b-percorso-offchain). - -### Firma scaduta - -Ogni firma offchain ha uno slot di scadenza. Se passa troppo tempo tra `prepare-offchain-message` e `configure`, riesegui `prepare-offchain-message`, firma nuovamente e invia di nuovo. La validità predefinita è di 1 ora — estendila con `--valid-for 4h` o simile se hai bisogno di più tempo per un flusso di firma offline. \ No newline at end of file +!!! note "Nota: Se la Firma è Scaduta" + Ogni firma offchain ha uno slot di scadenza. Se passa troppo tempo tra `prepare-offchain-message` e `configure`, rieseguire `prepare-offchain-message`, firmare di nuovo e reinviare. La validità predefinita è 1 ora — estendila con `--valid-for 4h` o simile se hai bisogno di più tempo per un flusso di firma offline. \ No newline at end of file diff --git a/docs/Validator Rewards.ja.md b/docs/Validator Rewards.ja.md index 2df0f20..2508f7c 100644 --- a/docs/Validator Rewards.ja.md +++ b/docs/Validator Rewards.ja.md @@ -1,38 +1,30 @@ -# バリデーターリワード +# バリデーター報酬 !!! warning "DoubleZeroに接続することにより、[DoubleZero利用規約](https://doublezero.xyz/terms-protocol)に同意したものとみなされます" -リーダーシュレッドをDoubleZero Edgeにパブリッシュするバリデーターは、各エポックごとにリワードを獲得します。リワードが支払われる前に、各バリデーターはSolana上で`ValidatorPublisherRewards`アカウントを設定し、リワードの送付先を登録する必要があります。このアカウントには以下の情報が保存されます: +## 仕組み -- **rewards mint** — リワードが支払われるトークン(手動で変更しない限り2z) -- **rewards owner** — リワードを受け取るAssociated Token Account(ATA)を所有するウォレット +DoubleZero Edgeにリーダーシュレッドを公開するバリデーターは、各エポックごとに報酬を獲得します。報酬が支払われる前に、各バリデーターはSolana上で`ValidatorPublisherRewards`アカウントを設定し、報酬の送信先を登録する必要があります。このアカウントには以下が保存されます: -`configure`コマンドでこれらのフィールドを設定すると、以降はエポックごとに自動的に支払いが行われます。後から`configure`を再実行して、いずれかのフィールドを変更することも可能です。 +- **報酬ミント** — 報酬が支払われるトークン(手動で変更しない限り2z) +- **報酬オーナー** — 報酬を受け取るAssociated Token Account(ATA)を所有するウォレット -!!! info "[セットアップ](setup.md)、[バリデーター Mainnet-Beta 接続](DZ%20Mainnet-beta%20Connection.md)、および[バリデーターマルチキャスト接続](Validator%20Multicast%20Connection.md)をまだ完了していない場合は、先にそちらを行ってください。" +`configure`コマンドでこれらのフィールドを設定すると、以降はエポックごとに自動的に支払いが行われます。いずれかのフィールドを変更するために、後から`configure`を再実行することも可能です。 -## 前提条件 - -- リーダーシュレッドをパブリッシュしているバリデーター - [バリデーターマルチキャスト接続](Validator%20Multicast%20Connection.md)を参照。 -- 最新の`doublezero-solana` CLI:`sudo apt update && sudo apt install doublezero-solana`、最低バージョン`0.5.6`。 -- **バリデーターIDキーペア**へのアクセス。同一マシン上にあるか、オフラインで保管しメッセージへの署名が可能な状態であること。 -- リワードATAを所有する宛先ウォレットの公開鍵。 - ---- +!!! info "[セットアップ](setup.md)、[バリデーター Mainnet-Beta 接続](DZ%20Mainnet-beta%20Connection.md)、および[バリデーター マルチキャスト接続](Validator%20Multicast%20Connection.md)をまだ完了していない場合は、先にそちらを完了してください。" -## 1. 認証パスの選択 +## 前提条件 -リワードアカウントの設定には、バリデーターIDキーによる認証が必要です。認証を提供する方法は2つあります: +- リーダーシュレッドを公開しているバリデーター — [バリデーター マルチキャスト接続](Validator%20Multicast%20Connection.md)を参照。 +- 最新の`doublezero-solana` CLI:`sudo apt update && sudo apt install doublezero-solana`、最低`0.5.6`以上。 +- **バリデーターIDキーペア**へのアクセス(同一マシン上にあるか、オフラインで保管しメッセージ署名が可能な状態)。 +- 報酬ATAを所有する送信先ウォレットの公開鍵。 -| パス | 使用するタイミング | -|---|---| -| **ダイレクト** | コマンドを実行するマシン上にバリデーターIDキーペアがある場合。| -| **オフチェーン** | バリデーターIDキーペアがオフラインまたはfee-payerウォレットとは別のマシンに保管されている場合。 | --- -## 2a. ダイレクトパス +## 1. 報酬請求の設定 -バリデーターIDキーペアを`-k`に指定して`configure`を実行します。 +`-k`にバリデーターIDキーペアを指定して`configure`を実行します。 ```bash doublezero-solana shreds publisher-rewards configure \ @@ -54,24 +46,37 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf | フラグ | 説明 | |---|---| -| `--node-id` | バリデーターノードIDの公開鍵。 | +| `--node-id` | バリデーターノードのID公開鍵。 | | `--rewards-token-owner` | 受取用ATAを所有するウォレット。 | -| `--rewards-token-mint` | リワードを受け取るウォレットトークン `2z`。サポートされているトークンには`usdc`と`wsol`も含まれます。 | -| `-k` | バリデーターIDキーペアへのパス。ダイレクトパスでは、キーペアの公開鍵が`--node-id`と一致する必要があります。一致しない場合、コマンドはエラーとなり、オフチェーンパスへの切り替えを求められます。 | +| `--rewards-token-mint` | 報酬を受け取るウォレットトークン(`2z`)。サポートされるトークンには`usdc`と`wsol`も含まれます。 | +| `-k` | バリデーターIDキーペアへのパス。ダイレクトパスでは、キーペアの公開鍵が`--node-id`と一致する必要があります。一致しない場合、コマンドはエラーを返し、オフチェーンパスへの切り替えを促します。 | + +ATAがまだ存在しない場合、同じトランザクション内で自動的に初期化されます。 -ATAがまだ存在しない場合は、同一トランザクション内で自動的に初期化されます。 -[ステップ3](#3-設定の確認)に進んでください。 +!!! note "エラーが返された場合" + `-k`の公開鍵が`--node-id`と一致しない場合 + + 渡した手数料支払者のキーペアがバリデーターIDではありません。バリデーターIDキーペアを`-k`として渡すか、[オフチェーンパス](#apendix-offchain-path-alternative)に切り替えてください。 +--- + +## 2. 設定の確認 + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +このコマンドは`Node ID`、`Rewards owner`、`Rewards mint`、解決されたATAアドレス、およびATAのステータスを表示します。**Resolved ATA**は、報酬オーナー+報酬ミントから導出される決定論的アドレスであり、各エポックで報酬が入金される場所です。 --- -## 2b. オフチェーンパス +## 付録:オフチェーンパスの代替方法 3つのサブステップ:準備、署名、設定。 -### 2b.i. オフチェーンメッセージの準備 +### 1. オフチェーンメッセージの準備 -このコマンドはどこでも実行可能です — 読み取り専用であり、バリデーターIDキーペアは不要です。署名対象のhexブロブと、署名の有効期限となる絶対スロットを出力します。 +これはどこでも実行可能です — 読み取り専用であり、バリデーターIDキーペアは不要です。署名するhexブロブと、署名が期限切れとなる絶対スロットが表示されます。 ```bash doublezero-solana shreds publisher-rewards prepare-offchain-message \ @@ -97,25 +102,25 @@ Then submit: | フラグ | 説明 | |---|---| -| `--node-id` | バリデーターノードIDの公開鍵。 | +| `--node-id` | バリデーターノードのID公開鍵。 | | `--rewards-token-owner` | 受取用ATAを所有するウォレット。 | -| `--rewards-token-mint` | リワードを受け取るウォレットトークン `2z`。サポートされているトークンには`usdc`と`wsol`も含まれます。 | -| `--valid-for` | 現在のスロットを基準とした署名の有効期間。`s`、`m`、または`h`を指定可能。デフォルト:`1h`。 | +| `--rewards-token-mint` | 報酬を受け取るウォレットトークン(`2z`)。サポートされるトークンには`usdc`と`wsol`も含まれます。 | +| `--valid-for` | 現在のスロットからの相対的な署名有効期間。`s`、`m`、または`h`を指定可能。デフォルト:`1h`。 | | `--deadline-slot` | `--valid-for`の代替:認証が期限切れとなる絶対スロット。`--valid-for`とは排他的です。 | | `--json` | 人間向けのサマリーの代わりにJSON(`{ hex, deadline_slot }`)を出力します。 | -このコマンドは、hexエンコードされた認証メッセージ、解決済みのデッドラインスロット、および次の2つのステップ用のすぐに実行可能なシェルスニペットを出力します。 +このコマンドは、hexエンコードされた認証メッセージ、解決されたデッドラインスロット、および次の2つのステップ用のすぐに実行可能なシェルスニペットを表示します。 -### 2b.ii. メッセージへの署名 +### 2. メッセージの署名 -バリデーターIDキーペアを保持するマシン上で: +バリデーターIDキーペアが保管されているマシンで実行します: ```bash solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3> \ --keypair ``` -base58署名が出力されます。 +base58形式の署名が表示されます。 出力例 @@ -123,9 +128,9 @@ base58署名が出力されます。 SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. `configure`の送信 +### 3. `configure`の送信 -fee-payerウォレットがあるマシンに戻って: +手数料支払者ウォレットがあるマシンに戻って実行します: ```bash doublezero-solana shreds publisher-rewards configure \ @@ -135,10 +140,9 @@ doublezero-solana shreds publisher-rewards configure \ --deadline-slot ``` -`--signature`と`--deadline-slot`は一緒に指定する必要があります。値はステップ2b.iおよび2b.iiで生成されたものと一致している必要があります。 - -ATAがまだ存在しない場合は、同一トランザクション内で自動的に初期化されます。 +`--signature`と`--deadline-slot`は一緒に渡す必要があります。値はステップ2b.iおよび2b.iiで生成されたものと一致する必要があります。 +ATAがまだ存在しない場合、同じトランザクション内で自動的に初期化されます。 出力例 @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. 設定の確認 - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -このコマンドは、`Node ID`、`Rewards owner`、`Rewards mint`、解決済みのATAアドレス、およびATAステータスを出力します。**Resolved ATA**は、rewards owner + rewards mintから導出される決定論的アドレスであり、各エポックでリワードが入金される場所です。 - ---- - -## トラブルシューティング - -### ダイレクトパス:`-k`の公開鍵が`--node-id`と一致しない - -渡したfee-payerキーペアがバリデーターIDではありません。バリデーターIDキーペアを`-k`として渡すか、[オフチェーンパス](#2b-オフチェーンパス)に切り替えてください。 - -### 署名の期限切れ - -各オフチェーン署名にはデッドラインスロットがあります。`prepare-offchain-message`と`configure`の間に時間がかかりすぎた場合は、`prepare-offchain-message`を再実行し、再署名して、再送信してください。デフォルトの有効期間は1時間です — オフライン署名フローにより多くの時間が必要な場合は、`--valid-for 4h`などで延長してください。 \ No newline at end of file +!!! note "注意:署名が期限切れの場合" + 各オフチェーン署名にはデッドラインスロットがあります。`prepare-offchain-message`と`configure`の間に時間が経ちすぎた場合は、`prepare-offchain-message`を再実行し、再署名して、再送信してください。デフォルトの有効期間は1時間です — オフライン署名フローにより多くの時間が必要な場合は、`--valid-for 4h`などで延長してください。 \ No newline at end of file diff --git a/docs/Validator Rewards.ko.md b/docs/Validator Rewards.ko.md index 98dc899..7385b53 100644 --- a/docs/Validator Rewards.ko.md +++ b/docs/Validator Rewards.ko.md @@ -1,38 +1,30 @@ -# 검증자 보상 -!!! warning "DoubleZero에 연결함으로써 [DoubleZero 이용 약관](https://doublezero.xyz/terms-protocol)에 동의하게 됩니다" +# 밸리데이터 보상 +!!! warning "DoubleZero에 연결함으로써, [DoubleZero 이용약관](https://doublezero.xyz/terms-protocol)에 동의합니다" -DoubleZero Edge에 리더 shred를 게시하는 검증자는 매 에포크마다 보상을 받습니다. 보상이 지급되기 전에, 각 검증자는 Solana에서 `ValidatorPublisherRewards` 계정을 구성하여 보상이 **어디로** 전달될지 등록해야 합니다. 해당 계정에는 다음 정보가 저장됩니다: +## 작동 방식 -- **보상 민트** — 보상이 지급되는 토큰으로 2z입니다(수동으로 변경하지 않는 한) -- **보상 소유자** — 보상을 수령하는 Associated Token Account(ATA)를 소유하는 지갑 +리더 shred를 DoubleZero Edge에 게시하는 밸리데이터는 매 에포크마다 보상을 받습니다. 보상이 지급되기 전에, 각 밸리데이터는 Solana에서 `ValidatorPublisherRewards` 계정을 구성하여 보상이 **어디로** 전송될지 등록해야 합니다. 해당 계정에는 다음 정보가 저장됩니다: -`configure` 명령은 이 필드들을 설정하며, 이후 에포크별로 자동 지급이 이루어집니다. 나중에 `configure`를 다시 실행하여 두 필드 중 하나를 변경할 수 있습니다. +- **보상 민트** — 보상이 지급되는 토큰으로 2z입니다 (수동으로 변경하지 않는 한) +- **보상 소유자** — 보상을 수령하는 Associated Token Account (ATA)를 소유하는 지갑 -!!! info "[설정](setup.md), [검증자 Mainnet-Beta 연결](DZ%20Mainnet-beta%20Connection.md), 그리고 [검증자 멀티캐스트 연결](Validator%20Multicast%20Connection.md)을 아직 완료하지 않았다면, 먼저 완료하세요." +`configure` 명령을 실행하면 이러한 필드가 설정되며, 이후 에포크 단위로 자동 지급이 이루어집니다. 나중에 `configure`를 다시 실행하여 두 필드 중 하나를 변경할 수 있습니다. + +!!! info "아직 [설정](setup.md), [밸리데이터 Mainnet-Beta 연결](DZ%20Mainnet-beta%20Connection.md), [밸리데이터 멀티캐스트 연결](Validator%20Multicast%20Connection.md)을 완료하지 않았다면 먼저 완료하세요." ## 사전 요구 사항 -- 리더 shred를 게시하는 검증자 - [검증자 멀티캐스트 연결](Validator%20Multicast%20Connection.md)을 참조하세요. -- 최신 `doublezero-solana` CLI: `sudo apt update && sudo apt install doublezero-solana`, 최소 `0.5.6` 이상. -- **검증자 아이덴티티 키페어**에 대한 접근 권한. 동일한 머신에 있거나 오프라인으로 보관하되 메시지 서명이 가능해야 합니다. +- 리더 shred를 게시하는 밸리데이터 - [밸리데이터 멀티캐스트 연결](Validator%20Multicast%20Connection.md)을 참조하세요. +- 최신 `doublezero-solana` CLI: `sudo apt update && sudo apt install doublezero-solana`, 최소 `0.5.6` 버전 이상. +- **밸리데이터 ID 키페어**에 대한 접근 권한 — 동일한 머신에 있거나 오프라인으로 보관하면서 메시지 서명이 가능해야 합니다. - 보상 ATA를 소유할 대상 지갑 공개키. ---- - -## 1. 인증 경로 선택 - -보상 계정을 구성하려면 검증자 아이덴티티 키의 인증이 필요합니다. 인증을 제공하는 방법은 두 가지가 있습니다: - -| 경로 | 사용 시기 | -|---|---| -| **직접(Direct)** | 검증자 아이덴티티 키페어가 명령을 실행하는 머신에 있는 경우. | -| **오프체인(Offchain)** | 검증자 아이덴티티 키페어가 오프라인으로 보관되거나 수수료 지불 지갑과 별도의 머신에 있는 경우. | --- -## 2a. 직접 경로 +## 1. 보상 수령을 위한 구성 -검증자 아이덴티티 키페어를 `-k`로 지정하여 `configure`를 실행합니다. +밸리데이터 ID 키페어를 `-k`로 지정하여 `configure`를 실행합니다. ```bash doublezero-solana shreds publisher-rewards configure \ @@ -50,28 +42,41 @@ Rewards ATA: 11111111111Pt3PatTj59dG5BhYuqPb9QJDUr1111111 Auth path: direct Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf11111112jjzBJsr1B2JrTRff4dSGe1pdM1111111TMADi3Nz ``` -`Configured validator publisher rewards: `는 블록 익스플로러에서 조회할 수 있는 트랜잭션을 출력합니다. +`Configured validator publisher rewards: `는 블록 탐색기에서 확인할 수 있는 트랜잭션을 출력합니다. | 플래그 | 설명 | |---|---| -| `--node-id` | 검증자 노드 아이덴티티 공개키. | -| `--rewards-token-owner` | 수령용 ATA를 소유할 지갑. | +| `--node-id` | 밸리데이터 노드 ID 공개키. | +| `--rewards-token-owner` | 수령 ATA를 소유할 지갑. | | `--rewards-token-mint` | 보상이 수령될 지갑 토큰으로 `2z`입니다. 지원되는 토큰에는 `usdc`와 `wsol`도 포함됩니다. | -| `-k` | 검증자 아이덴티티 키페어의 경로. 직접 경로에서는 키페어의 공개키가 `--node-id`와 일치해야 하며, 그렇지 않으면 오프체인 경로로 전환하라는 오류가 발생합니다. | +| `-k` | 밸리데이터 ID 키페어 경로. 직접 경로에서는 키페어의 공개키가 `--node-id`와 일치해야 하며, 그렇지 않으면 명령이 오류를 반환하고 오프체인 경로로 전환하라고 안내합니다. | ATA가 아직 존재하지 않는 경우 동일한 트랜잭션에서 자동으로 초기화됩니다. -[3단계](#3-구성-확인)로 건너뛰세요. + +!!! note "오류가 반환되는 경우" + `-k` 공개키가 `--node-id`와 일치하지 않는 경우 + + 전달한 수수료 지불자 키페어가 밸리데이터 ID가 아닙니다. 밸리데이터 ID 키페어를 `-k`로 전달하거나, [오프체인 경로](#apendix-offchain-path-alternative)로 전환하세요. +--- + +## 2. 구성 확인 + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +이 명령은 `Node ID`, `Rewards owner`, `Rewards mint`, 확인된 ATA 주소 및 ATA 상태를 출력합니다. **Resolved ATA**는 보상 소유자 + 보상 민트에서 파생된 결정론적 주소이며, 매 에포크마다 보상이 입금되는 곳입니다. --- -## 2b. 오프체인 경로 +## 부록: 오프체인 경로 대안 세 가지 하위 단계: 준비, 서명, 구성. -### 2b.i. 오프체인 메시지 준비 +### 1. 오프체인 메시지 준비 -이 명령은 어디서나 실행할 수 있습니다 — 읽기 전용이며 검증자 아이덴티티 키페어가 필요하지 않습니다. 서명할 hex 블롭과 서명이 만료되는 절대 슬롯을 출력합니다. +이 명령은 어디서든 실행할 수 있습니다 — 읽기 전용이며 밸리데이터 ID 키페어가 필요하지 않습니다. 서명할 hex 블롭과 서명이 만료되는 절대 슬롯을 출력합니다. ```bash doublezero-solana shreds publisher-rewards prepare-offchain-message \ @@ -97,18 +102,18 @@ Then submit: | 플래그 | 설명 | |---|---| -| `--node-id` | 검증자 노드 아이덴티티 공개키. | -| `--rewards-token-owner` | 수령용 ATA를 소유할 지갑. | +| `--node-id` | 밸리데이터 노드 ID 공개키. | +| `--rewards-token-owner` | 수령 ATA를 소유할 지갑. | | `--rewards-token-mint` | 보상이 수령될 지갑 토큰으로 `2z`입니다. 지원되는 토큰에는 `usdc`와 `wsol`도 포함됩니다. | -| `--valid-for` | 현재 슬롯 기준 서명 유효 기간. `s`, `m`, 또는 `h`를 허용합니다. 기본값: `1h`. | +| `--valid-for` | 현재 슬롯 기준 서명 유효 기간. `s`, `m`, 또는 `h`를 사용할 수 있습니다. 기본값: `1h`. | | `--deadline-slot` | `--valid-for`의 대안: 인증이 만료되는 절대 슬롯. `--valid-for`와 상호 배타적입니다. | -| `--json` | 사람이 읽을 수 있는 요약 대신 JSON(`{ hex, deadline_slot }`)을 출력합니다. | +| `--json` | 사람이 읽을 수 있는 요약 대신 JSON (`{ hex, deadline_slot }`)을 출력합니다. | -이 명령은 hex 인코딩된 인증 메시지, 확인된 마감 슬롯, 그리고 다음 두 단계를 위한 바로 실행 가능한 셸 스니펫을 출력합니다. +이 명령은 hex 인코딩된 인증 메시지, 확인된 마감 슬롯, 그리고 다음 두 단계에 바로 사용할 수 있는 셸 스니펫을 출력합니다. -### 2b.ii. 메시지 서명 +### 2. 메시지 서명 -검증자 아이덴티티 키페어가 있는 머신에서: +밸리데이터 ID 키페어가 있는 머신에서: ```bash solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3> \ @@ -123,9 +128,9 @@ solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. `configure` 제출 +### 3. `configure` 제출 -수수료 지불 지갑이 있는 머신에서: +수수료 지불자 지갑이 있는 머신에서: ```bash doublezero-solana shreds publisher-rewards configure \ @@ -135,11 +140,10 @@ doublezero-solana shreds publisher-rewards configure \ --deadline-slot ``` -`--signature`와 `--deadline-slot`은 함께 전달해야 합니다. 값은 2b.i 및 2b.ii 단계에서 생성된 것과 일치해야 합니다. +`--signature`와 `--deadline-slot`은 함께 전달되어야 합니다. 값은 2b.i 및 2b.ii 단계에서 생성된 값과 일치해야 합니다. ATA가 아직 존재하지 않는 경우 동일한 트랜잭션에서 자동으로 초기화됩니다. - 출력 예시 ```bash @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. 구성 확인 - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -이 명령은 `Node ID`, `Rewards owner`, `Rewards mint`, 확인된 ATA 주소, 그리고 ATA 상태를 출력합니다. **Resolved ATA**는 보상 소유자 + 보상 민트에서 파생된 결정론적 주소이며, 매 에포크마다 보상이 입금되는 곳입니다. - ---- - -## 문제 해결 - -### 직접 경로: `-k` 공개키가 `--node-id`와 일치하지 않음 - -전달한 수수료 지불 키페어가 검증자 아이덴티티가 아닙니다. 검증자 아이덴티티 키페어를 `-k`로 전달하거나, [오프체인 경로](#2b-오프체인-경로)로 전환하세요. - -### 서명 만료 - -각 오프체인 서명에는 마감 슬롯이 있습니다. `prepare-offchain-message`와 `configure` 사이에 너무 많은 시간이 경과하면, `prepare-offchain-message`를 다시 실행하고, 다시 서명하고, 다시 제출하세요. 기본 유효 기간은 1시간입니다 — 오프라인 서명 흐름에 더 많은 시간이 필요한 경우 `--valid-for 4h` 등으로 연장하세요. \ No newline at end of file +!!! note "참고: 서명이 만료된 경우" + 각 오프체인 서명에는 마감 슬롯이 있습니다. `prepare-offchain-message`와 `configure` 사이에 너무 많은 시간이 경과하면, `prepare-offchain-message`를 다시 실행하고 다시 서명한 후 다시 제출하세요. 기본 유효 기간은 1시간이며, 오프라인 서명 흐름에 더 많은 시간이 필요한 경우 `--valid-for 4h` 등으로 연장할 수 있습니다. \ No newline at end of file diff --git a/docs/Validator Rewards.md b/docs/Validator Rewards.md index 2c721cb..97340e3 100644 --- a/docs/Validator Rewards.md +++ b/docs/Validator Rewards.md @@ -1,6 +1,8 @@ # Validator Rewards !!! warning "By connecting to DoubleZero, I agree to the [DoubleZero Terms of Use](https://doublezero.xyz/terms-protocol)" +## How it Works + Validators that publish leader shreds to DoubleZero Edge earn rewards each epoch. Before rewards can be paid, each validator must register **where** rewards go by configuring a `ValidatorPublisherRewards` account on Solana. That account stores: - the **rewards mint** — the token rewards are paid in 2z (unless manually changed) @@ -17,20 +19,10 @@ The `configure` command will set these fields, and automatic payouts will occur - Access to the **validator identity keypair**, either on the same box or kept offline with the ability to sign a message. - A destination wallet pubkey that will own the rewards ATA. ---- - -## 1. Choose an Auth Path - -Configuring the rewards account requires authorization from the validator identity key. There are two ways to provide it: - -| Path | When to use | -|---|---| -| **Direct** | The validator identity keypair is on the box you're running commands from.| -| **Offchain** | The validator identity keypair is kept offline or on a separate machine from the fee-payer wallet. | --- -## 2a. Direct Path +## 1. Configure to Claim Rewards Run `configure` with the validator identity keypair as `-k`. @@ -61,15 +53,28 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf The ATA is auto-initialized in the same transaction if it doesn't yet exist. -Skip ahead to [step 3](#3-verify-the-configuration). + +!!! note "If Error is Returned" + If `-k` pubkey does not match `--node-id` + + The fee-payer keypair you passed isn't the validator identity. Either pass the validator identity keypair as `-k`, or switch to the [offchain path](#apendix-offchain-path-alternative). +--- + +## 2. Verify the Configuration + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +The command prints the `Node ID`, `Rewards owner`, `Rewards mint`, the resolved ATA address, and the ATA status. The **Resolved ATA** is the deterministic address derived from the rewards owner + rewards mint — it is where rewards will be deposited each epoch. --- -## 2b. Offchain Path +## Apendix: Offchain Path Alternative Three sub-steps: prepare, sign, configure. -### 2b.i. Prepare the offchain message +### 1. Prepare the offchain message Run this anywhere — it's read-only and does not need the validator identity keypair. It prints the hex blob to sign and the absolute slot the signature expires at. @@ -106,7 +111,7 @@ Then submit: The command prints the hex-encoded auth message, the resolved deadline slot, and ready-to-run shell snippets for the next two steps. -### 2b.ii. Sign the message +### 2. Sign the message On the machine that holds the validator identity keypair: @@ -123,7 +128,7 @@ Example Output SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. Submit `configure` +### 3. Submit `configure` Back on the machine with your fee-payer wallet: @@ -139,7 +144,6 @@ doublezero-solana shreds publisher-rewards configure \ The ATA is auto-initialized in the same transaction if it doesn't yet exist. - Example Output ```bash @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. Verify the Configuration - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -The command prints the `Node ID`, `Rewards owner`, `Rewards mint`, the resolved ATA address, and the ATA status. The **Resolved ATA** is the deterministic address derived from the rewards owner + rewards mint — it is where rewards will be deposited each epoch. - ---- - -## Troubleshooting - -### Direct path: `-k` pubkey does not match `--node-id` - -The fee-payer keypair you passed isn't the validator identity. Either pass the validator identity keypair as `-k`, or switch to the [offchain path](#2b-offchain-path). - -### Signature expired - -Each offchain signature has a deadline slot. If too much time passes between `prepare-offchain-message` and `configure`, re-run `prepare-offchain-message`, re-sign, and re-submit. Default validity is 1 hour — extend with `--valid-for 4h` or similar if you need more time for an offline signing flow. +!!! note "Note: If Signature is Expired" + Each offchain signature has a deadline slot. If too much time passes between `prepare-offchain-message` and `configure`, re-run `prepare-offchain-message`, re-sign, and re-submit. Default validity is 1 hour — extend with `--valid-for 4h` or similar if you need more time for an offline signing flow. diff --git a/docs/Validator Rewards.pt.md b/docs/Validator Rewards.pt.md index ea20d23..f05df4d 100644 --- a/docs/Validator Rewards.pt.md +++ b/docs/Validator Rewards.pt.md @@ -1,36 +1,28 @@ -# Recompensas de Validadores -!!! warning "Ao conectar-se ao DoubleZero, concordo com os [Termos de Uso do DoubleZero](https://doublezero.xyz/terms-protocol)" +# Recompensas para Validadores +!!! warning "Ao conectar-se ao DoubleZero, eu concordo com os [Termos de Uso do DoubleZero](https://doublezero.xyz/terms-protocol)" -Os validadores que publicam leader shreds no DoubleZero Edge recebem recompensas a cada epoch. Antes que as recompensas possam ser pagas, cada validador deve registrar **para onde** as recompensas vão, configurando uma conta `ValidatorPublisherRewards` na Solana. Essa conta armazena: +## Como Funciona -- o **mint de recompensas** — o token em que as recompensas são pagas `2z` (a menos que seja alterado manualmente) +Validadores que publicam leader shreds no DoubleZero Edge recebem recompensas a cada epoch. Antes que as recompensas possam ser pagas, cada validador deve registrar **para onde** as recompensas serão enviadas, configurando uma conta `ValidatorPublisherRewards` na Solana. Essa conta armazena: + +- o **mint de recompensas** — o token em que as recompensas são pagas 2z (a menos que seja alterado manualmente) - o **proprietário das recompensas** — a carteira que possui a Associated Token Account (ATA) que recebe as recompensas -O comando `configure` definirá esses campos, e os pagamentos automáticos ocorrerão a cada epoch a partir de então. Você pode executar `configure` novamente posteriormente para alterar qualquer um dos campos. +O comando `configure` definirá esses campos, e os pagamentos automáticos ocorrerão epoch por epoch a partir de então. Você pode executar `configure` novamente posteriormente para alterar qualquer um dos campos. !!! info "Se você ainda não completou o [Setup](setup.md), a [Conexão do Validador à Mainnet-Beta](DZ%20Mainnet-beta%20Connection.md) e a [Conexão Multicast do Validador](Validator%20Multicast%20Connection.md), faça isso primeiro." ## Pré-requisitos -- Validadores publicando leader shreds - veja [Conexão Multicast do Validador](Validator%20Multicast%20Connection.md). -- O CLI `doublezero-solana` mais recente: `sudo apt update && sudo apt install doublezero-solana`, no mínimo `0.5.6`. +- Validadores publicando leader shreds - consulte [Conexão Multicast do Validador](Validator%20Multicast%20Connection.md). +- A versão mais recente do CLI `doublezero-solana`: `sudo apt update && sudo apt install doublezero-solana`, no mínimo `0.5.6`. - Acesso ao **keypair de identidade do validador**, seja na mesma máquina ou mantido offline com a capacidade de assinar uma mensagem. - Uma pubkey de carteira de destino que será proprietária da ATA de recompensas. ---- - -## 1. Escolha um Caminho de Autenticação - -Configurar a conta de recompensas requer autorização da chave de identidade do validador. Existem duas formas de fornecê-la: - -| Caminho | Quando usar | -|---|---| -| **Direto** | O keypair de identidade do validador está na máquina onde você está executando os comandos.| -| **Offchain** | O keypair de identidade do validador é mantido offline ou em uma máquina separada da carteira pagadora de taxas. | --- -## 2a. Caminho Direto +## 1. Configurar para Reivindicar Recompensas Execute `configure` com o keypair de identidade do validador como `-k`. @@ -56,22 +48,35 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf |---|---| | `--node-id` | Pubkey de identidade do nó validador. | | `--rewards-token-owner` | Carteira que será proprietária da ATA receptora. | -| `--rewards-token-mint` | O token da carteira em que as recompensas serão recebidas `2z`. Os tokens suportados também incluem `usdc` e `wsol`. | -| `-k` | Caminho para o keypair de identidade do validador. No caminho direto, a pubkey do keypair deve ser igual a `--node-id` ou o comando retornará erro e informará para mudar para o caminho offchain. | +| `--rewards-token-mint` | O token da carteira em que as recompensas serão recebidas em `2z`. Tokens suportados também incluem `usdc` e `wsol`. | +| `-k` | Caminho para o keypair de identidade do validador. No caminho direto, a pubkey do keypair deve ser igual a `--node-id` ou o comando retornará um erro indicando para mudar para o caminho offchain. | + +A ATA é auto-inicializada na mesma transação se ainda não existir. -A ATA é inicializada automaticamente na mesma transação se ainda não existir. -Pule para o [passo 3](#3-verificar-a-configuracao). +!!! note "Se um Erro for Retornado" + Se a pubkey de `-k` não corresponder a `--node-id` + + O keypair do pagador de taxas que você passou não é a identidade do validador. Passe o keypair de identidade do validador como `-k`, ou mude para o [caminho offchain](#apendix-alternativa-de-caminho-offchain). +--- + +## 2. Verificar a Configuração + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +O comando exibe o `Node ID`, `Rewards owner`, `Rewards mint`, o endereço da ATA resolvido e o status da ATA. A **ATA Resolvida** é o endereço determinístico derivado do proprietário das recompensas + mint de recompensas — é onde as recompensas serão depositadas a cada epoch. --- -## 2b. Caminho Offchain +## Apêndice: Alternativa de Caminho Offchain Três sub-etapas: preparar, assinar, configurar. -### 2b.i. Preparar a mensagem offchain +### 1. Preparar a mensagem offchain -Execute isso em qualquer lugar — é somente leitura e não precisa do keypair de identidade do validador. Ele imprime o blob hexadecimal para assinar e o slot absoluto em que a assinatura expira. +Execute isso em qualquer lugar — é somente leitura e não precisa do keypair de identidade do validador. Ele exibe o blob hex para assinar e o slot absoluto em que a assinatura expira. ```bash doublezero-solana shreds publisher-rewards prepare-offchain-message \ @@ -99,23 +104,23 @@ Then submit: |---|---| | `--node-id` | Pubkey de identidade do nó validador. | | `--rewards-token-owner` | Carteira que será proprietária da ATA receptora. | -| `--rewards-token-mint` | O token da carteira em que as recompensas serão recebidas `2z`. Os tokens suportados também incluem `usdc` e `wsol`. | +| `--rewards-token-mint` | O token da carteira em que as recompensas serão recebidas em `2z`. Tokens suportados também incluem `usdc` e `wsol`. | | `--valid-for` | Tempo de vida da assinatura relativo ao slot atual. Aceita `s`, `m` ou `h`. Padrão: `1h`. | | `--deadline-slot` | Alternativa a `--valid-for`: slot absoluto em que a autorização expira. Mutuamente exclusivo com `--valid-for`. | -| `--json` | Emite JSON (`{ hex, deadline_slot }`) em vez do resumo legível. | +| `--json` | Emite JSON (`{ hex, deadline_slot }`) em vez do resumo legível por humanos. | -O comando imprime a mensagem de autenticação codificada em hexadecimal, o slot de prazo resolvido e trechos de shell prontos para execução para as próximas duas etapas. +O comando exibe a mensagem de autorização codificada em hex, o slot de prazo resolvido e trechos de shell prontos para execução para as próximas duas etapas. -### 2b.ii. Assinar a mensagem +### 2. Assinar a mensagem -Na máquina que contém o keypair de identidade do validador: +Na máquina que possui o keypair de identidade do validador: ```bash solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3> \ --keypair ``` -Isso imprime uma assinatura em base58. +Isso exibe uma assinatura em base58. Exemplo de Saída @@ -123,9 +128,9 @@ Exemplo de Saída SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. Enviar `configure` +### 3. Submeter `configure` -De volta à máquina com sua carteira pagadora de taxas: +De volta na máquina com sua carteira pagadora de taxas: ```bash doublezero-solana shreds publisher-rewards configure \ @@ -137,8 +142,7 @@ doublezero-solana shreds publisher-rewards configure \ `--signature` e `--deadline-slot` devem ser passados juntos. Os valores devem corresponder aos produzidos nas etapas 2b.i e 2b.ii. -A ATA é inicializada automaticamente na mesma transação se ainda não existir. - +A ATA é auto-inicializada na mesma transação se ainda não existir. Exemplo de Saída @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. Verificar a Configuração - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -O comando imprime o `Node ID`, `Rewards owner`, `Rewards mint`, o endereço ATA resolvido e o status da ATA. A **Resolved ATA** é o endereço determinístico derivado do proprietário das recompensas + mint das recompensas — é onde as recompensas serão depositadas a cada epoch. - ---- - -## Solução de Problemas - -### Caminho direto: a pubkey de `-k` não corresponde a `--node-id` - -O keypair pagador de taxas que você passou não é a identidade do validador. Passe o keypair de identidade do validador como `-k`, ou mude para o [caminho offchain](#2b-caminho-offchain). - -### Assinatura expirada - -Cada assinatura offchain tem um slot de prazo. Se passar muito tempo entre `prepare-offchain-message` e `configure`, execute novamente `prepare-offchain-message`, assine novamente e reenvie. A validade padrão é de 1 hora — estenda com `--valid-for 4h` ou similar se precisar de mais tempo para um fluxo de assinatura offline. \ No newline at end of file +!!! note "Nota: Se a Assinatura Estiver Expirada" + Cada assinatura offchain tem um slot de prazo. Se muito tempo passar entre `prepare-offchain-message` e `configure`, execute novamente `prepare-offchain-message`, assine novamente e reenvie. A validade padrão é de 1 hora — estenda com `--valid-for 4h` ou similar se você precisar de mais tempo para um fluxo de assinatura offline. \ No newline at end of file diff --git a/docs/Validator Rewards.zh.md b/docs/Validator Rewards.zh.md index 5fbede6..dbba347 100644 --- a/docs/Validator Rewards.zh.md +++ b/docs/Validator Rewards.zh.md @@ -1,36 +1,28 @@ # 验证者奖励 -!!! warning "连接到 DoubleZero 即表示我同意 [DoubleZero 使用条款](https://doublezero.xyz/terms-protocol)" +!!! warning "连接到 DoubleZero,即表示我同意 [DoubleZero 使用条款](https://doublezero.xyz/terms-protocol)" -将领导者分片(leader shreds)发布到 DoubleZero Edge 的验证者每个纪元(epoch)可获得奖励。在支付奖励之前,每个验证者必须通过在 Solana 上配置一个 `ValidatorPublisherRewards` 账户来注册奖励的**接收地址**。该账户存储以下信息: +## 工作原理 + +将领导者分片(leader shreds)发布到 DoubleZero Edge 的验证者每个纪元(epoch)都会获得奖励。在发放奖励之前,每个验证者必须通过在 Solana 上配置 `ValidatorPublisherRewards` 账户来注册奖励的**接收地址**。该账户存储以下信息: - **奖励代币类型(rewards mint)** — 奖励支付所使用的代币,默认为 2z(除非手动更改) - **奖励所有者(rewards owner)** — 拥有接收奖励的关联代币账户(ATA)的钱包 -`configure` 命令将设置这些字段,之后自动支付将按纪元逐期进行。您可以稍后重新运行 `configure` 来更改任一字段。 +`configure` 命令将设置这些字段,之后将按纪元自动发放奖励。您可以稍后重新运行 `configure` 来更改任一字段。 -!!! info "如果您尚未完成 [安装设置](setup.md)、[验证者主网-Beta 连接](DZ%20Mainnet-beta%20Connection.md) 和 [验证者组播连接](Validator%20Multicast%20Connection.md),请先完成这些步骤。" +!!! info "如果您尚未完成 [设置](setup.md)、[验证者主网-Beta 连接](DZ%20Mainnet-beta%20Connection.md) 和 [验证者多播连接](Validator%20Multicast%20Connection.md),请先完成这些步骤。" ## 前提条件 -- 验证者正在发布领导者分片 - 参见 [验证者组播连接](Validator%20Multicast%20Connection.md)。 +- 验证者正在发布领导者分片 - 请参阅 [验证者多播连接](Validator%20Multicast%20Connection.md)。 - 最新版本的 `doublezero-solana` CLI:`sudo apt update && sudo apt install doublezero-solana`,最低版本 `0.5.6`。 -- 能够访问**验证者身份密钥对**,密钥对可以在同一台机器上,也可以离线保存并具备签名消息的能力。 -- 一个目标钱包公钥,该钱包将拥有奖励 ATA。 - ---- - -## 1. 选择授权路径 +- 能够访问**验证者身份密钥对**,可以在同一台机器上,也可以离线保存并具备签名消息的能力。 +- 一个目标钱包公钥,用于拥有奖励 ATA。 -配置奖励账户需要验证者身份密钥的授权。有两种方式可以提供授权: - -| 路径 | 适用场景 | -|---|---| -| **直接路径(Direct)** | 验证者身份密钥对就在您运行命令的机器上。| -| **离线路径(Offchain)** | 验证者身份密钥对保存在离线环境或与手续费支付钱包不在同一台机器上。 | --- -## 2a. 直接路径 +## 1. 配置以领取奖励 使用验证者身份密钥对作为 `-k` 参数运行 `configure`。 @@ -57,21 +49,34 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf | `--node-id` | 验证者节点身份公钥。 | | `--rewards-token-owner` | 将拥有接收 ATA 的钱包。 | | `--rewards-token-mint` | 奖励将以 `2z` 代币接收的钱包代币类型。支持的代币还包括 `usdc` 和 `wsol`。 | -| `-k` | 验证者身份密钥对的路径。在直接路径中,密钥对的公钥必须与 `--node-id` 一致,否则命令将报错并提示您切换到离线路径。 | +| `-k` | 验证者身份密钥对的路径。在直接路径(direct path)模式下,密钥对的公钥必须与 `--node-id` 一致,否则命令将报错并提示您切换到离线路径(offchain path)。 | 如果 ATA 尚不存在,将在同一笔交易中自动初始化。 -跳转到[步骤 3](#3-验证配置)。 + +!!! note "如果返回错误" + 如果 `-k` 公钥与 `--node-id` 不匹配 + + 您传入的手续费支付者密钥对不是验证者身份。请将验证者身份密钥对作为 `-k` 传入,或切换到[离线路径](#apendix-offchain-path-alternative)。 +--- + +## 2. 验证配置 + +```bash +doublezero-solana shreds publisher-rewards show --node-id +``` + +该命令将打印 `Node ID`、`Rewards owner`、`Rewards mint`、解析后的 ATA 地址以及 ATA 状态。**Resolved ATA** 是由奖励所有者 + 奖励代币类型确定性派生的地址 — 每个纪元的奖励将存入该地址。 --- -## 2b. 离线路径 +## 附录:离线路径替代方案 三个子步骤:准备、签名、配置。 -### 2b.i. 准备离线消息 +### 1. 准备离线消息 -可以在任何地方运行此命令 — 这是只读操作,不需要验证者身份密钥对。它会打印需要签名的十六进制数据以及签名过期的绝对槽位(slot)。 +可在任何地方运行此命令 — 它是只读的,不需要验证者身份密钥对。它会打印需要签名的十六进制数据以及签名过期的绝对槽位(slot)。 ```bash doublezero-solana shreds publisher-rewards prepare-offchain-message \ @@ -100,22 +105,22 @@ Then submit: | `--node-id` | 验证者节点身份公钥。 | | `--rewards-token-owner` | 将拥有接收 ATA 的钱包。 | | `--rewards-token-mint` | 奖励将以 `2z` 代币接收的钱包代币类型。支持的代币还包括 `usdc` 和 `wsol`。 | -| `--valid-for` | 相对于当前槽位的签名有效期。接受 `s`、`m` 或 `h`。默认值:`1h`。 | +| `--valid-for` | 相对于当前槽位的签名有效期。接受 `s`、`m` 或 `h` 格式。默认值:`1h`。 | | `--deadline-slot` | `--valid-for` 的替代选项:授权过期的绝对槽位。与 `--valid-for` 互斥。 | -| `--json` | 输出 JSON(`{ hex, deadline_slot }`)而非人类可读的摘要。 | +| `--json` | 输出 JSON 格式(`{ hex, deadline_slot }`)而非人类可读的摘要。 | -该命令会打印十六进制编码的授权消息、解析后的截止槽位,以及可直接运行的后续两个步骤的 shell 命令片段。 +该命令打印十六进制编码的授权消息、解析后的截止槽位,以及后续两个步骤的可直接运行的 shell 命令片段。 -### 2b.ii. 签名消息 +### 2. 签名消息 -在持有验证者身份密钥对的机器上: +在持有验证者身份密钥对的机器上运行: ```bash solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3> \ --keypair ``` -此命令会打印一个 base58 编码的签名。 +此命令将打印一个 base58 编码的签名。 示例输出 @@ -123,9 +128,9 @@ solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp ``` -### 2b.iii. 提交 `configure` +### 3. 提交 `configure` -回到持有手续费支付钱包的机器上: +回到拥有手续费支付者钱包的机器上: ```bash doublezero-solana shreds publisher-rewards configure \ @@ -135,11 +140,10 @@ doublezero-solana shreds publisher-rewards configure \ --deadline-slot ``` -`--signature` 和 `--deadline-slot` 必须同时传递。其值必须与步骤 2b.i 和 2b.ii 中生成的值一致。 +`--signature` 和 `--deadline-slot` 必须一起传入。其值必须与步骤 2b.i 和 2b.ii 中生成的值匹配。 如果 ATA 尚不存在,将在同一笔交易中自动初始化。 - 示例输出 ```bash @@ -154,22 +158,5 @@ Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf --- -## 3. 验证配置 - -```bash -doublezero-solana shreds publisher-rewards show --node-id -``` - -该命令会打印 `Node ID`、`Rewards owner`、`Rewards mint`、解析后的 ATA 地址以及 ATA 状态。**Resolved ATA** 是由奖励所有者 + 奖励代币类型推导出的确定性地址 — 每个纪元的奖励将存入该地址。 - ---- - -## 故障排除 - -### 直接路径:`-k` 公钥与 `--node-id` 不匹配 - -您传入的手续费支付密钥对不是验证者身份密钥对。请将验证者身份密钥对作为 `-k` 传入,或切换到[离线路径](#2b-离线路径)。 - -### 签名已过期 - -每个离线签名都有一个截止槽位。如果在 `prepare-offchain-message` 和 `configure` 之间间隔时间过长,请重新运行 `prepare-offchain-message`,重新签名并重新提交。默认有效期为 1 小时 — 如果您的离线签名流程需要更多时间,可以使用 `--valid-for 4h` 或类似参数来延长有效期。 \ No newline at end of file +!!! note "注意:如果签名已过期" + 每个离线签名都有一个截止槽位。如果从 `prepare-offchain-message` 到 `configure` 之间经过了太长时间,请重新运行 `prepare-offchain-message`、重新签名并重新提交。默认有效期为 1 小时 — 如果您的离线签名流程需要更多时间,可以使用 `--valid-for 4h` 或类似参数来延长有效期。 \ No newline at end of file