Как протокол BTC гарантирует появление «основного» блокчейна?

Я читаю о технологии биткойн/блокчейн. Обычно хорошо объясняется часть о доказательстве работы и о том, как создать блок. Однако никогда не объясняется, как и почему передача блоков по сети позволяет «блокчейну» конвергировать.

Поясню: что, если два майнера одновременно создадут новый блок и одновременно транслируют его? Примерно 50% узлов будут иметь каждый новый (другой) блок и строить на нем. А теперь представьте, что это происходит снова и т. д. Тогда нет ни одного работающего блокчейна, так как теперь все майнеры работают на нескольких форках. Предложение биткойнов решает эту проблему, говоря, что должна использоваться самая длинная цепочка, но:

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

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

Вы говорите: «В данный момент может быть 2 разветвленных цепи одинакового размера, которые растут примерно с одинаковой скоростью». Но «примерно» — это не «точно» — в среднем, если сложность цепочки установлена ​​правильно и добыча блока занимает около десяти минут, две параллельные цепочки будут иметь около пяти минут между двумя открытиями следующего блока. Это возраст в компьютерном времени - достаточно легко, чтобы более длинная цепочка могла сообщить о себе всей сети и иметь четыре минуты в запасе.
@DanielWagner, почему они обязательно должны быть с разницей в 5 минут. Это может быть миллисекунды, а затем 10-минутное ожидание?
@Tim Это не обязательно 5 минут друг от друга. Как я уже сказал, в среднем это пять минут.

Ответы (2)

Биткойн-узлы считают цепочку с наибольшим количеством подтверждений работы лучшей цепочкой. Всякий раз, когда одна вершина цепочки вырывается вперед, добавляя еще один блок, все узлы реорганизуются в эту вершину цепочки, как только узнают об этом.

Еще одна причина, по которой сеть быстро объединяется в одну лучшую цепочку, связана с тем, как платят майнерам биткойнов. Когда майнеры создают свои шаблоны блоков, каждый из них включает уникальную транзакцию coinbase.который выплачивает вознаграждение за блок себе. Это означает, что обнаружение действительного блока приводит к тому, что автор блока выплачивает себе вознаграждение за блок через транзакцию coinbase, которую он включил. Однако результаты транзакций coinbase подлежат периоду созревания в 100 подтверждений. Это означает, что можно потратить только блоки, которые порождают не менее 99 преемников. По сути, это означает, что вознаграждение за блок выплачивается только тогда, когда блок становится частью лучшей цепочки. Поскольку операции майнинга влекут за собой большие затраты на оборудование и электроэнергию независимо от успеха, майнеры теряют деньги, когда работают с блоками, которые не попадают в лучшую цепочку. Таким образом, даже если иногда два майнера одновременно находят блоки и производят два конкурирующих конца цепи, даже «проигрышный»

Хотя отдельные усилия по добыче не координируются централизованно, два конкурирующих блока редко находятся на одной высоте: это происходит примерно раз в месяц. Майнинг биткойнов — это процесс Пуассона, целью которого является создание примерно одного блока каждые десять минут. Каденция регулируется корректировками сложности, которые происходят каждые 2016 блоков, которые сбрасывают целевую сложность таким образом, что ожидается, что следующие блоки 2016 займут 14 дней, при условии, что сеть продолжает производить тот же объем хешрейта, что и в предыдущую эпоху. .

Спасибо, я кажется понял. Но похоже, что это в основном предполагает, что будет «основная» ветвь и как бы 2 подцепи с каждым 1 или 2 выдающимися блоками. В этой настройке действительно просто определить, какая цепочка должна быть «основной», проверив самую длинную. Мой первоначальный вопрос был больше о (теоретической) возможности того, что новые блоки добываются так быстро и хаотично, что никто не может на самом деле договориться, где находится основная цепь. По сути, если из начального блока всегда есть 10 разных мин, следующих узлов, и он продолжает разветвляться во всех направлениях.
Если блоки находятся очень быстро, сложность увеличивается до тех пор, пока частота не вернется к примерно одному блоку за десять минут. Таким образом, сценарий, в котором обнаруживается множество конкурирующих цепей, вряд ли произойдет случайно, и майнерам будет очень дорого создавать его специально.
@lezebulon В целом 10 минут значительно дольше, чем требуется для объявления нового блока, поэтому период хаоса короток по сравнению с периодом устойчивого состояния, когда внезапно не появляются новые блоки. Тем не менее, в зачаточных блокчейнах есть реальные опасения по поводу того, что произойдет, когда злоумышленник внезапно купит много времени AWS и очень быстро создаст кучу блоков (потому что у них была большая часть общего процессорного времени майнинга). Биткойн большой, с большим количеством майнеров, так что это маловероятно… но теоретически возможно.
Индивидуальному пользователю биткойнов может быть предоставлено право решать, достаточно ли риска такой успешной атаки, чтобы поставить систему биткойнов под сомнение.

Теперь изображение это происходит снова и т.д.

Чтобы две цепочки оставались четными, новые блоки должны были бы быть найдены многократно в одно и то же время. Становится все менее и менее вероятным, что это будет повторяться неоднократно.

Вероятность зависит от интервала блокировки, который регулируется на уровне 10 минут, и от того, насколько быстро объявления о новой блокировке распространяются в сети.

В настоящее время биткойн-сеть видит устаревшие блоки примерно один раз на 10 000 блоков. Два майнера, получающие блок одновременно, являются случайным и независимым событием, поэтому мы можем подсчитать, что наличие двух цепочек с двумя уникальными блоками в каждом будет иметь шанс 1 на 100 миллионов. При интервале блоков 10 минут это будет происходить в среднем раз в 2000 лет.

До выхода Bitcoin Core 0.10.0 в 2015 году распространение сети было медленнее, а доля устаревших блоков была ближе к 1 из 100. Но даже тогда устаревшая цепочка из 3 блоков случалась только раз в 20 лет. В интересах майнера ускорить распространение блоков, поэтому такие устаревшие блоки встречаются гораздо реже.

хорошо, я понял, спасибо. Что меня больше беспокоит в этой ситуации, так это то, что сама сеть начинает глючить или неправильно доставлять блоки. Похоже, это основано на предположении, что транспортный уровень HTTP работает правильно и что информация всегда в конечном итоге распространяется достаточно быстро.
@lezebulon Вы можете предположить ситуацию, когда сеть полностью разбивается из-за серьезной проблемы с интернет-трафиком. В этом случае разветвление невозможно предотвратить, потому что между половинками нет связи.
В ноябре у нас была двухблочная вилка, и она была не первой. Я думаю, что раз в 2000 лет звучит немного оптимистично. :)