В блокчейне биткоина используется хеш-функция SHA-256 (Secure Hash Algorithm, 256 бит) — причём в майнинге она применяется дважды подряд, это называют double SHA-256. Именно SHA-256 превращает любые данные в уникальный «отпечаток» из 64 символов, связывает блоки в цепочку и лежит в основе задачи, которую решают майнеры. Разберём простыми словами, как работает эта хеширующая функция, почему Сатоши Накамото выбрал именно её и можно ли её взломать.

Какая хеширующая функция используется в блокчейне биткойна и что она делает

Хеш-функция — это математическая «мясорубка»: на вход подаёте любые данные (слово, книгу, фильм), на выходе получаете строку фиксированной длины — хеш. Для SHA-256 это всегда 256 бит, которые записывают как 64 шестнадцатеричных символа.

У этой «мясорубки» четыре ключевых свойства:

  • Детерминированность. Одни и те же данные всегда дают один и тот же хеш — сегодня, завтра, на любом компьютере.
  • Лавинный эффект. Измените в исходных данных одну букву — хеш изменится до неузнаваемости целиком. Хеши слов «привет» и «привеТ» не имеют между собой ничего общего.
  • Необратимость. По хешу невозможно восстановить исходные данные — как по фаршу нельзя восстановить корову. Единственный способ — перебирать варианты.
  • Стойкость к коллизиям. Практически невозможно подобрать два разных набора данных с одинаковым хешем.

В биткоине SHA-256 выполняет сразу несколько ролей: «пломбирует» каждый блок, связывает блоки в цепь (каждый блок содержит хеш предыдущего), сворачивает список транзакций в одно значение (дерево Меркла) и задаёт «головоломку» для майнеров. Похожая математика — хеш-функции RIPEMD-160 вместе с SHA-256 — используется и при создании биткоин-адресов.

Как SHA-256 связывает блоки в цепочку

Блокчейн буквально переводится как «цепь блоков», и звенья этой цепи скованы именно хешами. В заголовке каждого блока записан хеш предыдущего блока. Получается матрёшка:

  1. Блок №2 содержит хеш блока №1.
  2. Блок №3 содержит хеш блока №2 — а значит, косвенно «помнит» и блок №1.
  3. И так далее до самого свежего блока.

Внутри блока хеши работают ещё раз — в дереве Меркла. Все транзакции блока попарно хешируются, затем хешируются пары хешей, и так до единственного «корневого» хеша, который попадает в заголовок блока. Смысл двойной: во-первых, тысячи транзакций сворачиваются в одну короткую строку; во-вторых, лёгкие кошельки могут проверить, что конкретная транзакция входит в блок, не скачивая блок целиком, — достаточно короткой «веточки» дерева.

Теперь представьте, что злоумышленник захотел подменить транзакцию в старом блоке. Из-за лавинного эффекта хеш этого блока изменится — и перестанет совпадать с тем, что записан в следующем блоке. Чтобы скрыть подделку, придётся пересчитать хеши всех последующих блоков, а это требует повторить всю работу майнеров сети — задача, на практике невыполнимая. Так одна хеш-функция делает историю биткоина неизменяемой.

Хеш-функция SHA-256 в блокчейне биткоина: таймлайн ключевых событий сети Bitcoin
Ключевые вехи биткоина: с первого блока 2009 года цепочка, скреплённая SHA-256, ни разу не была взломана (иллюстрация)
Дашборд майнинг-пула: воркеры и невыплаченный баланс (иллюстрация интерфейса)
Дашборд майнинг-пула: воркеры и невыплаченный баланс (иллюстрация интерфейса)

Double SHA-256: почему в майнинге хешируют дважды

Тонкость, о которой не знают даже многие майнеры: в биткоине заголовок блока хешируется не один раз, а два — результат первого SHA-256 сразу прогоняется через SHA-256 ещё раз. Формула выглядит так: hash = SHA-256(SHA-256(заголовок блока)).

Зачем? Сатоши Накамото подстраховался от специфической атаки length extension («удлинение сообщения»), которой теоретически подвержены хеш-функции семейства SHA-2 при однократном применении. Двойное хеширование закрывает эту лазейку. Отсюда и термин, который вы встретите в спецификациях, — double SHA-256.

Сам майнинг устроен как гигантская игра в «угадайку»:

  1. Майнер собирает заголовок блока: хеш прошлого блока, свёртка транзакций, время и специальное число-«крутилка» — нонс (nonce).
  2. Считает double SHA-256 от заголовка.
  3. Сравнивает результат с целью (target): хеш должен быть меньше заданного числа — упрощённо, начинаться с определённого количества нулей.
  4. Не подошло — меняет нонс и считает заново. И так триллионы раз в секунду.

