![](https://habrastorage.org/files/5dc/26e/811/5dc26e81196e4e74ad9ae803d24a1248.jpg)
В теории игр, помимо всего прочего, исследуется феномен под названием «трагедия общинного поля». Если кратко, это неспособность сдерживать свои личные аппетиты (или выполнять персональные обязательства) в ситуациях, когда личной выгоде противопоставлена коллективная ответственность. Что лежит в корне этого феномена вопрос больше к философам и психологам, остановимся на том что он просто есть, и проявлялся на протяжении всей истории человечества.
В IT феномен выливается в неспособность обеспечивать качество сервиса, когда система зависит от согласованного поведение независимых игроков. Например, если попросить посетителей сайта добровольно посещать сайт по расписанию, чтоб не создавать перегрузок, то это просто не будет работать.
И несколько инцидентов последнего времени говорят о том, что биткоин не является здесь исключением.
Форк цепочки 04-07-2015
Форк цепочки блоков bitcoin — состояние, когда в сети существуют и продолжают рассчитываться одновременно две версии цепочки блоков. Такое возможно, когда в сети есть майнеры, которые рассчитывают новые блоки, но оформляют их не правильно, и есть значительное количество участников сети (около 50%), которые считают такие неправильные блоки правильными, включают их в свою локальную копию цепочки, анонсируют своим сосядем и продолжают рассчитывать следующий за неправильным блок. А остальные 50%, которые отвергают неправильный блок, продолжают рассчитывать уже свою версию цепочки по новым правилам.
Собственно, это и произошло. 10 января был анонсирован бюллетень обновлений, в котором немного изменялся формат подписи в блоках. Предполагалось, что к июлю, когда измененные правила вступит в силу, обновление будет установлено на большинстве (значительно больше 50%) участников сети. Но реальность оказалась иной, и это имело последствия:
- потеря денег продавцов — потеря транзакций обработанных в неправильных блоках
- потеря денег майнеров — по приблизительным рассчетам, майнеры потратили около 50 000$ на расчет блоков, которые потом были отклонены
- падение скорости транзакций — рекомендовалось ожидать 30(!) подтверждений (это количество блоков в цепочке, после блока в котором обработана рассматриваемая транзакция, т.е. по ~10 минут каждый) для сохранения доверия.
Флуд ничтожными транзакциями 07-07-15
Кто-то начал эксплуатировать «общее поле», создавая большое (десятки тысяч) количество транзакций с минимальной суммой перевода. Эти транзакции начали «размывать» очередь полезных транзакций (в среднем, где-то около 2 тысяч), которые ожидали своего проведения (включения в блок). Атака длилась до 15 июля, атакующий потратил около 30 BTC (7500$), и не смотря на попытки майнеров фильтровать мусорные транзакции, атакующий смог добиться:
- Потеря скорости проведения платежей
- Проблемы со связностью сети — транзакции создавали трафик который не все участники сети могли себе позволить
- Проблемы с майнингом — некоторые майнеры оказались технически не готовы работать очередью таких размеров
- Напряжение в bitcoin-сообществе — появились подозрения, что таким образом кто-то решил продемонстрировать необходимость изменения размеров блока.
The End Is Nigh?
«Сегодня в завтрашний день не все могут смотреть. Вернее, смотреть могут не только лишь все, мало кто может это делать.»(с)
Но мы попробуем, не смотря на предостережение мудрецов. Вспомним основные качества bitcoin, за которые мы его так любим:
- Нет единого центра доверия или управления. Клиентское ПО управляется только пользователем, цепочку можно проверить локально.
- Система распределена, нет какой-то единого арбитра, который может взять и её всю, например, остановить или почистить.
- Сложность майнинга зависит от вычислительных возможностей сети, грубо говоря, чем больше майнеров, тем сложнее провести две конфликтующие транзакции (doublespending attack).
Описанная проблема с клиентским ПО является прямым следствием пункта 1: мы не можем форсировать централизованный апдейт, так как у нас нет центра управления, а если мы накатываем его добровольно, то получается форк и участники сети несут коллективную ответственность(привет, общинное поле). Во что, в такой обстановке, будут выливаться апдейты протокола если сеть вырастет в 2 раза, а в 3?
Следствием из пункта 2 является описанная возможность флуда. Чтоб как-то его пережить, потребовалась работа со стороны майнеров, которым приходилось вручную вычищать транзакции, согласовывая свои усилия на форумах. Насколько это было эффективно трудно установить.
Но самым тревожным является третий пункт, аналитически доказано, что для того, чтоб начать всей сети диктовать свою версию цепочки (начать это делать с вероятностью 1), необходимо иметь 51% вычислительных мощностей сети. Если взглянуть на текущее распределение мощностей, то получается, что 90% всей вычислительной мощности контролируется 10 субъектами:
![](https://habrastorage.org/files/124/d5b/77b/124d5b77be4c4f6b8c2c911dbbb1a8d3.png)
В 2017 году вознаграждение за блок (следовательно, доход майнеров) уменьшится вдвое, что может привести к «мору» некоторых топовых майнеров, которые вынуждены много тратить на амортизацию фабрик, и количество топовых майнеров станет еще меньше.
![](https://habrastorage.org/files/770/82f/6a3/77082f6a3483488794b4fff19eca2c87.png)
Итого, с одной стороны есть проблемы с качеством сервиса, которые решать в обозримые сроки возможно только через диктат решения, а с другой мы имеем 10 игроков, которые заинтересованы в работе системы. Следовательно, созданы условия для формирования картеля, узкого круга, который является основным бенефициаром изменений инфраструктуры, и который будет вынужден найти способ диктовать эти решения всем участниками системы, чтоб она развивалась без сбоев и приносила прибыль. (По поводу картелей в условия общинного поля, интересным для изучения примером может быть ОПЕК, а точнее их безуспешные попытки договориться повлиять на цену нефти. )
А теперь, главный вопрос: когда 10 субъектов, которые вынуждены договариваться (согласованно вносить изменения так что работа системы не была нарушена) и контролируют всю систему с помощью своих огромных вычислительных мощностей, о какой распределенности и независимости может идти речь, и чем такая система лучше, чем система которую контролируют 10 субъектов, но без огромных фабрик для майнинга, а каким-нибудь более дешевым способом?