Почему 6 – это число подтверждений, которое считается безопасным? Я не нашел никакого математического объяснения или иного объяснения, почему именно 6, а не 5 или 7. Есть ли историческая причина для 6? Есть ли какой-то особый способ его вычисления, чтобы 6 было просто выбранным числом?
Я полагаю, что это рассматривается на странице 8 статьи Сатоши о биткойнах , когда показывается вероятность того, что злоумышленник догонит ситуацию.
Вики сообщает :
«Всего 6 блоков или 1 часа достаточно, чтобы сделать реверсирование вычислительно непрактичным».
Ключевое слово "непрактично".
Важное предложение в статье Сатоши:
«Предполагая, что честные блоки заняли среднее ожидаемое время на блок, потенциальный прогресс злоумышленника будет распределением Пуассона ».
Таким образом, дело не в том, что кто-то не мог первым создать миры и владеть фермой ASIC стоимостью 50 миллионов долларов, чтобы иметь возможность обогнать блокчейн из форка за шесть блоков до этого, но это было бы а) масштабным предприятием. , б.) очевидное для всех и в.) ужасно невыгодное атакующему.
Многие неправильно цитируют бумагу Сатоши и считают, что 6 — это жесткое значение.
В документе Сатоши указано количество подтверждений, необходимых для того, чтобы быть уверенным на 99,9% (менее 1 из 1000 шансов на успех), что злоумышленник не сможет построить более длинную цепочку для отмены транзакции.
http://bitcoin.org/bitcoin.pdf
P < 0.001
q=0.10 z=5
q=0.15 z=8
q=0.20 z=11
q=0.25 z=15
q=0.30 z=24
q=0.35 z=41
q=0.40 z=89
q=0.45 z=340
p — это вероятность того, что злоумышленник в конечном итоге получит более длинную цепочку и отменит транзакцию (в данном случае 0,1%). q — это процент хеш-мощности, которую контролирует атакующий. z — количество блоков, чтобы снизить риск разворота ниже p (0,1%).
Таким образом, вы можете видеть, есть ли у злоумышленника небольшой % мощности хеширования, 6 блоков достаточно. Помните, что 10% сети на момент написания статьи составляет ~ 100 ГГц / с. Однако, если бы у злоумышленника был больший % вычислительной мощности, потребовалось бы все больше времени, чтобы убедиться, что транзакцию нельзя отменить.
Если бы у злоумышленника была значительно большая вычислительная мощность, скажем, 25% сети, потребовалось бы 15 подтверждений, чтобы быть уверенным (вероятность 99,9%), что злоумышленник не сможет его отменить.
Если у злоумышленника q> 50% («атака 51%»), то при неограниченном времени злоумышленник неизбежно получит самую длинную цепочку.
При редактировании: чтобы уточнить «неограниченное время», цепочка с более высоким хешрейтом неизбежно окажется самой длинной, однако вероятность все еще играет роль. Мы не можем со 100% уверенностью сказать, сколько времени это займет, в лучшем случае мы можем указать доверительный интервал. Если атакующий лишь немногим быстрее хороших майнеров (51% против 49%), то злоумышленнику может потребоваться очень много времени, чтобы преодолеть дефицит в 6 блоков. Чем больше доминирует атакующий (т.е. 70% против 30%), тем быстрее достигается 95% доверительный интервал.
Вот некоторые из соответствующих разделов из статьи Сатоши: http://bitcoin.org/bitcoin.pdf
«11. Расчеты. Мы рассматриваем сценарий, в котором атакующий пытается сгенерировать альтернативную цепочку быстрее, чем честная цепочка. ... Гонка между честной цепочкой и цепочкой злоумышленника может быть охарактеризована как биномиальное случайное блуждание. честная цепочка расширяется на один блок, что увеличивает ее преимущество на +1, а событием отказа является расширение цепочки атакующего на один блок, уменьшая разрыв на -1. ... Вероятность того, что атакующий догонит от заданного дефицита аналогична задаче о разорении игрока...
p = вероятность того, что честный узел найдет следующий блок q = вероятность того, что злоумышленник найдет следующий блок qz = вероятность того, что злоумышленник когда-либо догонит z блоков позади
Учитывая наше предположение, что p > q, вероятность падает экспоненциально по мере увеличения количества блоков, которые атакующий должен догнать. С шансами против него, если он не сделает удачный выпад вперед на раннем этапе, его шансы становятся исчезающе малыми, поскольку он отстает еще больше ... потенциальный прогресс атакующего будет распределением Пуассона ... Чтобы получить вероятность атакующего может догнать сейчас, мы умножаем плотность Пуассона для каждого прогресса, который он мог бы сделать, на вероятность того, что он догонит с этой точки.
Преобразование в код C..
include <math.h>
double AttackerSuccessProbability(double q, int z)
{
double p = 1.0 - q;
double lambda = z * (q / p);
double sum = 1.0;
int i, k;
for (k = 0; k <= z; k++)
{
double poisson = exp(-lambda);
for (i = 1; i <= k; i++)
poisson *= lambda / i;
sum -= poisson * (1 - pow(q / p, z - k));
}
return sum;
}
Выполняя некоторые результаты, мы видим, что вероятность экспоненциально падает с z. "
Цифра 6 блоков совершенно произвольна. Он основан на предположениях, что злоумышленник не будет накапливать более 10% хешрейта сети, и что ничтожный шанс в 0,1% для успешного двойного расходования является приемлемым.
Более подробный анализ этого доступен в разделе «Анализ двойных расходов на основе хэшрейта».
Чем больше подтверждений, тем меньше вероятность успешной двойной траты. Хотя можно выполнить двойную трату с менее чем 51% мощности хеширования, для этого требуется, чтобы кто-то был более удачлив, чем остальные майнеры, т.е. решать блоки быстрее, чем другие. Это будет продолжаться вечно (вернее: очень маловероятно), поэтому злоумышленник не сможет разветвить всю цепочку. Поскольку до недавнего времени пулы контролировали 30-40% общей вычислительной мощности, правило 6 подтверждений было бы небезопасным, если бы оператор пула решил совершить злонамеренный поступок.
Дэвид Перри
осмос
Дэвид Перри
Мени Розенфельд
Грифон
Мени Розенфельд
пользователь5107