Часто можно услышать фразу, что UTXO является чуть ли ни основным «гарантом» безопасности сети биткоина, ведь этот протокол защищает от двойной траты. Что же это такое и откуда такое доверие к этому непонятному для криптоновичка слову? Эта статья подробно расскажет, что такое UTXO и в чем его преимущества для блокчейна криптовалют.
Что такое UTXO
UTXO расшифровывается как Unspent Transaction Output, и на русский язык эту фразу можно перевести как «неизрасходованные выходы транзакций». Если говорить простыми словами, то это «остатки», которые отправитель получает обратно на свой кошелек после проведения транзакции. Такой способ передачи монет дает гарантию того, что у пользователя есть деньги на счету, и защищает сеть от атаки «двойного расходования».
Эта технология отправки транзакций реализована в биткоине и в целом ряде других монет (например, в Komodo).
Интересно, что во времена, когда Bitcoin находился в самом начале своего пути, пользователям приходилось вручную настраивать отправку «остатков» на свой кошелек. Кроме заполнения строки с адресом получателя, нужно было также указывать адрес, на который придут неизрасходованные биткоины. Если адрес кошелька был указан неверно, то отправитель навсегда терял свои монеты (или случайно мог сделать подарок другому пользователю, если был указан активный адрес).
Современные Bitcoin-кошельки делают эту работу за пользователя: теперь достаточно указать только адрес получателя. Благодаря UTXO процесс отправки криптовалюты стал более простым и менее рискованным.
Как работает UTXO — простой пример
Что такое UTXO мы разобрались. Теперь определим принцип работы UTXO. Это очень просто можно объяснить на примере фиатных денег. Каждый UTXO — это одна купюра или монета. Представьте, что у вас есть $75. Нет такой одной купюры, которая была бы эквивалентна данной стоимости. У вас могут быть, например, следующие вариации купюр на $75:
- 75 купюр по $1;
- 15 купюр по $5;
- семь купюр по $10 и одна $5;
- три купюры по $20, одна $10 и одна $5;
- одна купюра $50, одна $20 и одна $5.
Можно назвать еще множество комбинаций, однако идея ясна. В любой из вариаций у вас в итоге всегда есть ровно $75.
То же самое происходит и в UTXO. Когда вы смотрите свой баланс, вы видите лишь одно конкретное число, например, 101 BTC. Но это лишь внешняя оболочка — «под капотом» вашего баланса прячутся нескольких UTXO. Например, у вас вас может быть четыре UTXO по 25 BTC, два UTXO по 50 BTC или UTXO по 38, 18, 40 и 5 BTC. Конкретные вариации не имеют значения — в конечном итоге они должны соответствовать балансу на счету.
Теперь на конкретном примере посмотрим, как этот принцип работает UTXO в транзакциях. Например, вы хотите купить новую машину. Естественно, как истинный криптоэнтузиаст вы не видите для себя никаких других вариантов, кроме как «ламбо». Допустим, он стоит 35 биткоинов. Но на вашем кошельке есть только UTXO, равные 18, 5, 38 и 40 BTC.
Как работает UTXO в таком случае?
Сеть выбирает UTXO в 40 BTC и разбивает его на два других стоимостью 35 и 5 BTC. 35 биткоинов отправляются к продавцу, а 5 оставшихся вы получаете обратно на свой кошелек, естественно, с вычетом комиссии сети.
Однако не факт, что 100% будет выбран UTXO стоимостью в 40 BTC — сеть может также отправить два UTXO в 18 и 38 BTC, а вы получите 21 BTC в качестве «сдачи».
Транзакция может быть сформирована из любой комбинации, и пользователь не имеет никакого контроля над этим процессом.
Принцип работы UTXO в сети Bitcoin выглядит следующим образом:
Важно также учитывать, что пользователь получит «остаток», из которого уже будет вычтена комиссия за отправку транзакции. Рассчитать, сколько биткоинов в итоге получит пользователь, можно по следующей формуле:
Новый UTXO = отправленный UTXO - сумма транзакции - комиссия
Используя указанный выше пример, давайте посмотрим, какую сумму вы получите обратно (допустим, что комиссия сети составляет 1 BTC):
Новый UTXO = (18 BTC + 38 BTC) - 35 BTC - 1 BTC = 20 BTC
В итоге на адрес вашего кошелька вернется 20 BTC.
Плюсы и минусы UTXO
Основных преимуществ у данного метода три.
Первый — это более высокая степень конфиденциальности (по сравнению, например, с моделью транзакций, основанных на учетной записи как у Ethereum). Подход, реализованный в UTXO позволяет усложнить задачу по установлению связи между адресами. Так, пользователь может использовать разные адреса для отправки биткоинов со своего счета, смешивая разные UTXO. Сейчас это свойство называют псевдоанонимным, так как уже разработаны методы отслеживания платежей в сети биткоина. Однако в сочетании с другими технологиями, которые направлены на обеспечение конфиденциальности (например, протокол zk-SNARK), UTXO являются подходящей моделью транзакций (почему, читайте ниже).
Второе преимущество — это более высокая масштабируемость. Транзакции обрабатываются параллельно, так как каждый UTXO исходит из отдельного входа (Input) и не привязан к другим. Сети не требуется проверять всю историю транзакций (как это происходит в модели транзакций, основанной на учетных записях), а просто проверить конкретный UTXO, используя привязанный к нему Input.
Из этого вытекает еще одно преимущество UTXO — возможность работы с криптовалютой в «легких» кошельках. Это обеспечивается благодаря технологии SPV (Simplified Payment Verification) — упрощенной проверке платежей, которая была описана еще в оригинальной WhitePaper биткоина. SPV делает возможной верификацию платежей конкретного пользователя, не принимая во внимание транзакции остальных. Для этого неполный узел (а именно таковыми и являются «легкие» клиенты) связывается с проверенными и надежными полными узлами сети и на основе их информации проверяет конкретную транзакцию.
Однако работа этого протокола не лишена минусов. Во-первых, этот метод плохо совместим со смарт-контрактами и dApps. Он может применяться только в тех приложениях, где каждый отдельный выход (Output) используется только одним пользователем. В приложениях, которые требуют взаимодействия минимум двух пользователей с одним UTXO, эта модель транзакций не работает. Однако по заявлениям команды Komodo их ведущий разработчик нашел способ разработки смарт-контрактов на основе UTXO. Кроме того, Komodo также использует UTXO на своей обменной платформе с поддержкой атомных свопов.
Вторая проблема — это увеличение размера блоков и, как следствие, увеличение объема всего блокчейна. Полные ноды хранят все UTXO транзакций, и с ростом сети запуск полного узла становится дорогим удовольствием.
Сейчас уже есть решение данной проблемы. Разработчики предлагают хранить только часть информации об UTXO в RAM, а для остальной использовать более доступные по цене диски (HDD или SSD). Такой подход в некоторой степени увеличивает время обработки транзакций, так как нодам придется обращаться в несколько мест при верификации транзакций, однако практика показывает, что даже при использовании такого метода проверка занимает меньше, чем 10 минут.
Кроме того, разработчики Bitcoin Core постоянно оптимизируют протокол для более эффективной обработки транзакций. А также не стоит забывать о технологии Segregated Witness (Segwit), которая работает по принципу подписных данных. Он (этот принцип) никак не зависит от объема UTXO и, кроме того, делает платежи более дешевыми (по заявлению разработчиков Bitcoin Core на 75%).
Unspent Transaction Output — не единственная модель транзакций. Как альтернативу ей противопоставляют метод учетных записей, который используется в Ethereum. Но о нем мы поговорим в нашей следующей статье.
Читайте также:
Биткоин: история и символ монеты, открывшей эпоху криптовалют
Кто скрывается под маской Сатоши Накамото, создателя Bitcoin?
Как заработать миллионы на Bitcoin: история одного из самых молодых миллионеров