Непотраченный выход транзакции
Непотраченный выход транзакции (англ. Unspent Transaction Output, UTXO или UTxO) — это специфический элемент отдельного класса моделей цифровых валют. Непотраченный выход транзакции представляет собой определённое количество криптовалюты, разрешённое к расходованию отправителем и доступное для последующего использования получателем. Использование UTXO в процессе транзакций составляет ключевую особенность многих криптовалют, однако наиболее характерно оно для тех, что реализуют именно UTXO-модель[1].
UTXO использует методы публичного ключа для подтверждения и передачи прав собственности. Конкретно, публичный ключ получателя записывается в UTXO, что ограничивает возможность расходования этого выхода только тем, кто может продемонстрировать владение соответствующим приватным ключом. Для осуществления траты UTXO должна быть приложена валидная цифровая подпись, ассоциированная с публичным ключом[2].
UTXO образует цепь прав собственности, представленную в виде последовательности цифровых подписей, ведущих с самого момента создания монет — будь то выпуск посредством майнинга, стейкинга или иного процесса, определённого протоколом применяемой криптовалюты[2].
К основным примерам криптовалют, реализующих UTXO-модель, относятся Биткойн и Cardano. Cardano использует расширенный вариант UTXO, получивший название EUTXO[3].
История
Концепция UTXO-модели восходит к предложению Хэла Финни под названием «Reusable Proofs of Work» («Многоразовые доказательства выполнения работы»)[4], которое, в свою очередь, базировалось на протоколе Hashcash, предложенном Адамом Бэком в 1997 году[5]. Первым массовым воплощением UTXO-модели на практике стал Биткойн, выпущенный в 2009 году[1].
Сравнение: UTXO-модель и модель счёта
Криптовалюты, использующие UTXO-модель, функционируют иначе, чем системы, опирающиеся на модель счёта. В UTXO-модели отдельные единицы криптовалюты, именуемые непотраченными выходами транзакций (UTXO), передаются между пользователями, напоминая обмен физическими деньгами[6]. Выбор архитектуры влияет на то, как транзакции и права собственности фиксируются и подтверждаются в сети блокчейн.
В UTXO-модели каждая единица валюты — это отдельный объект. История UTXO прослеживается только в тех блоках, где он был перемещён. Для определения общего баланса конкретного счёта требуется проанализировать все блоки и выявить последние UTXO, связанные с данным адресом. При том что все узлы блокчейна подтверждают историю блоков в целом, блоки, относящиеся к балансу конкретного счёта, уникальны для этого счёта.
В противоположность этому, модель счёта хранит информацию о каждом аккаунте и его балансе для каждого блока, добавленного в сеть. Это ускоряет проверку баланса без необходимости сканирования истории блоков, однако увеличивает размер каждого блока (хотя применяются методы сжатия данных). Несмотря на различия, обе модели требуют анализа прошедших блоков для окончательной верификации происхождения монет.
В UTXO-модели каждый объект неизменяем — единицы монет нельзя «редактировать», как баланс счёта при обычной транзакции. Вместо этого конечный баланс вычисляется на основе всей истории транзакций, начиная с момента выпуска монет. Такая простота способствует безопасности: UTXO либо существует в ожидаемом виде, либо нет. Модель счёта требует тщательной проверки статуса аккаунта при каждой транзакции, что может привести к ошибкам в случае неправильной реализации.
Внутренние свойства UTXO-модели также делают её подходящей для внецепочных протоколов, например, сайдчейнов и сети Молния. Модель счёта, напротив, упрощает хранение «состояния» транзакций, хотя эта простота не всегда приводит к преимуществам. Например, расширенная UTXO-модель (EUTXO) обеспечивает более чёткие переходы состояний, снижая потенциальные неожиданные эффекты. Хотя EUTXO сложнее в реализации, она предлагает высокий уровень безопасности и однозначности.
Набор UTXO
Совокупность всех находящихся в наличии UTXO в рамках блокчейна образует множество. Каждая транзакция в сети удаляет некоторые элементы из этого множества (те, что тратятся), и добавляет новые (создаваемые выходы). Таким образом, набор UTXO отражает все находящиеся в обращении единицы данной криптовалюты на определённый момент времени[7].
В более общем смысле, выходы транзакций образуют надмножество относительно UTXO, то есть UTXO является подмножеством всех выходов. Эта взаимосвязь, а также динамика UTXO, например, продолжительность их «жизни» в системе Биткойн, рассматриваются в ряде исследований[8].
В корректных транзакциях блокчейна только непотраченные выходы (UTXO) могут быть использованы для последующего финансирования новых транзакций. Это критично для предотвращения двойного расходования и мошенничества. Соответственно, используемые входы удаляются из набора UTXO, а выходы создают новые UTXO, добавляемые в это множество. Владельцы приватных ключей (например, обладатели криптовалютных кошельков) могут использовать эти UTXO для дальнейших переводов[1].
Расширенная модель UTXO (EUTXO)
Расширенная модель UTXO (англ. Extended UTXO, EUTXO) — это усовершенствованный вариант традиционной модели непотраченных выходов транзакций. Она расширяет базовую UTXO-модель, внедряя дополнительные функции для повышения гибкости и функциональности, при этом сохраняя присущие ей достоинства в области безопасности, предсказуемости и параллельной обработки[9].
В модели EUTXO выходы транзакций могут быть связаны с произвольными данными и логикой в виде смарт-контрактов. Такой подход позволяет UTXO нести состояние, совместимое с параллельной обработкой транзакций и предсказуемым потреблением ресурсов — особенностями классической модели UTXO. Это повышает выразительность и сложность контрактов по сравнению с базовой моделью, сближая возможности UTXO и модели счёта по части реализации контрактов.
Каждый UTXO в EUTXO связывается с изменяемым значением данных, которое может меняться в процессе расходования UTXO и создания новых выходов, что позволяет контрактам сохранять состояние между транзакциями. Расширенная структура данных EUTXO предоставляет дополнительные возможности для разработки смарт-контрактов, сохраняя при этом неизменяемость и проверяемость свойственные классической модели.
Модель EUTXO используется, в частности, в блокчейне Cardano, обеспечивая возможность более сложных финансовых операций и выполнение автоматизированных сценариев. Она лежит в основе платформы Plutus для разработки смарт-контрактов на Cardano, позволяя обрабатывать сложные, имеющие состояние контракты при высокой степени безопасности и предсказуемости[9].
Несмотря на добавленную сложность, модель EUTXO сохраняет основные преимущества UTXO: предсказуемое потребление ресурсов при исполнении контрактов и высокой степени параллелизма при обработке транзакций, что крайне важно для масштабирования блокчейнов.