Найти в Дзене
Про Крипто

UTXO vs Account based model

В блокчейнах используют разные модели для ведения учёта, записи и представления транзакций. Две самые популярные из них - это UTXO(Unspent Transaction Outputs) модель или модель не потраченных выходов и Account Based model или модель на базе аккаунтов.

UTXO модель или модель не потраченных выходов.

Применение UTXO модели имеет много общего с использованием бумажных купюр. Представьте, что у вас есть банкнота номиналом в 1000 руб. и вы хотите купить пиццу, которая стоит 600 руб. Естественно, для покупки вы отдадите вашу банкноту продавцу, а тот взамен отдаст вам пиццу и сдачу одной или большим количеством купюр, общий номинал которых будет равен 400 руб. То есть вы потратили свою купюру в 1000 руб. и получили сдачу в виде новых купюр в результате покупки пиццы.

UTXO действует аналогичным образом, за исключением того факта, что во время транзакции(в нашем примере покупки пиццы) старый не потраченный выход(купюра номиналом в 1000 руб.) тратится в ходе транзакции и не передается вся продавцу. Вместо неё в ходе транзакции появляются два или более новых не потраченных выхода(купюр), один из которых имеет номинал в 600 руб. и передается продавцу пиццы, а оставшиеся выходы возвращаются вам в качестве сдачи.

-2

Более формально UTXO модель работает по следующим принципам:

  1. Каждый не потраченный выход имеет свой номинал.
  2. Транзакции совершаются за счёт “потребления”(траты) существующих не потраченных выходов и создания новых на их месте.
  3. Новые UTXO можно создать только путём совершения транзакций.
  4. Каждый UTXO может быть потрачен лишь раз. После траты UTXO в транзакции выходы становятся потраченными и не могут быть использованы второй раз.
  5. Состояние всего блокчейна в момент времени описывается всем набором существующих в блокчейне не потраченных выходов (UTXOs).

На основе данной модели, в частности, работает Биткоин. Каждая транзакция Биткоина имеет входы, которые являлись до выполнения этой транзакции не потраченными выходами. Единственный тип транзакций в Биткоине, не имеющий входов, это Coinbase транзакции, которые генерируют новые монеты. Эти новые монеты являются наградой для майнера, добавившего новый блок в цепочку.

Также транзакции генерируют новые выходы, которые будут не потраченными до их использования в следующей транзакции. Ниже на схеме красным обозначены потраченные выходы, зелёным - не потраченные выходы.

-3

Отметим также, что в Биткоине в каждой транзакции отправитель платит часть суммы в качестве комиссии. Но для простоты в схеме выше мы пренебрегли этим фактом.

Преимущества UTXO модели:

  1. Масштабируемость: возможность использования в транзакции большого количества не потраченных выходов, уменьшает количество транзакций необходимых для перевода. Если у вас есть два не потраченных выхода на 2 BTC и 3 BTC, то для того, чтобы перевести 5 BTC другому пользователю, вам понадобится одна транзакция, в которой вы задействуете оба не потраченных выхода.
  2. Анонимность: UTXO модель даёт больший уровень анонимности из-за того, что пользователи часто создают новые адреса для новых транзакций, что усложняет отслеживание и формирование паттерна активности пользователя для его деанонимизации.

Недостатки UTXO модели:

  1. UTXO модель требует больше места для хранения транзакций, чем модель на основе аккаунтов, так как каждый отдельный выход должен хранится отдельно.
  2. Переводы в рамках UTXO модели могут быть дороже. К примеру, в Биткоине комиссия вычисляется исходя из веса транзакции и цены за единицу веса, которую платит пользователь за перевод. Поэтому возможность собирать “тяжёлые” транзакции за счёт большого количества входов и выходов, приводит к тому, что данные транзакции будут стоить дороже, чем транзакции с меньшим количеством входов и выходов. Однако стоит заметить, что в отдельных случаях может быть дешевле использовать одну “тяжёлую” транзакцию, чем большое количество отдельных более “лёгких” транзакций(с меньшим количеством входов и выходов). Например, когда вам нужно перевести средства одновременно нескольким получателям, Поэтому данный минус модели UTXO является весьма относительным.
  3. Генерация “пыли”. Под пылью понимают очень маленькие не потраченные выходы, которые по номиналу меньше, чем комиссия за их трату. В отдельной статье мы ещё вернёмся к вопросам, связанным с пылью, и поговорим об опасности, которую она может представлять с точки зрения анонимности пользователя.

Модель на базе аккаунтов(account-based model).

Если UTXO модель сравнима с использованием бумажных банкнот, то модель на базе аккаунтов, можно сравнить с использованием банковских счетов. У клиентов банка есть свои счета(аккаунты), где состояние аккаунта характеризуется его балансом(количеством средств на счету аккаунта). При проведении операции, например, при переводе средств от одного клиента банка другому, балансы аккаунтов меняются. С баланса отправителя списывается сумма перевода, а баланс получателя увеличивается на ту же сумму минус комиссия за перевод, но её мы опять пока опустим. В примере ниже Алиса переводит Бобу 600 руб., что приводит к изменению состояний аккаунтов, посредством изменения балансов соответствующих пользователь.

-4

В случае с криптовалютами, построенными на базе аккаунтной модели, всё работает похожим образом. Ярким примером использование данной модели является Ethereum. При переводе с одного аккаунта на другой 1 ETH, происходит списание 1 ETH с первого аккаунта и добавление 1 ETH на второй.

Преимущества модели на базе аккаунтов:

  1. Хранение транзакций требует меньше места.
  2. Простота. Модель на базе аккаунтов интуитивно более понятна, чем UTXO модель. Это помогает как пользователям, так и разработчикам смарт-контрактов, которым необходимо отслеживать состояния и балансы аккаунта.
  3. Лучшая взаимозаменяемость токенов. В случае с UTXO моделью есть четкая связка между транзакциями: вход в новую транзакцию - это выход из предыдущей транзакции. Таким образом, мы можем связать две транзакции и отследить источник средств. В случае модели на базе аккаунтов при попадании новых монет на аккаунт они как бы растворяются в монетах, которые были на его балансе до транзакции. Таким образом, намного сложнее определить источник средств, которые будут переводится в дальнейшем с этого аккаунта.

Недостатки модели на базе аккаунтов:

  1. Масштабируемость. Например, если у вас есть два аккаунта с балансами 2 ETH и 3 ETH, то для того, чтобы перевести 5 ETH другому пользователю вам понадобится две транзакции: либо с обоих аккаунтов перевести двумя транзакциями 2 ETH и 3 ETH соответственно на аккаунт второго пользователя, либо сначала с одного из своих аккаунтов перевести все средства на второй, тем самым агрегировав все средства на одном аккаунте, и затем второй транзакцией перевести 5 ETH второму пользователю.
  2. Приватность. Данная модель поощряет повторное использование адресов, что приводит к снижению уровня анонимности, из-за того, что появляется возможность точнее определить паттерн поведения пользователя и использовать его для деанонимизации.