Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Огляд Хешування | Блоки та Транзакції
Вступ до блокчейну

Огляд Хешування

Свайпніть щоб показати меню

Хешування та хеші блоків згадувалися кілька разів, але саму концепцію ще не було розглянуто детально. Настав час зрозуміти, що таке хешування.

Note
Дізнайтеся більше

Хешування — це процес, який приймає вхідні дані та створює рядок байтів фіксованого розміру, зазвичай у вигляді шістнадцяткового числа. Вихідний результат, відомий як хеш, виглядає випадковим і повністю змінюється при будь-якій зміні вхідних даних — ця властивість називається "ефект лавини".

Властивості хеш-функцій

У блокчейні хеш-функції використовуються для:

  • Захисту транзакцій шляхом створення унікального відбитка для кожної;
  • Генерації адрес із публічних ключів;
  • Створення зв'язків у блокчейні через хеші блоків.

З огляду на це, хороша хеш-функція для блокчейну має кілька ключових властивостей:

Хешування, особливо із застосуванням якісної хеш-функції, можна порівняти з приготуванням смузі. Розглянемо наступну ілюстрацію:

Ілюстрація хешування

Насправді, можливо знайти початкове вхідне значення за хешем, однак це займе надто багато часу, щоб бути практично здійсненним.

Хешування блоку

Для отримання хешу певного блоку Bitcoin використовує хеш-функцію SHA-256, яка видає 256-бітний (32-байтовий) хеш. Вона є частиною сімейства SHA-2, розробленого Національним агентством безпеки (NSA), і відома своїми сильними криптографічними властивостями, що забезпечують стійкість до колізій, атак на прообраз та інших криптографічних вразливостей.

Хеш блоку Bitcoin обчислюється шляхом взяття даних заголовка блоку. Ці дані двічі передаються у хеш-функцію SHA-256 у процесі, відомому як подвійне SHA-256.

Ось зображення для наочності:

Хешування блоку

Отриманий 256-бітний хеш повинен відповідати певним критеріям, визначеним цільовим рівнем складності мережі. Якщо хеш не менший за цільове значення, nonce змінюється, і хеш обчислюється знову, доки не буде знайдено відповідний хеш. Цей фінальний хеш є унікальним ідентифікатором блоку.

Корінь Меркла

Корінь Меркла — це єдиний хеш, що представляє всі транзакції, включені до блоку. Його обчислення починається з хешів кожної окремої транзакції, використовуючи подвійний SHA-256.

Далі кожен хеш транзакції поєднується з іншим, і пара хешується разом для отримання нового хешу. Цей процес поєднання та хешування триває рівень за рівнем, доки не залишиться лише один хеш. Останній хеш — це корінь Меркла, який охоплює весь набір транзакцій і забезпечує їх цілісність шляхом кодування у єдине значення. Така ієрархічна структура називається деревом Меркла.

Наступний приклад ілюструє, як формується дерево Меркла:

Дерево Меркла

Як видно, наш блок містить 6 транзакцій (кожна позначена як Tx), і шляхом хешування та попарного об'єднання нових хешів обчислюється корінь Меркла.

Note
Примітка

Коли для правого крайнього хеша немає пари, як у випадку з Hash56 у нашому прикладі, цей останній хеш дублюється для створення пари. Такий підхід зберігає цілісність і ефективність структури дерева Меркла навіть при непарній кількості транзакцій або хешів на певному рівні.

question mark

Який розмір вихідних даних хеш-функції SHA-256, що використовується в блокчейні Bitcoin?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 4

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 4
some-alt