getBlock RPC permite que você recupere informações detalhadas sobre um bloco confirmado no ledger do Solana. Isso é essencial para exploradores de blocos, análise do histórico de transações e compreensão do estado da cadeia em um ponto específico no tempo.
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 a 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.processednão é suportado para este método. O padrão éfinalized.encoding(string, opcional): A codificação para dados de transação. O padrão éjsonsetransactionDetailsforfullouaccounts, caso contráriobase64.json: Retorna dados de transações e contas em formato JSON (obsoleto em favor dejsonParsed).jsonParsed: Retorna dados de transações e contas como JSON analisado. Isso é recomendado, pois inclui todas as chaves de contas de transações (incluindo aquelas das Tabelas de Consulta de Endereços).base58(lento)base64base64+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 da transação.
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 da transação a ser retornada. Se o bloco contiver uma transação com uma versão superior, a solicitação falhará com o erro JSON-RPC-32015. Se omitido, apenas transações legadas serão retornadas, e um bloco com qualquer transação versionada causará um erro. Defina como1para incluir transações legadas, v0 (Tabelas de Consulta de Endereços) e v1. Veja Suporte à Transação v1.
Resposta
Se o bloco especificado for confirmado e encontrado, o camporesult será um objeto contendo informações sobre o bloco. Se o bloco não for encontrado ou não 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âmetrosencodingetransactionDetails.- Cada objeto de transação normalmente contém
meta(metadados como taxa, status, logs, saldos pré/pós) etransaction(os dados reais da transação, incluindo mensagem e assinaturas).
- Cada objeto de transação normalmente contém
rewards(array, opcional): Um array de objetos de recompensa, presente serewards: truefoi especificado. Cada objeto detalhapubkey,lamports,postBalance,rewardType, e potencialmentecommission.blockTime(número | null): O tempo estimado de produção do bloco como um timestamp Unix (segundos desde a época), ounullse não estiver disponível.blockHeight(número | null): A altura deste bloco (número de blocos antes dele na cadeia originária do slot 0), ounullse não estiver disponível.
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 saiba que existe na 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 do Bloco: Lembre-se de que
getBlockleva um númeroslotcomo entrada, não necessariamente uma altura de bloco. Embora os slots sejam sequenciais, alguns slots podem ser pulados por líderes. O campoblockHeightna 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 Consulta de Endereços), você deve definirmaxSupportedTransactionVersion: 1(ou uma versão superior se surgir um novo padrão). Esquecer isso resultará em erros para a maioria dos blocos modernos.- Escolhendo
transactionDetails:fullé necessário para a maioria das análises detalhadas, mas retorna mais dados.signaturesé útil se você só precisar listar transações em um bloco.accountspode ser um meio-termo se você precisar ver quais contas estavam envolvidas sem buscar todos os dados de instruções.noneé raro, mas pode ser usado se você só se importar com metadados em nível de bloco, comoblockhashourewards.
jsonParsedé Recomendado para Codificação: Ao solicitar detalhes de transações,jsonParsedfornece a saída mais amigável ao desenvolvedor e resolve corretamente as contas das Tabelas de Consulta de Endereços, quejson(obsoleto) não faz.- Indisponibilidade do Bloco: Um resultado
nullsignifica que o bloco naquele slot não foi encontrado. Isso pode ocorrer porque o slot foi pulado, o bloco não foi confirmado no nível especificado pelo seucommitment, ou o nó RPC removeu esse bloco histórico de seu ledger (comum para slots mais antigos). - Informações de Recompensa: Ajustar
rewards: trueé necessário para ver a distribuição de recompensas de bloco para o validador (e potencialmente stakeholders, dependendo do tipo de recompensa). Isso aumenta o tamanho da resposta. - Compreendendo a Estrutura do Bloco: Para uma compreensão mais profunda de como os blocos se encaixam na arquitetura do Solana, veja Compreendendo Slots, Blocos e Épocas no Solana.