Mais Sobre o Cabeçalho do Bloco
Antes de explorarmos o cabeçalho do bloco em detalhes, é importante compreender a diferença entre os formatos big endian e little endian.
Little Endian e Big Endian
Primeiro, é necessário entender o que significa endianness.
Endianness refere-se à ordem em que bytes (cada byte equivale a 8 bits) são organizados em tipos de dados maiores na memória do computador.
O formato big endian armazena o byte mais significativo primeiro, o que está alinhado com a forma como os humanos normalmente leem números. Vamos usar o número decimal 234567890 como exemplo e convertê-lo para hexadecimal e binário usando Python e exibir os resultados:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Como os computadores armazenam inteiros usando um número inteiro de bytes, e cada 2 dígitos hexadecimais correspondem a um byte, precisamos de um número par de dígitos. A representação hexadecimal do nosso número, 0xDFB38D2, contém 7 dígitos, então precisamos adicionar zero 0 à esquerda. O número resultante, 0x0DFB38D2, agora possui 8 dígitos hexadecimais (encaixa exatamente em 4 bytes) e o mesmo valor.
Da mesma forma, nosso número binário possui 28 bits, e cada 8 bits correspondem a 1 byte, então precisamos que o número de bits seja divisível por 8, adicionando 4 zeros 0 à esquerda. O número resultante, 0b00001101111110110011100011010010, agora possui 32 bits (encaixa exatamente em 4 bytes) e o mesmo valor.
Usando Python, obtivemos o formato big endian, que também obteríamos se convertêssemos manualmente, e nosso número fica assim:
0x0DFB38D2em hexadecimal;0b00001101111110110011100011010010em binário.
Consulte a tabela abaixo para entender o formato big endian:
Por outro lado, o formato little endian armazena o byte menos significativo primeiro, invertendo a ordem intuitiva:
Como pode ser observado, nosso número no formato little endian fica da seguinte forma:
-
0xD238FB0Dem hexadecimal; -
0b11010010001110001111101100001101em binário.
Retornando ao Cabeçalho do Bloco
Recapitulando, o cabeçalho possui exatamente 80 bytes contendo seis campos de dados, cada um deles no formato little endian. Agora, vamos analisar o cabeçalho do bloco 645536:
Como o cabeçalho do bloco ocupa exatamente 80 bytes, há exatamente 160 dígitos hexadecimais (cada byte corresponde a 2 dígitos hexadecimais). O campo version, por exemplo, ocupa 4 bytes, então há 8 dígitos hexadecimais.
Aqui estão as informações detalhadas sobre este bloco no explorador:
Os campos aqui são exibidos no formato big endian. Vamos analisar o campo bits, por exemplo, e compará-lo com sua representação no cabeçalho do bloco. Sua representação hexadecimal é 0x171007ea no formato big endian:
Se o convertermos para o formato little endian, ficará da seguinte forma:
Como você pode ver, é exatamente isso que tínhamos no cabeçalho do bloco.
1. A que se refere "endianness" no contexto de blockchain e sistemas computacionais?
2. Associe os componentes do bloco com suas definições.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain why little endian is used in the block header?
How do I convert other fields from little endian to big endian?
What is the significance of the "bits" field in the block header?
Awesome!
Completion rate improved to 6.25
Mais Sobre o Cabeçalho do Bloco
Deslize para mostrar o menu
Antes de explorarmos o cabeçalho do bloco em detalhes, é importante compreender a diferença entre os formatos big endian e little endian.
Little Endian e Big Endian
Primeiro, é necessário entender o que significa endianness.
Endianness refere-se à ordem em que bytes (cada byte equivale a 8 bits) são organizados em tipos de dados maiores na memória do computador.
O formato big endian armazena o byte mais significativo primeiro, o que está alinhado com a forma como os humanos normalmente leem números. Vamos usar o número decimal 234567890 como exemplo e convertê-lo para hexadecimal e binário usando Python e exibir os resultados:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Como os computadores armazenam inteiros usando um número inteiro de bytes, e cada 2 dígitos hexadecimais correspondem a um byte, precisamos de um número par de dígitos. A representação hexadecimal do nosso número, 0xDFB38D2, contém 7 dígitos, então precisamos adicionar zero 0 à esquerda. O número resultante, 0x0DFB38D2, agora possui 8 dígitos hexadecimais (encaixa exatamente em 4 bytes) e o mesmo valor.
Da mesma forma, nosso número binário possui 28 bits, e cada 8 bits correspondem a 1 byte, então precisamos que o número de bits seja divisível por 8, adicionando 4 zeros 0 à esquerda. O número resultante, 0b00001101111110110011100011010010, agora possui 32 bits (encaixa exatamente em 4 bytes) e o mesmo valor.
Usando Python, obtivemos o formato big endian, que também obteríamos se convertêssemos manualmente, e nosso número fica assim:
0x0DFB38D2em hexadecimal;0b00001101111110110011100011010010em binário.
Consulte a tabela abaixo para entender o formato big endian:
Por outro lado, o formato little endian armazena o byte menos significativo primeiro, invertendo a ordem intuitiva:
Como pode ser observado, nosso número no formato little endian fica da seguinte forma:
-
0xD238FB0Dem hexadecimal; -
0b11010010001110001111101100001101em binário.
Retornando ao Cabeçalho do Bloco
Recapitulando, o cabeçalho possui exatamente 80 bytes contendo seis campos de dados, cada um deles no formato little endian. Agora, vamos analisar o cabeçalho do bloco 645536:
Como o cabeçalho do bloco ocupa exatamente 80 bytes, há exatamente 160 dígitos hexadecimais (cada byte corresponde a 2 dígitos hexadecimais). O campo version, por exemplo, ocupa 4 bytes, então há 8 dígitos hexadecimais.
Aqui estão as informações detalhadas sobre este bloco no explorador:
Os campos aqui são exibidos no formato big endian. Vamos analisar o campo bits, por exemplo, e compará-lo com sua representação no cabeçalho do bloco. Sua representação hexadecimal é 0x171007ea no formato big endian:
Se o convertermos para o formato little endian, ficará da seguinte forma:
Como você pode ver, é exatamente isso que tínhamos no cabeçalho do bloco.
1. A que se refere "endianness" no contexto de blockchain e sistemas computacionais?
2. Associe os componentes do bloco com suas definições.
Obrigado pelo seu feedback!