Выпуск Bitcoin Core 0.15.0: что нового?
Сегодняшний день отмечен официальным выпуском Bitcoin Core 0.15.0 — пятнадцатого поколения оригинального программного обеспечения биткоина, запущенного Сатоши Накамото почти девять лет назад. Этот последний крупный релиз, вверенный главному специалисту по обслуживанию в Bitcoin Core Владимиру Ван дер Лаану, разрабатывался почти 100 участниками в течение 6 месяцев, — также, благодаря крупным пожертвованиям от Chaincode Labs, Blockstream и MIT Digital Currency Initiative.
Bitcoin Core 0.15.0 обеспечивает значительную производительность и удобство использования по сравнению с предыдущими версиями программного обеспечения. Он также вводит несколько новых функций, позволяющих лучше справляться с текущим статусом сети.
Вот некоторые из наиболее заметных изменений.
Реструктуризация базы данных Chainstate
Одно из самых больших изменений по сравнению с предыдущими версиями связано с тем, как изменяется и сохраняется состояние блокчейна биткоина. Это «состояние блокчейна» (chainstate / UTXO-set) сохраняется в отдельной базе данных, тогда как ранее оно категоризировалось для каждой отдельной транзакции. Если одна транзакция отправляла биткоины на несколько выходных записей («адресов»), то информация об этих разных выходных записях сохранялась как одна запись в базе данных – со ссылкой на эту транзакцию.
Вместо такого подхода в Bitcoin Core 0.15.0 каждая из этих выходных записей хранится в одной записи базы данных. Если одна транзакция отправляет биткоины на разные выходные записи, то каждая запись хранится отдельно. Хотя этот метод требует большего объёма дискового пространства, он требует меньше вычислительных ресурсов, если одно из этих выходных слов будет позже использовано.
Наиболее чётко выраженным преимуществом этой новой структуры данных является то, что начальное время синхронизации для новых узлов уменьшается примерно на 40%. Она также представляет более простой код, уменьшает использование памяти и многое другое. Кроме того, она исправляет ошибку, которая теоретически может привести к краху узлов Bitcoin Core, — об этом шла дискуссия и на конференции Breaking Bitcoin на прошлой неделе в Париже.
Улучшенная оценка комиссии
Поскольку блоки биткоина за последний год или два переполнялись, не все транзакции могут приспособиться к первому блоку, который был добыт. Вместо этого, майнеры обычно определяют приоритеты для транзакций, которые включают в себя наибольшую комиссию. Если пользователь хочет быстрого подтверждения своей транзакции, то он должен включить в неё достаточно высокую комиссию. Если он не спешит, то ему подойдёт более низкая комиссия.
Тем не менее, сеть биткоина имеет присущую ей непредсказуемость с точки зрения скорости обнаружения блоков или количества транзакций. Это затрудняет определение правильной комиссии за транзакцию.
Bitcoin Core 0.15.0 снижает эту неопределённость: он включает в себя значительно улучшенные алгоритмы оценки комиссии. Это связано главным образом с тем, что программное обеспечение при расчётах учитывает больше данных, таких как комиссии, включённые в более старые подтверждённые транзакции, а также комиссии в неподтвержденных транзакциях — те, которых оказалось недостаточно.
Кроме того, пользователи смогут пользоваться большей гибкостью программного обеспечения. Во-первых, Bitcoin Core 0.15.0 впервые позволяет пользователям включать комиссии, из-за которых на подтверждение транзакций могут уйти недели. Кроме того, новизна в том, что пользователи смогут выбирать «большую» или «меньшую» степень риска задержки транзакций — на случай, если в сеть «нахлынут» другие транзакции.
Тэг «замена комиссии» — в пользовательском интерфейсе
Даже с улучшенной оценкой комиссии, возможно, что пользователям придётся ждать дольше, чем они хотят, — возможно, из-за внезапного притока транзакций в сети; а возможно, из-за того, что пользователь передумал и предпочёл подтвердить транзакцию быстрее, чем первоначально заплатил за неё; либо по другим причинам.
В этих случаях некоторые кошельки позволяют пользователям добавлять в свои транзакции тег «замена комиссии». По такому тегу узлы и майнеры в сети узнают, что отправитель может захотеть заменить эту транзакцию более новой транзакцией, которая будет включать в себя более высокую комиссию. Это позволит пользователям эффективно ускорить транзакцию в очереди, чтобы она была подтверждена быстрее.
Базовые биткоин узлы поддерживают «замену комиссии» уже более года: они уже заменяют транзакции с пометкой «замена комиссии», если новая транзакция включает в себя больше комиссии. Однако такая функция была затруднена для самих пользователей кошелька Bitcoin Core.
Кошелек Bitcoin Core 0.15.0 представляет в своём пользовательский интерфейсе функцию «замену комиссии». Это позволяет пользователям включить соответствующий тег, чтобы позже увеличить комиссию за свои транзакции.
Поддержка нескольких кошельков (только для продвинутых пользователей – посредством вызова удаленных процедур)
Bitcoin Core 0.15.0 впервые позволяет пользователям создавать несколько кошельков. Эти кошельки имеют собственные отдельные биткоин адреса, личные ключи и, следовательно, счета. Пользователи смогут использовать различные кошельки для разных целей: например, один кошелек может использоваться для личных ежедневных покупок, другой для деловых операций, а третий для торговли.
Использование нескольких кошельков может предложить ряд преимуществ. Например, это упрощает учёт и делает его более удобным. Кроме того, выгода – в повышенной конфиденциальности, и даже анализ блокчейна не укажет на то, что кошельки связаны друг с другом. При этом также появляется возможность использования разных кошельков для разных приложений, и многое другое.
Пока поддержка нескольких кошельков для обычных пользователей недоступна — только продвинутые пользователи, которые работают из командной строки или через подключенные приложения, смогут использовать эту функцию.
Другие улучшения
Помимо вышеупомянутых изменений, Bitcoin Core 0.15.0 включает в себя ряд дополнительных улучшений производительности, как и большинство новых выпусков основных версий Bitcoin Core. Более конкретно, эти изменения ускоряют скорость скачивания блоков из сети и позволяют узлам запускаться быстрее. При этом обновлённые узлы смогут быстрее проверять новые блоки, что, в свою очередь, даёт выигрыш по времени распространения данных в сети.
Наконец, стоит упомянуть то, что Bitcoin Core 0.15.0 отключится от одноранговых узлов BTC1. Это означает, что сеть биткоина будет испытывать меньше сбоев, если хардфорк SegWit2x разделит сеть, поскольку оба типа узлов будут легче находить совместимые одноранговые узлы. Хотя это изменение и привлекло внимание СМИ, оно не самое заметное среди всех.