В системе имеется элегантное решение этой проблемы. Она запрограммирована так, что каждый майнер выполняет работу в самой длинной части блокчейна, так как очевидно, что это цепочка, в которую была помещена самая большая работа. Если два майнера находят блок одновременно, то для них существует две части блокчейна, которые имеют одинаковую длину. Поэтому майнеры разделились на две группы на короткой части блока и совершают майнинг на разных его концах. Одна группа, скорее всего, победит, сначала найдя следующий блок и снова получив самую длинную цепочку. Затем все майнеры переходят к этой цепочке, а оставшийся блок становится так называемым брошенным блоком. Такие потерянные блоки не являются большой проблемой, потому что большинство транзакций в этом блоке также будут включены в другой блок, а если нет – то все равно будут в одном из следующих подтверждений. Вот почему рекомендуется увидеть что-то действительно подтвержденное после нескольких блоков/ подтверждений.
Что такое сложность майнинга?
Во всей сети криптовалюты миллионы компьютеров несколько триллионов раз в секунду пробуют найти решение для блока. Поскольку нахождение кем-то правильного значения nonce завязано на теории вероятности, то можно сделать математические предсказания, когда это произойдет. Например, алгоритм Биткоина адаптирует сложность майнинга (сложность сборки блока) каждые 2016 блоков к окну времени, где для решения блока требуется всего около 10 минут (= 600 секунд). Поскольку количество мощности хеширования растет экспоненциально, то и сложность майнинга также возрастает. Различные криптовалюты используют разные уровни сложности майнинга, и это отличает их одну от другой. В системе Биткоина майнеры создают блоки (пазлы), которые выглядят определенным образом. Они должны найти число nonce, полученный хеш блока начинается с определенного количества нулей. Чем больше нулей, тем сложнее майнить.
По сути, сложность майнинга подстаивается под значения хешрейта сети.
Хешрейт (Hash rate) – это количество попыток за секунду для поиска правильного значения nonce для формирования блока, то есть показатель количества операций хеширования, которые майнер способен выполнить за определенный промежуток времени.
Для сравнения, у человека хешрейт составляет около 0,00003 х/с (хешей в секунду). Если вы попробуете майнить вручную (собирая пазл), то понадобится около 9–10 часов для нахождения одного nonce (выбирая один кусочек пазла, чтобы его закончить). В системе Биткоин общее количество попыток сформировать блок и есть общий хешрейт сети. Это число выросло в миллионы триллионов в секунду (= терахеши). Вы можете в реальном времени следить за этим ростом: