Sealevel
Execução paralela de contratos inteligentes. 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 sealevel em caminhos de produção
- Ensinando o conceito para 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_SEU_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 sysvars on-chain em programas Anchor 0.32.1
Análise Profunda
Como Funciona
- Execução paralela de contratos inteligentes.
- O modelo de contas 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 de Consenso
- Desenvolvimento local: Surfpool 0.12.0 e LiteSVM 0.6.x
Notas do Rust
// Use matemática verificada e restrições explícitas nos 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 o blockhash e re-assine.
- CU Insuficiente - OOM ou orçamento excedido. Correção: otimize o programa + defina o Orçamento de Computação.
- Faltam verificações de proprietário - Explorações de contas graváveis. 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ções em produção em escala |
| Surfpool 0.12.0 | Testes de integração Anchor | Implantação em 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 runtime do Agave 4.1.1 agenda transações que tocam conjuntos de contas disjuntos concorrentemente — projete programas para minimizar a contenção de contas quentes.
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 commit é recomendado?
Use confirmed para painéis e finalized antes de saques ou callbacks entre sistemas.
Como depuro falhas relacionadas?
Falhas de paralelismo aparecem como erros de bloqueio de conta ou ordenação inesperada quando as contas se sobrepõem. Simule com a lista exata de contas que sua instrução usa.
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?
CU mede por transação durante a execução do Sealevel — otimize loops quentes e evite cargas de conta desnecessárias para permanecer dentro do orçamento.
Qual é o padrão do Anchor 0.32.1?
Anchor 0.32.1 usa #[program], Context<T> e #[derive(Accounts)] com restrições mut/signer explícitas — execute anchor build e anchor test em 0.32.1 via avm use 0.32.1.
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?
LiteSVM 0.6.x executa a execução estilo Sealevel para testes unitários, incluindo semânticas de bloqueio de conta para escritas sobrepostas.
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?
simulateTransaction com replaceRecentBlockhash mostra o consumo de CU e erros de bloqueio de conta antes do envio.
Relacionado
- Navegue por outras páginas na seção
core-architecture-componentspara tópicos complementares - Fundamentos da 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.