не будет. Номер версии блока также представляет собой фиксированное
значение. Теперь что касается времени создания блока, которое выражается в
секундах, прошедших с 1 января 1970 года. Логично было бы предположить, что оно будет меняться не чаще раза в секунду, что для нашей задачи
является крайне низкой динамикой. Число транзакций в блоке и вычисленное
из них корневое значение дерева Меркла — информация также относительно
постоянная. Однако бывают случаи, когда во время поиска валидного хеша
майнеру поступают новые транзакции с более высокой комиссией, чем те, что
он ранее включил в блок, — тогда блок будет иметь смысл пересобрать
заново. Но данная процедура также имеет достаточно низкую динамику и
проблем с необходимым разнообразием хешей не решает.
Получается, что коль скоро высокодинамичная информация в заголовке блока
естественным образом отсутствует, для решения поставленной задачи
необходимо вводить в процедуру майнинга некий искусственный элемент. Он
не будет нести никакой полезной нагрузки, кроме как играть роль
дополнительной составляющей заголовка блока, как прообраза для
хеширования. И такой элемент действительно присутствует в заголовке
каждого блока, и называется он «нонс» (nonce). Именно значение этого нонса
майнер и будет исключительно быстро менять при переборе, открывая
возможности для получения огромного количества разнообразных хешей, среди которых может оказаться и заветный «золотой» хеш с требуемым
количеством нулей.
По сути, процедура майнинга и сводится к поиску подходящего значения этого
самого нонса, который, будучи добавленным к заголовку блока, позволит
майнеру вычислить валидный хеш, дающий ему право на создание нового
блока, безусловно принимаемого всей сетью. Однако процедура поиска
необходимого значения нонса достаточно сложна. В сети Биткоин
используется алгоритм хеширования SHA-256, который предполагает два
цикла по 64 итерации хеширования каждый. По состоянию на весну 2019 года
сложность сети Биткоин требует наличия 18 первых нулевых символов для
нахождения валидного хеша, соответствующим 72 нулевым битовым
значениям. Что требует примерно 272 или около 5 · 1021 переборов хешей.
Много это или мало? Давайте попробуем сравнить это число, скажем, с
количеством песчинок на всех пляжах нашей планеты. Ученые сопоставляют
количество песчинок с величиной, приближенной к 1018. Таким образом, сложность нахождения нужного нам валидного хеша с такими требованиями
сопоставима с процедурой перебора всех песчинок примерно на 5000 планет, условно подобных Земле. Вот пример такого валидного хеша, с требованием
по сложности в 18 начальных нулей:
Как уже упоминалось, первые блоки сети Биткоин Сатоши Накамото находил
самостоятельно и использовал для этого обычный компьютер. Как, собственно, и другие участники сети, которые стали постепенно в ней появляться. И на том
самом начальном уровне сложности обычного процессора компьютера вполне
хватало, чтобы находить блок за положенные в среднем десять минут. Однако
по мере роста количества участников сети сложность стала автоматически
пересчитываться в сторону увеличения, и в какой-то момент для обычного
компьютерного процессора вычислительная задача стала «неподъемной». Тем
не менее майнеры быстро нашли выход — они задействовали для поиска
блоков не центральный процессор, а тот, который был установлен на их
видеокартах. В силу специфики своей вычислительной архитектуры
графический процессор гораздо быстрее рассчитывал хеши, чем центральный.
Но через определенное время сложность возросла настолько, что и
графический процессор перестал справляться с майнингом блоков. Правда, решение было найдено довольно скоро: в июне 2012 года компания Butterfly Labs начала поставлять специальное программно-аппаратное обеспечение под
названием ASIC (Application-Specific Integrated Circuit, или «интегральная схема
специального назначения»). Фактически это был небольшой
специализированный компьютер, полностью оптимизированный только под
одну задачу — перебирать хеши по алгоритму SHA-256 и делать это
исключительно быстро. Началась эра сначала частного, а затем и
промышленного майнинга Биткоина с использованием самых новейших
аппаратных средств, производимых различными компаниями, активно
конкурирующих между собой.
Читать дальше
Конец ознакомительного отрывка
Купить книгу