Из спецификации (выделено мной):
При сетевом разделении реестр может быть закрыт меньшинством сети, этот реестр может быть удален в будущем .
Означает ли это, что можно будет потратить дважды, по одному разу на каждую сторону шпагата?
Даже если транзакция будет просто отклонена позже, вы можете обманом заставить продавца принять ваш платеж, затем принять доставку, а затем позволить сети отклонить транзакцию после разрешения разделения. Это правильно? Как меньшинство узлов узнает, что они отделены от остальной части сети?
Ripple должен быть невосприимчив к этой атаке, потому что транзакция не считается подтвержденной до тех пор, пока подавляющее большинство валидаторов (которые вам небезразличны) не подпишут квитанцию о том, что они ее обработали (проверив реестр, который включает ее либо в этот реестр, либо в один из его предыдущих регистров). Если бы сеть разделилась, вы не смогли бы получать квитанции от подавляющего большинства валидаторов.
Серверы Ripple имеют внутренние «ворота». Они продолжают отслеживать сеть, пытаются прийти к консенсусу, подписывают валидации и так далее. Но они не сообщают клиентам о транзакциях как о подтвержденных, пока не пройдут эти внутренние ворота. Чтобы пройти через ворота, бухгалтерская книга должна иметь достаточное количество проверок из надежных источников. Как только реестр достигает этого порога, ворота перемещаются сразу после этого реестра, и все, что находится до этой новой точки, считается полностью подтвержденным.
Все, что находится после ворот, находится в процессе согласования с другими валидаторами. Все, что за воротами, навсегда совершено. Подавляющее большинство валидаторов привержены этому.
Если вы находитесь на стороне меньшинства в сплите (или даже на стороне незначительного большинства в плохом сплите), ни одна транзакция не пройдет через ворота. Сеть будет непригодна для использования, но никто не будет полагаться на транзакцию, которая будет отменена после разрешения разделения.
В обмен на невосприимчивость к этой атаке и в обмен на быстрые подтверждения Ripple без необходимости доказательства работы приходится платить определенную цену. Можно представить себе ситуации, когда транзакции могут не пройти через ворота, даже если сеть не разделена. Например, если большое количество валидаторов внезапно перестанут проверять все одновременно, вы можете подумать, что вы отделены от них, и может потребоваться ручное вмешательство, чтобы позволить любым транзакциям пройти через ворота.
Лука Маттеис
Дэвид Шварц
Лука Маттеис
Дэвид Шварц
Лука Маттеис
Дэвид Шварц
Лука Маттеис
Дэвид Шварц
Лука Маттеис
Дэвид Шварц