Атака спамом транзакций идет без перерывов уже почти неделю и задержка платежей утратила новизну. Упорству неизвестного спамера можно позавидовать - уже с 10 июля размер очереди стабилизировался в диапазоне 12-20 тысяч транзакций, но он продолжает упорно рассыпать по сети свою "пыль".
Между тем, разработчики ядра Биткоина не сидели без дела и прошлой ночью выпустили большое обновление - версию Bitcoin Core 0.11.0. В свете последних событий она очень актуальна, так как большая часть изменений направлена именно на борьбу со спамом и оптимизацию хранения блокчейна, чего пользователи ждали уже давно. Из-за постоянного роста базы данных количество полных узлов в сети начало сокращаться, а без них обеспечение децентрализации невозможно. Способ на данный момент придуман достаточно странный, но его возможно доработать.
Скачать новую версию можно на официальном сайте Bitcoin.org. Версия 0.11.0 обратно совместима с версиями 0.10.*, тогда как перейти на более старые без повторной загрузки блокчейна уже невозможно из-за изменения механизма синхронизации блоков.
Новый кошелек быстро установился и запустился. Закачка нового блокчейна стартовала через минуту и пошла достаточно резво, по сравнению со старыми версиями, поедая дисковое пространство со скоростью нескольких десятков мегабайт в минуту.
Кроме небольших косметических изменений интерфейса, все осталось по-прежнему. Но окно отправки платежа со включенными "экспертными" опциями стало богаче, в частности теперь имеется более гибкое управление комиссиями.
Но невидимые для пользователя компоненты клиента изменились еще более значительно. Итак, традиционный список главных изменений:
Защита от "спама транзакций" (transaction flooding):
-
a) Для мониторинга использования памяти кошельком введена команда для вывода информации по mempool - массиву неподтвержденных транзакций. Это команда getmempoolinfo.
-
б) Появилась возможность фильтровать ретрансляцию транзакций вашим узлом по минимально заложенному объему комиссии. По умолчанию установлено значение в 1000 сатоши (0.00001 BTC). Его можно поменять с помощью команды minrelaytxfee. Транзакции с комиссией меньше заданного значения, будут отвергаться кошельком и не будут ретранслироваться другим узлам.
-
в) Еще одна команда позволяет задать количество бесплатных транзакций, которое клиент будет размещать в mempool, а при майнинге включать в блок. Это команда limitfreerelay, по умолчанию стоит значение 15.
Эти значения можно задавать и в файле bitcoin.conf. Более существенные меры для борьбы со спамом обещаны в следующем релизе.
Обрезка файла блоков (Block file pruning). База данных блокчейна состоит из четырех основных компонентов: базы неистраченных выходов (UTXO), индекса блоков, данных отката (undo) и "сырых блоков" (raw blocks), полученных по сети.
"Обрезка" позволяет удалять два последних компонента, как только они были использованы и внесены в индекс. Пользователь может задать вручную размер накапливаемых данных. Минимальное значение - 550 Мб. Оно задано из расчета, что кошелек сможет хранить в "сыром" виде не меньше 288 блоков - то есть примерно за двое суток. Если отведенное место заполнено, более старые блоки удаляются.
На данный момент "обрезка" несовместима с ретрансляцией блоков. Узел со включенной функцией обрезки не может работать, как полноценный член сети - он хранит не весь блокчейн, а только неистраченные выходы и небольшое количество последних блоков. По сути, это нечто среднее между полным и легким кошельком. При начальной синхронизации обрезка удаляет старые блоки "на лету". Таким образом, чтобы превратить "обрезанный" кошелек в полный, нужно провести полную ресинхронизацию блокчейна. В будущих версиях разработчики обещают придумать более элегантное решение.
Другие важные изменения:
-
а) Оптимизация использования памяти. Путем управления кэшем UTXO, уменьшением необходимой памяти для поддержки соединений и уменьшения количества потоков, что снижает использование виртуальной памяти.
-
б) Улучшен механизм расчета комиссии и отбора транзакций для включения в блок.
-
в) Возможность отключения ретрансляции транзакций командой -walletbroadcast=0. Такой кошелек будет принимать транзакции, но не передавать их на другие. Передачу транзакций можно будет организовать с помощью отдельных скриптов, в том числе направлять их через Tor. Эта функция может пригодиться сторонникам максимальной анонимности.
- г) Также через Tor можно будет создавать и отдельные соединения, таким образом кошелек сможет работать в "сером" режиме - и в публичной, и в анонимной сети.
Кроме этого, в обновлении есть множество более мелких изменений и исправлений. Полный список на английском языке можно увидеть на сайте https://bitcoin.org/en/release/v0.11.0





