Для тех, кто хочет знать все о мировом финансовом рынке, рынке ценных бумаг, криптовалютах, участниках финансового рынка и его структуре.

Блокчейн: Тайна сложности майнинга и времени (нахождения) блока

13

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

Что такое майнинг (он же хэширование) — освежим в памяти материал

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

Подпись блока (хэш), удовлетворяющая критериям — или сложность майнинга

Итак, именно количество нулей, с которого должна начинаться подпись согласно требованиям блокчейна, определяет насколько сложным для майнеров будет её нахождение (сколько в среднем требуется мощности хэширования или времени). В этом и заключается сложность майнинга. Чем больше требуется нулей, тем сложнее найти подходящую подпись (= более высокая сложность). Но что же определяет сложность майнинга?

Что определяет сложность майнинга?

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

Вот вам пример:

  • Предположим, что все майнеры в данном примере имеют одинаковую вычислительную мощность (хэшрейт/hash rate). В среднем на поиск удовлетворяющего требованиям хэша у майнера уходит 1 час. Таким образом, один майнер находит один подходящий хэш в час, но десять майнеров найдут уже десять отвечающих критериям хэшей за это же время. Итак, скорость нахождения блока для одного майнера составляет 1 блок в час, но для десяти майнеров она уже будет равняться 10 блокам в час, что существенно быстрее!

В блокчейне Биткойна каждые две недели производится корректировка сложности майнинга, таким образом, чтобы суммарная мощность хэширования сети в среднем производила 1 блок каждые 10 минут. Если к блокчейну биткойна присоединится много майнеров и суммарная мощность хэширования возрастёт, то скорость нахождения блока может увеличиться с 1 блока за 10 минут до 9 минут на 1 блок. Спустя некоторое время это также вызовет рост сложности майнинга, так что даже с этой дополнительной мощностью хэширования скорость производства блоков будет сохранять устойчивый темп в 1 блок за 10 минут. То же самое относится и к противоположному сценарию, когда майнеры прекращают майнинг на блокчейне и совокупная скорость хэширования понижается, сложность майнинга также уменьшается. Главный вопрос состоит в том – почему же 1 блок каждые 10 минут?

Но почему всего лишь один блок в десять минут?!

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

Результаты поискового запроса о времени нахождения блока.

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

Результаты поискового запроса: «почему только 1 блок в 10 минут?»

В течение длительного времени этот вопрос никак давал покоя моей голове, пока однажды кто-то на Reddit, наконец-то, не предложил ответ. Оказалось, что это было единоличным решением Сатоши Накамото (изобретатель Биткойна), чтобы скорость производства блоков поддерживалась на стабильном уровне и составляла в среднем 1 блок раз в 10 минут, по той причине, что блокчейну понадобится приблизительно 10 минут для распространения последнего блока (блоков) по всем узлам сети во всём мире,  чтобы блокчейн оставался должным образом синхронизированным. Если блоки создаются более быстрыми темпами, то некоторые узлы на другой стороне земного шара, возможно, не смогут достаточно быстро и своевременно включить данные последних транзакций в свои копии блокчейна. Это, в свою очередь, может привести к тому, что узлы больше не будут корректно синхронизированы. Последствием такой рассинхронизации узлов сети может стать появление так называемых «orphan» блоков (или разветвлений цепочки), которые представляют из себя «сиротские» блоки или блоки, исключённые из основной цепочки блокчейна. Возникновения таких блоков блокчейн должен по возможности избегать, чтобы оставаться безопасным. Несомненно, такой ответ кажется довольно простым, но он имеет смысл.

Итак — сложность нахождения блока

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

Чем больше майнеров присоединится к сети, тем больше совокупной вычислительной мощности будет расходоваться на нахождение удовлетворяющих критериям подписей, и тем быстрее блоки будут добавляться в блокчейн, если сложность решения блоков не будет изменена. Следовательно, сложность повышается, когда увеличивается суммарная мощность хэширования, и наоборот, при уменьшении сложности, мощность хэширования также снижается. Как можно видеть ниже, совокупная мощность хэширования (хэшрейт) на данный момент составляет 51 миллиард GH/s. Чем выше хэшрейт, тем выше сложность блока.

Date — Дата
Difficulty — Сложность
Change — Изменение
Hash rate — хэшрейт

Как проиллюстрировано ниже, блок 100 (ещё в 2009 году) требовал подписи, которая начиналась только с восьми последовательных нулей, в то время как последний блок на момент написания этой статьи (блок 542865) нуждался в подписи, которая начиналась как минимум с 18 нулей, следующих друг за другом. Количество нулей — это то, что отражает уровень сложности. Поиск выходных данных с таким количеством последовательных нулей требует либо гораздо большего времени, либо гораздо большей мощности хэширования. И на сегодняшний день сложность нахождения блока намного выше, по той простой причине, что в блокчейне Биткойна расходуется значительно большая мощность хэширования (из-за возросшего числа майнеров).

Сложность блока 100 составляла 8 последовательных нулей.
Сложность блока 542864 составляла 18 последовательных нулей.

Как вы можете видеть, совокупная мощность хэширования на блокчейне Биткойна в 2018 году во много-много раз больше, чем в 2009 году. Небольшое примечание: график ниже показывает только постоянно увеличивающуюся сложность добычи биткойнов до марта 2018 года, но она снижается с октября 2018 года, когда майнеры были вынуждены прекратить добычу, потому что их операционные расходы начали превышать прибыль от майнинга, поскольку цены на биткойны быстро падали.

Сложность майнинга Биткойна возросла существенным образом с момента его появления на свет, потому что с тех пор к сети присоединилось больше майнеров (возросла мощность хэширования).

Хорошо, а что если увеличить размер блока?

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

Где найти отчёты в реальном времени по добавлению новых блоков в блокчены Биткойна и Эфириума?

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

Источник: bitnovosti.com