Вышел релиз Bitcoin Core 0.17.0
В эту среду состоялся релиз Bitcoin Core 0.17.0, семнадцатого поколения оригинального клиентского ПО биткоина, запущенного Сатоши Накамото почти 10 лет назад и по-прежнему играющего доминирующую роль в сети криптовалюты. Разработка последней версии клиента велась на протяжении 7 месяцев под руководством Владимира ван дер Лаана при участии 135 контрибьютуров.
Результатом более чем 700 запросов на добавление функций стал широкий спектр улучшений и исправлений багов, вошедших в релиз Bitcoin Core 0.17.0. Их обзор приводит Bitcoin Magazine.
Улучшенный выбор монет
Монеты хранятся в кошельке как отдельные фрагменты (выходы транзакций). Обычно один фрагмент соответствует одной полученной транзакции; таким образом, как правило, различные фрагменты соответствуют различным суммам. Когда вы отправляете платёж со своего кошелька, различные фрагменты объединяются вместе, чтобы получить требуемую сумму с учётом комиссии. Часто невозможно собрать запрашиваемую пользователем сумму при помощи целых фрагментов. Тогда в транзакцию добавляется «адрес для сдачи», который позволяет вернуть излишки криптовалюты на кошелёк отправителя.
До сегодняшнего дня кошелёк Bitcoin Core собирал вместе различные фрагменты, после чего высчитывал комиссию, которую необходимо уплатить за передачу транзакции. В отдельных случаях добавление этой комиссии требовало включения в транзакцию ещё одного фрагмента, который изначально в ней отсутствовал.
В Bitcoin Core 0.17.0 используется алгоритм «ветвей и границ», разработанный инженером BitGo Марком Эрхардтом. Он привносит два важных улучшения. Во-первых, комиссия для каждого фрагмента рассчитывается до того, как он добавляется в транзакцию, что позволяет избежать добавления новых фрагментов для покрытия этой комиссии. Во-вторых, алгоритм пытается совместить различные фрагменты таким образом, чтобы получить сумму, максимально приближенную к запрошенной отправителем. Таким образом, отпадает необходимость в «адресе для сдачи», когда это возможно. Эта функция будет особенно актуальной для больших кошельков, например принадлежащих биржам криптовалют, у которых накапливается много фрагментов.
Кроме того, улучшенный алгоритм выбора монет в Bitcoin Core 0.17.0 оказывает положительное влияние на приватность транзакций. Хотя из соображений приватности не рекомендуется принимать множество платежей на один биткоин-адрес, это происходит повсеместно. Повторное использование адреса приводит к тому, что любому участнику сети становится ясно, что определённые транзакции ведут к одному и тому же пользователю. Ситуация усугубляется, когда различные фрагменты, связанные с одним адресом, начинают использоваться в различных транзакциях, из-за чего впоследствии они связываются с фрагментами, которые не имеют отношения к оригинальному адресу. Чтобы устранить этот недостаток, Bitcoin Core 0.17.0 позволяет в приоритетном порядке добавлять в транзакцию фрагменты, связанные с одним адресом, оставляя все прочие фрагменты в кошельке, когда это возможно.
Простое создание и использование новых кошельков
Начиная с версии Bitcoin Core 0.15.0 пользователи могут создавать несколько кошельков, которые работают независимо друг от друга. Каждый такой кошелёк имеет собственный биткоин-адрес, приватный ключ и, соответственно, остаток. Пользователи могут использовать различные кошельки для различных целей. Например, один кошелёк может использоваться для повседневных транзакций, другой – для бизнеса, третий – для торговли. Благодаря этому пользователям проще вести учёт своих биткоинов и использовать преимущества повышенной приватности, поскольку разные кошельки не могут быть связаны друг с другом, если не передают транзакции между собой.
Однако до сегодняшнего дня кошельки можно было создавать только на этапе запуска новой ноды и не через графический интерфейс. В Bitcoin Core 0.17.0 оба этих ограничения были сняты. Теперь пользователи могут создавать кошельки в любое время, в том числе через графический интерфейс.
Кроме того, Bitcoin Core 0.17.0 содержит функцию “Scantxoutset”, которая позволяет пользователям быстро проверить, содержит ли их новый кошелёк средства (например, если он был получен путём импорта приватного ключа из другого кошелька), через неизрасходованные выходы транзакций (UTXO), а не путём сканирования всей истории транзакций.
Обновление HD и не-HD кошельков
В то время как версии Bitcoin Core старше 0.13.0 требовали от пользователей создания бэкапа всех приватных ключей, в более новых версиях используются иерархически детерминистические (Hierarchical Deterministic или HD) кошельки. Они требуют, чтобы пользователь в качестве бэкапа сохранил только seed-фразу (список слов).
Однако пользователи Bitcoin Core, обновившиеся до 0.13.0 или выше, не могли создавать новые HD кошельки. Несовместимость HD и не-HD кошельков означала, что им по-прежнему приходилось делать бэкапы всех приватных ключей.
Bitcoin Core 0.17.0 позволяет использовать HD-формат обновившимся пользователям.
Улучшение кошельков «только для наблюдения»
Биткоин-кошельки обычно хранят приватные ключи, что позволяет пользователям расходовать свои средства. Однако с определённого времени Bitcoin Core поддерживает адреса в формате «только для наблюдения». Приватные ключи от таких адресов не хранятся в кошельке, но монеты, связанные с ними, по-прежнему отображаются в кошельке. Это позволяет пользователю без лишних проблем принимать платежи и следить за остатком, в то время как хранение приватных ключей осуществляется вне сети.
Bitcoin Core 0.17.0 расширяет эту концепцию и позволяет пользователям создавать особые кошельки «только для наблюдения», в которых каждый отдельный адрес имеет статус «только для наблюдения». Благодаря этому пользователям станет ещё удобнее следить за средствами, хранящимися на аппаратных или бумажных кошельках с использованием seed-фраз.
Частично подписанные биткоин-транзакции
Хотя большинство транзакций осуществляется абсолютно бесхитростным образом, то есть один пользователь платит другому, биткоин позволяет проводить более сложные типы транзакций. К ним относятся, например, транзакции с мультиподписью, для отправки которых подписи должны предоставить несколько пользователей, или транзакции с улучшенной приватностью типа CoinJoin, в которых несколько отдельных пользователей объединяют свои транзакции в одну.
Чтобы лучше справлять с этой задачей, Bitcoin Core 0.17.0 теперь поддерживает фреймворк частично подписанных биткоин-транзакций (PSBT) BIP 174, разработанный Эндрю Чоу. Он позволяет пользователям частично подписывать транзакцию и добавлять в неё метаданные, которые затем сможет использовать кто-то другой, чтобы окончательно подписать транзакцию.
PSBT может оказаться особенно полезным, если этот фреймворк возьмут на вооружение другие кошельки. С помощью PSBT пользователь может, например, защитить свои средства, заблокировав их на кошельке с мультиподписью, для разблокировки которого потребуется приватный ключ от кошелька Bitcoin Core, а также подпись аппаратного кошелька.
В настоящее время PSBT доступны только через командную строку Bitcoin Core или подключенные приложения.
Сокращение блокчейна через пользовательский интерфейс
Блокчейн биткоина хранит все когда-либо отправленные транзакции, из-за чего его размер уже превысил 180 Гб и продолжает расти. Новым пользователям Bitcoin Core приходится скачивать и подтверждать все эти данные.
Однако существует трюк под названием «сокращение блокчейна», благодаря которому пользователям не приходится хранить все данные. В режиме сокращения нода автоматически забывает о наличии старых транзакций и хранит только то, что необходимо для безопасного функционирования.
До настоящего времени функция была доступна только через командную строку, однако в Bitcoin Core 0.17.0 доступ к ней был предоставлен и из графического интерфейса, благодаря чему пользователям, не имеющим особых технических навыков, будет легче запустить собственную ноду.
С полной версией изменений Bitcoin Core 0.17.0 можно ознакомиться на соответствующей странице на GitHub.
Источник: cryptocurrency.tech