Подобрать «красивый» хеш заранее невозможно — только перебором. Именно поэтому найденный блок доказывает, что майнер честно потратил вычислительную работу: отсюда название механизма Proof-of-Work, «доказательство работой».

Сложность сети: как биткоин регулирует «угадайку»

Чем больше майнеров подключается к сети, тем быстрее они перебирают варианты — и блоки находились бы всё чаще. Чтобы блоки появлялись стабильно примерно раз в 10 минут, биткоин каждые 2016 блоков (около двух недель) автоматически пересчитывает сложность: цель становится «строже» или «мягче» в зависимости от суммарной мощности сети.

Механика пересчёта, влияние сложности на доход майнеров и исторические рекорды — отдельная большая тема; мы разобрали её в статье сложность биткоина простыми словами.

Как SHA-256 устроена внутри: заглянем в «мясорубку»

Не пугайтесь, формул не будет — но общее устройство понять полезно. SHA-256 обрабатывает данные так:

  1. Подготовка. Входные данные дополняются служебными битами и нарезаются на блоки по 512 бит — как тесто на равные куски.
  2. Инициализация. Берутся восемь стартовых 32-битных чисел (они выведены из дробных частей квадратных корней первых простых чисел — красивое инженерное решение, показывающее, что «магические константы» не подобраны втайне со скрытым умыслом).
  3. 64 раунда перемешивания. Каждый кусок данных 64 раза прогоняется через комбинацию битовых операций — сдвигов, циклических вращений, логических функций и сложений. На каждом раунде подмешивается своя константа. Представьте, что колоду карт тасуют 64 раза по строгому, но запутанному алгоритму.
  4. Итог. Восемь итоговых 32-битных чисел склеиваются в один 256-битный результат — тот самый хеш из 64 шестнадцатеричных символов.

Ключевая идея: каждый бит входных данных влияет на все биты результата через десятки раундов перемешивания. Именно поэтому изменение одной запятой полностью меняет хеш, а «отмотать» вычисление назад невозможно — на каждом раунде информация о исходнике необратимо перемешивается.

Забавное следствие для майнинга: ASIC-майнеры — это чипы, у которых вычисление double SHA-256 буквально «выгравировано» в кремнии. Они не умеют ничего, кроме этих 64 раундов, зато выполняют их триллионы раз в секунду — эффективнее любого процессора общего назначения в тысячи раз.

Откуда взялась SHA-256: краткая история семейства SHA

Полезно знать родословную, чтобы понимать, почему криптографы доверяют SHA-256:

  • MD5 (1992) — некогда популярнейшая хеш-функция; взломана: коллизии находятся за секунды на обычном ноутбуке. В криптографии запрещена.
  • SHA-1 (1995) — преемница; в 2017 году исследователи Google продемонстрировали практическую коллизию. Тоже выведена из обращения.
  • SHA-2 (2001) — семейство, куда входит SHA-256 (а также SHA-384, SHA-512). Более 20 лет публичного криптоанализа — практических атак нет.
  • SHA-3 (2015) — стандарт нового поколения на другой математической основе (алгоритм Keccak), принятый «про запас»: если у SHA-2 найдут слабость, миру будет куда мигрировать. Пока необходимость не возникла.

Биткоин появился в 2009 году — Сатоши выбирал из актуального на тот момент, и SHA-256 была самым проверенным вариантом с запасом стойкости. История MD5 и SHA-1 показывает: хеш-функции действительно «стареют», но происходит это медленно, публично и с многолетним предупреждением — у сообщества будет время на переход.

Можно ли взломать SHA-256

Короткий ответ: на сегодняшний день — нет, ни одной практической атаки на SHA-256 не существует. Оценим масштаб задачи перебором. Вариантов хеша — 2 в степени 256. Это число с 78 цифрами: оно больше, чем количество атомов в наблюдаемой Вселенной. Даже если бы вся мощность сети биткоина — самого большого вычислительного кластера в истории — занималась только подбором одного конкретного хеша, времени существования Вселенной не хватило бы.

Частые вопросы о «взломе» стоит разделить:

Сценарий Реален ли Пояснение
Обратить SHA-256 математически Нет Уязвимостей, позволяющих восстановить данные из хеша, не найдено за 20+ лет анализа
Перебрать все варианты Нет 2^256 вариантов — физически невыполнимо
Квантовый компьютер Не в обозримом будущем Алгоритм Гровера лишь ускоряет перебор квадратично — SHA-256 остаётся практически стойкой; большая угроза — подписям, а не хешу
Атака 51% Теоретически да Но это не взлом SHA-256, а захват большинства мощности сети — запредельно дорого и экономически бессмысленно

