Що таке невитрачений вихід транзакції (UTXO) Bitcoin?

Автор Kraken Learn team
10 хв
20 лист. 2024 р.

Модель UTXO в Bitcoin: посібник для початківців 📕

Невитрачений вихід транзакції (UTXO) – це метод, який використовує протокол Bitcoin для відстеження балансів під час їхнього переміщення між криптогаманцями.

Коли йдеться про відстеження та керування індивідуальними криптовалютними балансами, протоколи на основі блокчейну зазвичай використовують одну з двох різних моделей обліку.

Одна з них називається моделлю «Рахунок/Баланс». Такі проєкти, як Ethereum, Tezos та EOS, використовують цю модель для відстеження балансів, коли користувачі блокчейну виконують транзакції. Інша називається моделлю невитрачених виходів транзакцій (UTXO). 

Bitcoin та багато інших криптовалют, як-от Litecoin, Cardano та Dogecoin, використовують модель UTXO. 

Але що це таке, як це працює та які переваги має модель UTXO порівняно з моделлю «Рахунок/Баланс»?

BTC icon
$76 304.00
-3,08%
24 год
btc

Розуміння моделі 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 доларів, а потім дати ту саму купюру в 5 доларів комусь іншому, користувач bitcoin не може успішно використати той самий невитрачений вихід транзакції у двох окремих цифрових транзакціях.

Коли особа намагається витратити один і той самий UTXO двічі, обидві транзакції потрапляють у mempool — свого роду кімнату очікування для незавершених транзакцій. Вони залишаються там доти, доки успішні майнери, які перемогли в змаганні proof-of-work, не об’єднають їх у нові блоки.

Ви можете дізнатися більше про цей процес у нашій статті в Навчальному центрі Kraken Що таке майнінг bitcoin?

Навіть якщо обидві транзакції будуть об’єднані у два окремі блоки й оброблені одночасно, через часові мітки одна з транзакцій буде перевірена раніше за іншу. Після проходження певної кількості підтверджень (додавання нових блоків до блокчейну) інші вузли позначать другу недійсну транзакцію та відхилять її.

Coinbase-транзакції

Єдиний випадок, коли біткоїн-транзакція не має вхідних даних, – це коли новостворені BTC генеруються в результаті майнінгу.

Відома як транзакція coinbase, вона є першою транзакцією в кожному новому блоці.

Кожен сатоші (субодиницю Bitcoin) в обігу можна відстежити за допомогою прозорого реєстру блокчейну до відповідної транзакції 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 полягає в тому, що bitcoin та інші криптоактиви на основі UTXO не прив’язані до встановлених сум, тобто 5, 10, 15 доларів тощо. Невитраченим виходом транзакції може бути будь-яка сума bitcoin (до восьми знаків після коми). 

Наприклад, у вас може залишитися 0,0003847 BTC решти від транзакції.

Ця сума стане новим UTXO, який у разі використання має бути витрачений повністю й не може бути розділений на менші суми.

Припустімо, у Джона на балансі криптогаманця є 1 bitcoin. Його баланс і складові цього балансу – це дві різні речі, так само як у вашому гаманці може бути 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. Коли здійснюється транзакція, Bitcoin не переміщуються в цифровому вигляді з одного рахунку на інший. Натомість вони розблоковуються, перепризначаються новому власнику, а потім знову блокуються.

Це означає, що тільки новий власник може розблокувати кошти за допомогою свого цифрового підпису та переказати їх кудись іще: іншій особі або на інший гаманець під своїм контролем.

Script — це мова програмування, яку Bitcoin використовує для обробки транзакцій, зокрема для блокування та розблокування UTXO. 

  • Скрипт блокування (ScriptPubKey): коли UTXO заблоковано, скрипт блокування (відомий як ScriptPubKey) встановлює умови, які необхідно виконати, перш ніж UTXO можна буде використати як вхідні дані. Зазвичай це передбачає доведення того, що ви володієте приватним ключем, який відповідає публічній адресі гаманця, використаній для блокування UTXO, шляхом надання цифрового підпису.
  • Скрипт розблокування (ScriptSig): щоб розблокувати UTXO, ви маєте виконати умови, встановлені скриптом блокування, тобто надати цифровий підпис, який доводить, що ви контролюєте приватні ключі, що відповідають публічному ключу, який використовувався для блокування UTXO.

Це не дозволяє нікому іншому отримати доступ до цих коштів і витратити їх.

 

Що таке Bitcoin-пил?

Біткоїн-пил — це UTXO, що містять крихітні залишки сатоші від попередніх транзакцій.

Самі по собі ці мізерні суми BTC коштували б більше в комісіях за транзакції, ніж їхня вартість, тому вони часто залишаються на адресах для решти, очікуючи, поки їх об’єднають з іншими UTXO та витратять.

Що таке пилова атака?

Пилові атаки – це коли шахраї розсилають «пил» на сотні тисяч різних адрес гаманців. Мета полягає в тому, щоб виявити потенційних жертв для атак із використанням соціальної інженерії.

Шахрай відстежує адреси, що містять надісланий ним «пил», очікуючи, доки власник здійснить транзакцію, яка об’єднає UTXO з різних адрес, пов’язаних із його гаманцем. Оскільки «пилові» UTXO дуже малі, існує висока ймовірність, що їх буде згруповано з іншими та використано як вхідні дані.

Коли це станеться, шахрай може отримати уявлення про те, якими коштами володіє людина. Потім вони можуть вбудовувати фішингові повідомлення в транзакції, пропонуючи власнику перейти за посиланням, яке завантажує шкідливе програмне забезпечення, або відвідати підроблені вебсайти, що імітують справжні цільові сторінки, і запитувати особисту інформацію.

Наскільки небезпечні дастингові bitcoin-атаки?

Пилові атаки не надають шахраям доступу до ваших коштів.

Вони лише допомагають визначити, які адреси контролюються певним криптогаманцем.

Щоб мінімізувати ризик пилових атак, краще ніколи не переходити за посиланнями та не відвідувати вебсайти, пов’язані з пиловими транзакціями.

Почніть купувати Bitcoin

Тепер, коли ви дізналися все про модель невитрачених виходів транзакцій, чи готові ви продовжити свою криптоподорож і купити bitcoin?

Ознайомтеся з нашим посібником у Навчальному центрі Kraken, щоб дізнатися більше про те, як купити Bitcoin (BTC), і зареєструйте акаунт на Kraken уже сьогодні.

Деякий вміст на цій сторінці може бути перекладено за допомогою AI