Что такое UTXO (Unspent Transaction Output)?

Среда, 31 октября 2018 в 17:45
Что такое UTXO (Unspent Transaction Output)?

UTXO расшифровывается как Unspent Transaction (TX) Output. Фактически, это означает количество оставшейся криптовалютной «мелочи», которую вы получаете в качестве сдачи с каждой транзакции. Не так давно мы разбирали что такое «селекция монет», но решили более детально рассмотреть этот момент. Для более подробного объяснения придется сначала рассмотреть, как происходит типичная крипто транзакция. Используем в качестве примера Bitcoin, так как это самая популярная криптовалюта, использующая UTXO.

Пример UTXO транзакции

Когда вы проверяете свой кошелек Bitcoin, вы видите свой баланс. Для примера давайте предположим, что у вас 100 Биткоинов. Хотя вы видите только сумму на счете, ваш баланс состоит из нескольких UTXO. У вас может быть четыре UTXO по 25 BTC, два UTXO по 50 или, например, сет UTXO из 37, 18, 40 и 5 Биткоинов. Стоимость каждого UTXO не имеет значения, но их сумма в нашем случае всегда будет составлять 100 BTC.

Продолжая наш пример, давайте предположим, что мы отправились покупать новый автомобиль. Отбросив стереотипный вариант Lamborghini, вы останавливаете свой выбор на Porche за 35 Биткоинов. Однако в вашем кошельке есть UTXO ценностью только в 15, 17, 28 и 40 BTC и нет «купюры» номиналом в 35 Биткоинов. UTXO невозможно разделить, поэтому вы просто не сможете отдать ровно 35 Биткоинов.

Вместо этого вы отдадите 40 BTC, на месте которых сеть создаст два новых UTXO ценностью в 35 и 5 Bitcoin. Автодилер получит 35 BTC, а вы получите свою сдачу в размере 5 BTC.

Также вы можете потратить свои UTXO в 17 и 28 Биткоинов, получив в качестве сдачи 10 Биткоинов. Транзакция может использовать любую комбинацию UTXO и у вас нет возможности повлиять на ее выбор.

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

А что насчет комиссии за транзакцию?

Комиссия также включается в транзакцию и вычитается из получаемого в качестве сдачи UTXO. Уравнение выглядит примерно так:

Новое UTXO = (сумма UTXO в транзакции) – (значение транзакции) – (комиссия за транзакцию)

Добавим в наш недавний пример комиссию в один Bitcoin:

Новое UTXO = (17+28) – (35) – (1) = 9 BTC

Важность UTXO и потенциальные проблемы

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

Таким образом, каждый коин в экосистеме Bitcoin может быть потрачен только единожды. Биткоины, в данный момент находящиеся на кошельках, еще не были использованы по двум причинам:

  1. Либо это Bitcoin, полученный майнером в качестве вознаграждения
  2. Либо это созданный во время транзакции Bitcoin

UTXO выполняют важную роль в предотвращении атаки двойного расходования, а также не позволяют пользователям тратить коины, которые не существуют. Ноды в сети записывают и поддерживают базу данных, содержащую каждое UTXO (т.е. неизрасходованный коин), доступное к расходованию. Если вы попытаетесь прислать транзакцию с коином, которого нет в базе, ноды отклонят эту транзакцию.

Потенциальные проблемы с хранением

Ноды хранят базу данных UTXO в RAM, поэтому важно соблюдать разумный объем данных. По мере того, как он растет, стоимость работы заполненной ноды тоже увеличивается. Если обслуживание заполненной ноды станет слишком дорогим, мы будем наблюдать дальнейшую централизацию сети Bitcoin в руках более состоятельного меньшинства, которое сможет себе позволить использовать эти ноды.

Количество выходов транзакций в сети Биткоин

Риск централизации – один из главных аргументов против увеличения размера блока Bitcoin. Разработчик Bitcoin Гевин Андерсен хорошо описал это в своей статье «UTXO uh-oh…»:

«Один мегабайтовый блок содержит около 100 млн 500-байтовых транзакций в год. Если каждый блок увеличит UTXO на 500 байт, это прибавит около 50 гигабайт в год».

Размер блока в один мегабайт ограничивает верхний лимит, до которого каждый год может расти база данных UTXO. Гевин продолжил:

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

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

Решения

К счастью, существует несколько решений потенциальной проблемы с хранением. Во-первых, нодам не надо хранить всю базу данных UTXO в RAM. Часть данных можно хранить на более дешевом диске HDD или SSD. Хотя это замедлит время валидации каждой ноды, особых проблем не возникнет, если это время будет составлять меньше 10 минут.

Вдобавок, разработчики Bitcoin постоянно улучшают механизмы транзакций, для оптимизации базы данных UTXO.

Наконец, Segregated Witness (Segwit) и похожие решения масштабирования косвенно замедляют рост базы данных UTXO. Следующая информация взята напрямик из документации Bitcoin Core:

«Segwit улучшает ситуацию за счет создания подписных данных, которые не влияют на объем UTXO, и стоят на 75% меньше. Это, в свою очередь, побуждает пользователей отдавать предпочтение транзакциям, минимизирующим влияние на UTXO из-за меньшей комиссии на них. А разработчиков это заставляет работать над смарт-контрактами и новыми функциями, которые бы дальше минимизировали влияние на UTXO».

Заключение: альтернативы UTXO

Мы постоянно использовали Bitcoin в нашем сегодняшнем примере, однако существует немало других использующих UTXO криптовалют типа Bitcoin Cash, Litecoin, Komodo и тому подобных коинов.

Также существует много криптовалют, использующих другие механизмы учета. Например, Ethereum использует модель транзакции, основанную на учетной записи. В общих чертах, этот механизм обеспечивает лучшую экономию пространства и упрощает код, однако вместе с этим проигрывает в плане приватности транзакций и ведет к потенциальным проблемам с масштабируемостью.

Если десять крипторазработчиков спросить о самом лучшем методе учета, скорее всего, каждый из них даст разный ответ. Для всего криптосообщества это до сих пор горячо обсуждаемый вопрос, который все еще не имеет конкретного решения. И судя по сложности вопроса, идеального решения никогда и не будет.

Дисклеймер: не рассматривайте эту статью как рекомендацию по инвестиции. Проведите тщательный анализ, прежде чем инвестировать в какую-либо криптовалюту.

Для торговли на рынке криптовалют Хриплый Биток рекомендует биржу Exmo!

Автор: Илья Серов