Что такое алгоритм хэширования SHA-256 в майнинге

    Что такое алгоритм хэширования SHA-256 в майнинге
    0

    SHA-256 – алгоритм шифрованияхэш-функция из семейства SHA-2 (Secure Hash Algorithm, с англ. – Алгоритм безопасного хэширования).

    Приставка 256 обозначает размер вывода – 256 бит. Существуют и другие форматы: 224, 384, 512.

    Разработана для Агентства Национальной Безопасности США (АНБ) в 2001 году. Запатентована под номером 6829355 в США и распространяется свободно по бесплатной лицензии (RF). 

    Метод хэширования SHA-256 используется правительством и гражданскими учреждениями США согласно Федеральным стандартам обработки информации, для обеспечения защиты данных. А ещё с его помощью генерируются хеши в сети Bitcoin.

    Предшественник (SHA-1) был успешно атакован. В 2011 году Марк Стивенс доказал возможность коллизионной атаки, а в 2017 Google опубликовал отчёт об успешном её проведении. С тех пор браузеры отказались от SSL-сертификатов на SHA-1, и Windows прекратил поддержку закодированных алгоритмом подписей в 2020 году.

    В SHA-256 атаки с нахождением прообраза могут вычислить 52, а при коллизионной атаке удаётся раскрыть 46 раундов из 64, пока что.

    Что такое хэширование и шифрование

    Задача хэширования – превратить информацию в строку. Функция может принять данные неограниченного размера, даже 10 мегабайт текста из 1000 книг. Процесс хеширования происходит раундами (кругами) – так можно уместить в строку любой объем. Но расшифровать обратно уже не получится. Если кому-то удастся это сделать, то алгоритм автоматически потеряет смысл.

    Задача шифрования – превратить информацию в условно хаотичный набор символов, расшифровать которые можно только с помощью ключа. Зашифрованный файл размером в 10 мегабайт будет занимать как минимум столько же места, что и является главным отличием его от хэширования: оно превращает любой объем данных в строку одинаковой длины.

    Биткоин не использует шифрование. Приставка «крипто» (crypto – encrypt – шифровать) в его обозначении «криптовалюта», была присвоена ему только потому, что его алгоритм цифровой подписи использует методы, основанные на эллиптических кривых, что применяются в шифровании.

    image

    Вместо этого пользователь генерирует пару – открытый и закрытый ключ. Они связаны математически, и мы можем утверждать, что получить закрытый ключ из открытого – невозможно, что и подтверждает право владения BTC.

    В блокчейне у всех транзакций есть неизрасходованные выходы (UTXO), а проще говоря – балансы. Они связаны с Биткоин адресами и мы можем просматривать их в сети публично. Имея на балансе 1 BTC, у вас есть закрытый ключ от открытого ключа с этим UTXO, а значит вы сможете подписать транзакцию и будет создан новый UTXO с передачей права на открытый ключ получателя.

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

    Алгоритм удовлетворяет 4 ключевым требованиям:

    • Детерминированный (для любого ввода вывод будет одинаковым)
    • Уникальный (невозможно, чтобы 2 ввода привели к одинаковому выводу)
    • Быстрый (в протоколе Bitcoin скорость примерно 140 Мбит/сек)
    • Необратимый (исходное значение не может быть получено из полученного хэша)

    Как работает майнинг на алгоритме SHA-256

    В интернете есть сайты с конвертацией любого текста с помощью функции SHA-256. Попробуйте сами.

    Например, слово «Hello»: 185f8db32271fe25f561a...a518007d1764826381969.

    Выходная строка неизменна, это отличает хэширование от шифрования. Если другой человек с другого устройства введёт «Hello», он получит ту же строку.

    Bitcoin использует двойное хеширование. Полученный хэш, он пропускает повторно через SHA-256. Это нужно во избежание атаки «дней рождения», хотя вероятность её невелика.

    Например, вводим полученный хэш от «Hello»: 185f8db32271fe25f561a...da518007d1764826381969 = 52c87cd40ccfbd78...d4c3684ed60f6513e8d16077e5b8e.

    По такому принципу собирается и обрабатывается целый ряд данных. Результат – блокчейн. Цепочка блоков, образно растущая вверх. Нижние блоки невозможно достать и подменить, не разрушив при этом всё строение сети.

    Древо Меркла

    У каждой транзакции есть хэш. Он представляет такую же строку, выводимую с помощью функции SHA-256. Иерархическая принадлежность транзакций образовывает древо вида родитель-ребёнок. Подобно семейному древу, древо Меркла хранит данные обо всех предыдущих транзакциях. Эти данные хранятся у тысяч узлов (нод), и если кто-то попытается подсунуть в сеть ложный баланс или перевод, несоответствие историческому наследию будет обнаружено и отвергнуто сетью.

    Корень Меркла добавляется в функцию наоборот. Например: b7a0c5014ae6ecb...707a42516e94899073 вместо 37099849e61524...019efbce6ea4105c0a7b.

    Версия клиента

    Актуальная версия, одобренная сетью. Например: 02000000. 

    Часть строк принимается в формате 4-byte «little-endian», и это одна из них.

    Хэш предыдущего блока

    Скрепляет блокчейн, гарантируя, что следующий блок будет ссылаться на прежде подтверждённый.

    Вводится наоборот. Например: 05c2ddc616d1b90...0000000000000000 вместо оригинального 000000000000000...346f13a009b1d616cdd2c50

    Зеркальное отражение строки избавляет алгоритм от потери детализации. Чем больше значений, тем меньше вероятность того, что сложность окажется слишком трудной или слишком лёгкой.

    Метка времени (Timestamp)

    В формате системы Unix, количество секунд от начала эпохи (1 января 1970, 00:00).

    Принимается сетью, только если число больше медианы временных штампов последних 11 блоков, и меньше медианы штампов, что возвращают подключённые ноды (скорректированное сетью время) + 2 часа. 

    Биткоин использует беззнаковое целое число для метки времени, поэтому «проблема 2038 года» откладывается еще на 68 лет.

    Пример: c6f5d64b.

    Таргет (Target)

    Сложность следующей цели. Пересчитывается каждые 2016 блоков (примерно 2 недели). Если хэшрейт в сети будет расти, увеличится и количество нулей в таргете искомого хеша, что потребует перебора большего количества хэшей при майнинге криптовалюты. И наоборот, уменьшение желающих участвовать в добыче BTC и валидации блоков, уменьшает сложность и «снижает» таргет. За 1 цикл не может быть изменён более чем в х4 раза.

    Например таргет генезис блока был 00000000ffff00000000000000...00000, в 2013 уже 0000000000000529b10000000...00000, в 2018 – 00000000000000000049500d0...00000, а в 2021 – 0000000000000000000cdf6f00...00000. Судя по количеству нулей, можно легко наблюдать рост сложности.

    Помещается в функцию тоже в компактном 4-байтном формате вида: f2c9749a.

    Нонс (Nonce)

    Аббревиатура от числа, используемого единожды, при переборе хэшей.

    Мы взяли 5 известных значений, описанных выше и теперь можем начать подставлять nonce в функцию, покуда не будет найден хэш, меньше таргета. 

    1, 2, 3… 40348, 40349… 168437213, 168437214, 168437215…

    Когда нонс подойдёт, и мы получим хэш-значение меньше таргета, установленного сетью, новый блок будет найден. Майнер может добавить в него избранные транзакции (не превышая допустимый размер блока: 1,5 МБ) забетонировать их в нём и получить за это комиссию.

    image

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

    Особенности SHA-256

    SHA-2 – это криптографическая хеш-функция и обычно является строительным блоком для других криптографических конструкций. Удовлетворяя требованиям криптографического хэширования, это односторонняя функция, которая детерминирована, быстро вычисляется, устойчива к атакам с предварительным и вторым прообразом, а также устойчива к коллизиям.

    Далее её можно использовать в своих целях, наделяя особенностями. Например Bitcoin сделал двойное SHA-256.

    Оборудование для майнинга

    В сравнении с алгоритмом RandomX Monero (только CPU), SHA-256 майнинг не может быть устойчив к ASIC или GPU.

    Для добычи BTC может использоваться любой процессор. В гонке за скоростью перебора хэшей выигрывают ASIC майнеры (интегральные схемы особого назначения), спроектированные специально под задачу добычи Bitcoin. Самые популярные производители: Bitmain, MicroBT.

    SHA-256 – что можно майнить

    Все форки Bitcoin пошли по простому пути и используют тот же алгоритм хэширования. Сюда входят известные «альткоины»: Bitcoin Cash, Namecoin, Peercoin, Emercoin и сотни других, менее популярных.

    Ethereum разработал собственную функцию Ethash, чтобы допустить к добыче только видеокарты (до момента полного переключения на Ethereum 2.0). Litecoin – Scrypt (в попытках быть резистентным к асикам). Современные криптовалюты предпочитают алгоритм Proof-of-Stake, в которых добыча криптовалют называется стейкингом. Традиционные Proof-of-Work вычисления становятся инвесторам всё менее интересными.

    Список криптовалют на SHA-256

    Отсортированы по размеру капитализации.

    • Bitcoin
    • Bitcoin Cash
    • Bitcoin SV
    • Bitcoin Diamond
    • BitcoinV
    • Namecoin
    • ILCoin
    • EmerCoin
    • Unobtanium
    • Litecoin Cash
    • Amoveo
    • Freicoin
    • Bean Cash
    • I0Coin
    • ADAMANT Messenger
    • Internet Of People
    • IXCoin
    • Sakura Bloom
    • Ultimate Secure Cash
    • Qbao
    • TerraCoin
    • Swing
    • PRISM
    • Sprouts
    • Neutron
    • Incakoin
    • ZetaCoin
    • Nubits
    • BitTokens
    • TRBO
    • И ещё сотни с капитализацией менее 100 тыс. $
    от РЕДАКЦИЯ
    Регистрируясь, вы акцептуете Оферту
    Товарный знак Кошелёк.ру принадлежит
    ООО "Кошелёк.ру" (ИНН 7811454512)
    [email protected]
    8(800)55555-89 для звонков по РФ
    +7(900)55555-89 для международных звонков и мессенджеров