Разработчики планируют поменять главный принцип работы биткоина. Без сдачи, пожалуйста

Главная » Инновации » Разработчики планируют поменять главный принцип работы биткоина. Без сдачи, пожалуйста
03.04.2018 от
Разработчики планируют поменять главный принцип работы биткоина. Без сдачи, пожалуйста

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

Давайте разберемся, как это работает. Представьте биткоин-транзакцию как процесс оплаты наличными, при котором вы расплачиваетесь купюрой в $50 за вещь, которая стоит$20, и получаете $30 в качестве сдачи. Биткоин-кошелек, в котором хранится, например, 5 биткоинов, содержит не пять отдельных монеты, а так называемые «неизрасходованные выходы транзакций» (UTXO) — «остатки» предшествующих отправленных или полученных транзакций, которые могут представлять сумму 0.1 BTC, 0.5 BTC, 0.1 BTC, 0.3 BTC, 0.1 BTC, 0.4 BTC, 0.3 BTC и 0.2 BTC  (здесь может быть любая подобная комбинация составных частей, в том числе и более мелких). Эти записи не содержатся на каком-то конкретном адресе или кошельке, но раскиданы среди множества транзакций и блоков. Кошелек вычисляет баланс пользователя посредством сканирования блокчейна и нахождения всех UTXO, которые принадлежат этому пользователю. Таким образом, каждая биткоин-транзакция состоит из различных более мелких сумм биткоина, и если нужно отправить 0.3 BTC, алгоритм селекции монет в Bitcoin Core может направить отрезок данных, хранящий 0.4 BTC, во «вход транзакции» (input — запись о том, с какого адреса биткоины получены) и создать два выхода (output — на какой адрес биткоины отправлены): 0.3 BTC будут направлены получателю, а 0.1 BTC вернется на кошелек как «сдача».

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

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

Разработчик кошелька BitGo, Марк Эрхардт, называет текущий принцип селекции монет «запутанным»: он не всегда принимает оптимальное решение относительно того, какие записи данных (какие «части монет») выбирать для транзакции. Эрхардт объяснил, что существующий алгоритм почти всегда автоматически создает «выходы для сдачи», которые могут быть не нужны и, таким образом, просто тратит пространство блоков. Например, чтобы передать 0.2 BTC, можно было использовать два отрезка данных, каждый из которых хранит по 0.1 BTC.

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

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

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

Алгоритм BnB призван по возможности избегать необходимости в сдаче, пытаясь проработать все входы и  найти среди них ровно такое количество биткоинов, какое пользователь хочет потратить.

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

Тестируя новый код,  Эрхардт обнаружил, что он «облегчил» примерно 40% транзакций, которые при старой системе имели бы выходы для сдачи.

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

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

«К настоящему моменту мы заложили прочный фундамент для дальнейших изменений», — сказал Эрхардт.

Источник

Обсудите эту новость в лучших чатах CryptoOn и bt[c]hat — чат

Поделиться
©The Blockchain Journal, 2018