Назад |  Блог > Записи блога> Аналитика> Магия UTXO

Магия UTXO

В одной из наших предыдущих статей мы говорили об атаке двойного расходования средств. Важным аспектом в предотвращении такой атаки является модель учета доказательств владения — UTXO. Именно благодаря этой структуре построения транзакций протокол Биткоина позволяет отслеживать нахождение монет в любой момент времени.

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

Что такое UTXO?

UTXO (Unspent Transaction Output) — это неизрасходованный выход транзакции или, другими словами, остатки, возвращающиеся при ее совершении.

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

Любая транзакция состоит из входов и выходов. Входы новой транзакции (inputs) — это ссылки на выходы предыдущих транзакций. Суммируя значения этих ссылок их можно использовать в выходе (output) настоящей транзакции. Выход — это место хранения монет и инструкций для их траты.

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

Чтобы лучше понять принцип UTXO обратимся к примеру:

 

Имея на счету 50 BTC и совершая платеж на сумму 0.5 BTC, формируется транзакция, в которой должны быть как минимум один вход (input) и один выход (output). Допустим, что в имеющемся наборе UTXO есть только 50 BTC. Разделить UTXO невозможно, поэтому 50 BTC подается в качестве входа. Предоставляя подпись, мы подтверждаем владение этими входными данными. В результате создается два выхода номиналом 0.5 и 49.5 BTC. Сдача 49.5 BTC возвращается на кошелек и становится новым UTXO, а 0.5 BTC отправляется на новый адрес. Необходимо добавить, что комиссия за совершение транзакции вычитается из сдачи UTXO.

Важные особенности применения модели выходов транзакций:

  • Транзакции совершаются за счет “потребления” существующих UTXO и создания новых на их месте. 
  • Новые UTXO можно создать только путем совершения транзакций.
  • Использованные UTXO становятся “потраченными” и расходуются только один раз.

UTXO — это один из способов записи и сохранения состояния блокчейна, т.е., учет доказательств владения монетами кем-либо в сети. Блокчейн, организованный на базе UTXO, является разновидностью блокчейн-протоколов. Принцип неизрасходованных выходов используется в блокчейнах всех форков биткоина, а также в блокчейнах таких монет как Monero, Cardano и Komodo. Hyperledger Fabric использует модифицированную модель UTXO.

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

Проблемы использования модели UTXO и варианты их решения

Криптовалютная пыль

Криптовалютная пыль — это термин, обозначающий суммы в BTC, не превышающие комиссии за транзакцию.

Проблема криптовалютной пыли стала актуальной во время ралли Биткоина к своему историческому ATH в 2017 году. Хранение огромного количества убыточных UTXO бессмысленно, так как использовать их экономически невыгодно.

Проблему наличия криптопыли пытаются решить на разных уровнях формирования криптосистемы. Binance стала первой биржей, которая позволила обменивать криптовалютную пыль на криптовалюту BNB.

Криптовалютная пыль может использоваться для сопоставления разных адресов, принадлежащих одному владельцу. Так как при совершении транзакции, входы не объединяются, злоумышленники могут отправить криптопыль для смешивания с другими UTXO и сопоставить различные адреса жертвы.

Хранение UTXO

Так как блокчейн хранит все наборы UTXO сети, то чем выше количество таких наборов, тем больше пространства они занимают.  

Полные узлы хранят базу данных неизрасходованных транзакций в оперативной памяти, а с увеличением объема хранимых данных, стоимость содержания ноды только увеличится. Одним из обсуждаемых вариантов решения проблемы хранения неизрасходованных транзакций является перенос части хранимых данных на HDD или SSD устройства.

Внедрение Segregated Witness

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

Одним из улучшений после внедрения SegWit стало снижение роста UTXO за счет создания записей UTXO, не влияющих на его объем. При таком подходе предпочтительнее использовать транзакции с меньшим влиянием на UTXO, т.к. комиссия на них меньше.

Решение uTreeXo

Из-за роста требуемых ресурсов на поддержание полного узла, пользователи все чаще стали переходить на так называемые “легкие клиенты” и сторонние узлы для отслеживания состояния сети. Легкие клиенты не хранят базу данных UTXO и не проверяют транзакции, а используют технологию SPV («Simplified Payment Verification») для упрощенной проверки платежей. Такой метод проверки был описан в White Paper Биткоина самим Сатоши Накамото. Из-за ряда существенных недостатков в обеспечении конфиденциальности, использование SPV-клиентов небезопасно по сравнению с полными узлами. Проблему содержания полных узлов можно решить за счет внедрения протокола uTreeXo

Протокол uTreeXo — это динамический аккумулятор уменьшающий размеры UTXO в блокчейне до нескольких килобайт. Решение uTreeXo позволяет полным узлам не хранить все данные блокчейна и не отслеживать набор всех UTXO. Вместо этого, аккумуляторы представят доказательства того, что данные верны.

С внедрением протокола uTreeXo появится возможность запуска полных узлов на мобильных устройствах.

Заключение

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

Традиционная модель UTXO имеет ряд ограничений при использовании в смарт-контрактах, но разработчики Cardano описали концепцию Extended UTXO (EUTXO) — расширенную модель UTXO для внедрения смарт-контрактов, в свою сеть.

Несмотря на существующие недостатки, такой подход является одним из самых используемых в блокчейнах других криптовалют, а усиленная работа над решением этих недостатков, только увеличит популярность применения модели UTXO в других блокчейн-системах.

Аналитика

Оставьте комментарий