При рассмотрении вопроса защиты от нападения Финни мы должны сначала признать, что атака не обнаруживается только после факта. Так что в отличие от не-Финни дважды провести цель должна увеличить стоимость такого нападающего.
Один из способов сделать это посмотреть на "значение времени" из очереди (но еще не транслируется) блока. Решаемый блок стоит ~ 50 BTC. Странное, что другое равное найдут и трансляции (и, следовательно, недействительные атакующие ожидающий блок) составляет ~ 0,17% в секунду. Мы можем оценить, что любая задержка, чтобы выполнить атаку Финней стоит нападающего ~ 0,083 BTC в секунду.
Атака Финня Стоимость (БТД) = (50 BTC) * (1- (1 - 1/600) ^ (ОЕ время в секундах))
Пример:
Скажем, у меня есть служба, которая будет мгновенно доставить таймкод XBOX стоимостью 5 BTC. Теперь давайте предположим, у меня есть комплексная система двойного обнаружения проводит на месте, так что я могу обнаружить не-Финне doublespends НО я все еще уязвим для атак Финни правильно? Я не могу обнаружить или предотвратить атаку Финней, но я могу сделать их слишком дорогими для нападающего.
5 BTC / 0,083 = 60 секунд. Через 60 секунд "двойная игра тратить" справедливо. В конечном счете, ни злоумышленник или торговец получить или потерять что-нибудь. Тем не менее, мы хотим сделать это слишком дорого. Так сказать, что задержит поставки 120 секунд вместо. Мы будем называть эту задержку в "период удержания", В период удержания я мониторинг сети для новых блоков ищу новые блоки, которые содержат двойную расходы. Если я обнаруживаю двойную расходы (либо в блоке или в качестве ретрансляционной ТХ) Я остановить доставку.
Ожидаемое значение атакующему:
Если злоумышленник не задерживает блок до доставки будет завершена не будет стоить ему ничего, но его атака всегда будет обнаружен и не удалось.
Период удержания заставляет злоумышленник задержать вещания блока до тех пор, пока поставок в комплекте, который в этом примере составляет 120 секунд.
Шанс равноправные найти дубликат блок и аннулирование блока атакующих (при потере 50 BTC нападающего) составляет ~ = 1 - (1-0.0017) ^ 120 = 18,2%
81,8% времени злоумышленник будет получить 5 BTC (код игры украден).
18,2% времени злоумышленник не получит 5 BTC (ТХ, где злоумышленник заплатил законны остается в силе) и будет дополнительно проигрывает блок БТД 50.
5,0 * 0,818 - 50 * 0,182 = -4,973. В конечном счете злоумышленник может рассчитывать на чистый убыток в размере 5 BTC за каждую попытку. В то время как злоумышленник получит вместе с ним некоторое время атака имеет долгосрочный отрицательное ожидание. Злоумышленник, по существу, азартные игры с коммерсант быть домом и имеющей в этом примере преимущества дома на 8%. Торговец может регулировать период удержания, чтобы ударить баланс между скоростью и безопасностью. Например, даже ж / с задержкой 60 секунд ожидаемого убыток 0. не делает задержку неизвестной и / или псевдослучайной увеличивает шанс атакующих освободить блок слишком рано заблаговременное предупреждение к торговцу. При обнаружении неудачной атаки торговец может увеличить удерживающий период или переключиться на 1 блок подтверждает.
Если кто-то хочет играть в эту игру (и готов держать пари в общей сложности 100 BTC распространился среди 20 или более ТХ) я бы хотел сделать демонстрационный сайт.
Простой вариант:
Низкое значение ОГО может быть надежно защищены от задержки доставки более чем на 1 секунду для каждого 0,083 BTC в стоимостном выражении (или ~ 5 BTC в минуту).