Огляд Хешування
Свайпніть щоб показати меню
Хешування та хеші блоків згадувалися кілька разів, але саму концепцію ще не було розглянуто детально. Настав час зрозуміти, що таке хешування.
Хешування — це процес, який приймає вхідні дані та створює рядок байтів фіксованого розміру, зазвичай у вигляді шістнадцяткового числа. Вихідний результат, відомий як хеш, виглядає випадковим і повністю змінюється при будь-якій зміні вхідних даних — ця властивість називається "ефект лавини".
Властивості хеш-функцій
У блокчейні хеш-функції використовуються для:
- Захисту транзакцій шляхом створення унікального відбитка для кожної;
- Генерації адрес із публічних ключів;
- Створення зв'язків у блокчейні через хеші блоків.
З огляду на це, хороша хеш-функція для блокчейну має кілька ключових властивостей:
Хешування, особливо із застосуванням якісної хеш-функції, можна порівняти з приготуванням смузі. Розглянемо наступну ілюстрацію:
Насправді, можливо знайти початкове вхідне значення за хешем, однак це займе надто багато часу, щоб бути практично здійсненним.
Хешування блоку
Для отримання хешу певного блоку Bitcoin використовує хеш-функцію SHA-256, яка видає 256-бітний (32-байтовий) хеш. Вона є частиною сімейства SHA-2, розробленого Національним агентством безпеки (NSA), і відома своїми сильними криптографічними властивостями, що забезпечують стійкість до колізій, атак на прообраз та інших криптографічних вразливостей.
Хеш блоку Bitcoin обчислюється шляхом взяття даних заголовка блоку. Ці дані двічі передаються у хеш-функцію SHA-256 у процесі, відомому як подвійне SHA-256.
Ось зображення для наочності:
Отриманий 256-бітний хеш повинен відповідати певним критеріям, визначеним цільовим рівнем складності мережі. Якщо хеш не менший за цільове значення, nonce змінюється, і хеш обчислюється знову, доки не буде знайдено відповідний хеш. Цей фінальний хеш є унікальним ідентифікатором блоку.
Корінь Меркла
Корінь Меркла — це єдиний хеш, що представляє всі транзакції, включені до блоку. Його обчислення починається з хешів кожної окремої транзакції, використовуючи подвійний SHA-256.
Далі кожен хеш транзакції поєднується з іншим, і пара хешується разом для отримання нового хешу. Цей процес поєднання та хешування триває рівень за рівнем, доки не залишиться лише один хеш. Останній хеш — це корінь Меркла, який охоплює весь набір транзакцій і забезпечує їх цілісність шляхом кодування у єдине значення. Така ієрархічна структура називається деревом Меркла.
Наступний приклад ілюструє, як формується дерево Меркла:
Як видно, наш блок містить 6 транзакцій (кожна позначена як Tx), і шляхом хешування та попарного об'єднання нових хешів обчислюється корінь Меркла.
Коли для правого крайнього хеша немає пари, як у випадку з Hash56 у нашому прикладі, цей останній хеш дублюється для створення пари. Такий підхід зберігає цілісність і ефективність структури дерева Меркла навіть при непарній кількості транзакцій або хешів на певному рівні.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат