В блокчейне биткоина применяется хеш-функция SHA-256 (Secure Hash Algorithm, 256 бит), которая используется дважды подряд в процессе майнинга, что называется double SHA-256. Именно SHA-256 преобразует любые данные в уникальный «отпечаток» длиной 64 символа, связывает блоки в цепь и является основой задачи, которую решают майнеры. Давайте разберёмся, как работает эта хеширующая функция, почему Сатоши Накамото выбрал именно её и возможно ли её взломать.
Какую хеширующую функцию использует блокчейн биткойна и её назначение
Хеш-функция — это математическая «мясорубка»: вы подаёте любые данные (слово, книгу, фильм), а на выходе получаете строку фиксированной длины — хеш. Для SHA-256 это всегда 256 бит, которые представляются в виде 64 шестнадцатеричных символов.
У этой «мясорубки» есть четыре ключевых свойства:
- Детерминированность. Одни и те же данные всегда приводят к одному и тому же хешу — сегодня, завтра, на любом компьютере.
- Лавинный эффект. Если изменить в исходных данных одну букву, хеш изменится до неузнаваемости. Хеши слов «привет» и «привеТ» не имеют ничего общего.
- Необратимость. По хешу невозможно восстановить исходные данные — как по фаршу нельзя вернуть корову. Единственный способ — перебирать варианты.
- Стойкость к коллизиям. Практически невозможно найти два разных набора данных с одинаковым хешем.
В биткоине SHA-256 выполняет несколько функций: «пломбирует» каждый блок, связывает блоки в цепь (каждый блок содержит хеш предыдущего), сворачивает список транзакций в одно значение (дерево Меркла) и задаёт «головоломку» для майнеров. Похожая математика — хеш-функции RIPEMD-160 вместе с SHA-256 — используется и для создания биткоин-адресов.
Как SHA-256 связывает блоки в цепь
Блокчейн переводится как «цепь блоков», и звенья этой цепи скреплены именно хешами. В заголовке каждого блока записан хеш предыдущего блока. Получается матрёшка:
- Блок №2 содержит хеш блока №1.
- Блок №3 содержит хеш блока №2 — а значит, косвенно «помнит» и блок №1.
- И так далее до самого свежего блока.
Внутри блока хеши работают ещё раз — в дереве Меркла. Все транзакции блока попарно хешируются, затем хешируются пары хешей, и так до единственного «корневого» хеша, который попадает в заголовок блока. Это имеет двойной смысл: во-первых, тысячи транзакций сворачиваются в одну короткую строку; во-вторых, лёгкие кошельки могут проверить, что конкретная транзакция входит в блок, не скачивая блок целиком — достаточно короткой «веточки» дерева.
Теперь представьте, что злоумышленник решил подменить транзакцию в старом блоке. Из-за лавинного эффекта хеш этого блока изменится — и перестанет совпадать с тем, что записан в следующем блоке. Чтобы скрыть подделку, придётся пересчитать хеши всех последующих блоков, а это требует повторить всю работу майнеров сети — задача, на практике невыполнимая. Так одна хеш-функция делает историю биткоина неизменяемой.


Double SHA-256: почему в майнинге хешируют дважды
Интересный момент, о котором не знают даже многие майнеры: в биткоине заголовок блока хешируется не один раз, а два — результат первого SHA-256 сразу проходит через SHA-256 ещё раз. Формула выглядит так: hash = SHA-256(SHA-256(заголовок блока)).
Зачем это нужно? Сатоши Накамото подстраховался от специфической атаки length extension («удлинение сообщения»), которой теоретически подвержены хеш-функции семейства SHA-2 при однократном применении. Двойное хеширование закрывает эту лазейку. Отсюда и термин, который вы встретите в спецификациях — double SHA-256.
Сам процесс майнинга напоминает гигантскую игру в «угадайку»:
- Майнер собирает заголовок блока: хеш предыдущего блока, свёртка транзакций, время и специальное число-«крутилка» — нонс (nonce).
- Считает double SHA-256 от заголовка.
- Сравнивает результат с целью (target): хеш должен быть меньше заданного числа — упрощённо, начинаться с определённого количества нулей.
- Если не подошло — меняет нонс и считает заново. И так триллионы раз в секунду.
Подобрать «красивый» хеш заранее невозможно — только перебором. Именно поэтому найденный блок подтверждает, что майнер честно потратил вычислительную работу: отсюда и название механизма Proof-of-Work, «доказательство работой».
Сложность сети: как биткоин регулирует «угадайку»
Чем больше майнеров подключается к сети, тем быстрее они перебирают варианты — и блоки находились бы всё чаще. Чтобы блоки появлялись стабильно примерно раз в 10 минут, биткоин каждые 2016 блоков (около двух недель) автоматически пересчитывает сложность: цель становится «строже» или «мягче» в зависимости от суммарной мощности сети.
Механика пересчёта, влияние сложности на доход майнеров и исторические рекорды — это отдельная большая тема; мы разобрали её в статье сложность биткоина простыми словами.
Как устроена SHA-256 внутри: заглянем в «мясорубку»
Не пугайтесь, формул не будет — но общее устройство понять полезно. SHA-256 обрабатывает данные так:
- Подготовка. Исходные данные дополняются служебными битами и разбиваются на блоки по 512 бит — как тесто на равные части.
- Инициализация. Используются восемь стартовых 32-битных чисел (они получены из дробных частей квадратных корней первых простых чисел — элегантное инженерное решение, показывающее, что «магические константы» не выбраны случайно).
- 64 раунда перемешивания. Каждый блок данных проходит через 64 итерации, в ходе которых применяются комбинации битовых операций — сдвиги, циклические вращения, логические функции и сложения. На каждом этапе добавляется своя константа. Представьте, что колоду карт перемешивают 64 раза по строгому, но запутанному алгоритму.
- Итог. Восемь итоговых 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 к квантовым атакам устойчивее. Сообщество разработчиков заранее обсуждает планы такого перехода.
Проверьте сами: эксперимент с хешем за одну минуту
Лучший способ «пощупать» хеш-функцию — посчитать пару хешей самостоятельно. Для этого не нужно ничего устанавливать:
- Найдите в поиске любой онлайн-калькулятор «SHA-256 hash generator» (или используйте терминал компьютера).
- Введите слово bitcoin — получите 64-символьный хеш.
- Теперь введите Bitcoin с заглавной буквы — хеш изменится полностью, хотя поменялась одна буква. Это тот самый лавинный эффект.
- Вставьте текст целой статьи — хеш всё равно будет 64 символа. Длина результата не зависит от объёма данных.
- Введите 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 составляет десятилетия, даже с учетом возможных квантовых технологий.
