В 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. По крайней мере, как нижний предел. Верхний предел может остаться прежним. Смотрите комментарий ниже.
Поскольку до сих пор никто не дал ответа, я попытаюсь обобщить свое исследование по этому вопросу. Если кто-то сможет предоставить лучшую «историю», я поставлю на нее галочку.
Прочитав статью о 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 может позволить обеим веткам работать достаточно долго, чтобы удовлетворить этому условию, а позже он может дать желаемой ветке преимущество, остановив связь в другой ветке.
Исмаэль
ivicaa