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

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

Код распределен по каталогам достаточно логично:
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. Специалисты по безопасности найдут здесь наглядный пример реализации воспроизводимых сборок.
Запуск локального эмулятора поможет без лишних трат разобраться в том, как устроена подпись транзакций на изолированных устройствах.
