Open Source против Source-Available: что провал Coldcard говорит о стимулах в разработке биткоин-ПО
Ключевые выводы
- •Инцидент с Coldcard был связан с критическим дефектом прошивки, который, по имеющимся данным, оставался в общедоступном коде около пяти лет, прежде чем его эксплуатировали.
- •Прошивка Coldcard была охарактеризована как source available, а не open source, поскольку Commons Clause ограничивает коммерческое использование.
- •Разработка Bitcoin Core ведётся публично: с открытым ревью кода, публичными обсуждениями и без особого класса разработчиков.
- •В статье говорится, что выбор лицензии влияет на то, кто может проверять код и как быстро обнаруживаются уязвимости в ПО, работающем с реальными деньгами.
- •Bitcoin Red Team использовала передовые ИИ-модели для сканирования open source-репозиториев биткоина и сообщила о тысячах находок, включая критические проблемы и проблемы высокой серьёзности.

Bitcoin Magazine: Open Source против Source-Available: что провал Coldcard говорит о стимулах в разработке биткоин-ПО
Спор между закрытым и открытым исходным кодом раскалывает биткоин-индустрию и криптоотрасль в целом уже более десятилетия. Сторонники биткоина давно утверждают, что мировая финансовая инфраструктура должна создаваться публично: по их мнению, прозрачность и возможность аудита обязательны, когда на кону реальные деньги. Впрочем, прикладной и традиционный уровни финансов часто с этим не согласны.
Недавний взлом Coldcard — популярного аппаратного кошелька для самостоятельного хранения, из-за которого пользователи потеряли биткоины на сумму более 100 миллионов долларов, то есть более 1 500 BTC, — поставил вопрос о том, что на самом деле означает «открытый исходный код». Он также показал, что многие люди, включая некоторых серьёзных биткоинеров, слабо разбираются в философии разработки open source-ПО и в условиях, при которых она даёт сбой.
Принципы и терминология
Терминология вокруг открытого кода может запутать. Свободное и открытое программное обеспечение (FOSS) и свободное/либре открытое ПО (FLOSS) описывают программы, соответствующие формальным определениям пользовательской свободы.
Фонд свободного программного обеспечения (FSF) определяет свободное ПО через четыре основополагающие свободы:
Свобода 0: свобода запускать программу как угодно и для любых целей.
Свобода 1: свобода изучать, как работает программа, и изменять её так, чтобы она выполняла ваши вычисления так, как вам нужно. Доступ к исходному коду — необходимое условие для этого.
Свобода 2: свобода распространять копии, чтобы помогать другим.
Свобода 3: свобода распространять копии ваших изменённых версий среди других. Доступ к исходному коду — необходимое условие для этого.
FSF подчёркивает, что «free» означает свободу, а не цену, — в известной фразе сторонников FOSS: «free — как „свобода слова“, а не как „бесплатное пиво“».
Определение открытого исходного кода (Open Source Definition) от Open Source Initiative добавляет десять практических критериев. Среди них — свободное распространение без роялти, доступность исходного кода в предпочитаемой для внесения изменений форме, право создавать и распространять производные работы, а также недопустимость дискриминации людей, групп или сфер деятельности, включая коммерческое использование. Чтобы считаться открытым по стандарту OSI, лицензия должна соответствовать всем десяти критериям.
«Source available» (доступный исходный код) или «source viewable» (просматриваемый исходный код) — не то же самое. Код может быть открыт для публичного чтения, но лицензия при этом ограничивает право его продавать. Прошивка Coldcard, например, выпускается на условиях MIT плюс Commons Clause. Этот пункт прямо исключает право «продавать» (Sell) ПО, что определяется как предоставление его третьим лицам за плату или иное вознаграждение в составе продукта или услуги, ценность которых полностью или существенным образом определяется самим ПО. Иными словами, прошивку Coldcard нельзя было использовать в коммерческих целях.
FAQ по Commons Clause прямо указывает на это различие: «Является ли это „Open Source“? Нет». Там отмечается, что применение этого пункта означает, что ПО соответствует многим элементам Open Source Definition, но не всем, и потому его не следует называть открытым исходным кодом.
Эти различия важны. Публикация исходного кода создаёт возможность проверки. Именно предоставление полного набора прав, определённых Free Software Definition или Open Source Definition, делает ПО FOSS или FLOSS. Но сам значок соответствия — не главное. Критики утверждают, что коммерческая свобода в FOSS открывает сторонние стимулы тестировать и проверять код, которых иначе могло бы не быть.
Четыре свободы образуют философское ядро открытого кода, но на практике они опираются на экономическое допущение: что достаточно мотивированных людей действительно будут изучать код. Когда это допущение не сбывается, результат напоминает классическую трагедию общих ресурсов — ситуацию, когда общий ресурс оказывается заброшен, потому что люди действуют в своих краткосрочных интересах, а не в долгосрочных интересах группы.
У каждого есть стимул брать больше или вкладывать меньше, чем устойчиво допустимо, и в результате ресурс деградирует. Совпадают ли стимулы — зависит от конкретной ситуации.
Один биткоин-разработчик высказался о проблеме прямо: «Использовать моки и заглушки вместо open source-кода в тестах безответственно и недальновидно. Open source-код считается безопасным, потому что любой может его проверить. Если вы не готовы сделать минимум — протестировать функции, от которых реально зависите, — вы ведёте себя как пиявка».
Сам по себе открытый код не создаёт безопасности. Он создаёт возможность проверки. Произойдёт ли эта проверка — зависит от стимулов, квалификации и внимания. Принято считать, что историческое FOSS со временем «закаливается»: уязвимости обнаруживаются, раскрываются и устраняются, создавая прочный фундамент, на котором строят другие. Ядро Linux — яркий пример такого закалённого FOSS: оно работает на подавляющем большинстве серверов мира, облачной инфраструктуре, устройствах Android и встраиваемых системах, что делает его одним из самых широко развёрнутых программных продуктов в истории.
Открытый код на примере Bitcoin Core
Bitcoin Core, эталонная реализация биткоина, — ещё один масштабный пример работы открытого кода на практике. Это ПО, лежащее в основе большей части биткоин-инфраструктуры, выпускается под лицензией MIT, а его процесс разработки изначально устроен публично.
Любой может открыть pull request. Ревью кода — основной фильтр и рекомендуемая точка входа для новых участников. Ревьюеры используют формальный словарь: Concept ACK — признание и согласие с целью; Approach ACK — согласие с целью и методом; ACK с конкретным хешем коммита — протестировано и одобрено к слиянию; или NACK — несогласие, которое должно сопровождаться техническим обоснованием.
Мейнтейнеры перед слиянием оценивают консенсус участников и технические достоинства изменения. Изменения, затрагивающие консенсус, проходят через ещё более высокую планку и обычно требуют Bitcoin Improvement Proposal, а также обширных многолетних обсуждений в списке рассылки bitcoin-dev и в IRC.
Привилегированной касты «разработчиков Bitcoin Core» не существует. Доверие заслуживается продемонстрированной компетентностью со временем. Мейнтейнеры существуют по практическим причинам: аудит и слияние кода, управление релизами и базовая модерация. Но результат работы — чистый open source-код, который любой может изучить, собрать, форкнуть или запустить. Разработчиков, чьи коммиты попадают в Bitcoin Core, в целом называют Bitcoin Core Contributors.
Calle, давний биткоин-разработчик open source-проектов, недавно описал положение дел так: «Люди, которые считают, что Core — это какая-то непрозрачная организация, работающая в тени, либо слишком ленивы, либо слишком глупы, чтобы самим пойти и посмотреть. Буквально всё, что они делают, публично, любой может присоединиться, а результат их работы — чистый open source-код».
Финансирование этой работы идёт в основном через некоммерческие и грантовые структуры, такие как Brink, OpenSats, Spiral и другие, а не через традиционную продуктовую дорожную карту компании. Технические обсуждения и дебаты проходят публично в списке рассылки bitcoin-dev и в IRC-канале #bitcoin-core-dev на Libera Chat, где предложения тщательно изучаются до и в ходе процесса pull request'ов. Задачи и pull request'ы на GitHub нередко содержат историю комментариев длиной в десятилетие. В результате складывается культура разработки, ориентированная на корректность и проверяемость, а не на скорость или коммерческий темп выпуска функций.
Экономика открытого кода
Большинство пользователей open source- или source-available-ПО никогда сами не читают код. Они полагаются на предположение, что его изучают другие. В случае Coldcard критический дефект энтропии оставался в общедоступной прошивке примерно пять лет, прежде чем его эксплуатировали и, соответственно, обнаружили.
Ошибка попала в кодовую базу в ходе масштабного переписывания в 2021 году, которое также удалило оставшийся GPL-производный код из Trezor — первого аппаратного кошелька, ныне второго по величине в индустрии самостоятельного хранения. Библиотека в центре сбоя энтропии, заменившая trezor-crypto, называется libngu и почти не привлекала внешнего внимания: лишь 7 звёзд и менее 20 форков за более чем пять лет использования в продакшене. Для сравнения: библиотека trezor-crypto имеет 512 звёзд и 212 форков, а более современный trezor-firmware — 793 форка и 1,8 тыс. звёзд. Сама по себе доступность исходного кода не дала той проверки, которая имела значение, поскольку другим коммерческим и хорошо финансируемым компаниям было запрещено его использовать — по крайней мере, так утверждают критики.
На практике это делает выбор лицензии чем-то большим, чем юридическая сноска: он влияет на то, кто может участвовать в проверке, у кого есть для этого основания и как быстро могут быть замечены изъяны в ПО, обеспечивающем сохранность реальных средств. Ставки в биткоине выше, чем в большинстве программных областей. Критическую уязвимость можно напрямую превратить в ликвидные средства на открытом рынке. Хотя первая половина украденных средств Coldcard всё ещё хранится на нескольких адресах и хакера, возможно, однажды поймают, последовавшие за ним подражатели действовали осторожнее: некоторые украли больше биткоинов и успешно их отмыли, по данным Galaxy Research. Сопротивляемость биткоина цензуре и неизменяемость транзакций создают одновременно мощный стимул для атакующих и дарвиновский фильтр: в долгосрочной перспективе выживают лишь проекты, непрерывно привлекающие компетентную проверку, а также пользователи и компании, принимающие серьёзные меры предосторожности.
Выбор лицензии формирует эти стимулы, считают сторонники FOSS, годами критиковавшие лицензионные решения Coinkite. Чисто открытые лицензии максимизируют круг потенциальных ревьюеров и форков. Ограниченные «source available»-лицензии могут сократить коммерческое безбилетничество, но и сужают круг людей, у которых есть одновременно законное право и экономический мотив вкладывать глубокое внимание. В этом смысле под ограничительной лицензией бремя проверки кода ложится обратно на компанию, что сближает её модель скорее с закрытым, чем с открытым кодом.
Как ИИ меняет разработку с открытым и закрытым кодом
Искусственный интеллект теперь тоже меняет баланс между FOSS и закрытым кодом.
После инцидента с Coldcard волонтёрская инициатива Bitcoin Red Team — под руководством разработчиков, включая Calle и Rob Hamilton из AnchorWatch, при поддержке OpenSats — использовала передовые ИИ-модели для сканирования сотен open source-репозиториев биткоина. За один интенсивный период команда подала тысячи отчётов, включая десятки, классифицированных как критические или высокой степени серьёзности, по сотням проектов. Перед более широкой публикацией мейнтейнерам были направлены ответственные раскрытия уязвимостей. Это упражнение показало, что систематическая проверка с помощью ИИ способна выявлять проблемы в масштабе и со скоростью, ранее недостижимыми для чисто человеческих команд.
На этом фронте Red Team обнаружила, что китайские модели с открытыми весами значительно надёжнее закрытых американских моделей, которые даже с киберразрешениями и доступом верхнего уровня отказывались отвечать на запросы Red Team — тенденция, о которой с сожалением говорят американские разработчики.
В то же время поток сгенерированного ИИ кода создал новое давление типа «отказ в обслуживании» на мейнтейнеров FOSS. Проверка результатов ИИ зачастую занимает больше времени, чем их генерация. Некоторые open source-проекты за пределами биткоина ограничили трекеры задач или ввели жёсткие правила против ИИ-вкладов просто чтобы оставаться работоспособными.
Со стороны закрытого кода традиционное преимущество «безопасности через неясность» (security through obscurity) ослабевает. Современные ИИ-модели умеют читать, деобфусцировать, проверять конечные точки и анализировать код на высокой скорости. Практическая разница между открытым и закрытым кодом теперь сводится в основном к бэкенд-коду, который никогда не выкладывается в сеть. В результате закрытый код держится лишь на качестве профессиональных аудитов, скорости развёртывания патчей и структуре стимулов, удерживающих компетентных людей с доступом начеку.
Биткоин и криптоиндустрия в целом оказывают необычное давление на свободное и открытое ПО. Сочетание реальной денежной стоимости под угрозой, состязательной экономики и анализа в масштабе ИИ заставляет модели разработки программ эволюционировать. Возврат к аналоговым доцифровым системам вряд ли возможен для инфраструктуры, на которой держится современное общество. Давления хакеров с поддержкой ИИ и груза финансов «цифрового прежде всего», скорее всего, выдержат лишь самые тщательно проверяемые проекты.
Эта статья «Open Source vs. Source-Available: What the Coldcard Failure Teaches About Bitcoin Software Incentives» впервые появилась на Bitcoin Magazine, её автор — Juan Galt.