Skip to main content
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

  1. slot (número, obrigatório): O número do slot do bloco para consultar (u64).
  2. 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.

Exemplo: Buscando Informações de Bloco

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.