Сетевое разделение
Bitcoin Core недавно объединился в запрос на тягу от Matt Corallo, который отключает определенные узлы. Это вызвало несколько интересных выступлений нескольких видных людей. В этом посте я расскажу, что делает этот запрос на растяжение.
Сеть биткойнов
Прежде чем я начну объяснять этот запрос на растяжение, нам сначала нужно немного узнать о том, как работает сеть Bitcoin.
Сеть Bitcoin работает по принципу «равный-равному». То есть каждый компьютер с программным обеспечением Bitcoin подключается к другим компьютерам с программным обеспечением Bitcoin. Нет центрального места, к которому подключаются все эти компьютеры. Вместо этого они соединяются друг с другом.
Новые транзакции и блоки передаются в этой сети, и каждый компьютер отправляет эту информацию на другие компьютеры по мере их появления. Сеть спроектирована таким образом, чтобы ни один компьютер или даже группа компьютеров не могли отключить сеть. Действительно, это одна из сильных сторон сети Bitcoin.
Подключение к другим компьютерам
Когда новый компьютер присоединяется к сети, он должен выяснить, к каким другим компьютерам подключиться. Это обычно делается путем нахождения, по крайней мере, одного другого компьютера, который находится в сети, и спрашивает, на каком компьютере подключены другие компьютеры, и подключаться к ним, и спрашивать эти компьютеры о том, к каким другим компьютерам они подключены, и подключению к ним и т. Д.
Процесс подключения к другому компьютеру - это то, что называется рукопожатием . Во время рукопожатия компьютеры отправляют информацию о программном обеспечении, которое они запускают. Вот что такое изменение кода.
Сервисы
Во время рукопожатия компьютеры объявляют две вещи; Во-первых, сетевой идентификатор («сетевая магия» в технологии говорит), а во-вторых, услуги, которые у них есть.
Сетевой идентификатор обычно используется, чтобы убедиться, что компьютер подключен к другому компьютеру в той же сети. Каждый криптовалют обычно имеет уникальный сетевой идентификатор. Именно так программное обеспечение Litecoin обеспечивает подключение к другим компьютерам с программным обеспечением Litecoin, а не Monero.
К сожалению, с Bitcoin ABC и Segwit2x они используют один и тот же идентификатор сети (скорее всего, потому что обе надеются заменить биткойн).
Оба отличаются от Bitcoin Core, объявляя свое программное обеспечение как услугу, которую они имеют. Биткойн ABC начал использовать бит 5, чтобы сообщить, что на компьютере работает Bitcoin Cash. Программное обеспечение Segwit2x, btc1, использует бит 7, чтобы объявить, что на компьютере работает Segwit2x.
Запрос Pull изменяет Bitcoin Core 0.15, так что любой компьютер, объявляющий услугу в битах 5 или 7 (6 или 8 в соответствии с PR с момента подсчета Мэтта 1), автоматически отключается. То есть компьютеры, работающие с Bitcoin ABC или btc1, отключены от компьютеров, на которых работает Bitcoin Core 0.15.
Эффект от этого заключается в том, что компьютеры, на которых работает Bitcoin Core, находятся в одной группе, а компьютеры, работающие с Bitcoin ABC / btc1, находятся в другом. Это то, что мы называем сетевым разделением. То есть, по существу, есть две сети, а не одна.
Биткойн Cash / биткойн ABC
Мы знаем, что из-за защиты от копирования и воспроизведения, встроенной в Bitcoin Cash, блоки и транзакции с Bitcoin Cash недействительны в биткойне и наоборот.
Таким образом, имеет смысл отключить эти компьютеры, поскольку проверка блоков и транзакций, которые, как мы знаем, являются недействительными, будет пустой тратой времени компьютера. Кроме того, в битвах и биткойн-кассах лучше не смешиваться. Сеть Bitcoin не заботится о том, что происходит в сети Bitcoin Cash и наоборот.
По этой причине отключение компьютеров, работающих под управлением Bitcoin ABC (клиент Bitcoin Cash) и разделение сети, делает весь смысл в мире.
Обратите внимание, что даже без этого изменения, когда компьютер Bitcoin Cash подключен к компьютеру Bitcoin, получение недопустимого блока или транзакции заставляет их отключать друг друга, поэтому превентивное отключение просто более эффективно.
Segwit2x / btc1
Ситуация Segwit2x немного сложнее. В некоторых случаях разделение сети может быть хорошим, а в других - не разбиение сети на сеть.
Мы знаем, что есть план для жесткой развилки до 2x предела блокировки в ноябре. Это может означать две монеты, монеты биткойн-Core и монет Segwit2x.
Предположим, что у нас есть только одна монета, разделение сети будет незначительно плохим. Я говорю немного, так как все еще, скорее всего, будет единый регистр, но блоки и транзакции не будут распространяться так быстро. Это также немного увеличивает вероятность реорганизации блока.
Предположим, что есть две монеты, разделение сети будет очень хорошим. Поскольку Segwit2x имеет защиту от вытеснения, блоки из btc1 не будут действительны в биткойне и наоборот. Это означает, что компьютеры будут отключать друг друга, как только они видят блоки.
Мы хотим разделиться раньше, если мы ожидаем раздел, так как внезапно, когда вилка может произойти, вы можете изолировать компьютер, без которого никто не сможет подключиться. В качестве компьютера вам не придется внезапно отключиться от других компьютеров и оставаться изолированным от сети, в которой вы хотите включить. Это беспроигрышный для обоих сетевых разделов, поскольку вам нужны компьютеры, на которых работает правильное программное обеспечение в сети.
Учитывая эту ситуацию, основные разработчики считают, что предельных потерь прежнего сценария было недостаточно, чтобы перевесить основной выигрыш последнего сценария и объединить этот запрос на растяжение.
Вывод
Так что это значит? Bitcoin Core 0.15 сделает сеть более безопасной. Немного, потому что, если другие реализации не соответствуют требованиям и каждому обновлению компьютера, сеть, которая действительно должна быть разделена, все равно будет подключена.
Если Segwit2x приведет к расколу сети, Bitcoin Core поможет разделить сеть полезным способом.