Staking & Delegação
Contas de stake, delegação e warmup/cooldown. Este guia tem como alvo validadores Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1 e clientes @solana/kit 7.0.0.
Receita
Cartão de receita de referência rápida.
solana config set --url devnet
solana balanceimport { createSolanaRpc } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");Quando usar isto:
- Implementando ou depurando staking e delegação em caminhos de produção
- Ensinando o conceito a engenheiros novos em Solana
- Auditando se sua pilha corresponde ao comportamento da era Agave 4.1
Exemplo de Trabalho
import { createSolanaRpc, address } from "@solana/kit";
const rpc = createSolanaRpc("https://api.devnet.solana.com");
const slot = await rpc.getSlot().send();
const sig = "COLE_ASSINATURA_APÓS_SUA_TX";
const tx = await rpc
.getTransaction(sig, { encoding: "json", maxSupportedTransactionVersion: 0 })
.send();
console.log({ slot, err: tx?.meta?.err, cu: tx?.meta?.computeUnitsConsumed });use anchor_lang::prelude::*;
#[program]
pub mod demo {
use super::*;
pub fn log_slot(_ctx: Context<LogSlot>) -> Result<()> {
let clock = Clock::get()?;
msg!("slot: {}", clock.slot);
Ok(())
}
}
#[derive(Accounts)]
pub struct LogSlot {}O que isto demonstra:
- Padrões de acesso RPC com @solana/kit 7.0.0
- Lendo metadados de execução (erros, CU) de transações confirmadas
- Acesso a sysvar on-chain em programas Anchor 0.32.1
Mergulho Profundo
Como Funciona
- Contas de stake, delegação e warmup/cooldown.
- O modelo de conta da Solana requer listas explícitas de contas por instrução
- Sealevel executa transações não conflitantes em paralelo
Notas do Agave 4.1.1
- Semânticas de confirmação seguem a votação TowerBFT com ordenação PoH
- Alpenglow (Votor + Rotor) está sendo lançado para finalidade mais rápida - veja a seção Consensus
- Desenvolvimento local: Surfpool 0.12.0 e LiteSVM 0.6.x
Notas de Rust
// Use matemática verificada e restrições explícitas em programas
require!(amount > 0, MyError::InvalidAmount);Armadilhas
- Snippets legados do web3.js v1 - A API difere do Kit. Correção: use @solana/kit 7.0.0.
- Cluster errado - Discrepância devnet vs mainnet. Correção: alinhe CLI, RPC, carteira, explorador.
- Valores SOL em ponto flutuante - perda de precisão. Correção: bigint lamports de ponta a ponta.
- Blockhash expirado - txs descartadas. Correção: re-busque blockhash e re-assine.
- CU Insuficiente - OOM ou orçamento excedido. Correção: otimize o programa + defina o Orçamento de Computação.
- Verificações de proprietário ausentes - explorações de conta gravável. Correção: restrições Anchor em toda conta mut.
Alternativas
| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
| @solana/kit 7.0.0 | Novos clientes TypeScript | Mantendo código legado temporariamente |
| Solana CLI 3.0.10 | Operações e sondagens rápidas | Assinatura de transação em produção em escala |
| Surfpool 0.12.0 | Testes de integração Anchor | Implantação de produção |
| LiteSVM 0.6.x | Testes unitários rápidos | Validação de comportamento de rede completo |
FAQs
Como isso se aplica no Agave 4.1.1?
As épocas do Agave 4.1.1 acumulam recompensas para o stake ativo — a delegação entra em vigor após o warmup e a desativação tem cooldown.
Qual versão do Solana CLI devo usar?
Use Solana CLI 3.0.10, que emparelha com Agave 4.1.1. Instale com agave-install init 4.1.1 (ou o arquivo de pin da sua equipe), então verifique com solana --version e agave-install --version.
Devo usar @solana/kit ou web3.js?
Use @solana/kit 7.0.0 para novos TypeScript — métodos RPC tipados, superfície de API menor e exemplos nesta página já usam Kit. Mantenha web3.js apenas para bases de código legadas; migre chamadas RPC e construção de transações incrementalmente.
Qual nível de compromisso é recomendado?
Use confirmed para painéis e finalized antes de saques ou callbacks entre sistemas.
Como depuro falhas relacionadas?
Verifique getStakeActivation para o estado (active, activating, deactivating). Conta de voto incorreta significa zero recompensas.
Isso funciona no devnet?
Sim — os programas de staking e governança são implantados no devnet com épocas de teste. A economia difere (sem valor real), mas as formas das instruções correspondem ao mainnet.
Como as unidades de computação afetam isso?
As instruções do programa de stake têm custos de CU fixos — txs de dApp normais não as incluem, a menos que você crie uma UX de staking.
Qual é o padrão do Anchor 0.32.1?
Os padrões do Anchor 0.32.1 se aplicam quando você escreve programas on-chain: contas tipadas, guardas require! e geração de IDL — use avm use 0.32.1 e anchor-lang = "0.32.1" em Cargo.toml.
Como testar com Surfpool 0.12.0?
Inicie o Surfpool 0.12.0, aponte o RPC para sua porta e execute anchor test ou scripts de integração do cliente contra contas forjadas.
O LiteSVM 0.6.x pode cobrir isso?
Carregue fixtures de stake e voto no LiteSVM; transições de época são manuais, a menos que você as escale.
O que mudou na era Agave?
O cliente validador foi renomeado para Agave (4.1.1), o CLI 3.0.10 se alinha a ele e o trabalho do Alpenglow está mudando a finalidade — fixe as versões e leia as notas de lançamento a cada atualização.
Onde encontro métodos RPC relacionados?
getStakeActivation, getVoteAccounts, getInflationReward e getEpochInfo.
Relacionado
- Navegue por outras páginas na seção
economics-tokenomics-governancepara tópicos complementares - Solana Basics - orientação de conta e transação
Versões da Pilha: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0 e LiteSVM 0.6.x.