Спецификация транзакционных входов — Биткойн против Ripple

В биткойне входы транзакций (UTXO) указываются в виде кортежа (индекс транзакции, vout), поскольку в системе биткойн нет понятия учетной записи, и одного адреса (на который указывает vout) недостаточно. Вместо этого транзакции являются первичными объектами.

С другой стороны, Ripple делает учетную запись основным объектом, а транзакции изменяют баланс учетной записи. Это позволяет указать только адрес (счета) в качестве входных данных для транзакции.

Это дизайнерские решения. Каковы плюсы и минусы двух моделей? Какая мотивация стояла за ними?

Спасибо.

Nit: voutэто просто индекс вывода в списке вывода транзакции. Это просто целое число. Адрес является частью выходного сценария, содержащегося в UTXO. Кортеж, на который вы ссылаетесь, является уникальным идентификатором UTXO, а не полным UTXO.

Ответы (1)

Преимущества подхода UTXO/блокчейн:

  1. Вам не нужно платить по адресам, которые ссылаются на аккаунты. Транзакции могут оплачиваться по уникальным правилам или условиям, которые могут существовать только как правило, требующее определенного результата транзакции.
  2. Транзакции более независимы в исполнении, не конкурируя за доступ к одним и тем же структурам счетов.
  3. Все, что вам нужно знать о транзакции, это то, что она прошла успешно. Там нет «дополнительной информации», такой как предыдущий баланс и новый баланс.

Преимущества подхода «счет/бухгалтерская книга»:

  1. Учетные записи существуют как первичные структуры и поэтому могут иметь свойства, как постоянные/настроенные, так и динамические/отчетные.
  2. Транзакции являются более независимыми формами информации, не конкурирующими за доступ к одним и тем же выводам транзакций.
  3. Нет базы данных UTXO, которую нужно поддерживать и синхронизировать, и атаки на набор UTXO не работают. (Хотя есть и другие способы защиты от атак такого типа.) Можно поддерживать более сложные транзакции, не создавая риска разногласий в наборе UTXO.

Дизайн Биткойна естественным образом соответствует подходу UTXO. Результаты транзакций просты, и нет необходимости в параметрах счета.

Такой подход не сработал бы в Ripple по ряду причин:

  1. Поскольку Ripple поддерживает произвольные активы, многие из которых могут быть бесполезными, у получателей должен быть способ указать, какие активы они примут в качестве оплаты. Это означает, что что-то должно иметь это как свойство, для которого требуется учетная запись.

  2. Что-то должно выпускать эти активы, что требует, чтобы учетные записи выступали в качестве эмитентов.

  3. Кросс-валютные платежи могут привести к сложным результатам, и попытка детерминистически сопоставить их с операциями UTXO не является естественной. Регулировка баланса учетной записи проще, чем выбор UTXO для потребления и создания во время обработки транзакции. Транзакции Ripple не могли, например, указать, какие UTXO они будут потреблять, потому что это неизвестно во время формирования транзакции. (Откуда вы знаете, кто предложит лучшую ставку, когда ваша транзакция будет выполнена? Если все будут конкурировать с транзакциями, жестко запрограммированными для получения максимальной ликвидности, большинство транзакций потерпит неудачу.)

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

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

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