Какое количество подтверждений считается безопасным для Geth PoA Clique?

В Ethereum PoW рекомендуется дождаться как минимум 12 подтверждений.

[В] : Какие правила применять для алгоритма Geth PoA Clique?


Мое лучшее предположение на данный момент:

нижний предел : сумма сложностей блока подтверждения >= (этаж(N/2) + 1) * 2

верхний предел : сумма сложностей блока подтверждения <= N * 2

где N = количество силеров в сети

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


Обновить . После прочтения Castro/Liskov Paper on PBFT ( http://pmg.csail.mit.edu/papers/osdi99.pdf ) я считаю, что правило 2*f + 1подтверждения N = 3*f + 1применимо и к Clique. По крайней мере, как нижний предел. Верхний предел может остаться прежним. Смотрите комментарий ниже.

Есть статья Виталика blog.ethereum.org/2015/09/14/on-slow-and-fast-block-times , в которой исследуется время подтверждения транзакции и время блокировки. Это не относится непосредственно к PoA, но вы можете аппроксимировать его моделью отказоустойчивости byzantinum, где количество атакующих меньше N/2.
Я только что прочитал статью Лискова о pBFT. Они заявляют, что в системе с n = 3*f + 1 для обеспечения согласованности необходимо 2*f + 1 подтверждения. Я считаю, что это относится и к Clique. Я смог построить пример с Clique, где 50% + 1 подтверждение было недостаточно, чтобы избежать удаления транзакции при реорганизации. В PoW дела обстоят по-другому, так как нет фиксированного количества узлов, а задействована вычислительная мощность. Следовательно, речь идет о вычислительной гонке между фальшивыми и честными узлами (-> 51%).

Ответы (1)

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

Прочитав статью о pBFT от Castor/Liskov , я считаю, что правило 66,6% + 1 от pBFT также применимо и к Clique. Следовательно, 50% + 1 недостаточно, чтобы быть уверенным, что транзакцию нельзя будет удалить из цепочки после реорга.

Пока у меня есть только пример в качестве доказательства: в системе с 5 силерами (N = 5) у меня может быть нечестный силер S3, способный разделить сеть на {S1,S2,S3} и {S3,S4,S5 } (например, в результате DDoS-атаки), так что {S2,S3} не могут взаимодействовать с {S4,S5}. Обе сети будут продолжать использовать свои собственные ответвления, пока участвует S3 (50% + 1). Когда он в свою очередь, он может предложить действительный блок с транзакцией TX и опубликовать его только для {S4,S5}, а с другой стороны создать альтернативный блок с транзакцией двойного расхода TX', публикуя его только для {S1,S2 }. После 50%+1 подтверждений в {S3,S4,S5} он может прекратить публикацию блоков в этой подсети и позволить {S1,S2,S3} стать тяжелее. После этого он может снять блокировку в общении, и протокол GHOST разрешит разветвление, выбрав более тяжелую цепочку,

В этом смысле минимальное количество подтверждений должно быть: 66,6% + 1 [точнее: N - floor((N-1)/3)] разные силеры подтвердили транзакцию, что аналогично pBFT.

О «верхнем пределе», определенном выше в вопросе (сумма сложностей блока подтверждения <= N * 2). На самом деле это не имеет смысла, так как S3 может позволить обеим веткам работать достаточно долго, чтобы удовлетворить этому условию, а позже он может дать желаемой ветке преимущество, остановив связь в другой ветке.

Я надеюсь, что кто-то может подтвердить мой анализ.