Опасно ли иметь несколько реализаций Биткойна? PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Опасно ли иметь несколько реализаций биткойнов?

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

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

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

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

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

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

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

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

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

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

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

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

Угроза? Подумаешь?

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

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

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

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

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

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

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

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

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

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

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

Прежде всего, почти все используют Bitcoin Core.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Отметка времени:

Больше от Биткойн-журнал