こんにちは。AndGoのハードウェア担当の片山です。毎週水曜日はAndGoのエンジニアが交代で技術に関するマニアックな記事を皆様にお送りしています。技術を理解することがセキュリティを高めるための早道です。コメント欄でご意見やご質問を受け付けていますので遠慮なく投稿ください。
これまでハードウェア担当として様々なハードウェアウォレットの分解をしてきました。そろそろ,皆様も破壊することに飽きてしまったと思います。今回はいよいよお待ちかねの企画として,ハードウェアウォレットを作ってみたいと思います!
・・・とはいっても,電子回路から作るのは非常に時間がかかりますので,ハードウェアはM5Stackという出来合いのマイコンモジュールを使用してファームウェア(マイコンに書き込むソフトウェア)を書き込む方式をとっていきます。
お手軽に電子工作(IoT開発といったほうがカッコいい?)をするためにはArduinoやRaspberry Piなどが有名です。これらは開発する上での情報は多いものの,実際に使用するためにはディスプレイやキーボードなどの周辺機器を別途準備して接続しなければならず若干不便です。また,Raspberry Piではフルノードを動かせるほどの性能があるのでスペックオーバーです。
本記事ではM5Stackという中国深センのスタートアップが開発したマイコンモジュールを使います。M5StackシリーズはArduino IDEやUIFlowというブロックプログラミングで比較的簡単にファームウェアが作成できてしまうので,教育用途やアマチュアのホビー用途で使われることが多いです。しかし様々なインターフェイスやセンサが搭載されているので,プロトタイピングには非常に便利です。
M5StackシリーズはESP32というマイコンを搭載しており,買ってきた状態でWiFiやBluetoothが使えます。今回使用するM5Stack Core2という製品は静電容量式のタッチスクリーン,マイク,スピーカー,振動モーター,SDカードスロット,加速度センサー,ジャイロセンサーが内蔵されているので,手軽に様々なものを作ることができます。
※本記事で制作するハードウェアウォレットは実験用でセキュリティのことは一切考えておりません。また,会員の皆様の環境での動作保証やサポートはいたしかねます。予めご了承ください。
※本記事で使用しているm5stack_hardware_walletはデフォルトでTestnet用になっています。もし正規のBitcoinネットワークで試したい方はご自身の責任でファームウェアの変更をお願いします。
必要なものの入手
まず,M5Stack Core2を通販サイトで入手します。2021年11月現在,世界的な半導体不足が深刻化していますが,手に入れることができそうです。実際にはM5Stack Basicという以前のバージョンのものでも十分だったのですが,1000円程度の追加予算でタッチスクリーンや各種センサーなどのデバイスが使えるようになる誘惑に負けて,Core2を選択しました。
ファームウェアの開発・書き込みには,Arduino IDE(https://www.arduino.cc/en/software)を使用します。Arduinoのための総合開発環境(IDE)ですがM5Stackにも使えます。ダウンロードしM5Stack Core2のためのライブラリ等々をM5Stack公式サイト(https://docs.m5stack.com/en/quick_start/core2/arduino)のドキュメントをみながらインストールしていきます。