Докладніше про Заголовок Блоку
Свайпніть щоб показати меню
Перш ніж перейти до детального розгляду заголовка блоку, слід спочатку зрозуміти різницю між форматами big endian та little endian.
Little Endian та Big Endian
Спочатку потрібно зрозуміти, що таке порядок байтів (endianness).
Порядок байтів (Endianness) — це порядок, у якому байти (кожен байт дорівнює 8 бітам) розташовуються у більших типах даних у пам'яті комп'ютера.
Big endian формат зберігає найстарший байт першим, що відповідає тому, як люди зазвичай читають числа. Розглянемо десяткове число 234567890 як приклад і перетворимо його у шістнадцятковий та двійковий вигляд за допомогою Python та виведемо результати:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Оскільки комп'ютери зберігають цілі числа, використовуючи цілу кількість байтів, і кожні 2 шістнадцяткові цифри відповідають одному байту, нам потрібна парна кількість цифр. Шістнадцяткове представлення нашого числа, 0xDFB38D2, містить 7 цифр, тому потрібно додати нуль 0 зліва. Отримане число, 0x0DFB38D2, тепер має 8 шістнадцяткових цифр (точно 4 байти) і ту ж саму величину.
Аналогічно, наше двійкове число має 28 бітів, і кожні 8 бітів відповідають 1 байту, тому потрібно зробити кількість бітів кратною 8, додавши 4 нулі 0 зліва. Отримане число, 0b00001101111110110011100011010010, тепер має 32 біти (точно 4 байти) і ту ж саму величину.
Використовуючи Python, ми отримали big endian формат, який ми також отримали б при ручному перетворенні, і наше число виглядає так:
0x0DFB38D2у шістнадцятковому вигляді;0b00001101111110110011100011010010у двійковому вигляді.
Розглянемо таблицю нижче для розуміння формату big endian:
Навпаки, формат little endian зберігає найменш значущий байт першим, що є протилежним до інтуїтивного порядку:
Як бачите, наше число у форматі little endian виглядає так:
-
0xD238FB0Dу шістнадцятковому вигляді; -
0b11010010001110001111101100001101у двійковому вигляді.
Повернення до заголовка блоку
Підсумовуючи, заголовок має рівно 80 байтів і містить шість полів даних, кожне з яких у форматі little endian. Тепер розглянемо заголовок блоку 645536:
Оскільки заголовок блоку займає рівно 80 байт, це становить рівно 160 шістнадцяткових цифр (кожен байт відповідає 2 шістнадцятковим цифрам). Наприклад, поле version займає 4 байти, тобто 8 шістнадцяткових цифр.
Ось детальна інформація про цей блок в оглядачі:
Поля тут показані у форматі big endian. Розглянемо, наприклад, поле bits і порівняємо його з представленням у заголовку блоку. Його шістнадцяткове представлення — 0x171007ea у форматі big endian:
Якщо перетворити це у формат little endian, виглядатиме наступним чином:
Як бачите, це саме те, що ми мали у заголовку блоку.
1. Що означає «ендіанність» у контексті блокчейну та комп’ютерних систем?
2. Відповідність компонентів блоку їхнім визначенням.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат