2022年8月31日 3 min read

DIYハードウェアウォレット勉強会報告

DIYハードウェアウォレット勉強会報告

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

先日8月24日(水)に東京・GINZA SIXで「DIYハードウェウォレット勉強会」を実施しました。実際に参加者の皆様にはハードウェアウォレットを製作いただき,動作させるところまで行っていただきました。本記事では勉強会の概要と,当日お伝えしきれなかったことを記事にしました。

Bowser Walletについて

勉強会ではBowser Walletというオープンソースのハードウェアウォレットのファームウェアを利用しました。

先日の記事【2022/06/08】草の根ハードウェアウォレット続編でも簡単に紹介していますが,Bowser WalletはドイツのSpector Solutions社Stepan Snigirev氏によって開発とメンテナンスがされているものです。

Snigirev氏はmicro-bitcoinというマイコン向けのビットコイン用ライブラリも開発をしていてBowser Walletにも使われています。

ハードウェアはM5Stackというホビー用途で使用されている既製品のマイコン開発プラットフォームを使っています。M5Stackは簡単に入手でき,液晶やボタンなどのマイコン以外の周辺部品がすべてAll-in-oneになっており,すぐに開発が進められます。PCさえあればすぐに動かすことができるため,学習用には最適です。

勉強会当日はM5Stackを参加者の方に一個ずつ配布をして,開発環境を構築して実際にファームウェアをコンパイルして書き込むところまでハンズオン形式で実施しました。

実は今回使用したファームウェアはオジリナルのBowser Walletそのものではなく,弊社でアレンジしたものです。

理由は2つあり,1つ目はBowser WalletはM5Stackの中でもM5Stack Basicという初期バージョンのものを前提に開発されているためです。現在はM5Stack Core2というアップグレードされたものが販売されており,入手性もM5Stack Core2のほうが良くなっています。

もう1つの理由は現在は,実験用ウォレットということでUI/UXがわかりにくい点があったためです。ボタンを押した際の動作がわかりにくく改善しました。

弊社でアレンジしたバージョンのBowser Walletは,GitHubリポジトリに公開をしていますのでご興味のある方は御覧ください。(※もちろん,実験用のウォレットですので,ビットコイン研究所や株式会社AndGoは動作保証はしません。ご自身の責任でお試しください。)

Bowser Walletを作るための環境構築

M5StackはPythonをベースにしたMicropythonや教育用のグラフィカルベースのプログラミング言語のUIFlowなどの開発環境が用意されていますが,オリジナルのBowser WalletがC++で開発されていることもあり,Arduino IDEを使用しました。

Arduino IDEといえばArduino Uno用の開発環境というイメージが強いですが,M5StackのようなArduinoシリーズ以外のさまざまなマイコン開発プラットフォーム用のプログラムを開発することができます。搭載されている機能は最低限ですが,シンプルな分,入門向きといえます。

勉強会では,参加者の方にはあらかじめArduino IDEをインストールしていただきました。当日にこれにM5Stack用のライブラリやSnigirev氏が開発したmicro-bitcoinなどのライブラリをインストールしました。

(実は他にも環境依存でインストールが必要なものがあり,さらに用意していたネットワーク環境が貧弱だったこともあり,ハンズオンが想定以上に長時間になってしまいました・・・。)

最後にソースコードを弊社リポジトリからダウンロードしてコンパイルしてM5Stack Core2に書き込むとハードウェアウォレットとして動作します。

Arduino IDE

Bowser Walletを使ってみる

画像にあるようにBowser Walletは非常にシンプルで,秘密鍵の生成や復元用の24単語の表示,ビットコインアドレスの表示,トランザクションへの署名といった基本的な機能が備わっています。

トランザクション・署名・拡張公開鍵など,外部とのデータのやり取りはマイクロSDカードを経由します。ColdcardやDigital BitBoxを使っていらっしゃる方はイメージが湧くと思います。

トランザクションの作成にはElectrumを用います。実際にはColdcard用の機能のようです。SDカードにはBase64でエンコードされたトランザクションが書き込まれるというシンプルな仕様ですので,PCのクライアントを開発してみるのも面白いかもしれません。

Bowser Walletにはオリジナルのバージョンから遊び心があり,下記のような無駄機能があり,思わずニヤリとしてしまうこと間違いなしです。実際に使ってみてお確かめください。

  • 万が一本体が盗まれてもハードウェウォレットだと気付かれないように,テトリスが起動する。
  • 起動時のPIN兼パスフレーズはモールス符号で入力する。
  • トランザクションに署名する直前のメッセージのテンションがやけに高い。
Bowser Wallet メインメニュー
ビットコインアドレス表示

勉強会を終えて

勉強会を終えて,手元でハードウェアウォレットを作成して実際に使用してみることで,実際にビットコインがどのように動いているのかがよく理解できたという声を多くいただきました。

このような実験的なオープンソースのプロジェクトは必要最低限の機能しかありませんが,そのぶん動作が非常にわかりやすくできています。メインのコードもプログラミングの経験がある方でしたら一日で理解できてしまうぐらいの分量です。

ビットコインの技術は従来の通貨や金融の技術と異なり,アルゴリズムに裏打ちされていますので,ソースコードやドキュメントを読むことで仕組みや,その特徴や弱点までを把握することができます。

また,今回オリジナルのBowser Walletをフォークしてみましたが,ビットコインを学ぶためのハードウェアウォレットがもっとあっても良いのでは!?と思いました。

超長期的な視点で考えると,現在ビットコインの価格が上昇していのはビットコインや関連技術がもたらす新しい価値交換の仕組みの将来性に気づき,ビットコインそのものや技術やビジネスに対して投資をする人々がいるからです。

ビットコインの価値を安定的に高めていくためのには,多くの人々にビットコインの技術の強力さを理解してもらうことが一つの方法としてとれるはずで,今回ご紹介した勉強会やハードウェアウォレットが理解の助けになれば,と思っています。

AndGoハードウェア担当
株式会社AndGo 技術顧問 / 博士(工学)/ ハードウェアウォレット開発 / 趣味はDIY・機械いじり・ジョギング・スノーボード・ブレッドボード。
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.