Добыча пустых блоков становится все менее распространенной, но технические ограничения не позволяют ей полностью исчезнуть. Появился Stratum V2.
Поскольку интерес к Биткойну растет, а вместе с ним увеличивается и объем транзакций, мало что может разочаровать больше, чем появление в блокчейне пустого блока (т.е. блока без транзакций). С годами майнинг пустых блоков становится все менее распространенным, но, к сожалению, в среднем в неделю все еще добывается 3-4 пустых блока.
В этой статье мы объясним:
Более 15% блоков в блокчейне Биткойна не содержат никаких транзакций, за исключением, конечно, транзакции coinbase, вознаграждающей майнера вновь выпущенными монетами. Однако эта статистика довольно обманчива без контекста.
Видите ли, только около 0,4% блоков, добытых за последний год, были пустыми, и это число уменьшается год от года. Этому есть несколько причин, но самая главная причина заключается в том, что экономический стимул включать транзакции в блоки со временем становится все сильнее.
На заре майнинга Биткойна, когда вознаграждение за блок составляло 50 или 25 BTC, а объем транзакций был невелик, комиссия за транзакции была относительно незначительной суммой для майнеров. Однако начиная с 2016 года вознаграждение за блок снизилось до 12,5 BTC, а комиссия за транзакции начала неуклонно расти. Это означало, что все большая часть дохода от майнинга поступала от платы за транзакции, что не стимулировало добычу пустых блоков.
Но в связи с этим возникает вопрос: если майнеры теряют значительные суммы дохода при добыче пустых блоков, почему это все еще происходит?
Итак, частота пустых блоков за последний год снизилась до 0,4%, но это все равно на 0,4% слишком много, верно?
К сожалению, даже сильного экономического стимула добывать полные блоки недостаточно для полного устранения проблемы. Причина, по которой майнинговые пулы, включая Braiins Pool (бывший Slush Pool), все еще иногда добывают пустые блоки, кроется в технических ограничениях.
Каждый раз, когда найден новый блок, он транслируется узлом майнера (или майнингового пула), который его нашел, и распространяется на все остальные узлы в сети. В тот момент, когда другие майнинговые узлы видят, что найден действительный блок, они должны прекратить использование своей хэш-мощности на этом блоке и начать поиск следующего.
В пулевом майнинге процесс начала работы над новым блоком требует, чтобы пул майнеров отправил майнеру шаблон блока с prevhash только что найденного блока. Получив шаблон блока, майнер может начать поиск нонса, который решит следующий блок. Каждая секунда времени поиска имеет значение, поэтому важно, чтобы пулы предоставляли майнерам новые шаблоны блоков для работы как можно быстрее.
Чтобы максимизировать время, в течение которого майнеры могут искать следующий блок, майнинговые пулы изначально отправляют пустые шаблоны блоков без транзакций. Это связано с тем, что отправка полного шаблона блока требует большего объема передачи данных, чем пустой шаблон, поэтому она повлечет за собой дополнительную задержку и, таким образом, задержит поиск майнерами действительного nonce.
Всего через 1-2 секунды пул может отправить обновленный шаблон блока с включенными транзакциями. Однако это не аннулирует предыдущий шаблон блока, отправленный пулом, поэтому майнеры могут некоторое время продолжать работать с пустым шаблоном блока, прежде чем перейти к полному. Поэтому, если майнерам повезет и они найдут блок в течение нескольких секунд после предыдущего блока, он часто будет пустым.
Что это значит: Пока вознаграждение за блок составляет значительную часть дохода от майнинга, этот стимул отправлять пустые блоки в начале новых раундов майнинга будет сохраняться. По крайней мере, так будет с оригинальным протоколом stratum.
Подведем итоги того, что мы прошли до сих пор:
Чтобы полностью устранить стимул для майнинга пустых блоков, мы должны устранить дополнительную задержку, которая возникает при отправке шаблонов полных блоков майнерам для начала работы сразу после обнаружения нового блока.
Решение в Stratum V2 на самом деле довольно простое. Если в V1 передача данных, позволяющая майнерам начать работу над новым блоком, содержит шаблон блока и prevhash вместе, то в V2 эти два компонента разделены.
В результате майнинговые пулы смогут копать глубже в mempool (для транзакций, которые вряд ли будут включены в текущий блок) и создавать полные шаблоны блоков до того, как будет найден текущий блок. Затем они смогут отправлять эти шаблоны блоков майнерам заранее, когда задержка не имеет значения, так что для фактического начала нового раунда добычи нужно будет отправить только сообщение prevhash.
Таким образом, преимущество в несколько секунд, полученное за счет отправки пустых блоков, теряет свою актуальность. С появлением Stratum V2 у пулов больше нет стимула отправлять пустые блоки в начале раундов добычи.
Добыча пустых блоков - не такое частое явление, как раньше, но, тем не менее, каждый раз, когда блок добывается без подтверждения транзакций, вызывает досаду, особенно потому, что это потерянный доход для майнеров, а в противном случае это была бы возможность очистить мемпул от транзакций с меньшей стоимостью. Отделение шаблона блока от сообщения prevhash является простым решением этой проблемы и очевидным преимуществом Stratum V2.
По большому счету, устранение майнинга пустых блоков - это лишь одна небольшая часть того, что делает Stratum V2 лучше для будущего майнинговой индустрии. Если вам интересно узнать больше о проблемах в горнодобывающей промышленности и решениях, предлагаемых в Stratum V2, ознакомьтесь с нашими статьями:
Компания по разработке программного обеспечения для майнинга биткоинов: Braiins Pool, Braiins OS & Stratum V2.
От майнеров, для майнеров.
Увеличьте хэшрейт на ваших Bitcoin ASIC, повысьте эффективность на 25% и добывайте на любом пуле или получите 0% комиссии пула на Braiins Pool.
Сократите передачу данных между фермой и пулом на 95%. Настройте параллельное использование нескольких пулов. Установите резервный пул на целую ферму.
Направлен на повышение эффективности передачи данных, снижение требований к физической инфраструктуре майнинга и повышение безопасности.
Лидеры отрасли в сфере прозрачности и инноваций, с 2010 года добыто более 1,25 млн. BTC.
Опубликовано
18.8.2020
Добыча пустых блоков становится все менее распространенной, но технические ограничения не позволяют ей полностью исчезнуть. Появился Stratum V2.
Оглавление
Поскольку интерес к Биткойну растет, а вместе с ним увеличивается и объем транзакций, мало что может разочаровать больше, чем появление в блокчейне пустого блока (т.е. блока без транзакций). С годами майнинг пустых блоков становится все менее распространенным, но, к сожалению, в среднем в неделю все еще добывается 3-4 пустых блока.
В этой статье мы объясним:
Более 15% блоков в блокчейне Биткойна не содержат никаких транзакций, за исключением, конечно, транзакции coinbase, вознаграждающей майнера вновь выпущенными монетами. Однако эта статистика довольно обманчива без контекста.
Видите ли, только около 0,4% блоков, добытых за последний год, были пустыми, и это число уменьшается год от года. Этому есть несколько причин, но самая главная причина заключается в том, что экономический стимул включать транзакции в блоки со временем становится все сильнее.
На заре майнинга Биткойна, когда вознаграждение за блок составляло 50 или 25 BTC, а объем транзакций был невелик, комиссия за транзакции была относительно незначительной суммой для майнеров. Однако начиная с 2016 года вознаграждение за блок снизилось до 12,5 BTC, а комиссия за транзакции начала неуклонно расти. Это означало, что все большая часть дохода от майнинга поступала от платы за транзакции, что не стимулировало добычу пустых блоков.
Но в связи с этим возникает вопрос: если майнеры теряют значительные суммы дохода при добыче пустых блоков, почему это все еще происходит?
Итак, частота пустых блоков за последний год снизилась до 0,4%, но это все равно на 0,4% слишком много, верно?
К сожалению, даже сильного экономического стимула добывать полные блоки недостаточно для полного устранения проблемы. Причина, по которой майнинговые пулы, включая Braiins Pool (бывший Slush Pool), все еще иногда добывают пустые блоки, кроется в технических ограничениях.
Каждый раз, когда найден новый блок, он транслируется узлом майнера (или майнингового пула), который его нашел, и распространяется на все остальные узлы в сети. В тот момент, когда другие майнинговые узлы видят, что найден действительный блок, они должны прекратить использование своей хэш-мощности на этом блоке и начать поиск следующего.
В пулевом майнинге процесс начала работы над новым блоком требует, чтобы пул майнеров отправил майнеру шаблон блока с prevhash только что найденного блока. Получив шаблон блока, майнер может начать поиск нонса, который решит следующий блок. Каждая секунда времени поиска имеет значение, поэтому важно, чтобы пулы предоставляли майнерам новые шаблоны блоков для работы как можно быстрее.
Чтобы максимизировать время, в течение которого майнеры могут искать следующий блок, майнинговые пулы изначально отправляют пустые шаблоны блоков без транзакций. Это связано с тем, что отправка полного шаблона блока требует большего объема передачи данных, чем пустой шаблон, поэтому она повлечет за собой дополнительную задержку и, таким образом, задержит поиск майнерами действительного nonce.
Всего через 1-2 секунды пул может отправить обновленный шаблон блока с включенными транзакциями. Однако это не аннулирует предыдущий шаблон блока, отправленный пулом, поэтому майнеры могут некоторое время продолжать работать с пустым шаблоном блока, прежде чем перейти к полному. Поэтому, если майнерам повезет и они найдут блок в течение нескольких секунд после предыдущего блока, он часто будет пустым.
Что это значит: Пока вознаграждение за блок составляет значительную часть дохода от майнинга, этот стимул отправлять пустые блоки в начале новых раундов майнинга будет сохраняться. По крайней мере, так будет с оригинальным протоколом stratum.
Подведем итоги того, что мы прошли до сих пор:
Чтобы полностью устранить стимул для майнинга пустых блоков, мы должны устранить дополнительную задержку, которая возникает при отправке шаблонов полных блоков майнерам для начала работы сразу после обнаружения нового блока.
Решение в Stratum V2 на самом деле довольно простое. Если в V1 передача данных, позволяющая майнерам начать работу над новым блоком, содержит шаблон блока и prevhash вместе, то в V2 эти два компонента разделены.
В результате майнинговые пулы смогут копать глубже в mempool (для транзакций, которые вряд ли будут включены в текущий блок) и создавать полные шаблоны блоков до того, как будет найден текущий блок. Затем они смогут отправлять эти шаблоны блоков майнерам заранее, когда задержка не имеет значения, так что для фактического начала нового раунда добычи нужно будет отправить только сообщение prevhash.
Таким образом, преимущество в несколько секунд, полученное за счет отправки пустых блоков, теряет свою актуальность. С появлением Stratum V2 у пулов больше нет стимула отправлять пустые блоки в начале раундов добычи.
Добыча пустых блоков - не такое частое явление, как раньше, но, тем не менее, каждый раз, когда блок добывается без подтверждения транзакций, вызывает досаду, особенно потому, что это потерянный доход для майнеров, а в противном случае это была бы возможность очистить мемпул от транзакций с меньшей стоимостью. Отделение шаблона блока от сообщения prevhash является простым решением этой проблемы и очевидным преимуществом Stratum V2.
По большому счету, устранение майнинга пустых блоков - это лишь одна небольшая часть того, что делает Stratum V2 лучше для будущего майнинговой индустрии. Если вам интересно узнать больше о проблемах в горнодобывающей промышленности и решениях, предлагаемых в Stratum V2, ознакомьтесь с нашими статьями:
Прочитать политику конфиденциальности.
Прочитать политику конфиденциальности.