Как устроена прошивка Coldcard и зачем разработчику запускать ее эмулятор на ПК

05 Aug, 2026
752
🔱 206
👥 42

Исходный код аппаратных криптокошельков изучают с особой тщательностью. Одно неверное движение в генераторе случайных чисел или баг в коде может стоить миллионы долларов. Взгляните на шапку README в репозитории Coldcard: авторы открыто предупреждают о критической уязвимости с энтропией, затрагивавшей релизы с 2021 по 2026 год. Разработчики честно предлагают обновить прошивку и перегенерировать ключи.

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

coldcard logo

Что находится внутри репозитория

Проект объединяет софт для нескольких поколений кошельков: серии Mk3, Mk4, Mk5 и флагмана Q1 с полноценной клавиатурой. Основной стек включает MicroPython для высокоуровневой логики и C для низкоуровневых операций на чипе STM32.

Mk5 coldcard picture front

Реклама

Код распределен по каталогам достаточно логично:

  • shared хранит общую логику на Python для эмулятора и устройств.
  • stm32 содержит прошивку, бутлоадеры и мэйкфайлы для сборки финального бинарника под микроконтроллер.
  • unix включает исходники эмулятора для macOS и Linux.
  • hardware содержит принципиальные схемы и спецификации компонентов.

Редко встретишь в одном месте софт, эмулятор и аппаратные схемы. Для тех, кто интересуется эмбеддед-разработкой на Python, это отличный учебный материал.

Интересные технические решения

Воспроизводимые сборки через Docker

Один из главных критериев доверия к безопасному железу — уверенность в том, что скомпилированный файл совпадает с исходниками на GitHub. Команда Coldcard автоматизировала этот процесс. Сборка запускается через Docker одной командой:

git clone https://github.com/Coldcard/firmware.git
cd firmware
git checkout 2026-03-05T2052-v5.5.0
cd stm32
make -f MK4-Makefile repro

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

Полноценный эмулятор без физического устройства

Покупать девайс за пару сотен долларов ради изучения кода не придется. В папке unix лежит эмулятор на базе SDL2 и MicroPython. Он воссоздает экран, кнопки и файловую систему виртуальной SD-карты.

Запустить симулятор на Linux или macOS получится буквально в несколько шагов:

git clone --recursive https://github.com/Coldcard/firmware.git
cd firmware
python3 -m venv ENV
source ENV/bin/activate
pip install -r requirements.txt
cd unix
make setup && make ngu-setup && make
./simulator.py

После запуска на экране появится окно с интерфейсом кошелька. С ним можно взаимодействовать через клавиатуру или мышь, тестировать свои скрипты и проверять обработку транзакций PSBT (Partially Signed Bitcoin Transactions).

Две ветки под разные задачи

Команда поддерживает две основные ветки в Git:

  • master содержит проверенный код для текущих устройств Mk4, Mk5 и Q1.
  • edge служит полигоном для экспериментов. Сюда попадают фичи вроде поддержки Taproot или Miniscript до их появления в основном релизе. Требования к коду в edge ниже, поэтому изменения там выходят быстрее.

Кому пригодится этот репозиторий

Проект интересен далеко не только биткоин-энтузиастам. Разработчикам embedded-систем пригодится опыт связки MicroPython с C на микроконтроллерах STM32. Специалисты по безопасности найдут здесь наглядный пример реализации воспроизводимых сборок.

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

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.