Моделі обліку в блокчейні: UTXO та ABC
Існують дві основні моделі контролю транзакцій, які використовуються в блокчейнах: UTXO (вихід невитрачених транзакцій) та Account-Based Chains (ланцюжки на основі балансів акаунтів). Кожна з них має свої унікальні особливості та переваги. Порівнюємо їхні можливості.
UTXO — це модель готівкових грошей
Модель UTXO (Unspent Transaction Output) сприймає монети як окремі одиниці вартості, кожна з яких має унікальний ідентифікатор.
Це можна порівняти з доларовими купюрами, кожна з яких має свій номер. Уявіть, що ви віддали вуличному торговцю хотдогами купюру $5 — рівно стільки, скільки коштує хотдог. За годину цей продавець купив газету, розплатившись вашою купюрою. Але газета коштує $2, тож він отримав решту — три купюри по $1.
Для вас це буде транзакція з чистим виходом, тому що ви повністю витратили унікальний ідентифікатор (номер купюри). Для продавця хотдога це буде вхід із подальшим виходом та частковим поверненням коштів від продавця газет, що у термінології блокчейну називають «адресою решти». Тобто продавець хотдогів витратив ваш ідентифікатор, а натомість отримав декілька інших, які вже для нього будуть невитраченим виходом. Вони стануть основою його майбутніх платежів.
Транзакції в моделі UTXO є наборами невитрачених виходів, які передаються від однієї адреси до іншої.
Докладно про цю модель та її значення ми писали тут.
Переваги моделі UTXO:
- Простота. Модель UTXO є зрозумілою для пересічних користувачів блокчейну, оскільки вона заснована на аналогії з обігом фіатних грошей.
- Підвищена конфіденційність. У моделі UTXO кожен невитрачений залишок має унікальний ідентифікатор, що ускладнює деанонімізацію учасників угод.
- Підтримка складних транзакцій. Модель UTXO дає змогу виконувати складні транзакції, де для підпису потрібно декілька ключів, і транзакції зі зміною адреси.
- Модель UTXO вважається малоефективною, оскільки потребує створення невитрачених залишків для кожної нової транзакції.
- Складність розробки. Розробка гаманців і застосунків для моделі UTXO може бути складною, оскільки вони мають підтримувати керування безліччю UTXO.
Account-Based Chains — це модель банківських рахунків
Модель на основі балансів облікових записів розглядає монети як баланси, що зберігаються на рахунках, а транзакції в цьому випадку є зміною балансу акаунтів. Цю модель використовують, зокрема, EOS та Ethereum.
Зрозуміти, як працює модель облікових записів, можна за аналогією з банківськими рахунками. Уявіть, що ви маєте банківський рахунок з балансом $100. Коли ви переказуєте $50 іншому користувачеві, ваш баланс зменшується на $50, а баланс одержувача збільшується на $50.
У моделі акаунтів переказ коштів виконується так:
- Відправник вказує, баланс якого акаунта він хоче змінити.
- Одержувач вказує, баланс якого акаунта він хоче змінити.
- Транзакційний процесор перевіряє, чи достатньо коштів на акаунті відправника для здійснення потрібного платежу.
- Якщо на акаунті відправника достатньо коштів, транзакційний процесор змінює баланси обох акаунтів і записує історію угоди в блокчейн.
Переваги моделі Account-Based Chains:
- Ефективність. Модель акаунтів більш ефективна, ніж модель UTXO, оскільки вона не потребує наявності невитрачених залишків на балансі користувача.
- Простота розробки. Розробка гаманців та децентралізованих застосунків для моделі акаунтів простіша, ніж для моделі UTXO, оскільки вона підтримує управління одним балансом.
- Економія місця на блокчейні. Кожна транзакція потребує лише одного посилання, одного підпису та здійснює один вихід.
- Зменшення конфіденційності. В моделі балансу акаунтів легше відстежувати рух монет, адже всі транзакції здійснюються через персоналізовані акаунти.
- Обмеження на складні транзакції. Модель акаунтів може бути нездатною підтримувати транзакції з мультипідписом та перекази зі зміною адреси.
Вибір моделі обліку
UTXO та моделі на основі акаунтів — не суперники, а радше комплементарні підходи до управління активами блокчейну. Вибір правильної моделі залежить від потреб проєкту, що розробляє власну децентралізовану мережу.
Перевагу віддають UTXO, якщо для проєкту важлива конфіденційність платежів, тоді як моделі на основі балансів облікових записів обирають проєкти, що потребують взаємодії користувачів зі смартконтрактами.
Те саме відбувається із фіатними платежами: якщо людина бажає приватного передання грошей — вона обере готівку, а для «білої» транзакції віддасть перевагу банківському переказу.