В последние несколько дней на сеть Bitcoin с разных сторон свалилось одновременно несколько напастей. По отдельности подобные события случались и раньше, но теперь сразу все факторы соединились вместе. Создается впечатление, что какая-то таинственная, но могучая сила подвергает Биткойн тяжелым и изощренным испытаниям для того, чтобы проверить - годится ли он на роль мировой платежной системы?
Даже если никакой невидимой руки не существует, подобный стресс-тест будет полезен и для разработчиков Bitcoin, и для всего сообщества. Ведь именно такие ситуации показывают реальный запас прочности и выявляют недостатки. Давайте посмотрим, как развивались события.
1. Еще в конце июня, в связи с назревавшим кризисом в Греции, "банковскими каникулами" и даже блокировкой PayPal для греков, активность в сети Bitcoin возросла. Множество людей заинтересовались криптовалютой, как независимым от государственного контроля средством сохранения своих сбережений во время финансовой нестабильности. Сами по себе эти события скорее полезны для Биткойна, но теперь создали дополнительную нагрузку.
2. Дискуссии о недостаточном ограничении размера блока в 1 Мб шли давно, с переменным успехом и даже конфликтами, но две недели назад, наконец, было достигнуто соглашение об увеличении лимита до 8Мб в начале 2016 года.
3. 23 июня биржа Coinwallet.eu решила доказать всем, что изменение размера блока действительно необходимо. Это ей удалось, но предельно практический метод доказательства устроил в сообществе изрядный переполох. Причем, компания предупредила, что проведет второй этап "тестирования".
4. 4 июля возникло критическое раздвоение мощностей основных майнинговых пулов, вызванное переходом на обязательное соблюдение BIP66 - изменения протокола Bitcoin до блоков версии 3 (v3). В результате сеть на некоторое время разделилась на две фактически равных ветви и произошло отделение и потеря (для майнеров) двух цепочек в 6 и 3 блока соответственно. На сегодняшний день почти все пулы перешли на блоки третьей версии, кроме двух крупнейших - F2Pool (бывший Discus Fish) и Antpool. Поэтому, "тревожный" статус в сети до сих пор не отменен и раздвоения блокчейна все еще возможны.
5. Но самое интересное началось вечером 7 июля - кто-то запустил атаку на сеть "спамом транзакций" - то есть генерацией огромного количества мелких транзакций, которые полностью забивали все новые блоки. На данный момент не известно, кто и с какой целью проводит эту атаку. Несмотря на общедоступность блокчейна, анонимность Bitcoin не дает точно установить происхождение этих транзакций. Сейчас обнаружено около 400 связанных адресов, которые непрерывно передают друг другу по 1000 сатоши (0.00001 BTC), выплачивая при этом комиссии, следовательно, атака обходится ее инициатору недешево. Вот один из этих адресов, а следуя по цепочке, можно найти и остальные.
Что происходит?
Постараемся описать ситуацию на текущий момент. Еще вчера стала быстро расти очередь неподтвержденных транзакций. Ранее она крайне редко превышала 10 000, теперь же по данным Blockchain.info постоянно держится выше 20 000:
Общий размер всех неподтвержденных транзакций составляет почти 22 мегабайта, то есть для их отправки требуется в среднем 22 полных блока, но транзакции продолжают постоянно прибывать. Поэтому, размер очереди почти не меняется. Ситуация усугубляется тем, что в сети возникает достаточно много "пустых" блоков, содержащих только 1-2 транзакции. Каждый блок включает минимум одну транзакцию - в ней майнеры получают добытые монеты. Происходит ли это по техническим причинам или от желания владельцев пулов быстрее получить блок - неизвестно. Каждый пустой блок отодвигает очередь еще на 10 минут.
Последствия атаки хорошо видны на некоторых графиках на Blockchain.info:
Вы можете видеть, что в последние два дня резко возросли как количество транзакций в блоке, так и средний размер блока, уже опасно приближающийся к максимальному значению в 1 Мб. Таким образом, этот второй стресс-тест еще раз убедительно доказывает необходимость увеличения лимита.
Помимо крупных неприятностей, произошли и более мелкие. В частности, около 21:00 МСК на некоторое время "завис" один из основных информационных ресурсов о Bitcoin - Blockchain.info.
Произошло это вследствие двух блоков, которые не смог прочитать block explorer - 364422 и 364423 от F2Pool, которые, тем не менее, прошли в основной блокчейн. Сервис теперь работает, но по-прежнему не показывает транзакции из этих двух блоков.
Что будет дальше?
Атака, очевидно, вскоре окончится. Если атакующий - не сам Сатоси Накамото со своим миллионом биткойнов, ресурсы для продолжения атаки скоро истощатся, так как при возникновении очереди клиенты сети автоматически увеличивают необходимый для быстрого прохождения размер комиссии. Поэтому, для эффективного нападения атакующему тоже приходится увеличивать выплаты майнерам.
Когда закончится атака - сейчас сказать мы не можем. Но будем надеяться, что таинственный "тестер" заявит о себе и разъяснит мотивы своих поступков. Возможно, это вызовет ускорение выпуска патча, увеличивающего максимальный размер блока - проблема теперь очевидна для всех.
Что касается несовместимости версий блоков и возможного раздвоения цепочки - она стоит не так остро, но может оказаться более серьезной. Большинство пулов после предупреждения разработчиков обновили свои кошельки, но два самых крупных китайских пула, вместе имеющие до 40% всей мощности, до сих пор не обновились и неизвестно, когда они это сделают. Такое поведение может вызвать не только технические проблемы, с которыми сеть сравнительно легко справляется, но и нанесет удар по репутации Bitcoin. Очевидно, что механизмы саморегуляции сети не слишком эффективны против крупных майнеров. Можно только не обращать на них внимания - за счет снижения безопасности или увеличения количества подтверждений.
Несмотря на все описанные выше сложности и замедление прохождения многих транзакций, сеть Bitcoin продолжает работать, и это главное. Криптовалюта показала, что может выдержать достаточно серьезные атаки, хотя многие технические аспекты нуждаются в серьезной доработке.
Однако, не только свободные децентрализованные системы страдают от технических недостатков. По иронии судьбы, именно сегодня из-за технического сбоя на несколько часов прекратила работу одна из крупнейших торговых площадок мира - Нью-Йоркская фондовая биржа (NYSE). По сообщениям СМИ, причиной стало неудачное обновление некоторых систем. Никто в мире не застрахован от подобных неприятностей.