Hierarchical Deterministic Wallets

暗号資産の取引をする際に必要な財布を作成するとき、ニーモニックコードというものを使います。
12文字からなる単語の並びで、これをもとにウォレットを表すアドレスを生成します。
下記BitlifeCoinの記事を書いているとき、ウォレットのアドレスが同じニーモニックコードから生成しているにもかかわらずアドレスが一致しなかったことから、Hierarchical Deterministic Pathというものがあることを知りました。
(一つのキーから階層的にアドレスを決定するしくみ)
http://bitlife.me/bc/2022/08/18/

m/44’/60’/0’/0/{account_index}
このような文字列で表せれ、最後のaccount_indexによって複数のアドレスを生成できます。

こちらのサイトにとても詳しく書かれています。
https://techblog.recochoku.jp/8227

このサイトにあるコードで実際にBitlifeCoinの環境のニーモニックから生成されるアドレスが正しいか試してみました。(ニーモニックはカレントディレクトにある.secretファイルに記載)

環境) WSL / Windows 11
インストール

pip install hdwallet

PATHは、コードではaccount_indexは1となっています。これを0から順に変えてgoerliの環境の複数のアドレスが正しいか確認したところ一致しました。

あとニーモニックを作成するわかりやすいコードが下記にありましたので、それを動かしてみました。
https://qiita.com/yamaguchi3/items/2c216eee5593ee0f66db

https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt
ここから取得するenglish.txtには、2048の英単語が書かれており、この中からニーモニックにつかわれる単語が選ばれるようです。
最初にウォレットを作ったとき、たった12文字の並び替えだけで衝突しないアドレスが生成できるのか、と思いましたが2048の候補から選んだうえ並び変えているのですね。
ブロックチェーン界隈では、このようないろいろなしくみが考えられていてとても興味深いです。

About

Categories: 未分類 タグ: ,