Recompensas para Validadores
Ao conectar-se ao DoubleZero, eu concordo com os Termos de Uso do DoubleZero
Como Funciona
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 epoch por epoch a partir de então. Você pode executar configure novamente posteriormente para alterar qualquer um dos campos.
Se você ainda não completou o Setup, a Conexão do Validador à Mainnet-Beta e a Conexão Multicast do Validador, faça isso primeiro.
Pré-requisitos
- Validadores publicando leader shreds - consulte Conexão Multicast do Validador.
- A versão mais recente do CLI
doublezero-solana:sudo apt update && sudo apt install doublezero-solana, no mínimo0.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. Configurar para Reivindicar Recompensas
Execute configure com o keypair de identidade do validador como -k.
doublezero-solana shreds publisher-rewards configure \
--node-id <ValidatorIdentity111111111111111111111111111> \
--rewards-token-owner <Wallet567Identity111111111111111111111111111> \
-k <path-to-validator-identity-keypair.json>
Shred subscription - Configure Validator Publisher Rewards
Node ID: ValidatorIdentity111111111111111111111111111
Rewards owner: ValidatorIdentity111111111111111111111111111
Rewards mint: J6pQQ3FAcJQeWPPGppWRb4nM8jU3wLyYbRrLh7feMfvd
Rewards ATA: 11111111111Pt3PatTj59dG5BhYuqPb9QJDUr1111111
Auth path: direct
Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf11111112jjzBJsr1B2JrTRff4dSGe1pdM1111111TMADi3Nz
Configured validator publisher rewards: exibe o txt que você pode visualizar em um explorador de blocos.
| Flag | Descrição |
|---|---|
--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 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.
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.
2. Verificar a Configuração
doublezero-solana shreds publisher-rewards show --node-id <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.
Apêndice: Alternativa de Caminho Offchain
Três sub-etapas: preparar, assinar, configurar.
1. Preparar a mensagem offchain
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.
doublezero-solana shreds publisher-rewards prepare-offchain-message \
--node-id <ValidatorIdentity111111111111111111111111111> \
--rewards-token-owner <Wallet567Identity111111111111111111111111111> \
--valid-for 1h
Hex message: 123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3
Deadline slot: 422954444
Sign with:
solana sign-offchain-message 123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3 --keypair <validator-identity>
Then submit:
doublezero-solana shreds publisher-rewards configure \
--node-id ValidatorIdentity111111111111111111111111111 --rewards-token-mint J6pQQ3FAcJQeWPPGppWRb4nM8jU3wLyYbRrLh7feMfvd --rewards-token-owner Wallet567Identity111111111111111111111111111 \
--deadline-slot 422954444 --signature <BASE58>
| Flag | Descrição |
|---|---|
--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 em 2z. Tokens suportados também incluem usdc e wsol. |
--valid-for |
Tempo de vida da assinatura relativo ao slot atual. Aceita <n>s, <n>m ou <n>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 por humanos. |
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.
2. Assinar a mensagem
Na máquina que possui o keypair de identidade do validador:
solana sign-offchain-message <123457fc138f556a2578bdb079dc923342cc4e4a376683dc4c6cb923051e0be3> \
--keypair <path-to-validator-identity-keypair.json>
Isso exibe uma assinatura em base58.
Exemplo de Saída
SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp
3. Submeter configure
De volta na máquina com sua carteira pagadora de taxas:
doublezero-solana shreds publisher-rewards configure \
--node-id <ValidatorIdentity111111111111111111111111111> \
--rewards-token-owner <Wallet567Identity111111111111111111111111111> \
--signature <SignatureTBUwGq511mPLMCEE4f5fNsmX1PQrozXBBJeCdSrcbhqSX1MwFp8NsNZbhCNMZ1kPWakjsLL9e3GUxxp> \
--deadline-slot <DEADLINE_SLOT>
--signature e --deadline-slot devem ser passados juntos. Os valores devem corresponder aos produzidos nas etapas 2b.i e 2b.ii.
A ATA é auto-inicializada na mesma transação se ainda não existir.
Exemplo de Saída
Shred subscription - Configure Validator Publisher Rewards
Node ID: ValidatorIdentity111111111111111111111111111
Rewards owner: ValidatorIdentity111111111111111111111111111
Rewards mint: J6pQQ3FAcJQeWPPGppWRb4nM8jU3wLyYbRrLh7feMfvd
Rewards ATA: 11111111111Pt3PatTj59dG5BhYuqPb9QJDUr1111111
Auth path: offchain
Configured validator publisher rewards: 41111111ntmoBTnvcKcP1g2a1111111HPoN3z5uf11111112jjzBJsr1B2JrTRff4dSGe1pdM1111111TMADi3Nz
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.