Nunchukを使ってスマホでマルチシグウォレットを作る
クリプトシーンではFTXの件で「Not your keys Not your coins」を改めて痛感しているわけですが、ハードウェアウォレットや秘密鍵のオフライン管理をしていても単一の秘密鍵である以上リスク面に不安が残るのではないでしょうか?(シードフレーズを保管している書類を盗まれたり、HWWを紛失してPINもバレたとか、超偶然にも総当たりで秘密鍵を発掘されたりなど)
そういう事態に備えるという意味では複数の秘密鍵が必要となるマルチシグウォレットを使うのがベストなのかもしれません。
とはいえマルチシグウォレットと言われると作るのが難しかったり、そもそもそんなにHWW持ってないよという人も多いと思います。
今回はラプターさんに教えてもらった「Nunchuk」というツールを使って簡単にマルチシグウォレットを作ってみよう!という記事です。
Nunchukとはなんぞや?
今回使うNunchukはウォレット管理ツールと言えばいいでしょうか?
Nunchuk内で秘密鍵を生成するソフトウェアキー(非推奨)や、主要なHWWを接続して秘密鍵からウォレットを作成したり、それら秘密鍵を利用したマルチシグウォレットの作成が簡単にできるのがメリットです。
またオプションとしてNunchukのアカウントを作成することで他の人との共同マルチシグウォレットを作成することも可能です。
対応デバイスはWindows/Mac/Linux/iOS/Androidとスマホで使えるのもありがたいですね。
さらに上記のアカウント機能を使えばデバイス間でウォレット情報の同期が出来るので、PCとスマホそれぞれで生成したソフトウェアキー(秘密鍵)から作ったマルチシグウォレット(PCとスマホ両方でTXに対して署名する)なんかも簡単に作れるのでマルチシグウォレットがどんなものか触ってみたい人にはおすすめです。
※Nunchuk自体には秘密鍵は保存されません、ただソフトウェアキーは作成した端末に残りますので、Nunchukでのソフトウェアキー生成に疑問が残る点や、オンラインで使用する端末に秘密鍵を保管しておくのはリスキーということから、基本的にはHWWを使用することをお勧めします。
またNunchuk自体はまだbeta版ですので多額の資金を補完するのはお勧めできません。
とりあえずスマホアプリで試してみた
今回はスマホアプリで検証するので、https://twitter.com/nunchuk_io
からNunchukのホームページに飛び、スマホアプリのリンクからインストールします。せっかくなのでAndroidとiPhoneにそれぞれインストール。
まずはiPhoneでアプリを開いて「Get Started」をタップするとすぐにウォレットの管理画面に移行します。
今のところ日本語表示は無いので頑張りましょう、開いた直後はアカウント登録などもしていないので一応ゲストモードという事になります。(ゲストモードでウォレットを作成したりしても次回起動時にも引き継がれるのでご安心を)
この状態でも鍵やウォレットを管理することも可能ですが、今回は右下のアカウントからNunchukのアカウントを作成し、ログインした状態で再度Walletsに戻ります。
・秘密鍵の登録
ウォレットを作成するには元となる秘密鍵が必要なので「Keys」の横にある+アイコンをタップし秘密鍵を登録します。(秘密鍵の中身ではなく、この秘密鍵を使いますよという情報を登録するイメージ)
スマホアプリだと現状有線接続式のHWWが使えないのでエアギャップに対応しているHWWか、TapSignerというNFCカード式のHWWなどを利用する必要があります。
今回は検証なのでスマホアプリ側で生成した秘密鍵を使います、「Add software key」をタップすると、新しく秘密鍵を生成するか既に生成した秘密鍵を復元するかを選べます。
今回は「Create new seed」から新規に秘密鍵を生成、次の画面で復元用のシードフレーズが表示されるので保存します。
その次の画面でシードフレーズの確認が必要になるので先程保管したシードフレーズから正しい選択肢を選びます。
シードフレーズの検証が終わると生成した秘密鍵に名前を登録します、ソフトウェアキーであることやデバイス名など付けておくとあとあと便利です(日本語だと文字化けするので英語推奨)
これでスマホで生成した秘密鍵が登録されました、管理画面に戻ると先ほど作った秘密鍵がリストに追加されているのでこの秘密鍵を使ってウォレットを作成することが出来ます。
ただ今回はマルチシグウォレットを作るので少なくともあと一つ同じ手順で秘密鍵を登録します。
デバイス間同期も試したいので今度はAndroidでアプリを開き、iPhoneで登録したNunchukアカウントでログインします(メールのOTP認証でログインできました)
デバイス間同期をするためにはアカウントでのログインに加えてアカウント設定項目から「Multi-device sync」を有効にする必要があります。
iPhone側、Android側共にログインした状態で同期を有効にしてアプリを開き直すとAndroid側から先ほどiPhoneで登録した秘密鍵がリストにあることが確認できるはずです。
この状態でAndroid側でも同様に秘密鍵を生成し登録すると、管理画面には二つの秘密鍵が登録されます。
ここでようやくウォレットの作成に移ります「Add a wallet」から「Create a Wallet」を選択
ウォレットに名前を付けて、オプションに関しては適宜設定してください。
今回はデフォルト通りで「Continue」をタップ
次の画面ではこのウォレットを生成するのに使用する秘密鍵を選択します。
秘密鍵のリストが表示されるのでマルチシグウォレットを作るのであれば二つ以上選択しましょう。
「Required keys」は署名に必要な鍵な数なので2of2のマルチシグウォレットなら「2」、3of5のマルチシグウォレットであれば鍵を5つ選択した上でRequired Keysは「3」にしましょう。
3of5のマルチシグウォレットであれば5の秘密鍵のうちどれか3つの秘密鍵で照明をすれば送金ができるという感じです。
秘密鍵の下に書かれている「software/foreign/wired」は鍵の種類で、今回はiPhoneでマルチシグウォレットを生成しているためiPhoneで作成したソフトウェアキー秘密鍵はsoftware、Androidで生成したソフトウェア秘密鍵はForeignとなっています。
wiredはデスクトップPCで登録した新品未開封で500円だった怪しいHWWの秘密鍵がデバイス間同期で表示されています(当然こちらをマルチシグウォレットの一部として使用できる)
設定が完了したらCreate a walletを押してマルチシグウォレットの完成です!
その後マルチシグウォレットの仕様を示すバックアップファイル(BSMSファイル)を保存するように薦められるのでこちらも保管しておきましょう。
このバックアップファイルはこのマルチシグウォレットが何本の鍵で構成されているのか等の情報が保管されており、秘密鍵が入っているわけではないそうです。
BSMSファイルからマルチシグウォレットの情報を復元して、それらの署名にはシードフレーズから復元した秘密鍵が必要になるといった感じです。
後は作成したマルチシグウォレットにBTCをテスト送金し、マルチシグウォレットから送り返してみます。
送金手順は普通のウォレットと同様で、QRコードを読み込み送金額や手数料設定をしてTXを作ります。
こちらに関しては以下の動画でどうぞ、鍵やウォレットに日本語名を付けたので文字化けしていますがiPhoneにてウォレット操作→QR読み込み→iPhoneの秘密鍵がで署名→AndroidでNunchukを開き処理中のTXを選択してAndroidの秘密鍵で署名
二つの署名が揃ったのでTXをブロードキャストしたらタイミングよくブロックが生成されたので送金が完了したという形です。
今回はスマホで試しましたがPC用でもHWWの秘密鍵をリストに追加できたのでそのうちHWWでのマルチシグも試してみたいと思います。
あとcoldcard Mk4も購入したのでNFCを利用した登録も試してみたいと思います。
なんとなく難しそうと思っていたマルチシグウォレットですが、Nunchukを使えば結構簡単に使うことが出来たのでお試しとして触ってみてはいかがでしょうか?
Tapsignerレビューにも期待です!