Почему 6 – это число подтверждений, которое считается безопасным?

Почему 6 – это число подтверждений, которое считается безопасным? Я не нашел никакого математического объяснения или иного объяснения, почему именно 6, а не 5 или 7. Есть ли историческая причина для 6? Есть ли какой-то особый способ его вычисления, чтобы 6 было просто выбранным числом?

Ответы (5)

Я полагаю, что это рассматривается на странице 8 статьи Сатоши о биткойнах , когда показывается вероятность того, что злоумышленник догонит ситуацию.

Вики сообщает :

«Всего 6 блоков или 1 часа достаточно, чтобы сделать реверсирование вычислительно непрактичным».

Ключевое слово "непрактично".

Важное предложение в статье Сатоши:

«Предполагая, что честные блоки заняли среднее ожидаемое время на блок, потенциальный прогресс злоумышленника будет распределением Пуассона ».

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

Также следует отметить, что в основном это означает «6 блоков или 1 час» , в зависимости от того, что больше . Одно из больших заблуждений, с которым мы долго боролись (особенно в случае с альтернативными блокчейнами), — это идея о том, что более быстрые подтверждения что-то меняют. Сеть с временем блокировки в одну минуту потребует 60 подтверждений, чтобы считаться безопасной, а не 6.
Некоторым это помогает, но открывает другой вопрос. Почему ожидается, что 1 часа будет достаточно, чтобы сделать реверсирование вычислительно нецелесообразным?
За этим стоит много математики, но в моем (ограниченном) понимании ключом является бит распределения Пуассона . Вероятность того, что злоумышленнику со скромным вооружением «повезет» и он успешно совершит двойную трату, не имея по крайней мере 51% сети, падает на такое распределение, а 60 минут вычислительного времени — это точка, при которой достаточно маловероятно, что транзакция может быть завершена. быть отменено (т. е. точка, где начинается «длинный хвост» распределения).
Дэвид, боюсь, это у тебя неправильное представление. Математические части, относящиеся к распределению Пуассона, говорят о количестве блоков, а не о времени. 6 блоков — это то, что гарантирует, что кто-то, скажем, с 10% хешрейта, имеет ничтожный шанс добиться успеха в двойной трате. Если каждый блок равен 1 минуте, то это 6 минут. Время (1 час) имеет значение только в том случае, если мы предполагаем, что злоумышленник не может поддерживать свой высокий хешрейт так долго.
Должен ли я предположить, что прав Дэвид, а не Мени, поскольку он получил больше голосов?
@Griffin: Посмотрите на bitcoil.co.il/Doublespend.pdf и оцените сами.
@MeniRosenfeld Спасибо, Мени Розенфельд! Я построил относительную предполагаемую высокую степень достоверности подтверждения для биткойнов и лайткойнов и логарифмически экстраполировал, я пришел к выводу, что проверка транзакции 1 с может быть подтверждена с той же достоверностью за 2,3 минуты. Ради тщеславия, я предположу, что вы доказали мою правоту. ;))

Многие неправильно цитируют бумагу Сатоши и считают, что 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% доверительный интервал.

Если у злоумышленника aq > 50%, ему нужно не неограниченное время, а ровно столько времени, чтобы произвести больше хэшей, чем внесено в «честный» блокчейн.
Моя точка зрения с неограниченным временем заключается в том, что мы не знаем точно, сколько времени потребуется злоумышленнику, чтобы прорваться вперед. Даже имея > 50% хэш-мощности, на злоумышленника все равно влияет удача (хорошая или плохая). Максимум, что можно сказать, это с определенным доверительным интервалом. т.е. «С 95% уверенностью злоумышленник с x% хешрейта будет иметь самую длинную цепочку после y блоков». При хешрейте чуть выше 50% время, необходимое для уверенности в 95%, очень велико, и даже это не является гарантией. Цепочка с хэшрейтом >50% неизбежно окажется самой длинной, но требуемое время является вероятностным.
Основаны ли они на тестовых наблюдениях или на обоснованной теории?
Это базовая вероятность, я бы назвал ее скорее математикой, чем теорией, однако ее можно наблюдать с помощью моделирования Монте-Карло.

Вот некоторые из соответствующих разделов из статьи Сатоши: 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. "

Не могли бы вы подытожить соответствующую часть?
Вывод таков: вероятность того, что кто-то сможет генерировать блоки, падает экспоненциально. Мы знаем, что на самом деле они могут это сделать, если у них есть 51% сети. Таким образом, кажется, что если бы у кого-то было, скажем, 10% сети, он мог бы совершить двойную трату иногда с 0 подтверждениями, и шансы на получение 2 блоков, или 3, или больше ... падают экспоненциально. Вот как я это интерпретирую, я не понимаю в деталях математику, которую он решает. Я до сих пор не вижу рациональности для 6 блоков, в отличие от 4 или 8. Возможно, нет, и это был просто хороший номер, который был выбран.
При 30% и 6 блоках вероятность успеха намного выше 1/2000, она ближе к 13% (я интерполирую по результатам Сатоши).
@MeniRosenfeld Дерьмо, ты прав. Я посмотрел неправильное значение. Я удаляю свой предыдущий комментарий, потому что он фактически неверен.

Цифра 6 блоков совершенно произвольна. Он основан на предположениях, что злоумышленник не будет накапливать более 10% хешрейта сети, и что ничтожный шанс в 0,1% для успешного двойного расходования является приемлемым.

Более подробный анализ этого доступен в разделе «Анализ двойных расходов на основе хэшрейта».

Чем больше подтверждений, тем меньше вероятность успешной двойной траты. Хотя можно выполнить двойную трату с менее чем 51% мощности хеширования, для этого требуется, чтобы кто-то был более удачлив, чем остальные майнеры, т.е. решать блоки быстрее, чем другие. Это будет продолжаться вечно (вернее: очень маловероятно), поэтому злоумышленник не сможет разветвить всю цепочку. Поскольку до недавнего времени пулы контролировали 30-40% общей вычислительной мощности, правило 6 подтверждений было бы небезопасным, если бы оператор пула решил совершить злонамеренный поступок.