Сдачи не надо: разработчики пересматривают один из базовых принципов работы биткоина

Недавно выпущенная версия программного обеспечения Bitcoin Core 0.16.0 помогла снизить комиссию и упростить блокчейны, значительно упростила создание кошельков SegWit и увеличила количество транзакций SegWit. Следующая версия программного обеспечения, выпуск которой запланирован на 2019 год, изменит один из основных механизмов транзакций в биткойнах — алгоритм выбора монет.

Чтобы понять, как это работает, вы можете представить транзакцию с биткойнами как процесс оплаты наличными, при котором вы оплачиваете счет в 10 долларов за товар в 7 долларов и получаете вариант в 3 доллара. Например, кошелек биткойнов, который он хранит, 2 биткойна, не содержит две отдельные валюты, но так называемые «результаты ожидающих транзакций» (UTXO) — «остатки» предыдущих отправленных или полученных транзакций, которые могут быть 0,1 BTC, 0,3 BTC 0,1 BTC 0,5 BTC, 0,2 BTC, 0,4 BTC, 0,3 BTC и 0,1 BTC или любая другая комбинация аналогичных (или даже меньших) компонентов. Кроме того, эти записи не содержатся в каком-либо конкретном адресе или кошельке, а распределены по нескольким транзакциям и блокам. Кошелек вычисляет баланс пользователя, сканируя цепочку блоков и находя все UTXO, принадлежащие этому пользователю. То есть каждая транзакция биткойна состоит из нескольких меньших сумм биткойна, и если вам нужно отправить 0,2 BTC, алгоритм выбора валюты в Bitcoin Core может отправить фрагмент данных, который хранит 0,3 BTC для «записи транзакции». «(Input — запись, из которой были получены биткойны) и создание двух выходов (выход — на которые отправляются биткойны): 0,2 BTC будет отправлено получателю и 0,1 BTC будет возвращено кошельку в качестве «изменения».

Следовательно, алгоритм выбора монет определяет, какие биты данных объединяются в одной транзакции. По словам разработчиков, эта функция работает отлично, что приводит к ненужным комиссиям и блокирует пространство блокировки, в то время как сохранение изменений не всегда необходимо. «Оригинальный алгоритм выбора монет в Bitcoin Core требует серьезного пересмотра, особенно с точки зрения комиссионных за транзакции. Он неэффективен и поэтому проходит странный ИТ-цикл, пытаясь угадать объем необходимого финансирования », — сказал Эндрю Чау, разработчик ядра Bitcoin. Марк Эрхардт, разработчик портфолио BitGo, определяет текущую ситуацию как «запутанный» принцип выбора монет. Он не всегда принимает лучшее решение о том, какие записи данных (например, «части») выбрать для транзакции. Как объяснил Эрхардт, сегодняшний алгоритм почти всегда автоматически создает «точки выхода», которые могут не потребоваться и, следовательно, просто тратят пространство для блокировки. Например, чтобы передать те же 0,2 BTC, вы можете использовать две данные, каждая из которых хранит 0,1 BTC. «Никто не хочет, чтобы торгуемые транзакции были уничтожены как пыль», — говорит Эрхардт, описывая «пыль» как части биткойнов, которые больше не выгодно тратить, поскольку транзакционные издержки превышают их затраты.

Новый алгоритм ветвей и границ»(BnB) группирует данные более эффективно и экономно, как с точки зрения масштабируемости, так и стоимости. Эрхардт сделал предложения по оптимизации старой системы два года назад, и Чоу стал автором кода. «Таким образом, мы можем очистить код выбора и дать всем понять, что именно делает алгоритм выбора монет», —  говорит Чау. Алгоритм BnB был разработан, чтобы избежать необходимости максимально возможной передачи. Он анализирует все данные и пытается найти столько биткойнов, сколько пользователь хочет потратить.

«Это помогает сократить неизрасходованные расходы. Кроме того, транзакции, для которых выбрано точное количество биткойнов, обычно занимают меньше места, чем транзакции, для которых разворачивается изменение, поскольку это также снижает комиссию за транзакции и освобождает несколько байтов в области блоков, где можно записать еще несколько транзакций. «Чо!» — отмечает Чоу. Во время теста Эрхард обнаружил, что новый код «облегчил» около 40% транзакций, которые были отправлены в старой системе для доставки.

Разработчики планируют дополнительно улучшить алгоритм, добавив так называемый «простой случайный выбор». Если алгоритм BnB анализирует все неизрасходованные выходные операции пользователя и не может вносить изменения, необходимо использовать предыдущий процесс выбора валюты, но новый алгоритм случайным образом выбирает неизрасходованные выходные данные, пока не соберет необходимые средства. Разработчики находят случайный выбор монет более эффективным, чем сегодняшний избирательный алгоритм.

Эрхардт говорит, что работа над новым алгоритмом продолжается уже несколько лет, так как выбор монет является «чувствительной частью» кода, изменение которого будет иметь «глобальные последствия». «Пока мы заложили прочную основу для дальнейших изменений», — сказал Эрхардт.

bit44.org

Обязательно подпишитесь на наш Telegram канал

ПОДПИСЫВАЮСЬ
ПОТОМ