Докладніше про Заголовок Блоку
Перш ніж перейти до детального розгляду заголовка блоку, необхідно спочатку зрозуміти різницю між форматами big endian та little endian.
Little Endian та Big Endian
Спочатку потрібно з’ясувати, що таке ендіанність.
Ендіанність — це порядок, у якому байти (кожен байт дорівнює 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 та порівняймо його з представленням у заголовку блоку. Його шістнадцяткове представлення у форматі big endian: 0x171007ea:
Якщо перетворити його у формат little endian, воно виглядатиме так:
Як бачите, саме це і міститься у заголовку блоку.
1. Що означає «ендіанність» у контексті блокчейну та комп’ютерних систем?
2. Відповідність компонентів блоку їхнім визначенням.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
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
Докладніше про Заголовок Блоку
Свайпніть щоб показати меню
Перш ніж перейти до детального розгляду заголовка блоку, необхідно спочатку зрозуміти різницю між форматами big endian та little endian.
Little Endian та Big Endian
Спочатку потрібно з’ясувати, що таке ендіанність.
Ендіанність — це порядок, у якому байти (кожен байт дорівнює 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 та порівняймо його з представленням у заголовку блоку. Його шістнадцяткове представлення у форматі big endian: 0x171007ea:
Якщо перетворити його у формат little endian, воно виглядатиме так:
Як бачите, саме це і міститься у заголовку блоку.
1. Що означає «ендіанність» у контексті блокчейну та комп’ютерних систем?
2. Відповідність компонентів блоку їхнім визначенням.
Дякуємо за ваш відгук!