Пример UTXO

В своём Биткоин-кошельке вы видите баланс. К примеру, 100 BTC. И хотя в интерфейсе отображается один баланс, он на самом деле состоит сразу из нескольких UTXO. У вас может быть четыре UTXO по 25 биткоинов или десять UTXO по 10 биткоинов — разницы никакой.

В один прекрасный момент вы решаете потратить 35 биткоинов — купить новенькую машину, к примеру. Однако в вашем кошельке несколько UTXO эквивалентами 15, 17, 28 и 40 биткоинов. Что же делать?

Выходы неизрасходованных транзакций невозможно поделить сразу же. С вашего кошелька уходит UTXO в размере 40 биткоинов. Сеть формирует два новых выхода: один в размере 35 BTC (он отправляется дилеру в счёт платы за машину) и второй на 5 BTC (он отправляется вам обратно на кошелёк).

Можно было бы также потратить UTXO в размере 17 и 28 биткоинов, тогда вы получили бы в качестве «сдачи» 10 биткоинов. Транзакция может состоять из комбинации разных UTXO. Правда, пользователь не может контролировать, какие именно выходы будут отправлены.

Что насчёт комиссий?

При переводе монет также учитываются затраты на комиссии майнерам. Вот как это выглядит в виде формулы:

Новый UTXO = сумма UTXO в транзакции — размер транзакции — комиссия

Разберём по этому принципу последний пример. А для простоты расчётов комиссию приравняем к одному биткоину:

Новый UTXO = (17 + 18) — 35 — 1 = 9 BTC

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

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

Потенциальные проблемы. Источник: Blockchain. Фото.

Источник: Blockchain

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

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

Решение проблемы простое — хранить в оперативной памяти лишь часть UTXO, а остальное отправлять на SSD. Конечно, это повлияет на скорость подтверждения транзакций, однако разработчики Биткоина постоянно ищут новые решения оптимизации процесса перевода монет. Наконец, огромную роль в оптимизации сыграла интеграция протокола SegWit: с его помощью программистам удалось уменьшить затраты на хранение UTXO на 75 процентов.

Ещё больше интересного ищите в нашем крипточате ходлеров!

ПОДПИСЫВАЙТЕСЬ НА НАШ КАНАЛ В ТЕЛЕГРАМЕ, ЧТОБЫ БЫТЬ В КУРСЕ.