Как математически обоснована безопасность 6-ти подтверждений транзакции?

Почему именно 6 блоков в биткоине является гарантированной безопасностью для транзакции? Как это математически обосновано?
Я понимаю, что общая вычислительная мощность сети огромная, и что если для всей сети потребовался 1 час, чтобы найти 6 блоков, то злоумышленнику тяжело будет обогнать блокчейн. Но это лишь логика, но не математика
Может кто-то знает какую-то формулу или таблицу, которая явно показывает, что наглядно и с помощью математики данная разница в блоках является гарантированной безопасностью?
  • Вопрос задан
  • 364 просмотра
Решения вопроса 1
vabka
@vabka
Токсичный шарпист
Посчитать это можно исходя из вероятности намайнить следующий блок злоумышленником и "честной сетью"

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

Математика описана в уже упомянутой 11 главе Bitcoin whitepaper
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@mcigorli
Полагаю - на фоне наблюдения все что НИЖЕ 6 блоков это текущий максимум для злоумышленников исходя из текущих мощностей\возможностей.
Думаю как только мощности\возможности или прогресс позволит добиться больших результатов - последует увеличение кол-во блоков 7,8,9....

6 блоков - результат с учетом текущих возможностей мощностей.
Ответ написан
@rPman
1,2,..6 подтверждений - это абсолютно бессмысленная метрика.
главная задача подтверждений - защита от двойной траты, т.е. атаки тех пулов, которые именно в этот момент нашли подряд несколько блоков (вероятность этого не нулевая, и прямо пропорциональна мощности пула, 100% она у пулов со 100% мощностью но уже при 50+% мощности пул может откидывать чужие блоки, тем самым обеспечить себе 100% контроль над сетью)

Проблема в том что стоимость отмены транзакции для пула майнинга, обладающего меньше 50% мощности равна доходам от майнинга с отбрасываемых блоков. Допустим твой сервис принимает монеты от 1 подтверждения, значит пул-атакующий должен совершать сделки и на каждую майнить блок, в котором его перевод отменяется (направлен по другому адресу) с длиной цепочки 1 блок, и все провалившиеся попытки (а для пула с мощностью в 1% это будет 99% попыток) - это будут убытки этого пула, т.е. недополученная прибыль

Понятно, что экономический смысл такой атаки есть только в том случае, если суммы отменяемых сделок выше стоимости потерь.

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

количество подтверждений = int(Суммы, ожидающие сервисом на прием/Доход с одного блока майнерам)+1

p.s. на самом деле все сложнее, атакующий может атаковать одновременно несколько сервисов (т.е. нужно брать суммы всех транзакций в сети минус исходящие переводы сервиса)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы