Что произошло бы, если бы существовали две «разрозненные» версии биткойна с одинаковой популярностью? [дубликат]

Прямо сейчас у нас есть одна общепринятая версия Биткойн (программное обеспечение), и большинство майнеров и полных узлов используют некоторые ее версии.

Однако то, что вполне может произойти, — это раскол среди разработчиков Биткойн по некоторым деталям — скажем, сокращение вдвое времени, размер блока, минимальная комиссия, лучшие алгоритмы хэширования/шифрования после какой-то успешной криптографической атаки, что угодно. (Это происходит с проектами с открытым исходным кодом.)

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

Что именно произойдет? Как именно проблема «решится сама собой»? Если мы предположим, что обычные транзакции (не майнинговые) отправляются между обеими версиями, что с ними произойдет?

(Извините, если этот вопрос кажется слишком теоретическим, но я лично вижу, как это происходит.)

Ответы (1)

Это то, что считается хард-форком, если предположить, что у обеих половинок есть свои причины не менять свои версии и что предыдущие блоки в блокчейне считаются действительными в обоих клиентах, тогда у нас будет 2 типа монет.

  • Монеты, сгенерированные до форка (A), будут транзакциями с возможностью двойного расходования с использованием такого рода входов, будут приняты обеими группами майнеров и будут считаться действительными.

  • Монеты, сгенерированные после разветвления (B, C), не подлежащие двойному расходованию, и транзакции, в которых используются монеты этого типа, будут приняты только одной из групп, а другая откажется от них.

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

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

В таком сценарии клиенты и продавцы будут выбирать B или C по любым причинам и модифицируют клиент, чтобы разрешать только блоки B или C, что отключит атаки двойных расходов против одного и того же продавца (но все же позволит удваивать расходы между продавцами, использующими разные сети). ). Возможно, будут созданы новые клиенты для блокировки всех транзакций с использованием монет А.

В любом случае, в реальной жизни это не имело бы значения, если такое событие произойдет более чем на пару часов, проблемы с форком и двойной тратой обрушат стоимость биткойнов, продавцы отключатся от сети и перестанут принимать биткойны, а у майнеров не будет причин. чтобы продолжить добычу B или C, им было бы лучше вообще создать новую монету (Биткойн 2 и Биткойн^2), чем продолжать работать над ней.