仮想通貨のウォレットの仕組み




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

ウォレットに仮想通貨は入っていない

仮想通貨を管理する上で欠かせないものとしてウォレットがあります。

ウォレットは仮想通貨を入れておくものではなく、仮想通貨を持っていることを証明できる秘密鍵というものを管理しています。

この秘密鍵というのは公開鍵暗号方式という暗号化技術の重要な要素となります。

ビットコインなどの仮想通貨を支える技術要素として公開鍵暗号方式が使われています。これはホームページのSSL/TLS(HTTPS)化でも使用されており広く一般的に使われている技術です。

公開鍵暗号方式については下記を参照してください。

公開鍵暗号方式 – 公開鍵と秘密鍵の仕組み

なぜウォレットで秘密鍵を管理するのか

ではこの秘密鍵と公開鍵が実際何に使われているかというと、秘密鍵は仮想通貨を支払うためのトランザクションに署名するのに使われ、公開鍵は仮想通貨を受け取るために使われます。

秘密鍵と公開鍵の間には数学的な関係があり、秘密鍵を公開することなく公開鍵に対する正当性を検証できるようになっています。

ウォレットで秘密鍵を管理している理由は、秘密鍵から公開鍵を復元でき、公開鍵からアドレスを復元できるためです。

ウォレットの種類

管理する秘密鍵の生成のされ方によって非決定性(ランダム)ウォレットと決定性ウォレットの2種類があります。

非決定性ウォレット

非決定性ウォレットはランダムに生成された秘密鍵を管理するものです。ビットコインの初期ではこのウォレットが多く使われていました。

非決定性ウォレットは初回起動時に複数個の秘密鍵を作成しますが、プライバシーの観点から個々の秘密鍵は原則的に一度しか使われません。足りなくなると都度ランダムに鍵を生成します。

このようなランダムに秘密鍵を生成するウォレットの欠点は、全ての秘密鍵のコピーを保持し、都度バックアップを取らなければいけません。

現在ではこのウォレットは主流ではないため使う必要はないです。ランダムに生成される秘密鍵のコピーを保持して常にバックアップしないといけないのは手間とセキュリティーの面でも不便です。

決定性ウォレット

決定性ウォレットは1つの共通のシードから一方向ハッシュ関数を用いて生成された秘密鍵が入ったウォレットです。シードはランダムに生成される数値で、インデックス番号という他のデータと組み合わせて複数の秘密鍵を生成します。

決定性ウォレットは最初にランダムに生成されるシードさえあれば全ての秘密鍵を復元することができます。したがって、シードが生成された時点で一度だけバックアップを取っておけば十分です。

決定性ウォレットには階層的決定性ウォレットというものがあり、秘密鍵がツリー構造をしていて、親鍵が子鍵を生成し、子鍵が孫鍵を生成するといったウォレットもあります。

ツリー構造であるメリットとして枝分かれしたブランチを用途ごとに使い分けができる点秘密鍵にアクセスすることなく公開鍵を生成することができる点です。

おすすめ書籍

ビットコインとブロックチェーンの詳細な解説からなる理論をしっかりと学びたい方には下記書籍が非常におすすめです。ブロックチェーンの基礎からPythonによるサンプルコードまで非常に濃い内容となっています。

こちらはブロックチェーンの初学者向けになります。ブロックチェーンの応用例の紹介から基礎的な理論まで分かりやすく図解で解説されています。また、ビットコインやEthereum、HyperLdger Fabricを実際に稼働させてみて動作を理解するためのサンプルコードの解説もあります。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です