O número de bloco no Ethereum indica uma altura de bloco. O hash de bloco é derivado dos dados do bloco, enquanto o timestamp informa seu horário. Esses campos respondem a perguntas diferentes, mesmo quando aparecem juntos no mesmo registro.
A distinção é útil ao consultar o estado de uma conta. Uma solicitação de saldo precisa de mais contexto do que apenas um endereço: o parâmetro de bloco determina a altura solicitada. Escolher um número explícito deixa essa seleção visível, permitindo que outra pessoa entenda posteriormente a qual altura a consulta se referia.
Número e hash de bloco descrevem coisas diferentes
Para consultas de estado, a documentação JSON-RPC do Ethereum explica que o parâmetro de bloco determina a altura do bloco. O número funciona, portanto, como uma seleção de altura. O hash tem outra relação com o registro: ele é derivado criptograficamente dos dados do bloco.
O objeto de bloco documentado na JSON-RPC representa seu hash com 32 bytes. Existe uma exceção explícita para blocos pendentes, nos quais o campo de hash é null. Mantenha essa ressalva junto à definição do campo, em vez de esperar um hash preenchido em toda resposta que apresente a estrutura de um bloco.
Ao examinar um registro, identifique o número e o hash separadamente. Ao lado do número, pergunte: qual altura foi selecionada? Ao lado do hash: qual hash de bloco esta resposta informou? Assim, as duas funções permanecem claras, sem transformar uma altura em promessa de identidade irreversível do bloco.
A explicação primária sobre a relação entre hash e dados está na documentação de blocos do Ethereum. Aqui, essa relação serve para distinguir os campos; o objetivo não é apresentar um guia de confirmações ou finalização.
Por que o timestamp difere da altura
O campo timestamp do objeto de bloco informa o timestamp Unix correspondente ao momento em que o bloco foi montado. Ele descreve o horário do bloco, enquanto a altura identifica a seleção feita pela consulta de estado. Também deve ficar separado de uma anotação sobre quando você obteve a resposta.
O Ethereum divide o tempo em intervalos de doze segundos chamados slots. Porém, a documentação explica que um slot pode ficar vazio quando o validador está offline no momento em que é chamado a propor um bloco. Assim, a existência de slots de doze segundos não garante um intervalo de doze segundos entre cada par de blocos produzidos.
Dessas duas premissas decorre uma dedução limitada: multiplicar uma quantidade de blocos por doze segundos não garante recuperar o timestamp de um bloco. Isso não significa que todos os intervalos sejam diferentes, nem fornece uma fórmula alternativa para reconstruir horários. Em um exercício de leitura sobre determinado bloco, mantenha o timestamp informado ao lado do número, em vez de substituir um pelo outro com uma estimativa de intervalo fixo.
Como selecionar uma altura em uma consulta de estado
O parâmetro de bloco aceita um número inteiro de bloco codificado como uma string hexadecimal. As quantidades na JSON-RPC usam representação hexadecimal compacta com o prefixo 0x. Nos exemplos hipotéticos abaixo, a altura decimal 1.024 é escrita como 0x400.
Já a etiqueta latest seleciona o bloco proposto mais recente no contexto do nó que responde. Separadamente, eth_blockNumber retorna o número do bloco atual em que o cliente se encontra. Trate esse resultado como uma observação relativa ao cliente, sem considerá-lo uma medição de toda a rede estabelecida de forma independente.
Essas definições sustentam outra dedução: manter um parâmetro inteiro explícito preserva a altura solicitada entre consultas, enquanto repetir latest repete uma seleção relativa. A conclusão diz respeito à altura pedida. Ela não garante identidade imutável do bloco, respostas idênticas ou valores diferentes em duas alturas selecionadas.
As descrições dos métodos e as convenções dos parâmetros estão na documentação JSON-RPC do Ethereum. Essa evidência estabelece o mecanismo de seleção; a explicação aqui não estabelece quais alturas históricas um provedor específico consegue atender.
Separe o registro do bloco da pergunta sobre o estado
eth_getBlockByNumber retorna informações sobre um bloco selecionado por número. Essa função ajuda a distinguir uma solicitação do registro do bloco de uma solicitação do saldo de uma conta em determinada altura.
eth_getBalance retorna o saldo da conta no endereço especificado. Seu resultado deve ser interpretado junto ao endereço e ao parâmetro de bloco escolhido. Esse método não é uma consulta genérica de saldo de tokens; por isso, o exemplo permanece restrito à leitura do saldo de uma conta.
Para consultas a contratos, eth_call também está entre os métodos que aceitam um parâmetro de bloco. Ele executa uma chamada de mensagem sem criar uma transação na blockchain. Essa descrição explica como a chamada é realizada, mas não garante que uma chamada arbitrária retorne com sucesso.
Para uma leitura complementar sobre a apresentação de campos de uma transação, consulte o guia de como ler uma transação Ethereum em um explorador de blocos. Neste artigo, o foco continua sendo selecionar e registrar a altura de uma consulta.
Dois registros hipotéticos de consulta
Imagine uma ficha de estudo para uma rede definida no exercício e uma Conta A. Todos os valores deste exemplo são inventados. Nenhuma solicitação foi executada, e a ficha não representa dados reais de uma conta.
- Registro A: método
eth_getBalance; endereço Conta A; parâmetro de bloco0x400, correspondente à altura decimal 1.024; resultado deixado em branco. - Registro B: método
eth_getBalance; endereço Conta A; parâmetro de blocolatest; resultado deixado em branco.
O Registro A solicita o saldo da conta com uma seleção explícita de altura. O Registro B usa a seleção do bloco proposto mais recente. Deixar os resultados em branco ajuda a isolar o mecanismo: as solicitações têm instruções diferentes de seleção antes mesmo de qualquer resposta numérica ser considerada.
Agora, acrescente à ficha um registro separado do bloco na altura 1.024, com espaços para o hash e o timestamp retornados. Mantenha esses campos separados da resposta de saldo. Essa organização conecta a altura, o registro do bloco e a pergunta sobre o estado, sem tratar timestamp ou hash como outra forma de escrever a altura.
Se a ficha for consultada novamente, preserve os parâmetros originais e registre qualquer nova observação separadamente. O exemplo não pressupõe que os resultados tenham de ser diferentes, que consultas históricas estejam disponíveis ou que manter a altura garanta uma identidade de bloco inalterada.
Checklist para interpretar uma consulta registrada
- Identifique separadamente o número do bloco, o hash do bloco e o timestamp.
- Anote o método e o endereço da conta ou os dados de entrada da chamada examinada.
- Preserve o parâmetro inteiro exato ou a etiqueta relativa utilizada.
- Ao exibir uma altura hexadecimal em decimal, deixe clara a correspondência entre as representações.
- Diferencie uma resposta com informações do bloco de uma resposta a uma consulta de estado.
- Mantenha a altura solicitada separada de afirmações sobre disponibilidade no provedor ou identidade imutável do bloco.
Material educativo preparado com auxílio de IA. A ficha é hipotética e ilustra como interpretar o contexto de uma consulta.