Introdução ao Alpenglow
O design Votor + Rotor e metas de finalidade de ~100–150 ms. 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 a introdução do alpenglow em caminhos de produção
- Ensinando o conceito a engenheiros novos no 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 = "PASTE_SIGNATURE_AFTER_YOUR_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
- Leitura de metadados de execução (erros, CU) de transações confirmadas
- Acesso a sysvars on-chain em programas Anchor 0.32.1
Mergulho Profundo
Como Funciona
- O design Votor + Rotor e metas de finalidade de ~100–150 ms.
- O modelo de conta do 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 implementado 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: lamports bigint 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 todas as contas 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ções 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 completa do comportamento da rede |
FAQs
Como isso se aplica no Agave 4.1.1?
O Agave 4.1.1 envia TowerBFT hoje enquanto os componentes Alpenglow são implementados - monitore SIMD e notas de lançamento para ativação de recursos em seu cluster.
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) e 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 UX que tolera garfos raros; use finalized antes de pagamentos irreversíveis ou mensagens de ponte. Reavalie os tempos limite durante a implantação do Alpenglow.
Como depuro falhas relacionadas?
Durante a migração, compare as latências confirmed vs finalized em seu cliente. Não assuma que as constantes de tempo limite antigas permanecem válidas.
Isso funciona no devnet?
Sim - aponte CLI e RPC para https://api.devnet.solana.com. O comportamento corresponde ao mainnet; apenas os dados da conta e a economia diferem.
Como as unidades de computação afetam isso?
Mudanças de consenso não alteram as CUs do programa; elas mudam quanto tempo você deve esperar em cada nível de compromisso.
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?
Surfpool ajuda a testar scripts de polling do cliente contra estado forked; ele não simula os internos de votação do validador.
O LiteSVM 0.6.x pode cobrir isso?
LiteSVM não simula a votação Alpenglow - teste as suposições de finalidade contra o RPC devnet/mainnet em vez disso.
O que mudou na era Agave?
O cliente validador foi renomeado para Agave (4.1.1), a 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?
getSignatureStatuses com searchTransactionHistory e getBlockHeight específicos de compromisso ajudam a medir os novos tempos de finalidade.
Relacionado
- Navegue por outras páginas na seção
consensus-alpenglowpara tópicos complementares - Noções Básicas do Solana - 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.