Я читаю о технологии биткойн/блокчейн. Обычно хорошо объясняется часть о доказательстве работы и о том, как создать блок. Однако никогда не объясняется, как и почему передача блоков по сети позволяет «блокчейну» конвергировать.
Поясню: что, если два майнера одновременно создадут новый блок и одновременно транслируют его? Примерно 50% узлов будут иметь каждый новый (другой) блок и строить на нем. А теперь представьте, что это происходит снова и т. д. Тогда нет ни одного работающего блокчейна, так как теперь все майнеры работают на нескольких форках. Предложение биткойнов решает эту проблему, говоря, что должна использоваться самая длинная цепочка, но:
Решаются ли эти проблемы протоколом биткойн? По сути, кажется, что нет доказательств того, что добавление блоков распределенным образом по сети полностью сходится в единую цепочку.
Биткойн-узлы считают цепочку с наибольшим количеством подтверждений работы лучшей цепочкой. Всякий раз, когда одна вершина цепочки вырывается вперед, добавляя еще один блок, все узлы реорганизуются в эту вершину цепочки, как только узнают об этом.
Еще одна причина, по которой сеть быстро объединяется в одну лучшую цепочку, связана с тем, как платят майнерам биткойнов. Когда майнеры создают свои шаблоны блоков, каждый из них включает уникальную транзакцию coinbase.который выплачивает вознаграждение за блок себе. Это означает, что обнаружение действительного блока приводит к тому, что автор блока выплачивает себе вознаграждение за блок через транзакцию coinbase, которую он включил. Однако результаты транзакций coinbase подлежат периоду созревания в 100 подтверждений. Это означает, что можно потратить только блоки, которые порождают не менее 99 преемников. По сути, это означает, что вознаграждение за блок выплачивается только тогда, когда блок становится частью лучшей цепочки. Поскольку операции майнинга влекут за собой большие затраты на оборудование и электроэнергию независимо от успеха, майнеры теряют деньги, когда работают с блоками, которые не попадают в лучшую цепочку. Таким образом, даже если иногда два майнера одновременно находят блоки и производят два конкурирующих конца цепи, даже «проигрышный»
Хотя отдельные усилия по добыче не координируются централизованно, два конкурирующих блока редко находятся на одной высоте: это происходит примерно раз в месяц. Майнинг биткойнов — это процесс Пуассона, целью которого является создание примерно одного блока каждые десять минут. Каденция регулируется корректировками сложности, которые происходят каждые 2016 блоков, которые сбрасывают целевую сложность таким образом, что ожидается, что следующие блоки 2016 займут 14 дней, при условии, что сеть продолжает производить тот же объем хешрейта, что и в предыдущую эпоху. .
Теперь изображение это происходит снова и т.д.
Чтобы две цепочки оставались четными, новые блоки должны были бы быть найдены многократно в одно и то же время. Становится все менее и менее вероятным, что это будет повторяться неоднократно.
Вероятность зависит от интервала блокировки, который регулируется на уровне 10 минут, и от того, насколько быстро объявления о новой блокировке распространяются в сети.
В настоящее время биткойн-сеть видит устаревшие блоки примерно один раз на 10 000 блоков. Два майнера, получающие блок одновременно, являются случайным и независимым событием, поэтому мы можем подсчитать, что наличие двух цепочек с двумя уникальными блоками в каждом будет иметь шанс 1 на 100 миллионов. При интервале блоков 10 минут это будет происходить в среднем раз в 2000 лет.
До выхода Bitcoin Core 0.10.0 в 2015 году распространение сети было медленнее, а доля устаревших блоков была ближе к 1 из 100. Но даже тогда устаревшая цепочка из 3 блоков случалась только раз в 20 лет. В интересах майнера ускорить распространение блоков, поэтому такие устаревшие блоки встречаются гораздо реже.
Даниэль Вагнер
Тим
Даниэль Вагнер