Mastering Bicoin 「キー、アドレス、ウォレット」その2

ウォレットの技術的な説明が複雑だったので、延長戦。

 

昨日の記事で、決定性ウォレットを紹介したが、その発展形として、階層的決定性ウォレットがある。

## 階層的決定性ウォレット

ウォレットの親キーが子キー群を作り、さらにその子キー群が孫キー群を作り。。という形で作られていく。

利点は二つ:(1)ツリー構造は組織的な意味を反映させることが出来る。(2)秘密鍵に触れることなく公開鍵を生成できる。

 

### 階層的決定性ウォレットの仕組み

最初の階層では、Root seedをハッシュ関数で処理して秘密鍵とChain codeを生成する。

2階層目以降では、親の秘密鍵、チェインコード、インデックスを組み合わせてハッシュ関数で処理して、子の秘密鍵と子のChain codeを生成する。

公開鍵は普通に秘密鍵から生成することも可能だが、親の公開鍵とChain codeから生成することもできる。これが先述の利点(2)の理由となる。

 

##高度なキーとアドレス

暗号化秘密鍵は、秘密鍵が6Pで始まるものについては、暗号化されていると解釈してパスフレーズを要求する。

その他、Vanity addressやペーパーウォレットについては省略

 

##所感

* Bitcoinの実装は意外と定数決め打ちのところがあり、よく言えば柔軟、悪く言えば行き当たりばったりなところがある印象を受けた

* 最初の実装の問題点を後発の仮想通貨がどうやって解決していくかを見ていきたい