Найти в Дзене
Про Крипто

Хэш-функции

Одной из криптографических основ криптовалют являются хэш-функции.

Хэш-функция - детерминированная эффективно вычислимая функция, принимающая на вход строку произвольной длины и выдающая в качестве результата строку фиксированной длины.

где m называется хэшируемым значением(сообщением), а y - хэш-значением.

В свою очередь криптографическая хэш-функция обладает следующими свойствами.

  1. Стойкость к поиску первого прообраза. Восстановить исходное сообщение m по хэш-значению H(m) невозможно.
  2. Стойкость к поиску второго прообраза. То есть, зная сообщение m₁ и его хэш-значение H(m₁), вычислительно невозможно найти другое сообщение m₂, такое, что m₁≠m₂ и при этом H(m₁)=H(m₂).
  3. Стойкость к коллизиям. Вычислительно невозможно найти пару сообщений таких, что m₁≠m₂ и при этом H(m₁)=H(m₂).
Коллизия
Коллизия

Примеры хэш-функций:

  1. SHA256 (Используется в Bitcoin)
  2. RIPEMD160 (Используется в Bitcoin)
  3. Keccak (Используется в Ethereum)

Пример работы хэш-функции.

Сообщение:

Hello CryptoBobr!

Результат применения SHA256 к данному сообщению:

e25bfb1767607c6b537e50fe7fe5872fea4b641c295a32014da0616d125f9d4c

Хэш-функции в криптовалютах используются для:

  • Майнинг. Алгоритм Proof-of-Work основан на поиске хэш-значения, удовлетворяющего заданному шаблону(заданное количество нулей в начале, полученного хэш-значения)
  • Создание адресов. Так, например, чтобы получить адрес Биткоина необходимо взять открытый ключ пользователя(P2PKH адрес) или скрипт(P2SH адрес), согласно, которому будут тратится деньги, и использовать специальный алгоритм, основанный хэш-функциях(более подробно мы поговорим об этом в одном из следующих постах)
  • SPV клиенты. В Биткоине используется специальная структура, бинарное хэш дерево - дерево Меркла. С помощью дерева Меркла данные о всех транзакциях, входящих в этот блок, объединятся в единый хэш(корень дерева Меркла). Этот корень дерева Меркла добавляется в заголовок блока.
-3

Такая структура позволяет упростить проверку принадлежности транзакции определённому блоку.

  • Для проверок выполнения условий траты средств в Биткоин скриптах: соответствие полученного хэш-значения открытому ключу пользователя, соответствие полученного хэш-значения данному скрипту и т.д.

Важность хэш-функций для криптовалют невозможно переоценить. Это один из столпов, на которых держатся и работают криптовалюты.