2022年2月23日 3 min read

Coldcardのファームウェア

Coldcardのファームウェア
Photo by Oskar Yildiz / Unsplash

こんにちは。AndGoのハードウェア担当の片山です。

前回はオープンソースのハードウェアウォレットのColdcard (https://coldcard.com/) のハードウェアについて解析してきました。カナダ初のハードウェアウォレットで,Micro SDカードへのバックアップできることが特徴的です。オープンソースのハードウェアウォレットでありながらATECC608Aというセキュアチップを搭載しています。今回はColdcardのGitHubリポジトリを探検し,ファームウェアについて見ていきたいと思います。早速リポジトリにアクセスしてみます。

早速リポジトリ(https://github.com/Coldcard)にアクセスしてみます。REAME.mdが表示されますので下の方のCode Ordanizationのセクションに移動します。各ディレクトリの説明が書かれています。

shared・・・シミュレータバージョンとマイコンバージョンに共通のコードが入っています。開発スピードを上げるためにテスト用にMacOS上でシミュレータを動かすこともできるもので,マイコンバージョンは実際のColdcard用です。ここにはこれらのバージョンに共通で使用するコードが入っています。主にPythonで書かれています。詳細については後述。

unix・・・シミュレータバージョン固有のコードが入っています。unixとありますが,MacOS上で動きます。

stm32・・・マイコンバージョン固有のコードが入っています。ビルドするとバイナリが生成され,Coldcardに書き込むことができます。

testing・・・ユニットテストのためのコードが入っています。

external・・・さまざまな外部モジュールが入っています。git cloneしてくると,ここだけで5.3GBの容量を消費しますので注意!

stm32/bootloader・・・出荷時に書き込まれるハードウェア固有のコードです。

hardware・・・回路図や部品リストです。前回【2022/02/02】紹介しました。

unix/work/MicroSD・・・シミュレータでSDカードを再現する部分です。

シミュレータでCOLDCARDを動かしてみる

シミュレータがついているので早速動かしてみました。基本的にはREADME.mdの手順にそって作業を進めるとMacOS用にビルドされてシミュレータが動きますが,手元の環境ではビルドに失敗してしまいました。

一つ目はffiというライブラリがうまく読み込めていないようでした。どうやらrubyに関係するもののようです。自分自身rubyは使ったことがないのですが,下記のコマンドでこのエラーは回避できました。

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to ビットコイン研究所.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.