草の根ハードウェアウォレット続編
こんにちは。AndGoのハードウェア担当の片山です。
前回はオープンソースのハードウェアウォレットとしてSpecter/Arduino Hardware Wallet/SeedSigner/BitBoy を紹介しました。今回は続編を紹介していきたいと思います。(前回SeedSignerの名称を誤ってKoopaと紹介してしましましたので,訂正させていただきます。)
BOWSER WALLET
https://github.com/arcbtc/bowser-bitcoin-hardware-wallet/
「貴方だけのためのハードウェアウォレットを作ることは,ライトセーバーを作ることに似ていて,ジェダイになりたい場合には本当に必要なものです。」という冒頭でドキュメントが始まっています。
ハードウェアはM5Stackです。ホビー用途にも使われるマイコンで,これまでの記事でも紹介させていただきました。ボタンと画面が付属しているので単体で動作させることができます。開発はArduino IDEでできるのでM5Stackさえ購入すればすぐに試してみることができます。ユニークな点として,アルファベットを入力するためにモールス符号を使っています。ツー・トン・トンってやつですね。というのも,M5Stackにはボタンが3つついているのですが,そのうち2つを使ってモールス符号を入力します。親切なことにGitHubリポジトリには対応表も書かれています。世の中にあるハードウェアウォレットはどれもボタンの数が限られており,PINやニモニックを入力するのは面倒ですので,画期的(?)な方法です。
なお,ビットコイン周りの処理にはMicro-Bitcoinという32bitマイコン用のライブラリを使って作られています。今後,解析してみたいと思います。
ちなみにBowserはスーパーマリオにでてくるボスのクッパの英語名です。
KOOPA
https://github.com/arcbtc/koopa
Koopaはスーパーマリオにでてくるノコノコの英語名です。Bowser Walletと何か関係があるあると思ったら開発者が同じ人ですね。こちらは$15で作れるハードウェアウォレットです。ハードウェアウォレットといっても秘密鍵を保管する機能やトランザクションに署名する機能はなく,ハードコードしたmaster pubkeyをベースにアドレスを生成する受け取り専用のウォレットです。万が一,紛失してしまっても危険性はゼロというものです。アドレスを紙に印刷してもほとんど同じでは,というツッコミをしたくなりますが,コードもたった133行というシンプル設計です。
ESP32は32ビットマイコンにWi-FiとBluetoothを内蔵したモジュールで,タッチセンサやデジタル・アナログ関連の周辺機能も充実しているほか,乱数ジェネレータやハードウェアによるハッシュ計算もでき,IoT向けといえます。Arduino IDEにも対応しているので,Wi-Fiを利用したデバイスが簡単に作れます。こちらもMicro-Bitcoinを使っています。
HARDWARE-BITCOIN-WALLET
https://github.com/someone42/hardware-bitcoin-wallet
2012年に開発が始まっているおそらく最古のハードウェアウォレットプロジェクト。AVRという8bitマイコンやLPC11Uというマイコンに対応しています。AVRマイコンはArudinoUnoにも使われているコンパクトなマイコンです。プラットフォームに依存しないロジックに関連するコードが分けて書かれているので,移植がしやすくなっています。2012年といえばまだビットコインの価格が一桁ドルの時代で,情報も少なかったと思います。プロジェクト名もhardware-bitcoin-walletというそのままな感じや,ライブラリに頼らずにコードを書いているというストイックな感じが好きですね。
次の記事
読者になる
一緒に新しい世界を探求していきましょう。
ディスカッション