Utxo bitcoin что это

Что такое UTXO в сети биткоин — объясняем простыми словами

Часто можно услышать фразу, что UTXO является чуть ли ни основным «гарантом» безопасности сети биткоина, ведь этот протокол защищает от двойной траты. Что же это такое и откуда такое доверие к этому непонятному для криптоновичка слову? Эта статья подробно расскажет, что такое UTXO и в чем его преимущества для блокчейна криптовалют.

Что такое UTXO

UTXO расшифровывается как Unspent Transaction Output, и на русский язык эту фразу можно перевести как «неизрасходованные выходы транзакций». Если говорить простыми словами, то это «остатки», которые отправитель получает обратно на свой кошелек после проведения транзакции. Такой способ передачи монет дает гарантию того, что у пользователя есть деньги на счету, и защищает сеть от атаки «двойного расходования».

Эта технология отправки транзакций реализована в биткоине и в целом ряде других монет (например, в Komodo).

Интересно, что во времена, когда Bitcoin находился в самом начале своего пути, пользователям приходилось вручную настраивать отправку «остатков» на свой кошелек. Кроме заполнения строки с адресом получателя, нужно было также указывать адрес, на который придут неизрасходованные биткоины. Если адрес кошелька был указан неверно, то отправитель навсегда терял свои монеты (или случайно мог сделать подарок другому пользователю, если был указан активный адрес).

Современные Bitcoin-кошельки делают эту работу за пользователя: теперь достаточно указать только адрес получателя. Благодаря UTXO процесс отправки криптовалюты стал более простым и менее рискованным.

Как работает UTXO — простой пример

Что такое UTXO мы разобрались. Теперь определим принцип работы UTXO. Это очень просто можно объяснить на примере фиатных денег. Каждый UTXO — это одна купюра или монета. Представьте, что у вас есть $75. Нет такой одной купюры, которая была бы эквивалентна данной стоимости. У вас могут быть, например, следующие вариации купюр на $75:

  • 75 купюр по $1;
  • 15 купюр по $5;
  • семь купюр по $10 и одна $5;
  • три купюры по $20, одна $10 и одна $5;
  • одна купюра $50, одна $20 и одна $5.

Можно назвать еще множество комбинаций, однако идея ясна. В любой из вариаций у вас в итоге всегда есть ровно $75.

То же самое происходит и в UTXO. Когда вы смотрите свой баланс, вы видите лишь одно конкретное число, например, 101 BTC. Но это лишь внешняя оболочка — «под капотом» вашего баланса прячутся нескольких UTXO. Например, у вас вас может быть четыре UTXO по 25 BTC, два UTXO по 50 BTC или UTXO по 38, 18, 40 и 5 BTC. Конкретные вариации не имеют значения — в конечном итоге они должны соответствовать балансу на счету.

Теперь на конкретном примере посмотрим, как этот принцип работает UTXO в транзакциях. Например, вы хотите купить новую машину. Естественно, как истинный криптоэнтузиаст вы не видите для себя никаких других вариантов, кроме как «ламбо». Допустим, он стоит 35 биткоинов. Но на вашем кошельке есть только UTXO, равные 18, 5, 38 и 40 BTC.

Как работает UTXO в таком случае?

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

Читайте также:  Отдачу от инвестиций компании

Однако не факт, что 100% будет выбран UTXO стоимостью в 40 BTC — сеть может также отправить два UTXO в 18 и 38 BTC, а вы получите 21 BTC в качестве «сдачи».

Транзакция может быть сформирована из любой комбинации, и пользователь не имеет никакого контроля над этим процессом.

Принцип работы UTXO в сети Bitcoin выглядит следующим образом:

Важно также учитывать, что пользователь получит «остаток», из которого уже будет вычтена комиссия за отправку транзакции. Рассчитать, сколько биткоинов в итоге получит пользователь, можно по следующей формуле:

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

Используя указанный выше пример, давайте посмотрим, какую сумму вы получите обратно (допустим, что комиссия сети составляет 1 BTC):

Новый UTXO = (18 BTC + 38 BTC) — 35 BTC — 1 BTC = 20 BTC

В итоге на адрес вашего кошелька вернется 20 BTC.

Плюсы и минусы UTXO

Основных преимуществ у данного метода три.

Первый — это более высокая степень конфиденциальности (по сравнению, например, с моделью транзакций, основанных на учетной записи как у Ethereum). Подход, реализованный в UTXO позволяет усложнить задачу по установлению связи между адресами. Так, пользователь может использовать разные адреса для отправки биткоинов со своего счета, смешивая разные UTXO. Сейчас это свойство называют псевдоанонимным, так как уже разработаны методы отслеживания платежей в сети биткоина. Однако в сочетании с другими технологиями, которые направлены на обеспечение конфиденциальности (например, протокол zk-SNARK), UTXO являются подходящей моделью транзакций (почему, читайте ниже).

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

Из этого вытекает еще одно преимущество UTXO — возможность работы с криптовалютой в «легких» кошельках. Это обеспечивается благодаря технологии SPV (Simplified Payment Verification) — упрощенной проверке платежей, которая была описана еще в оригинальной WhitePaper биткоина. SPV делает возможной верификацию платежей конкретного пользователя, не принимая во внимание транзакции остальных. Для этого неполный узел (а именно таковыми и являются «легкие» клиенты) связывается с проверенными и надежными полными узлами сети и на основе их информации проверяет конкретную транзакцию.

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

Вторая проблема — это увеличение размера блоков и, как следствие, увеличение объема всего блокчейна. Полные ноды хранят все UTXO транзакций, и с ростом сети запуск полного узла становится дорогим удовольствием.

Сейчас уже есть решение данной проблемы. Разработчики предлагают хранить только часть информации об UTXO в RAM, а для остальной использовать более доступные по цене диски (HDD или SSD). Такой подход в некоторой степени увеличивает время обработки транзакций, так как нодам придется обращаться в несколько мест при верификации транзакций, однако практика показывает, что даже при использовании такого метода проверка занимает меньше, чем 10 минут.

Читайте также:  Ramp and wedge liberator

Кроме того, разработчики Bitcoin Core постоянно оптимизируют протокол для более эффективной обработки транзакций. А также не стоит забывать о технологии Segregated Witness (Segwit), которая работает по принципу подписных данных. Он (этот принцип) никак не зависит от объема UTXO и, кроме того, делает платежи более дешевыми (по заявлению разработчиков Bitcoin Core на 75%).

Unspent Transaction Output — не единственная модель транзакций. Как альтернативу ей противопоставляют метод учетных записей, который используется в Ethereum. Но о нем мы поговорим в нашей следующей статье.

Источник

Что такое 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!

Источник

Оцените статью