UTXO и зачем он нужен любому блокчейну?

окт. 25, 2021

Практически всю историю человечества, если люди хотели вести финансовые взаимоотношения дистанционно, им требовались посредники, в зависимости от эпохи: гонцы, банки, телеграф, электронные платёжные системы, приходилось полагаться на ненадёжных посредников.

В 2009 году создание Bitcoin (BTC) блокчейна всё поменяло, впервые была создана и опробована концепция "сам себе банк", для отправки денег в любую точку мира не требовались никакие третьи лица.

Для нормального функционирования такой финансовой системы конечно же требуется, чтобы участники сети вели учёт всех доступных для использования средств. В BTC/UFO и подобных им блокчейнах это реализовано через UTXO (Unspent Transaction Output или непотраченный выход транзакции).

Да, это не самая удобная система для цифровых денег, банковский "баланс" в виде отдельно записанной готовой цифры более приятен для использования, зато UTXO более выгоден с точки зрения производительности, а так же добавляет приватности (именно благодаря UTXO возможна работа миксеров).

Если объяснять по аналогии с фиатом, то каждый UTXO это бумажная купюра, но с более удобным механизмом действие, так как номинал может быть абсолютно любым, а не жёстко фиксированным.

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

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

Как мы видим, суммарное количество UFO внутри UTXO осталось неизменным, не смотря на их распределение между различными участниками сети.

Новые UTXO появляются всего в двух случаях:

I. coinbase-транзакции без входов: создаются новые UTXO в ходе эмиссии монет майнерами, общий баланс UTXO внутри сети увеличивается.

II. Обычные транзакции, новые UTXO создаются за счёт уничтоженных старых, количество UTXO (купюр) с каждым годом только увеличивается из-за множества новых пользователей, но количественный баланс (суммарный номинал) остаётся неизменным.

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

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

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

Разработчики Bitcoin уже частично решили эту проблему путем внедрения Segwit (Segregated Witness), объём  UTXO понизился на 75%, но до полного решения проблемы ещё далеко.

Если вам понравилась эта статья, то рекомендую ещё несколько:

https://bitcoinpost.ru/sposoby-vosstanovlieniia-koshielka/

https://bitcoinpost.ru/kak-dostat-otdielnyi-privatnyi-kliuch-iz-seed-phrase/