Честная оговорка про квантовые компьютеры: криптографы считают, что при появлении мощных квантовых машин биткоину сначала придётся обновлять алгоритм цифровой подписи (ECDSA), а не хеш-функцию — SHA-256 к квантовым атакам устойчивее. Сообщество разработчиков заранее обсуждает планы такого перехода.

Проверьте сами: эксперимент с хешем за одну минуту

Лучший способ «пощупать» хеш-функцию — посчитать пару хешей самостоятельно. Для этого не нужно ничего устанавливать:

  1. Найдите в поиске любой онлайн-калькулятор «SHA-256 hash generator» (или используйте терминал компьютера).
  2. Введите слово bitcoin — получите 64-символьный хеш.
  3. Теперь введите Bitcoin с заглавной буквы — хеш изменится полностью, хотя поменялась одна буква. Это тот самый лавинный эффект.
  4. Вставьте текст целой статьи — хеш всё равно будет 64 символа. Длина результата не зависит от объёма данных.
  5. Введите bitcoin ещё раз — хеш совпадёт с первым. Детерминированность в действии.

После этого эксперимента устройство майнинга становится наглядным: майнеры делают ровно то же самое, только вместо слова подставляют заголовок блока с разными нонсами и ищут хеш, начинающийся с нужного количества нулей. Попробуйте «намайнить» вручную хеш хотя бы с одним ведущим нулём, меняя цифру в конце слова, — и вы прочувствуете, за что сеть платит майнерам.

Кстати, тем же способом SHA-256 используют далеко за пределами крипты: сайты хранят хеши паролей вместо самих паролей, разработчики сверяют хеш скачанного файла с эталонным, чтобы поймать подмену, а git-подобные системы отслеживают изменения кода. Освоив идею один раз, вы будете встречать её повсюду.

SHA-256 в других монетах: кто ещё использует и какие есть альтернативы

SHA-256 не эксклюзив биткоина. Её используют форки и «родственники»: Bitcoin Cash, а также ряд монет, которые майнятся тем же оборудованием (merged mining — например, Namecoin). Именно поэтому ASIC для биткоина подходит и для них.

Другие блокчейны выбрали иные хеш-функции — в основном чтобы отстроиться от биткоин-ASIC:

  • Scrypt — Litecoin и Dogecoin: функция требовательна к памяти;
  • Ethash/KECCAK-семейство — Ethereum использовал Ethash до перехода на Proof-of-Stake в 2022 году, где майнинг не нужен вовсе;
  • RandomX — Monero: алгоритм заточен под обычные процессоры, чтобы майнить мог каждый;
  • KHeavyHash — Kaspa и другие новые PoW-сети со своими вариациями.

Сама SHA-256 родилась не в крипте: её разработало Агентство национальной безопасности США (NSA), а опубликовал институт стандартов NIST в 2001 году — за семь лет до появления биткоина. Функция открыта, стандартизирована и используется повсюду: в протоколе HTTPS, при проверке целостности файлов, в госсистемах. Сатоши выбрал проверенный публичный стандарт — и не прогадал. Значения других терминов из этой статьи — нонс, дерево Меркла, Proof-of-Work — смотрите в нашем глоссарии криптотерминов.

Частые вопросы

Какая хеш-функция используется в биткоине — коротко?

SHA-256, в майнинге — двойная (double SHA-256): заголовок блока хешируется два раза подряд. Для генерации адресов дополнительно применяется RIPEMD-160 поверх SHA-256, а контрольные суммы адресов тоже считаются двойным SHA-256 — так кошелёк ловит опечатки в адресе до отправки денег.

Чем хеширование отличается от шифрования?

Шифрование обратимо: у того, кто знает ключ, есть возможность расшифровать данные обратно. Хеширование — дорога в один конец: из хеша исходные данные не восстановить в принципе. Биткоин ничего не «шифрует» — он хеширует данные и подписывает транзакции.

Почему Сатоши выбрал именно SHA-256?

На момент создания биткоина (2008 год) SHA-256 была свежим открытым стандартом NIST с большим запасом стойкости, прошедшим публичный анализ криптографов. Предыдущие поколения (MD5, SHA-1) уже показали слабости, а SHA-256 — нет, и не показала до сих пор.

Может ли у двух разных блоков совпасть хеш?

Теоретически коллизии существуют (вариантов данных бесконечно много, а хешей — «всего» 2^256), но вероятность настолько ничтожна, что за всю историю SHA-256 ни одной коллизии не найдено. Практически — нет, не может.

Устареет ли SHA-256 и что тогда будет с биткоином?

Если криптографы найдут серьёзную слабость (пока предпосылок нет), сообщество сможет провести обновление сети с переходом на более стойкую функцию — такие сценарии обсуждаются заранее. Запас прочности SHA-256 оценивается в десятилетия даже с поправкой на квантовые технологии.