Как Ripple решает проблему двойного трат?

Как система пульсаций решает проблему двойного расхода? Использует ли он также блок-цепочку, которая официально диктует, какие транзакции подтверждены, а какие нет, или использует какой-то другой умный механизм?

41 голос | спросил ThePiachu 11 FebruaryEurope/MoscowbMon, 11 Feb 2013 13:59:22 +0400000000pmMon, 11 Feb 2013 13:59:22 +040013 2013, 13:59:22

2 ответа


33

Детали очень сложны, но основная концепция довольно проста. Ripple решает проблему двойного расходования на основе консенсуса.

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

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

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

Затем они работают над любыми разногласиями, которые они имеют в процессе лавины. По сути, если кто-то голосует «да» за транзакцию, которая не имеет подавляющей поддержки большинства, они просто меняют свой голос на нет. Это гарантирует быстрое согласование ряда транзакций.

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

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

Итак, вернемся к проблеме двойных расходов. Двойная трата - это по существу две транзакции, каждая из которых действительна тогда и только тогда, когда она применяется перед другой. Таким образом, решение проблемы двойных расходов «просто» требует согласования порядка двух транзакций. Если все согласны с тем, что на первом месте, проблема решена - применяется первая, которая приходит первым, и, следовательно, другая недействительна.

В системе Ripple, если две транзакции являются двойной тратой, может произойти одна из трех:

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

  2. Оба попадают в один и тот же консенсус (этого почти никогда не бывает). В этом случае детерминированное правило, когда применяется консенсус, определяет, что входит в регистр, навсегда блокируя другое.

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

Это грубое упрощение, но оно по сути довольно сложное.

ответил David Schwartz 11 FebruaryEurope/MoscowbMon, 11 Feb 2013 18:39:26 +0400000000pmMon, 11 Feb 2013 18:39:26 +040013 2013, 18:39:26
5

@ Ответ Дэвида по существу не говорит о сценарии атаки, когда в комнате полно нечестных узлов. Это, по сути, то, что было подтверждено доказательством работы.

Если вы получаете много IP-адресов (узлов в сети Ripple), вы можете стать большинством в комнате. Разница в том, что очень легко получить IP-адрес, но очень сложно доказать, что вы работаете в системе доказательств работоспособности (например, Bitcoin's).

Для моего понимания, Ripple не решает проблему с двумя расходами математически, как это делает Bitcoin (предполагая, что честные узлы пересиливают сеть). Он решает его с помощью распределенной системы консенсуса, которая легко может быть свергнута, если вы можете получить большинство IP-адресов, и вы действуете честно на некоторое время, заставляя другие узлы доверять вам.

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

ответил Luca Matteis 12 22013vEurope/Moscow11bEurope/MoscowTue, 12 Nov 2013 22:17:35 +0400 2013, 22:17:35

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132