Каковы плюсы и минусы балансов Ethereum по сравнению с UTXO?

Эфириум имеет более простую модель, поскольку не имеет UTXO (неизрасходованных выходов транзакций), таких как Биткойн. Что «уступает» Ethereum, не имея UTXO, и что он получает?

К сожалению, ответы на эти важные вопросы полностью ориентированы на Ethereum, прямо из документации Ethereum. Например, с UTXO нет необходимости придумывать nonce и еще что-то, чтобы исправить проблемы с порядком транзакций: недавний SNAFU Ledger Nano S, когда многие tx транслировались несколько раз или люди в конечном итоге отправляли ETH много раз вместо одного раза для краудфандинга ICO во время перегрузки блокчейна, не могут быть почти таким же плохим, когда используются UTXO. Существуют также системы 0-conf, которые используются с UTXO, которые просто не так безопасны с Ethereum (вы должны ждать блоков).

Ответы (3)

Основные ограничения проверки в системе Биткойн UTXO :

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

В отличие от функциональности в системе на основе учетной записи Ethereum :

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

Эти системы действительно имеют различные компромиссы. Например, в то время как Ethereum поддерживает баланс учетной записи как часть глобального состояния, «баланс» пользователя Биткойн — это общая стоимость, для которой у пользователя есть закрытый ключ, способный создать действительную подпись.

В целом, преимущества UTXO:

  • Более высокая степень конфиденциальности : если пользователь использует новый адрес для каждой транзакции, которую он получает, может быть сложно связать учетные записи друг с другом.
  • Потенциальные парадигмы масштабируемости : UTXO теоретически более совместимы с определенными видами парадигм масштабируемости.

Преимущества счетов:

  • Большая экономия места : потому что для каждой транзакции нужно сделать только одну ссылку и одну подпись и произвести один вывод.
  • Большая взаимозаменяемость : поскольку на уровне блокчейна нет концепции источника определенного набора монет, становится менее практичным вводить схему красного/черного списка.
  • Простота : легче кодировать и понимать, особенно если задействованы более сложные сценарии.
  • Постоянная ссылка на легкий клиент : легкие клиенты могут в любой момент получить доступ ко всем данным, связанным с учетной записью, путем сканирования дерева состояний в определенном направлении.

Одним из недостатков парадигмы учетной записи является то, что для предотвращения повторных атак каждая транзакция должна иметь «одноразовый номер», и учетная запись должна отслеживать используемые одноразовые номера.

Я не понимаю аргумент «более высокая степень конфиденциальности» для UTXO. Почему Ethereum не может делать то же самое, создавая новый адрес для каждой транзакции?
@RolandKofler, действительно, Ethereum может иметь новый адрес для каждой транзакции. Я считаю, что JAXX уже делает это, а также использует семя, подобное Electrum. Эта концепция еще не была перенесена в официальный кошелек Ethereum. Поскольку это всего лишь децентрализованное приложение, возможно, кто-то в будущем создаст кошелек на основе семян для Ethereum в виде децентрализованного приложения?
Теперь они ввели chainId в необработанный объект транзакции, чтобы предотвратить повторные атаки, почему одноразовый номер все еще существует?
@James: Nonce предназначен для предотвращения атаки с двойной тратой, а не для защиты от повторной атаки.
Идентификатор цепочки @James предназначен для предотвращения атак повторного воспроизведения между цепочками. Nonce предназначен для предотвращения очевидной атаки воспроизведения в цепочке, которая в противном случае была бы возможна, поскольку транзакция не ссылается на конкретные UTXO, а просто указывает сумму для списания, которая в противном случае могла бы быть легко включена в несколько блоков, списывая счет несколько раз.
@RolandKofler можно использовать отдельный адрес/учетную запись для каждой транзакции, но тогда будет сложнее перегруппировать ваши монеты и отправить их по назначению за одну транзакцию. Это фундаментальное ограничение Ethereum.

Принятый ответ - очень хорошее резюме следующей вики:

https://eth.wiki/en/fundamentals/design-rationale#accounts-and-not-utxos

Смотрите его для получения дополнительной информации, включая обоснование Ethereum:

Мы решили, что, особенно из-за того, что мы имеем дело с децентрализованными приложениями, содержащими произвольное состояние и код, преимущества учетных записей значительно перевешивают альтернативы. Кроме того, в духе принципа «У нас нет функций» мы отмечаем, что если люди действительно заботятся о конфиденциальности, то микшеры и совместное соединение могут быть созданы с помощью протоколов подписанных пакетов данных внутри контрактов.

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

Вы правы насчет одноразового номера ETH, но майнер может выбрать несколько транзакций из вашего мемпула и включить их все в блок. Майнер должен упорядочивать ваши транзакции в соответствии с одноразовым номером. Ваше замечание по поводу UTXO является аспектом того, что принятый ответ называет «парадигмами потенциальной масштабируемости».