В зависимости от того, насколько вы следите за всем, что происходит в мире биткоина, на протяжении последних нескольких лет вы, так или иначе, скорее всего что-то слышали об интенсивном обсуждении касаемо текущего ограничения размера блока в цепочке блоков биткоина, а может и сами принимали в нем участие. Дискуссия в последнее время проходит все масштабнее и оживленнее, особенно после того, как в начале года главный разработчик кода биткоина Гэвин Андресен обратился к сообществу с предложением увеличить размер блока, заложенный в алгоритм в данный момент. Давайте разберемся поподробнее, о чем вообще речь, и попробуем понять, что ждет биткоин с его технической стороны.
Что случилось?
Для начала, чтобы все было понятно, обозначим некоторые ключевые моменты:
- Сегодня майнеры добывают один блок в среднем каждые 10 минут;
- В каждом блоке сегодня может храниться максимум 1 Мб данных;
- Такое ограничение заложено в код биткоина, но пропускная способность сети этим не ограничивается;
- В блок размером 1 Мб можно вместить данные примерно о 3-5 тысячах простых транзакций (между двумя кошельками с небольшим количеством входов и выходов), то есть сеть в данный момент пропускает в среднем 7 транзакций в секунду (для сегодняшнего количества пользователей это не критично, но для будущего массового использования очень мало);
- Количество транзакций, которые вмещаются в один блок, сокращается, во-первых, за счет многоадресных транзакций (например, рассылка пулами вознаграждения майнерам), а во-вторых, за счет того, что некоторые компании используют цепочку блоков биткоина для передачи своих данных или поддержания реестра (примеры: компания Factom, проект Counterparty, биржа Nasdaq). Именно о таком нефинансовом применении цепочки блоков в последнее время столько разговоров.
До недавнего момента блоки довольно редко заполнялись данными целиком, так что многие вообще не обращали внимания на существование ограничения размера. Однако вместе с тем, как признание биткоина растет, и им начинает пользоваться все больше людей, увеличивается, соответственно, и количество транзакций, в результате чего блок в цепочке все больше заполняется данными.
Неделю назад группа добровольных исследователей устроила «тест на стрессоустойчивость» сети путем «спама» цепочки блоков множеством транзакций на крохотные суммы, в результате которого на протяжении 8 часов каждый блок в сети был заполнен целиком, и большое количество транзакций, не уместившихся в блоки, остались неподтвержденным.
Также стоит отметить, что некоторые пользователи при переводе биткоинов умышленно увеличивают размер вознаграждения майнерам, чтобы их транзакция была приоритетной для подтверждения, то есть подтверждение обычных транзакций может происходить уже во втором, третьем и так далее блоках, а значит занимать по времени 20, 30 и даже больше минут (а иногда и пару часов). Конечно, разрабатываются различные программные решения, чтобы при оплате биткоином вам не приходилось стоять по полчаса на кассе в ожидании подтверждения, но технически все именно так, как описано выше, и с ростом масштабов использования биткоина такие задержки будут случаться все чаще и чаще.
То есть среди главных преимуществ биткоина все выделяют быстрые и дешевые переводы средств, но с текущим размером блока со временем не станет ни того, ни другого.
Зачем было ограничиваться всего 1 мегабайтом?
В 2010 году о биткоине написали на популярном айтишном сайте Slashdot.org, благодаря чему на едва появившуюся технологию обратило внимание множество пользователей. Однако среди них оказались и не самые добропорядочные, и сеть биткоина начала подвергаться многочисленным атакам. Создатель биткоина Сатоши Накамото и другие разработчики из сообщества быстро на это среагировали и внесли несколько поправок в протокол, чтобы сделать его более устойчивым. Одной из этих поправок как раз стало решение установить предел размера блока в 1 Мб. Гэвин Андресен так описывает те события:
В 2010 году, когда о биткоине впервые написал Slashdot, и курс биткоина начал расти, Сатоши применил несколько быстрых решений для защиты от разного рода DOS-атак. Одним из них стало уменьшение предела размера блока до одного мегабайта (до этого ограничения не было, но в действительности размер блока не мог превышать 32 Мб — максимального размера сообщения в протоколе p2p). С самого начала подразумевалось, что предел размера блока нужно будет повышать, когда для обработки всего объема транзакций будет необходимость в больших блоках.
До того момента у биткоина не было ограничения на размер блока, и оно было введено как мера против злоумышленников, которые могли преднамеренно создавать большие блоки с целью обрушить еще совсем молодую на тот момент сеть. Такие атаки в принципе возможны и сегодня, именно поэтому и необходимо ограничение размера, но сейчас сеть уже довольно устойчива к ним, и они, по сути, стали неэффективными.
В то время объем транзакций был очень малым, и считалось, что одного мегабайта хватит как для защиты сети, так и для резервного пространства для будущего роста объемов транзакций, прежде чем масштабы сети будут увеличены. Тем не менее, до недавнего времени разработчики откладывали вопрос масштабирования, и если для традиционного финансового программного обеспечения отсутствие глобальных изменений скорее может быть плюсом, то в случае с биткоином, это по-настоящему сдерживает его потенциал.
Один из ведущих разработчиков Майк Хирн опубликовал письмо от Сатоши конца 2010 года, в котором он рассуждал о размере блока, вот его фрагмент:
Им просто нужно уменьшить время нахождения блока и награду в две раза.
Т.е. блок будет каждые 5 минут, а награда за бок 12,5 БТС. Майнеры довольны, пропускная способность сети увеличена в 2 раза, и транзакции проходят в два раза быстрее.
Уточните пожалуйста про майнеров, у кого появится преимущество и перед кем, ведь блоки так же будут находиться в среднем 1 раз в 10 минут.
Как я понял, речь о больших трудозатратах оборудования на добычу одного блока. У кого мощнее железо тот быстрее и добыл
Сейчас тоже так.
Да, наверное не очень понятно было, что имелось в виду, переписали этот абзац. Но это конечно далеко не основной фактор, просто решили на это обратить внимание.
С одной стороны, майнерам выгоднее собирать блок большего размера, чтобы получить больше комиссий с транзакций. С другой — меньшего, — чтобы быстрее распространить собранный блок по сети и обогнать конкурентов (иначе плата за блок данному майнеру будет 0).