Олег Ховайко, CTO Emercoin, представил свой алгоритм расчета стоимости атаки 51% на разные блокчейны. Он ввел измеряемый численно коэффициент hack51, посредством которого можно сравнивать потенциальную устойчивость криптовалют к этому виду атаки.
В качестве коэффициента было выбрано соотношение цены атаки к капитализации той или иной криптовалюты: hack51 = attack_cost / market_cap. Чем этот коэффициент выше, тем криптовалюта безопаснее в плане интереса злоумышленников к проведению атаки 51%, то есть возможности собрать достаточно вычислительных ресурсов для переписывания цепочки блоков.
В качестве цены атаки была взята стоимость суточного контракта облачного майнинга из рекламных объявлений компаний, которые предоставляют такие услуги. Далее она масштабируется до хэширующей мощности, равной текущему хэшрейту сети криптовалюты. Очевидна слабость этой модели, то есть невозможность за рассчитанную цену собрать хэширующую мощность более половины сети для атаки той или иной криптовалюты. Естественно, при попытке консолидировать соответствующую хэширующую мощность цена контрактов вырастет многократно. Однако здесь не предполагается исследовать практическую устойчивость тех или иных сетей, необходимо просто создать критерий, чтобы их устойчивость хоть как-то можно было оценивать и сравнивать. Сложно сравнить, насколько одно «очень много» отличается от другого «очень много» и какое из них больше.
Для вычислений была написана простая программа на языке PERL, которая и производит эти тривиальные вычисления:
#!/usr/bin/perl -w
die "Usage:\n\tcontract_price contract_days contract_hashrate network_hashrate market_cap\n\n" unless $ARGV[4];
my ($price, $days, $contract_hashrate, $network_hashrate, $market_cap) = @ARGV;
my $price_one_day = $price / $contract_hashrate / $days;
my $cost_51 = $network_hashrate * $price_one_day;
my $ratio = $cost_51/ $market_cap;
print "One unit hash price per day:$price_one_day\n";
print "Cost 51% attack per day: $cost_51\n";
print "Ratio cost_51% / market_cap: $ratio\n";
Параметры программы следующие:
- contract_price - цена контракта, предлагаемая сервисом;
- contract_days - длительность контракта в днях;
- contract_hashrate - хэшрейт контракта;
- network_hashrate - хэшрейт сети криптовалюты;
- market_cap - капитализация криптовалюты.
Программа выводит следующие результаты:
-
One unit hash price per day: Цена одной единицы хэшрейта в день (в тех единицах, что и вводили).
-
Cost 51% attack per day: Цена атаки в день.
-
Ratio cost_51% / market_cap: Искомое соотношение цены атаки к капитализации (hack51).
Была запущена программа для нескольких криптовалют и получены следующие результаты:
Криптовалюта |
Цена хэш-единицы |
Стоимость атаки 51% в день |
Соотношение hack-51 |
---|---|---|---|
BTC |
0.268 $/th/s/day |
$37 589 041 |
0.0000422 |
ETH |
0.038 $/mh/s/day |
26 676 411 |
0.0000640 |
UNO |
0.268 $/th/s/day |
371 |
0.0000463 |
NMC |
0.268 $/th/s/day |
23 627 397 |
1.13 |
EMC |
0.268 $/th/s/day |
12 189 589 |
4.57 |
Что из этого можно увидеть и какие выводы сделать? Бурный рост цен наиболее популярных криптовалют привёл к тому, что первую пару (BTC, ETH) можно атаковать примерно 50 миллионными долями от капитализации. То есть, если некто захочет устроить большой переполох — это ему вполне по силам. Весьма вероятно, что некто может открыть шорт на ETF на Bitcoin, а потом скомпрометировать сеть, уронив цену базового актива почти в ноль.
Merged Minign (UNO) не всегда помогает. Недоступность майнинга при отсутствии уникальных свойств монеты не привлекают майнеров, что снижает сложность, и, как следствие, повышает уязвимость. Технологические монеты, добываемые совмещенным майнингом (NMC, EMC) показывают более высокую устойчивость против PoW атаки 51%. Фантастическая устойчивость EMC (для атаки необходимо затратить ресурсы, почти впятеро превышающие капитализацию монеты) демонстрирует полезность тройного консенсуса Emercoin (PoS+PoW+MergedMining) для обеспечения безопасности блокчейна.
Теперь каждый может запустить вышеприведённую программу для своей любимой криптовалюты и посмотреть для неё коэффициент hack51. Также каждый может попытаться оспорить предлагаемый критерий устойчивости и попытаться найти ошибку в программе.