В блокчейне хеши встречаются почти повсюду: ID транзакции — это хеш, блоки связаны друг с другом с помощью хешей, а майнинг биткоина — это постоянное вычисление хешей. Что это такое и почему хеши так важны? В этой статье объясняем всё простыми словами, почти без терминов.
Майнинг $BTC — это, по сути, непрерывное вычисление хешей SHA-256 в поисках результата, соответствующего требованиям сложности. Текущая цена — 83,842 (за 24 ч: +0.95%).
■ Что такое хеш
Хеш-функция преобразует данные произвольной длины в выходную последовательность фиксированной длины. Эта последовательность называется хешем, или дайджестом. Например, длина результата SHA-256 всегда составляет 256 бит, а в шестнадцатеричной записи это 64 символа.
Хэш можно считать «отпечатком» данных: для одних и тех же данных отпечаток всегда будет одинаковым, а если изменить хотя бы один символ, он станет совершенно другим.
■ Каким бывает хорошая хэш-функция
Во-первых, односторонней: практически невозможно восстановить исходные данные по хэшу. Во-вторых, устойчивой к коллизиям: практически невозможно найти два разных набора данных с одинаковым хэшем. В-третьих, результат непредсказуем: узнать его нельзя, пока не вычислишь хэш.
Важно помнить: хэширование — это не шифрование. Зашифрованные данные можно восстановить с помощью ключа, а хэширование одностороннее: исходное содержимое по хэшу восстановить нельзя.
■ Где в блокчейне используют хэширование
Биткоин использует SHA-256 для вычисления хэшей блоков и идентификаторов транзакций, причём хэширование выполняется дважды. Для создания распространённых адресов P2PKH и P2WPKH к открытому ключу сначала применяют SHA-256, а затем RIPEMD-160 (в адресах Taproot используется непосредственно открытый ключ). Ethereum использует Keccak-256, а адрес состоит из последних 20 байт хэша Keccak-256 открытого ключа.
В заголовке каждого блока хранится хэш предыдущего блока. Если изменить любой блок в истории, его хэш изменится, и все последующие блоки перестанут ему соответствовать. Это одна из причин, почему блокчейн так трудно подделать. При майнинге биткоина постоянно пробуют разные входные данные, пока не найдут хэш, удовлетворяющий требованиям сложности.
■ Чем это полезно обычным пользователям
Чтобы проверить перевод, найдите его в обозревателе блоков по хэшу транзакции — это гораздо надёжнее, чем сверяться со скриншотом. После скачивания кошелька сравните его SHA-256 с контрольной суммой, опубликованной на официальном сайте: так можно убедиться, что установочный файл не изменён.
■ Напоследок
Запомните главное: хэш — это отпечаток данных. Его можно публиковать и сравнивать, но нельзя использовать, чтобы восстановить исходные данные. Хэш транзакции можно показывать кому угодно, а приватный ключ и мнемоническую фразу нельзя показывать никому и никогда. Знания не сделают меня богатым прямо сейчас, но помогут не платить за ошибки. На рынке всегда возможны неожиданности — заранее подумайте, что будете делать, если окажетесь неправы.
В какой ситуации вы это поняли?