
「HDウォレット」という言葉を聞いたことがある人は多くないかもしれません。
聞いたことがある人でも、「昔のウォレットよりも便利なウォレットらしい」程度の説明しかできない人が多いのではないでしょうか。
HDウォレットというのは、「Hierarchy Deterministic Wallet」の略称で日本語では「階層的決定性ウォレット」と訳されます。
目次
1. HDウォレットとは
HDウォレットというのはウォレットの中にある鍵をどのように作るかによって分類した場合の呼び方の1つです。
1-1. 仮想通貨のウォレットの役割
仮想通貨のウォレットが管理しているのは、仮想通貨そのものではなく秘密鍵と呼ばれる鍵です。
仮想通貨自体はその仮想通貨のブロックチェーンに記録されており、自分の秘密鍵でなければ自分の資産にアクセスできません。
ウォレットは、秘密鍵の生成と保管や秘密鍵を使ったブロックチェーンへのアクセスをするためのものなのです。
ウォレットが保管する鍵には、秘密鍵と公開鍵があります。
秘密鍵は、その名の通り誰にも知られてはいけない鍵で、銀行口座のパスワードに相当します。
公開鍵は秘密鍵から作られる対となる鍵で、口座番号にあたるものです。
ウォレットは両方を管理しますが、資産を守るためには秘密鍵の扱いが重要です。
秘密鍵は複数作成して管理すると安全
すべての資産を1つの秘密鍵で管理するのは、公園の真ん中に置かれた金庫に全財産を入れているようなものです。もし金庫の鍵を誰かに奪われたら、すべての資産が奪われることになるでしょう。
複数の秘密鍵を使って資産を分散しておけば、たとえ秘密鍵が漏洩しても全財産を失うリスクは軽減されます。
1-2. 秘密鍵の生成方法がわかるとHDウォレットがわかる
ウォレットには、鍵の作り方によって「HDウォレット」「決定性ウォレット」「ランダムウォレット」の3種類があります。
HDウォレット(階層的決定性ウォレット)
利便性が高く多くのウォレットで採用されているのが、HDウォレットです。
日本語では「階層的決定性ウォレット」と呼ばれますので難しく感じるかもしれませんが、簡単に言うと秘密鍵から新たな秘密鍵を作ることができるウォレットです。
最初の秘密鍵は、シードと呼ばれるランダムな文字列から作ります。その後は作った秘密鍵をシードとして新たな秘密鍵を階層的に作ることができます。
一定のルールで階層構造を作りますので、ウォレットを失っても最初のシードがあればすべての秘密鍵を復旧できます。
その仕組みから、HDウォレットはシードを保管しておくだけですべての秘密鍵のバックアップが行えます。
シードの代わりとなるシードフレーズ
シードは覚えにくい文字列ですので、シードから「シードフレーズ」や「リカバリーフレーズ」などと呼ばれる12個から24個の単語に変換して記録しておく方法が使われています。
例えば、モバイルアプリのウォレットGincoでは、次のように「バックアップキー」と称する単語が表示されます。
これらの単語はシードそのものなので、安全な場所で厳重に管理しなければいけません。多くのウォレットでは、ペンとメモを使ってオフラインで確実に記録しておくことを推奨しています。
決定性ウォレット
決定性ウォレットはHDウォレットと同じく、シードを使って秘密鍵を作成できるウォレットです。
シードを覚えておくことで復旧できる点も同じですが、秘密鍵から次のシードを作ることができず1つの世代しか秘密鍵を作ることができません。
そのため、生成できる秘密鍵の数に制限があります。
ランダムウォレット(非決定性ウォレット)
サトシナカモトの論文で解説されている基本的なウォレットがランダムウォレットです。
ウォレット内でシードとなる乱数を発生させて秘密鍵を生成するのは、これまで紹介したウォレットと違いありません。ただし、秘密鍵を作るたびに新たなシードが必要になりますので、秘密鍵同士には何の関係もないのが特徴です。
秘密鍵同士に関連性がありませんので、復元するためにはすべてのシードを覚えておく必要があります。そのことから管理コストの高いウォレットと言えるでしょう。
2. HDウォレットのしくみ
HDウォレットは秘密鍵をほぼ無限に作ることができ、簡単に管理できるしくみです。
2-1. シードから秘密鍵を作るしくみ
シードの生成
まずは、すべての元となるシードを生成します。
ウォレットはランダムな文字列ですが、前述のようにユーザーには12個もしくは24個の単語が提示されます。
シードから親秘密鍵を作る
シードから親秘密鍵を作ります。親秘密鍵はすべての秘密鍵の根になるものです。
子秘密鍵を作る
シードから最初に作られるのが親秘密鍵ですが、このとき同時に親チェーンコードと呼ばれる文字列も作られています。
親チェーンコードと親秘密鍵を組み合わせたものを新たなシードにすることで、子秘密鍵と子チェーンコードを作ることができるのです。
孫秘密鍵を作る
子秘密鍵を作ったのと同じ方法で、孫秘密鍵も作ることもできます。
子秘密鍵は親秘密鍵と違って複数作ることができますので、子秘密鍵から孫秘密鍵を作るときのシードには、何番目に作られた子秘密鍵から作るのかを示すインデックスという値も追加したものが使われます。
これ以降も、同様のルールに則って秘密鍵とチェーンコードから新たなシードを作り、いくらでも秘密鍵を作ることができます。
2-2. シードがあればすべての秘密鍵を復元できる
シードから秘密鍵を作る過程で秘密鍵は必ず同じものが作られます。つまり同じシードからは必ず同じ階層構造が作られるということです。
この性質のおかげで、HDウォレットは最初のシードを記録しておくだけで完全なバックアップを取ることができます。
3. HDウォレットを採用しているサービス
現在多くのウォレットサービスがHDウォレットのしくみで設計されています。その中でもよく使われている人気のウォレットを紹介しましょう。
MetaMask
イーサリアムやERC20トークンを扱うウォレットで、ブラウザの拡張機能としてインストールして使います。
ネットワーク上のサービスを利用するときに自動的に立ち上がって認証できるなど利便性が高く、イーサリアムゲームなどでは特に多くのユーザーが利用しています。
単体で利用する分にはHDウォレットですが、他のウォレットの秘密鍵をインポートすることで決定性ウォレットとしても使えます。詳しくは次の記事で詳しく説明していますので、ご覧ください。
なお、MetaMaskインストール直後にシードフレーズ(パスフレーズ)を記録しておくように警告されます。必ず記録して厳重に管理しておきましょう。
Ginco
ビットコインやイーサリアムなどを管理することができるスマホアプリです。
日本企業が作ったアプリのため、説明や問い合わせを全て日本語で行うことができます。また、シンプルで使いやすいユーザーインターフェイスが好評です。
インストール後は事前にシードフレーズ(バックアップキー)を記録して安全なところに保管しておいてください。
Ledger Nano S
高価なものが多いハードウェアウォレットの中でも、価格と機能のバランスに優れたウォレットとして人気があります。
数多くの仮想通貨に対応していることもあって利用している人が多く、日本語の情報もたくさんありますので、初めてのハードウェアウォレットとして最適かもしれません。
初期設定時にシードフレーズ(24個の単語)を記録するように促されますので、安全なところに記録しておいてください。
まとめ
HDウォレットは、現在利用されている数多くのウォレットで活用されている秘密鍵の管理方法です。
-
- 仮想通貨のウォレットはコインではなく鍵を管理している
- HDウォレットは1つのシードから階層的にいくつもの秘密鍵を生成できる
- シードがあればすべての秘密鍵を復元できる
- シードを奪われたら、すべての資産を失う
この方法を使えば、仮想通貨を目的別にしたり、安全性を確保したりするために、いくつも秘密鍵を生成してもシードを保管するだけで管理できます。
しかしその反面、シードを奪われることですべての秘密鍵を奪われます。管理は今まで以上に慎重にしていきましょう。