Что произойдет, если часть сети Биткойн будет отделена от остальной сети?

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

Что касается Биткойна, что произойдет с системой Биткойн, если часть мира прервет интернет-соединение с остальным миром? Другими словами, если, скажем, вся внешняя связь в регионе Армении будет потеряна , создадут ли армянские пользователи Биткойн, которые продолжают использовать Биткойн, в конечном итоге разветвленную цепочку блоков?

Если да, то что произойдет с блокчейном, когда соединение с разорванным регионом мира будет восстановлено, а сегрегированная сеть будет преобразована в основную сеть?

Я предполагаю, что результат будет аналогичен атаке 51%. Это правильно?

Можно ли физически передать файлы, чтобы смягчить последствия?
Тило вроде бы отвечает кратко, но что делать, если связь оборвется, скажем, на месяц, а в Армении за это время будут активные транзакции. Не вызовет ли это проблемы слияния при повторном подключении?
@evanh: Если предположить, что никто на самом деле не пытался проводить атаки с двойным расходом, проблем не было бы - все «потерянные» транзакции при реорганизации в конечном итоге будут преобразованы в новые блоки. Это означает, что для того, чтобы доверять транзакции, вам нужны не только подтверждения, но и убедиться, что вы общаетесь с достаточно большой сетью.
Помимо потенциальной двойной траты, я вижу еще одну потенциальную проблему в этом сценарии: если армянский майнер продолжит майнить и сразу же потратит свои заработанные монеты до переподключения, скорее всего, эти транзакции будут признаны недействительными, когда сеть воссоединится. И, как и @user622, мне интересно, что произойдет, если сбой займет больше недели - если я правильно понял, транзакции не могут быть активными более 2 дней, поэтому все изолированные армянские транзакции будут отменены, верно?
И я считаю, что протокол Биткойн, вероятно, должен измениться, чтобы сделать такие события менее травмирующими. Я очень хорошо могу представить, как такие ситуации используются против островных государств либо террористами, либо правительствами. Если биткойн станет чрезвычайно популярным, например, на Кубе, я легко могу представить, как США намеренно перережут кабели и нанесут огромный ущерб своей экономике…

Ответы (5)

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

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

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

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

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

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

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

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

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

+1 Хеш-мощность в сети Армении будет настолько низкой, что блоки будут создаваться очень медленно. Из-за (не только) этого люди в Армении очень скоро заметят, что что-то не так с «их» блокчейном, и примут меры, чтобы как-то переподключиться. Даже если бы они этого не сделали, они не создали бы достаточно длинную цепочку блоков, чтобы считаться «форком». Любой, кто продолжит майнить на этом, потеряет свой доход от майнинга после возможного повторного подключения. С другой стороны, все остальные транзакции на «форке Армения» будут скопированы обратно в реальную цепочку (если только они не являются двойными расходами).
Подождите, почему новые блоки создаются очень медленно? Они по-прежнему создаются со скоростью 1 блок за 10 минут, как и в остальном мире.
@mafutrct, «Длина» рассчитывается как общая совокупная сложность этой цепочки, а не количество блоков.
@Serith Да, но я сейчас не понимаю, как это связано с моим комментарием. Тило сказал, что новые блоки создаются медленнее, чем в остальном мире, что, я считаю, не так. Я согласен с вами и с ним, что из-за меньшей длины (суммы сложности) эти блоки все равно будут отброшены. Может быть, я просто неправильно понимаю его формулировку.
@mafutrct, Тило тоже прав. Сложность корректируется каждые 2015 блоков, поэтому между изменением скорости хэширования сети и корректировкой есть небольшая задержка, и может потребоваться больше времени для майнинга блоков, прежде чем он вернется к 1 блоку за 10 минут. Итак, скажем, Армения представляет 1% от общего хешрейта сети, поэтому после разделения потребуется примерно 1000 минут, чтобы добыть блок, прежде чем он достигнет следующей контрольной точки и правильно установит сложность.
@Serith: Ах, верно. Спасибо за разъяснение, теперь понял.

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

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

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

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

Отключение части сети также может косвенно привести к тому, что одна из «гильдий» получит %51. Сообщество также должно помнить об этом, ИМХО. т.е. если BTCGuild вдруг полностью отключился на время, а GHash.IO и он сам имели по 33% хешрейта; GHash.IO будет иметь 50% на период времени, когда BTCGuild отключен.

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

Но что произойдет, если область будет полностью отрезана от большей части мира?

Майнеры по обе стороны разреза будут продолжать попытки найти блоки. Вероятность того, что они их найдут, определяется текущей сложностью.

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

Сторона «армения», с другой стороны, испытает значительное падение скорости блокировки. Если у них будет 1% мощности хэширования (а я сомневаюсь, что у них есть даже это), то они столкнутся с падением скорости блокировки в сто раз.

Если изоляция продлится достаточно долго, то «цель» на стороне «Армения» подстроится, чтобы восстановить нормальную скорость блокировки, но это займет много времени. «Цель» корректируется только после каждых 2016 блоков, и каждый раз она корректируется только в четыре раза. Скажем, когда происходит разделение, мы находимся на полпути между корректировками сложности, если «Армения» имеет один процент вычислительной мощности, то потребуется около 100 недель (~ два года), чтобы достичь первой корректировки сложности.

Если и когда подключение будет восстановлено, то любые блоки, добытые на стороне «Армения», будут отброшены, поскольку цепочка со стороны «остального мира» намного прочнее. Сделки со стороны «Армения» могут быть повторно включены в новые блоки, если они еще действительны.