Опасно ли наличие нескольких реализаций Биткоина?

Опасно ли наличие нескольких реализаций Биткоина?

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

Баги, которые недавно привели к тому, что многие узлы LND перестали синхронизироваться с блокчейном Биткоина, вероятно, были вызваны альтернативной реализацией.

Возможно, вы задаетесь вопросом: «Кто использует что-то кроме Bitcoin Core?» Возможно, вы не знали о существовании других реализаций Биткоина. Возможно, вы не уверены, что вообще означает другая реализация.

Bitcoin Core начинал как программное обеспечение, которое Сатоши Накамото написал на C++ и выпустил в мир. По сегодняшний день он продолжает обновляться. Альтернативная реализация – это программное обеспечение, которое делает то же самое, что и Bitcoin Core – применяет те же правила консенсуса – но оно написано по-другому, чаще всего на другом языке кодирования.

Как альтернативная реализация сломала узлы в сети Lightning?

Одна из основных версий узла Lightning Network (LND) основана на альтернативной реализации Биткоина под названием btcd. Когда разработчик создал очень большую мультиподписную транзакцию, btcd не счел ее действительной, поскольку она содержала слишком много данных-свидетелей. Другие реализации Биткоин – наиболее важная из них – Bitcoin Core – не имели такого ограничения на данные свидетелей транзакций Taproot и, следовательно, принимали транзакцию и содержащий ее блок как действительные.

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

Когда ошибка повторилась 1 ноября, пострадали не только узлы LND. Некоторые экземпляры electrs (реализация внутреннего сервера для Electrum Wallet) также не смогли достичь консенсуса с остальной частью цепочки. В то время как узлы LND были исключены из консенсуса из-за аналогичной проблемы в btcd, это была реализация Биткоина, написанная на Rust, которая привела к отставанию узлов electrs, включая некоторые очень заметные серверы, управляемые mempool.space.

Ограничение на размер данных-свидетелей существует для предотвращения DoS-атак и также является частью Bitcoin Core (хотя Core имеет больший лимит для транзакций Taproot). Похоже, что две другие реализации, которые не синхронизировались, имели код, поддерживающий меньшее ограничение.

Очень небольшие различия в реализации могут привести к отсутствию консенсуса.

Наличие нескольких реализаций Биткоина опасно

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

Подумаешь, угроза.

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

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

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

«Узлы будут следовать валидной цепочке с наибольшей работой… Ключевое слово здесь валидной. Если узел получает блок, который он считает недействительным, не имеет значения, сколько работы проделано над этим блоком, узел не примет эту цепочку». - Эндрю Чоу

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

Как такое вообще могло случиться?

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

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

Настолько, что разработчик Биткоина Питер Тодд сказал, что другие реализации должны соответствовать Bitcoin Core ошибка за ошибкой.

Вот и все: несколько реализаций опасны!

Каковы другие реализации протокола Биткоина и почему они существуют?

Во-первых, почти все используют Bitcoin Core.

Люк Дашжр видит около 43 000 узлов, 98% из которых работают с Bitcoin Core, а некий Coin Dance видит около 15 000 узлов, 96% из которых работают с Bitcoin Core. Итак, на данный момент похоже, что очень немногие люди используют альтернативные реализации.

Тем не менее есть активные проекты, которые пытаются создавать и поддерживать другие кодовые базы, реализующие протокол Биткоина. Они включают:

У Джеймсона Лоппа есть отличная страница с более исчерпывающим списком и ссылками на все другие реализации.

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

Биткоин не требует разрешений. Любой желающий может скачать цепочку; любой может взаимодействовать с сетью; и никто не может помешать вам написать код или запустить альтернативную реализацию.

Тем не менее, очевидно, что некоторые люди отвечают за внесение изменений в хранилище Биткоина, и процесс их выбора кажется неформальным. Хотя существует процесс предложения по улучшению Биткоина (BIP) для предложения изменений в Bitcoin Core, он также довольно неформален.

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

Следующий шаг приблизительного консенсуса – иметь более одной популярной реализации.

Отсутствие нескольких реализаций может быть более опасным

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

Взять к примеру индустрию лоббирования, которая в настоящее время существует в политике. Не возникнет ли такое явление в кругу людей, имеющих доступ к единственной реализации протокола Биткоина?

Они будут восприниматься как те, у кого есть доступ к власти, как и политики. Таким образом, люди будут атаковать их, но у этих разработчиков не будет защиты государства. Что это за жизнь такая? Кто добровольно выберет такую участь?

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

Несколько реализаций в помощь!

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

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

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

Централизованная среда разработки, в которой каждый развивает только Bitcoin Core, может угрожать отсутствием общедоступности. Разговор на эту тему должен касаться рисков столь сильной зависимости от Bitcoin Core, а не фокусироваться исключительно на проблемах, которые могут быть вызваны альтернативной реализацией.

Об этом споре есть отличная старая статья Аарона ван Вирдума. Вы также можете прочитать более свежий информативный тред об этом.

Это гостевой пост Билла Скорсби, владельца малого бизнеса, работающего с биткоинами, и автора нескольких руководств по самостоятельному хранению биткоинов. Точки зрения, высказанные в этой статье, принадлежат автору и не обязательно отражают взгляды BTC Inc. или Bitcoin Magazine.

Рекордный рост BTC: что это значит для вашего инвестиционного будущего Рекордный рост BTC: что это значит для вашего инвестиционного будущего На какие факторы следует обратить внимание сейчас, когда биткоин снова демонстрирует бычий тренд, чтобы не принимать эмоциональные или неправильные решения в разгар рыночной лихорадки. Майлз Оливер 24 марта 2024
Восемь причин использовать аппаратный биткоин-кошелек Восемь причин использовать аппаратный биткоин-кошелек Защита приватных биткоин-ключей – непростая задача, и пользователям приходится выбирать между программными кошельками, бумажными кошельками, аппаратными кошельками и даже «мозговыми кошельками». Наведем восемь причин использовать аппаратные кошельки для хранения. Unchained Capital 24 марта 2024
KYC, Биткоин и неоправдавшиеся надежды на политику AML KYC, Биткоин и неоправдавшиеся надежды на политику AML Зачем создавать препятствия и подталкивать злоумышленников к переходу с криптовалюты на трудно отслеживаемые наличные деньги, если их средства можно отследить с помощью ончейн-аналитики? Мария Потеряева 23 марта 2024