Что такое неизрасходованный выход транзакции Bitcoin (UTXO)?
Гайд для новичков по модели UTXO Bitcoin 📕
Неизрасходованный выход транзакции (UTXO) — это метод, который используется в протоколе Bitcoin для отслеживания балансов при их перемещении между криптокошельками.
Для отслеживания и управления балансами отдельных криптовалют протоколы на основе блокчейна обычно используют одну из двух моделей учета.
Одна из них называется моделью счетов и балансов. Такие проекты, как Ethereum, Tezos и EOS, используют эту модель для отслеживания балансов, когда пользователи блокчейна совершают транзакции. Другая называется моделью неизрасходованных выходов транзакций (UTXO).
Bitcoin и многие другие криптовалюты, такие как Litecoin, Cardano и Dogecoin, используют модель UTXO.
Но что же это такое, как эта модель работает и каковы ее преимущества по сравнению с моделью счетов и балансов?
Принцип работы модели UTXO 💻
История
Адам Бэк и покойный Хэл Финни были участниками группы шифропанков, занимавшейся криптографией, которую часто посещал автор white paper о Bitcoin Сатоши Накамото. Им обоим приписывают независимую разработку модели UTXO в период с 1997 по 2004 год соответственно.
Когда создатель Bitcoin Сатоши Накамото запустил протокол в 2009 году, он стал первой действующей системой цифровой валюты, в которой была реализована модель UTXO.
Хэла Финни и Адама Бэка долгое время подозревали в том, что они и есть Сатоши Накамото, хотя это так и не было доказано.
Обзор UTXO
Когда вы отправляете кому-то Bitcoin, программно выполняется несколько шагов. Один из самых первых шагов в процессе транзакции — это сканирование вашим криптовалютным кошельком блокчейна на предмет имеющихся у вас средств. Эти средства известны как неистраченные выходы транзакций (UTXO).
Можно представить UTXO как сдачу, оставшуюся от предыдущих транзакций с Bitcoin.
Средства считаются «неистраченными», потому что вы можете свободно отправить их кому-либо или перевести на другой кошелек. Они называются «выходами транзакций», потому что были созданы в результате предыдущих транзакций.
Если вы потратите 12 долларов на обед, заплатив купюрой в 20 долларов, у вас останется 8 долларов сдачи. В этом примере оставшиеся 8 долларов будут неистраченным выходом транзакции. Они вернутся в ваш кошелек и будут готовы к использованию для следующей покупки.
Именно так и работают UTXO в сети Bitcoin. Когда вы совершаете транзакцию, выходы предыдущих транзакций с Bitcoin, то есть ваша «сдача» в Bitcoin, используются в качестве входов для новых транзакций.
Еще одно ключевое сходство между транзакциями с физическими наличными и UTXO заключается в том, что и те, и другие должны быть потрачены полностью и не могут быть разделены. Если у вас есть UTXO на 5 Bitcoin и вы хотите отправить кому-то 1 BTC, вам придется отправить весь UTXO стоимостью 5 Bitcoin и получить взамен новый UTXO на 4 BTC за вычетом комиссий.
Это похоже на пример выше, где вы отдаете целую купюру в 20 долларов, чтобы заплатить за обед стоимостью 10 долларов.
Когда UTXO тратится, он считается «использованным» и технически выводится из обращения.
Любая оставшаяся сдача генерируется как совершенно новый UTXO. Эта часть системы UTXO является решением проблемы двойного расходования в сети Bitcoin.
Точно так же, как вы не можете физически отдать продавцу купюру в 5 долларов, а затем отдать ту же купюру кому-то еще, пользователь Bitcoin не может успешно использовать один и тот же неистраченный выход транзакции в двух разных цифровых транзакциях.
Когда человек пытается потратить один и тот же UTXO дважды, обе транзакции попадают в мемпул — своего рода «зал ожидания» для неподтвержденных транзакций. Они остаются там до тех пор, пока майнеры, победившие в соревновании proof-of-work, не включат их в новые блоки.
Вы можете узнать больше об этом процессе в нашей статье Учебного центра Kraken «Что такое майнинг Bitcoin?»
Даже если обе транзакции будут включены в два разных блока и обработаны одновременно, из-за временных меток одна из транзакций будет проверена раньше другой. После прохождения определенного количества подтверждений (добавления новых блоков в блокчейн) другие узлы пометят вторую, недействительную транзакцию и отклонят ее.
Coinbase-транзакции
Единственный случай, когда у биткоин-транзакции нет входов, — это когда новые BTC создаются в результате майнинга.
Эта транзакция, известная как coinbase-транзакция, представляет собой первую транзакцию в каждом новом блоке.
Каждый сатоши (субъединицу биткоина) в обращении можно отследить с помощью прозрачного реестра блокчейна до соответствующей coinbase-транзакции.
Почему Bitcoin использует модель UTXO?
Баланс счета
Для определения баланса пользователя (также называемого набором UTXO) программа криптокошелька сканирует блокчейн, чтобы найти все UTXO, связанные с соответствующим публичным адресом кошелька.
Общая сумма всех UTXO точно показывает, какое количество криптовалюты контролирует владелец кошелька.
При расходовании UTXO его сумма присваивается публичному адресу кошелька получателя, а в блокчейне после выполнения транзакции записывается новый UTXO.
Хранение
UTXO в сети Bitcoin записываются в различные транзакции, которые хранятся в блоках блокчейна Bitcoin. Однако эта информация не индексируется явным образом, поэтому бывает сложно быстро находить и сопоставлять метаданные.
При использовании кошельков, таких как клиент Bitcoin Core, метаданные UTXO хранятся и индексируются с помощью базы данных LevelDB. LevelDB — это система хранения с открытым исходным кодом, созданная Google в 2011 году, которая значительно ускоряет поиск UTXO.
Клиент Bitcoin Core — это популярное программное обеспечение для подключения к сети блокчейна Bitcoin. Первоначально созданный Сатоши Накамото, сейчас Bitcoin Core поддерживается сообществом разработчиков-добровольцев.
UTXO под капотом 🚗
С технической точки зрения транзакция состоит из четырех основных частей:
- Версия: этот параметр сообщает узлам сети, какая версия клиентского программного обеспечения используется. Разные версии следуют разным правилам проверки данных транзакции.
- Locktime: это временной параметр, который определяет, как быстро транзакция будет добавлена в блокчейн. Этот входной параметр указывает самое раннее возможное время для обработки транзакции майнинг-узлами.
- Вход: информация, указывающая на источник средств или предыдущую транзакцию, в которой был создан UTXO. Вход также содержит так называемый «сценарий разблокировки».
- Выход: информация о переводимой сумме, кошельке, которому переназначается право собственности на средства, и сформированных новых UTXO. Выход также содержит «сценарий блокировки».
Чем UTXO отличаются от наличных денег
Основные различия между аналогией с физическими банкнотами и моделью UTXO заключаются в том, что биткоин и другие криптоактивы на основе UTXO не привязаны к установленным суммам, например 5, 10, 15 долларов и т. д. Неистраченным выходом транзакции может быть любая сумма в биткоинах (до восьми знаков после запятой).
Например, у вас может остаться 0,0003847 BTC от транзакции.
Эта сумма станет новым UTXO, который при использовании должен быть потрачен полностью и не может быть разделен на более мелкие части.
Допустим, у Джона на балансе криптокошелька есть 1 биткоин. Его баланс и состав этого баланса — это две разные вещи, подобно тому, как у вас в кошельке может быть 100 долларов, но они могут состоять из четырех купюр по 20 долларов, двух по 5 долларов и одной по 10 долларов.
Предположим, что баланс Джона в 1 BTC состоит из 5 различных неистраченных выходов транзакций.
- 0,138 BTC
- 0,1 BTC
- 0,004 BTC
- 0,73 BTC
- 0,028 BTC
Джон хочет отправить 0,6 BTC Джейн. Для этого программное обеспечение кошелька Джона автоматически сгруппирует необходимое количество контролируемых им UTXO, чтобы покрыть эту транзакцию, а также любые комиссии майнеров за ее обработку.
В этом примере, скажем, программное обеспечение его кошелька автоматически отправляет Джейн биткоин-UTXO Джона на сумму 0,73 BTC и возвращает оставшуюся сумму за вычетом комиссий за транзакцию Джону в виде нового UTXO.
Эта сумма автоматически отправляется на адрес для сдачи — отдельный адрес, связанный с вашим криптокошельком.
Скрипты блокировки и разблокировки 🔒
При создании UTXO они блокируются с помощью публичного адреса кошелька получателя. Чтобы использовать этот UTXO в качестве входа для новой транзакции, его необходимо сначала разблокировать с помощью цифровой подписи отправителя.
Это еще один важный аспект транзакций в сети Bitcoin, который необходимо понимать. При совершении транзакции биткоины не перемещаются в цифровом виде с одного счета на другой. Вместо этого они разблокируются, переназначаются новому владельцу, а затем снова блокируются.
Это означает, что только новый владелец может разблокировать средства с помощью своей цифровой подписи и перевести их в другое место: другому человеку или на другой кошелек под своим контролем.
Script — это язык программирования, используемый в сети Bitcoin для обработки транзакций, включая блокировку и разблокировку UTXO.
- Скрипт блокировки (ScriptPubKey): когда UTXO заблокирован, скрипт блокировки (известный как ScriptPubKey) устанавливает условия, которые необходимо выполнить, прежде чем UTXO можно будет использовать в качестве входа. Обычно это подразумевает подтверждение того, что вы владеете приватным ключом, который соответствует публичному адресу кошелька, использованному для блокировки UTXO, путем предоставления цифровой подписи.
- Скрипт разблокировки (ScriptSig): чтобы разблокировать UTXO, необходимо выполнить условия, установленные скриптом блокировки, т. е. предоставить цифровую подпись, которая доказывает, что вы контролируете приватные ключи, соответствующие публичному ключу, использованному для блокировки UTXO.
Это не позволяет никому другому получить доступ к этим средствам и потратить их.
Что такое биткоин-пыль?
Биткоин-пыль — это UTXO, содержащие ничтожно малые суммы сатоши, оставшиеся от предыдущих транзакций.
Комиссия за обработку этих мизерных сумм BTC превышает их собственную стоимость, поэтому они часто остаются на адресах для сдачи в ожидании, когда их можно будет объединить с другими UTXO и потратить.
Что такое пылевая атака?
Пылевые атаки — это когда мошенники рассылают «пыль» на сотни тысяч различных адресов кошельков. Их цель — выявить потенциальных жертв для атак с использованием социальной инженерии.
Мошенник отслеживает адреса, содержащие отправленную им «пыль», и ждет, пока владелец совершит транзакцию, которая объединит UTXO с разных адресов, связанных с его кошельком. Поскольку UTXO с «пылью» очень малы, высока вероятность, что они будут сгруппированы с другими и использованы в качестве входов.
После этого мошенник может получить представление о средствах пользователя. Затем он может встраивать в транзакции фишинговые сообщения, предлагая владельцу перейти по ссылке для загрузки вредоносного ПО или посетить поддельные веб-сайты, которые имитируют настоящие целевые страницы и запрашивают личную информацию.
Насколько опасны пылевые атаки в сети Bitcoin?
Пылевые атаки не дают мошенникам доступа к вашим средствам.
Они лишь позволяют определить, какие адреса контролируются определенным криптокошельком.
Чтобы минимизировать риск пылевых атак, лучше всего никогда не переходить по ссылкам и не посещать веб-сайты, связанные с пылевыми транзакциями.
Начните покупать Bitcoin
Теперь, когда вы узнали все о модели неизрасходованных выходов транзакций, вы готовы продолжить свое криптопутешествие и купить Bitcoin?
Ознакомьтесь с нашим руководством в Учебном центре Kraken, чтобы узнать больше о том, как купить Bitcoin (BTC), и зарегистрируйте аккаунт на Kraken уже сегодня.