O método RPC getBlock permite que você recupere informações detalhadas sobre um bloco confirmado no ledger Solana. Isso é essencial para exploradores de blocos, análise de histórico de transações e entendimento do estado da cadeia em um ponto específico no tempo.
Evite Agrupamento para Melhor DesempenhoMétodos de arquivamento em lote aumentam significativamente a latência. Lotes com mais de 10 solicitações não são permitidos.
Casos de Uso Comuns
- Inspecionando Conteúdos de Bloco: Veja todas as transações incluídas em um bloco específico.
- Recuperando Hashes de Bloco: Obtenha o blockhash para um determinado slot, o blockhash do seu pai e o slot do pai.
- Verificando Altura e Tempo do Bloco: Descubra a altura de um bloco (seu número de sequência) e seu tempo estimado de produção.
- Analisando Detalhes de Transação: Com parâmetros apropriados, você pode obter dados completos de transações, incluindo metadados como taxas, status, saldos pré/pós e instruções internas.
- Buscando Recompensas: Inclua opcionalmente informações de recompensa para o bloco.
Parâmetros
-
slot (número, obrigatório): O número do slot do bloco para consultar (u64).
-
config (objeto, opcional): Um objeto de configuração com os seguintes campos:
commitment (string, opcional): Especifica o nível de compromisso a ser usado. processed não é suportado para este método. O padrão é finalized.
encoding (string, opcional): A codificação para dados de transação. O padrão é json se transactionDetails for full ou accounts, caso contrário, base64.
json: Retorna transações e dados de contas em formato JSON (obsoleto em favor de jsonParsed).
jsonParsed: Retorna transações e dados de contas como JSON analisado. Isso é recomendado, pois inclui todas as chaves de conta de transações (incluindo aquelas de Tabelas de Pesquisa de Endereços).
base58 (lento)
base64
base64+zstd
transactionDetails (string, opcional): Especifica o nível de detalhe da transação a ser retornado. O padrão é full.
full: Retorna detalhes completos da transação, incluindo metadados da transação.
accounts: Retorna uma lista de contas detalhadas em cada transação, mas não os dados completos da transação ou metadados.
signatures: Retorna apenas as assinaturas das transações.
none: Não retorna detalhes das transações.
rewards (booleano, opcional): Se deve incluir o array de recompensas na resposta. O padrão é false.
maxSupportedTransactionVersion (número, opcional): A versão máxima de transação a ser retornada. Se o bloco contiver uma transação com uma versão maior, é retornado um erro. Se omitido, apenas transações legadas são retornadas, e um bloco com qualquer transação versionada causará um erro. Defina como 0 para incluir transações versionadas que usam Tabelas de Pesquisa de Endereços.
Resposta
Se o bloco especificado for confirmado e encontrado, o campo result será um objeto contendo informações sobre o bloco. Se o bloco não for encontrado ou não for confirmado, result será null.
Os campos principais no objeto de bloco incluem:
blockhash (string): O blockhash codificado em base-58 para este bloco.
previousBlockhash (string): O blockhash codificado em base-58 do bloco anterior. Se o pai não estiver disponível (devido à limpeza do ledger), isso pode ser o ID do programa do sistema.
parentSlot (número): O número do slot do bloco pai.
transactions (array): Um array de objetos de transação incluídos no bloco. A estrutura desses objetos depende dos parâmetros encoding e transactionDetails.
- Cada objeto de transação normalmente contém
meta (metadados como taxa, status, registros, saldos pré/pós) e transaction (os dados reais da transação, incluindo mensagem e assinaturas).
rewards (array, opcional): Um array de objetos de recompensa, presente se rewards: true foi especificado. Cada objeto detalha o pubkey, lamports, postBalance, rewardType e potencialmente commission.
blockTime (número | nulo): O tempo estimado de produção do bloco como um timestamp Unix (segundos desde a época), ou null se não estiver disponível.
blockHeight (número | nulo): A altura deste bloco (número de blocos antes dele na cadeia originária do slot 0), ou null se não estiver disponível.
Consulte a documentação oficial do RPC Solana para a estrutura completa e detalhada dos objetos de transação e meta dentro da resposta.
Vamos tentar buscar informações para um número de slot ilustrativo no Devnet.
Importante: Os números de slot são processados rapidamente. O número de slot usado abaixo (250000000) é um espaço reservado. Você deve substituí-lo por um slot recente e confirmado que você sabe existir na sua rede de destino (por exemplo, Devnet ou Mainnet) quando executar o exemplo. Você pode encontrar números de slot recentes usando um explorador de blocos Solana.
Nota: Substitua YOUR_API_KEY pela sua chave de API Helius real nos exemplos abaixo.
Dicas para Desenvolvedores
- Slot vs. Altura de Bloco: Lembre-se de que
getBlock aceita um número slot como entrada, não necessariamente uma altura de bloco. Embora os slots sejam sequenciais, alguns slots podem ser pulados por líderes. O campo blockHeight na resposta indica o número real de blocos antes deste.
maxSupportedTransactionVersion é Crucial: Para inspecionar blocos com transações versionadas (que são padrão agora e usam Tabelas de Pesquisa de Endereços), você deve definir maxSupportedTransactionVersion: 0 (ou uma versão superior se um novo padrão surgir). Esquecer isso resultará em erros para a maioria dos blocos modernos.
- Escolhendo
transactionDetails:
full é necessário para a análise mais detalhada, mas retorna mais dados.
signatures é útil se você só precisa listar transações em um bloco.
accounts pode ser um meio-termo se você precisa ver quais contas estavam envolvidas sem buscar todos os dados de instrução.
none é raro, mas pode ser usado se você só se importa com metadados em nível de bloco, como blockhash ou rewards.
jsonParsed é Recomendado para Codificação: Ao solicitar detalhes de transações, jsonParsed fornece a saída mais amigável ao desenvolvedor e resolve corretamente contas de Tabelas de Pesquisa de Endereços, o que json (obsoleto) não faz.
- Indisponibilidade de Bloco: Um resultado
null significa que o bloco naquele slot não foi encontrado. Isso pode ser porque o slot foi pulado, o bloco não foi confirmado ao nível especificado pelo seu commitment, ou o nó RPC removeu esse bloco histórico do seu ledger (comum para slots mais antigos).
- Informações de Recompensas: Definir
rewards: true é necessário para ver a distribuição de recompensas de bloco para o validador (e potencialmente apostadores, dependendo do tipo de recompensa). Isso aumenta o tamanho da resposta.
- Entendendo a Estrutura do Bloco: Para um entendimento mais profundo de como os blocos se encaixam na arquitetura do Solana, veja Entendendo Slots, Blocos e Épocas no Solana.