В течение последних нескольких месяцев в сообществе Биткоина ведутся дискуссии по поводу пустых блоков. Эта тема вновь возникла из-за того, что Antpool недавно добыл довольно большое число почти пустых блоков.
Пустым называется блок, который содержит только coinbase транзакцию, которая начисляет вознаграждение майнеру. Это может показаться непродуктивным, но с точки зрения майнера существуют причины, чтобы прилагать усилия для добычи именно пустых блоков.
Почему майнеры добывают пустые блоки?
По словам Мэтта Коралло (Matt Corallo), разработчика Bitcoin Core, есть три основные причины, почему добывались пустые блоки.
Первая – скорость оповещения: как быстро майнинговый пул дает знать сети, что найден новый блок. Это было особенно проблематично, когда майнер в Китае пытался оповестить узлы по другую сторону "Великой стены" о создании нового блока.
Вторая - загрузка блока. По сути, другие узлы будут знать, что есть новые блоки, но им все равно необходимо будет загрузить этот блок через медленное соединение. В прошлом передача блоков между узлами также была проблемой, но сеть FIBRE практически свела эту проблему на нет. FIBRE - протокол, который используется для передачи блоков в сети практически без задержек.
И в-третьих, у майнера много времени занимает проверка транзакций в блоке. Процесс проверки сделок предыдущего блока и удаление их из mempool – это главный "виновник" появления большинства пустых блоков, которые по-прежнему добываются в сети.
Уменьшение количества пустых блоков
В 2015 году и в начале 2016 года, пустые блоки в сети были довольно распространенным явлением, но тогда это еще не создавало значительных проблем. Согласно данным Bitfury, в общей сложности 264 пустых блоков были добыты в ноябре 2015 года. В среднем, в блоке содержится 1994 транзакции, то есть пустые блоки "съели" место для почти 525 000 транзакций. Это больше, чем вся сеть обработала в среднем в сутки. Однако, за декабрь 2016 года было добыто только 34 пустых блока. Итак, что же случилось?
Проблема пустых блоков обсуждалась на встрече the Bitcoin mining community и несколькими разработчиками Bitcoin Core.
"Все говорили о том, что нужно увеличить пропускную способность, чтобы проводить операции значительно быстрее" - рассказал Самсон Моу (Samson Mow), операционный директор BTCC.
По его словам, пул BTCC смог уменьшить количество пустых блоков, так как они применили различные усовершенствования архитектуры для улучшения пропускной способности и передачи данных.
Antpool усовершенствует свои системы
"Мы разработали новую систему передачи блоков", - сказал представитель Antpool. "Блоки могут передаваться в течение одной-трех секунд, сейчас система на финальной стадии тестирования, добывается несколько пустых или небольших блоков, но после того, как мы закончим тестирование, вероятность получения пустых блоков будет минимальной, а дальше система станет общедоступной".
По мнению Кевина Пана (Kevin Pan) от BTC.com, уменьшение количества пустых блоков произошло в значительной степени из-за "компактных блоков", это усовершенствование было реализовано в Bitcoin Core 0.13 и FIBRE.
Собственные усовершенствования ViaBTC позволили компании стать крупнейшим майнинговым пулом, который проводит SPV майнинг, при этом не добывая пустые блоки в течение последнего месяца. С другой стороны, BitFury никогда не добывал пустых блоков.
"Bitfury начал использовать специальные техники, чтобы избежать добычу пустых блоков, потому что это наносит ущерб сообществу" - сказал Алекс Петров (Alex Petrov), директор по информационным технологиям в Bitfury.
"Чтобы процесс обработки транзакций был быстрее, самый простой способ - не допускать добычу пустых блоков".
Петров говорит, что они еще с 2014 года предлагали другим пулам свою помощь в том, чтобы избежать добычу пустых блоков. Но многие пулы стали интересоваться, как избежать пустых блоков, только в конце 2015 года, поскольку Биткоину в первый раз пришлось иметь дело с переполнением блоков.
Помимо FIBRE, Коралло реализовал компактные блоки в Bitcoin Core. По его мнению, множество различных факторов привело к тому, что в сети Биткоина снизилось количество пустых блоков.
"Что же улучшило передачу блоков? Я думаю, что много вещей. FIBRE, конечно же, внес свой вклад в этот процесс, но также и другие пулы, оптимизирующие свои собственные стеки, сделали свой вклад."
Количество пустых блоков будет снижаться
Нет никаких оснований думать, что количество пустых блоков, добываемых ежемесячно, в 2017 году будет расти.
"У нас огромные успехи в передаче блоков в Bitcoin Core 0.13 и 0.14 [готовится к выходу в феврале-марте 2017]. Мы видим [пустые блоки] раз в месяц только потому, что время между тем, когда один пул находил блок, и когда остальные подтверждали его, оказывалось слишком коротким", - сказал Коралло.
Сейчас Коралло работает над системой, которая будет передавать блоки напрямую между узлами, а не по всей сети. Для некоторых пулов, проверка вновь добытого блока занимает менее 500 миллисекунд.
Коралло заявил: "Я работаю над уменьшением до 500 миллисекунд для всех. Даже те, кто добывает пустые блоки, будут добывать их за более короткий период времени".
Стоит отметить, что постепенно снижается стимул добывать пустые блоки, так как операционные сборы становятся более весомыми, а когда-нибудь станут больше, чем вознаграждение за блок. Значит, майнерам будет выгодно добывать блоки со сделками, так как они будут получать за них большее вознаграждение.