Среди тех, кто работает с биткоинами есть поговорка, что нет биткоина, а есть UTXO. Есть еще одна поговорка: если вы понимаете все о UTXO, то вы понимаете все о биткоине. Хотя эти утверждения и преувеличены, все же можно понять, какую важность UTXO имеет для биткоина.
Что же такое UTXO?
В моделе блокчейн есть два основных способа хранения информации: первый — “модель счета / баланса”, а другой — “модель UTXO”. Биткоин использует “модель UTXO” (у Nervos есть улучшенная модель UTXO), Ethereum и другие используют “модель счета / баланса”.
UTXO — это абб ревиатура, обозначающая “неизрасходованные поступления”. Например, господин Х получил биткоин, но не использовала его. Этот биткоин стал UTXO.
В чем же разница между моделью счета / баланса и моделью UTXO?
Работа банковского счета и учетная запись WeChat основаны на модели «счет / баланс». На счете лежит определнная сумма. Соответственно, при любой транзакции изменяется баланс. Например, на День Святого Валентина, Ли Лэй решил подарить Хан Мэймэй 520 юаней и перевел их через WeChat. Очевидно, что баланс Ли Лэя в WeChat уменьшится на 520 юаней, а баланс аккаунта Хан МэйМэй увеличится на 520 юаней.
Модель UTXO отличается от модели учетной записи.
Представьте обычный кошелек, каждая бумажная купюра и обычные монетки в нем, будут представлять отдельный UTXO.
Любой платеж производится в единицах UTXO. Если мы покупаем товар за 5 юаней, но даем купюру из 10 юаней. 10 юаней будут отданы продавцу, а продавец даст сдачу.
В День святого Валентина Ли Лэй купил цветы для Хань Мэймэй по цене 520 юаней и оплатил наличными. Ли Лэй дал продавцу 600 юаней (эквивалент 6 UTXO по 100 юаней), и продавец должен был отдать Ли Лею 80 юаней сдачей (по одной банкноте номиналом 50 юаней, 20 юаней и 10 юаней). При этом очевидно, что Ли Лэй потратил 600 юаней на цветы и получил 80 юаней за сдачу. Продавец продал цветы и получил 520 юаней.
С точки зрения UTXO, Ли Лэй потратил 6 UTXO (6 UTXO по 100 юаней) и получил 3 UTXO (3 UTXO для сдачи); продавец получил 6 UTXO и потратил 3 UTXO на сдачу.
Если вы используете биткоины для совершения этой транзакции, процесс будет немного иным. Предположим, Ли Лей использует 6 UTXO, допустим каждый из них равен 1 BTC, поэтому Ли Лэй должен заплатить 5,2 BTC.( Разница между ними заключается в том, что типы номиналов банкнот ограничены, а биткоин не подлежит этому ограничению).
Допустим, в результате майнинга Ли Лэй получил 12,5 биткоинов, поэтому биткоин адрес Ли Лея имеет 12,5 UTXO BTC.
Ли Лэй хочет передать 5,2 BTC Хан Мэймэй, из 12,5 BTC UTXO 5,2 BTC будут переведены Хан Мэймэй, а оставшиеся 7,3 BTC останутся у Ли Лэй. Предыдущие 12,5 BTC хранились в виде UTXO в целом. Когда передача была произведена, UTXO разделилсь на две части, теперь у МэйМэй есть UTXO в размере 5,2 BTC и у Ли Лэй в размере 7,3 BTC.
Сравнение двух моделей при денежной транзакции:
Основная идея архитектры UTXO — это сохранение истории транзакции. Чтобы подсчитать, сколько биткоинов есть у пользователя, необходимо просуммировать все UTXO в его кошельке, и в результате получится общее количество монет. Модель UTXO использует UTXO в качестве единицы транзакций передачи, то есть при оплате используются целые числа, кратные UTXO, такие как 1 UTXO, 3 UTXO, и не существует 0,5 UTXO.
Данная статья написана для понимания программирования CKB.