1. Какие модели сейчас используются в сети?
Все известные сети, такие как Ethereum, EOS и Solana, используют модель учетной записи. Можно даже сказать, что более 90% проектов используют модель учетной записи, в то время как только некоторые известные проекты используют модель UTXO, например BTC и DOGE. ., LTC, конечно, некоторые относительно новые проекты тоже используют эту модель, например FUEL, использующий схему OP в Layer2.
2. Что такое модель аккаунта?
Чтобы просто понять, это система банковских счетов, такая как переводы между банками, переводы из Alipay, WeChat и т. д., все они относятся к модели учетной записи. Позвольте мне привести вам пример:
Если у А 100 и у В 100
В это время А переводит 50 юаней Б.
Проявление в системе - это
А -50,Б +50
Итак, их баланс
А 50, Б 150
Это перевод.
Предположим снова, что у А все еще есть 100, и он хочет перевести 1 юань 100 новым владельцам счетов.
В это время А необходимо перевести 1 юань 100 людям одновременно.
1-й
А -1, 1-е лицо +1
Итак, их баланс
А 99, 1-е лицо 1
2-я транзакция
А -1, 2-е лицо +1
Итак, их баланс
А 98, 2-е лицо 1
3-я транзакция
А -1, 3-е лицо +1
Итак, их баланс
А 97, 3-е лицо 1
И так далее
......
№ 100
А -1, 100-й человек +1
Итак, их баланс
А 0, 100-й человек 1
Теоретически вам необходимо перевести деньги 100 раз, причем следующий перевод должен быть завершен раньше предыдущего, в противном случае нельзя гарантировать постоянство остатка на счете, и возникнет путаница относительно того, было ли сделано несколько переводов или достаточно ли остатка для перевода.
Теоретически, с ростом количества транзакций увеличивается и время, необходимое для их выполнения.
3. Что такое модель UTXO?
Как упоминалось ранее, многие старые популярные бренды используют UTXO, и Bitcoin, родоначальник этого круга, также использует модель UTXO. Кстати, легальная цифровая валюта DCEP, выпускаемая нашей страной, также основана на модели UTXO, так что эта модель должна иметь свои уникальные особенности.
UTXO означает Unspent Transaction Output, что означает «неизрасходованный вывод транзакции». Ее модель немного напоминает денежную систему в повседневной жизни. Например:
У А есть кошелек (настоящий кошелек) с купюрами достоинством 1 юань, 10 юаней и 100 юаней.
A хочет дать по 1 юаню B, C и D соответственно.
А Есть три способа
Первый способ: возьмите 1 юань и отдайте его Б.
Второй способ: отдайте C 10 юаней и получите 9 юаней сдачей.
Третий вариант: дать D купюру в 100 юаней и получить обратно 99 юаней.
Все три метода могут выполнить эту транзакцию.
Возвращаясь к цепочке, представьте, что каждый номинал денег здесь на самом деле является UTXO в цепочке. Используемый UTXO не переносится, а постоянно разрушается и перестраивается. Например:
А переводит деньги С, используя второй способ. UTXO номиналом 10 юаней будет уничтожен, и система перепечатает UTXO номиналом 1 юань и UTXO номиналом 9 юаней. 1 юань будет отдан C, а 9 юаней будут возвращены A.
Третий способ тот же. Купюра номиналом 100 юаней уничтожается, и печатаются одна UTXO номиналом 1 юань и одна номиналом 99 юаней. 1 юань отдается D, а 99 юаней возвращаются A.
В этом разница между методами перевода UTXO и учетной модели. Еще более удивительно то, что модель UTXO может осуществлять параллельную передачу данных. Поскольку баланс существует через децентрализованные UTXO, каждый номинал может быть фактически переведен разным людям одновременно. Вышеуказанные три метода можно выполнить одновременно в одной транзакции, поскольку при этом не возникает проблем с согласованностью счетов. Каждый UTXO рассчитывается независимо.
Если сравнить модель счета, представленную выше, то каждая транзакция должна основываться на завершении предыдущей транзакции. Разрыв в производительности можно себе представить. Это объясняет, почему цифровая валюта центрального банка использует модель UTXO. В противном случае, как Шэньчжэнь мог бы отправить 10 миллионов цифровых юаней на 50 000 кошельков?
Вернемся к примеру выше.
У А их 100, и он хочет перевести 1 юань 100 новым клиентам, открывшим счета.
UTXO номиналом 100 можно разделить на 100 UTXO номиналом 1 юань, а затем распределить их напрямую среди 100 человек за одну транзакцию, которая выполняется мгновенно.
Короче говоря, представьте себе номинальную стоимость UTXO как более гибкие деньги, которые постоянно уничтожаются и восстанавливаются в цепочке.
Если вы хотите узнать, сколько денег находится на этом адресе кошелька, вам нужно посчитать количество UTXO с остатками и просуммировать их.
4. Преимущества и недостатки модели аккаунта и UTXO
Преимущества учетной модели:
Контракт хранится в Счете в виде кода, а Счет имеет свое собственное состояние. Эта модель лучше программируется, ее легче понять разработчикам, и она имеет более широкий спектр сценариев.
Пакетные транзакции имеют более низкие затраты. Представьте себе, что майнинговый пул выплачивает майнерам комиссию. Поскольку для каждого входа и выхода в UTXO требуется отдельный скрипт Witness или скрипт Locking, сама транзакция будет очень большой, а проверка подписи и хранение транзакций будут потреблять ценные ресурсы в цепочке. Модель Account позволяет значительно сократить расходы за счет контрактов.
Недостатки модели аккаунта:
Между транзакциями модели счета нет зависимости, и проблему воспроизведения необходимо решить. Как Ethereum решает эту проблему? Мы знаем, что Ethereum использует уникальный метод значений Nonce. В каждой транзакции Tx есть поле Nonce. Для каждого пользователя этот Nonce не может повторяться, что позволяет избежать атак повторного воспроизведения.
Для реализации сетей Lightning Network/Raiden Network, Plasma и т. д. доказательства пользователя требуют более сложного механизма доказательства, а миграция состояния из подцепи в основную цепочку требует более сложного протокола.
Преимущества UTXO:
Вычисления происходят вне блокчейна, а сама транзакция является одновременно результатом и доказательством. Узлу необходимо только выполнить проверку и не нужно выполнять дополнительные вычисления по транзакции, а также у него нет дополнительного хранилища состояний. Расчет выходного UTXO самой транзакции выполняется в кошельке, поэтому вычислительная нагрузка транзакции полностью ложится на кошелек, что в определенной степени снижает нагрузку на цепочку.
За исключением транзакций Coinbase, вход транзакции всегда связан с UTXO. Транзакции невозможно воспроизвести, а порядок и зависимости транзакций можно легко проверить, а также можно легко доказать, были ли транзакции использованы.
Модель UTXO не сохраняет состояние и ее проще обрабатывать одновременно.
Для транзакций типа P2SH обеспечивается более высокий уровень конфиденциальности. Входные данные в транзакции не связаны друг с другом, и для повышения конфиденциальности можно использовать такие методы, как CoinJoin.
Недостатки UTXO:
Он не способен реализовать сложную логику и плохо поддается программированию. Для контрактов со сложной логикой или требующих сохранения состояния реализация затруднена, а уровень использования пространства состояний относительно низок.
При большом объеме входных данных количество сценариев-свидетелей также увеличится. Сама подпись потребляет много ресурсов процессора и дискового пространства.
5. Каковы краткие различия между моделью счета и UTXO?
Баланс счета
Модель счета: Вы можете четко видеть, сколько денег находится на счете.
Модель UTXO: подсчитайте количество UTXO по адресу, а результат их суммирования и будет балансом.
Когда количество транзакций увеличивается экспоненциально
Модель счета: будет становиться все сложнее.
Модель UTXO: естественным образом поддерживает высокий уровень параллелизма.
С точки зрения смарт-контрактов/разработчиков
Модель аккаунта соответствует логическим привычкам разработчика и относительно проста в написании логики.
Программирование скрипта UTXO относительно сложное


