Автор: Juan Galt
Перевод: AididiaoJP, Foresight News
Споры о преимуществах открытого и закрытого исходного кода длятся в биткоин-сообществе и всей криптоиндустрии уже более десяти лет. Сторонники биткоина давно утверждают, что глобальная финансовая инфраструктура должна строиться открыто, а прозрачность и возможность аудита — это принципы, на которых нельзя идти на компромисс, когда речь идет о реальных деньгах. Однако на уровне приложений и в традиционных финансах к этим аргументам часто не прислушиваются.
Недавний инцидент с кражей средств из аппаратного кошелька Coldcard вновь вывел понятие «открытый исходный код» на передний план. Пользователи потеряли биткоины на сумму свыше 1 миллиарда долларов (более 1500 BTC). Этот случай обнажил неудобную реальность: даже многие стойкие приверженцы биткоина имеют довольно ограниченное понимание философии разработки ПО с открытым исходным кодом и сценариев, где она не срабатывает.
Принципы и терминология
Терминология, связанная с открытым исходным кодом, не так проста. Свободное ПО с открытым исходным кодом (FOSS) и Свободное/открытое ПО (FLOSS) относятся к программному обеспечению, которое соответствует формальному определению свобод для пользователя.
Фонд свободного ПО (FSF) определяет «свободное программное обеспечение» четырьмя основными свободами:
- Свобода 0: запускать программу по своему желанию для любых целей.
- Свобода 1: изучать, как программа работает, и адаптировать её под свои нужды (при условии наличия доступа к исходному коду).
- Свобода 2: распространять копии, чтобы помочь другим.
- Свобода 3: улучшать программу и распространять улучшенные версии среди других (также при условии доступа к исходному коду).
FSF подчеркивает, что «free» означает свободу, а не бесплатность. Часто повторяемая мантра сторонников открытого ПО звучит так: ««free» как в «free speech» (свобода слова), а не как в «free beer» (бесплатное пиво)».
Определение открытого ПО от Open Source Initiative (OSI) дополнительно содержит десять практических критериев, включая: свободное распространение без выплаты роялти, предоставление исходного кода в форме, подходящей для внесения изменений, разрешение на создание и распространение производных работ, отсутствие дискриминации по отношению к любым лицам, группам или областям применения (включая коммерческое). Только лицензия, полностью соответствующая всем десяти критериям, может официально называться «открытой».
«Видимый исходный код» (source available) — это другое дело. Код может быть доступен для чтения, но лицензия может ограничивать права на коммерческое использование. Пример — прошивка Coldcard. Она использует лицензию MIT с дополнительным разрешительным условием. Этот пункт прямо запрещает «продажу» программного обеспечения, определяя её как предоставление ПО третьей стороне за плату или иное встречное предоставление, причём ценность продукта или услуги полностью или по существу определяется самим ПО. Другими словами, прошивку Coldcard нельзя использовать в коммерческих целях.
Разрешительное условие сформулировано прямо: «Это открытый исходный код? Нет». В нём указано, что с добавлением этого пункта ПО соответствует многим, но не всем критериям определения открытого ПО, и поэтому не должно называться таковым.
Эти различия важны. Сам факт публикации исходного кода лишь создаёт возможность его проверки; настоящую силу дают все права, определённые для свободного ПО или открытого ПО. Однако наклейка «открытый исходный код» сама по себе не является целью. Критики считают, что именно коммерческая свобода, заложенная в открытом ПО, разблокирует стимулы для третьих сторон тестировать и проверять код, иначе этих стимулов может вообще не возникнуть.
Четыре свободы — это философское ядро открытого ПО. Но на практике они опираются на экономическое предположение: найдётся достаточно мотивированных людей, которые действительно будут проверять код. Когда это предположение не срабатывает, система демонстрирует классическую «трагедию общин» — общественный ресурс деградирует из-за краткосрочного личного интереса каждого. У всех есть стимул взять чуть больше (или внести чуть меньше), и в итоге страдает всё сообщество. Иногда стимулы совпадают, иногда — полностью расходятся.
Один из разработчиков биткоина выразился более прямо: «Использовать заглушки (mocks и stubs) для открытого кода в тестах безответственно и близоруко. Открытый код считается безопасным, потому что его может проверить кто угодно. Если вы даже не хотите проводить минимальное тестирование функций, от которых действительно зависите, вы действуете как паразит».
Таким образом, открытый исходный код сам по себе не гарантирует безопасность, он лишь создаёт возможность проверки. Произойдет ли проверка на самом деле, зависит от стимулов, навыков и внимания. Исторически качественное FOSS-ПО постепенно укрепляется по мере обнаружения, раскрытия и исправления уязвимостей, становясь прочным фундаментом для строительства других. Яркий пример — ядро Linux, которое сегодня управляет подавляющим большинством серверов, облачной инфраструктуры, устройств на Android и встраиваемых систем по всему миру. Это одно из наиболее широко развернутых программных обеспечений в истории.
Bitcoin Core: реальный образец открытого ПО в действии
Bitcoin Core, эталонная реализация биткоина, — это ещё один классический пример работы чисто открытого ПО в реальном мире в больших масштабах. Он использует лицензию MIT, а процесс разработки по своей сути является публичным.
Любой может отправить запрос на слияние (pull request). Основной механизм фильтрации — это проверка кода (code review), и это также рекомендуемый путь для новичков. Рецензенты используют формальную терминологию: Concept ACK (согласен с целью), Approach ACK (согласен с целью и методом), ACK с указанием конкретного хэша коммита (протестировано и одобрено к слиянию) или NACK (не согласен, с техническим обоснованием).
Мейнтейнеры перед слиянием взвешивают консенсус среди участников и технические достоинства. Порог для критических изменений, требующих консенсуса, выше и обычно предполагает наличие предложения по улучшению биткоина (BIP), а также многолетнее обсуждение в рассылке bitcoin-dev и IRC.
Здесь нет привилегированного класса «разработчиков Bitcoin Core». Доверие зарабатывается долгосрочным демонстрированием компетенции. Мейнтейнеры существуют лишь из практической необходимости — для проверки кода перед слиянием, управления релизами, базового аудита — но на выходе получается чисто открытый код, который любой может проверить, скомпилировать, форкнуть или запустить. Тех, чей код принят в Bitcoin Core, обычно называют контрибьюторами Bitcoin Core.
Ветеран разработки открытого ПО для биткоина Calle недавно резюмировал: «Те, кто думает, что Core — это какая-то непрозрачная организация, работающая в тени, либо слишком ленивы, либо слишком глупы, чтобы самим взглянуть. Всё, что они делают, открыто, любой может участвовать, а конечный продукт — это чисто открытый исходный код».
Финансирование этой работы в основном осуществляется через некоммерческие и грантовые структуры, такие как Brink, OpenSats, Spiral, а не через продуктовые дорожные карты традиционных компаний. Технические обсуждения проходят в публичной рассылке bitcoin-dev и канале #bitcoin-core-dev в IRC сети Libera Chat. Предложения строго изучаются как до, так и после отправки pull request. Вопросы (issues) и запросы на слияние на GitHub часто имеют историю комментариев длиной в десятилетие. Результатом стала культура разработки, отдающая приоритет корректности и возможности аудита, а не скорости или коммерческой функциональности.
Экономика открытого исходного кода
Большинство пользователей открытого или «видимого» ПО никогда сами не читают код. Они полагаются на предположение, что «кто-то другой проверяет». В случае с Coldcard критический дефект, связанный с энтропией, скрывался в публичной прошивке около пяти лет, прежде чем был использован и, соответственно, обнаружен.
Эта ошибка была допущена во время крупного рефакторинга в 2021 году. Этот же рефакторинг удалил оставшийся код под лицензией GPL, унаследованный от Trezor. Trezor — первый аппаратный кошелёк, в настоящее время второй по величине в индустрии самостоятельного хранения. Проблемная библиотека называлась libngu. Она заменила trezor-crypto, но получила крайне мало внешних проверок — через пять лет использования в продакшене у неё было всего 7 звёзд (star) и менее 20 форков (fork). Для сравнения: у trezor-crypto 512 звёзд и 212 форков, а у более современного trezor-firmware — 793 форка и 1800 звёзд. Сам факт видимости исходного кода не привёл к действительно значимой проверке. Критики считают, что причина в том, что другие профинансированные и способные коммерческие компании были ограничены в использовании, им не хватало коммерческих стимулов. Примечание: Star (звезда) и Fork (форк) — ключевые показатели популярности и активности проекта на GitHub. Star означает отметку «нравится» или добавление в избранное; Fork означает копирование репозитория.
Ставки в мире биткоина намного выше, чем в большинстве областей ПО. Критический дефект может напрямую конвертироваться в ликвидность на открытом рынке. Первая половина средств, украденных у Coldcard, всё ещё хранится на нескольких адресах, хакер, возможно, однажды будет пойман, но последовавшие подражатели действовали осторожнее, и кому-то уже удалось украсть больше биткоинов и отмыть их (по данным Galaxy Research, общие потери достигли как минимум 1700 BTC). Цензуроустойчивость и неизменность транзакций биткоина создают как мощные стимулы для атакующих, так и дарвиновский фильтр: выжить в долгосрочной перспективе могут только те проекты, которые постоянно привлекают качественную проверку и чьи пользователи и компании серьёзно принимают меры защиты.
Выбор лицензии формирует эти стимулы. Чисто открытая лицензия максимизирует пул потенциальных проверяющих и форков. Ограничительная лицензия «видимого кода» (source available), хотя и может сократить коммерческий «фрирайд», также сужает круг людей, которые одновременно имеют законное право и экономическую мотивацию для глубокого вовлечения и внимания. В результате бремя проверки кода вновь ложится на саму компанию, в некотором смысле возвращая её ближе к модели закрытого ПО, а не открытого.
Как ИИ меняет разработку открытого и закрытого ПО
Искусственный интеллект меняет баланс между открытым и закрытым исходным кодом.
После инцидента с Coldcard волонтёрский проект Bitcoin Red Team под руководством таких разработчиков, как Calle и Роб Хэмилтон из AnchorWatch, при поддержке OpenSats, использовал передовые модели ИИ для сканирования сотен репозиториев с открытым кодом для биткоина. В течение интенсивного периода команда выявила тысячи проблем, десятки из которых были классифицированы как критические или высокой степени серьёзности, и охватили сотни проектов. Ответственное раскрытие информации сначала передавалось мейнтейнерам, затем публиковалось. Это доказало, что систематическая проверка с помощью ИИ может обнаруживать уязвимости в масштабах и со скоростью, ранее недоступной для команд людей.
Примечательно, что Bitcoin Red Team обнаружил, что китайские открытые весовые модели (вероятно, речь о языковых моделях) оказались надёжнее закрытых американских моделей. Даже американские модели с доступом в сеть и высочайшими привилегиями отказывались отвечать на запросы Bitcoin Red Team, что вызвало сожаление у американских разработчиков.
Между тем поток кода, генерируемого ИИ, создаёт новую нагрузку типа «отказ в обслуживании» (DoS) на мейнтейнеров FOSS-проектов. Проверка вывода ИИ часто занимает больше времени, чем его генерация. Некоторые проекты за пределами биткоина уже начали ограничивать трекер задач (issue tracker) или вводить строгие правила против вкладов от ИИ, просто чтобы поддерживать базовую работу.
Со стороны закрытого ПО традиционное преимущество «безопасности через скрытность» размывается. Современные модели ИИ могут читать, деобфусцировать, исследовать конечные точки и анализировать код с огромной скоростью. Практическая разница между открытым и закрытым ПО сегодня сводится в основном к коду, который никогда не попадает в онлайн. Закрытый код в итоге может полагаться только на качество профессионального аудита, скорость развёртывания исправлений и структуру стимулов, которая заставляет людей с доступом серьёзно и постоянно заниматься проверкой.
Биткоин и шире — криптоиндустрия — оказывают необычное давление на свободное ПО с открытым исходным кодом. Реальная денежная стоимость, враждебная экономическая среда, а теперь и анализ с помощью ИИ в масштабе заставляют программные модели эволюционировать. Возврат к аналоговым, догитовым системам — едва ли вариант для инфраструктуры, поддерживающей современное общество. Выжить под давлением ИИ-ассистированных хакеров и цифровых финансов смогут только те проекты, которые прошли тщательный аудит.





