BIP39のフレーズからシードを作成しBIP44 のアドレスを作成する 〜 pythonで求めてみる

技術メモ

いまさらだが
ビットコインウォレットのパスフレーズの互換性の話(簡単なHDウォレットの仕組み)
のページがBIP39 〜 BIP32 、BIP44 をわかりやすく説明している。

ここを一読していると理解が捗る。
(授業に入る前にこのページ見ておけばよかったわ)

BIP39

まずは python-mnemonic をインストールしておく。

git clone https://github.com/trezor/python-mnemonic.git
cd python-mnemonic
python setup.py install

BIP39のフレーズから

>>> Mnemonic.to_seed(words).encode("hex")
'490f2057cf3c4304c7300f97814530819458a579a48b1d1b74cf7fc2d264e35d919ef2c5db68b865efdbdf577122d13afba100ad4b640daea273e6fc6e0cc558'
>>> m.generate()
'route where agree magnet vocal lonely shoulder real hammer text young depth'
>>> words = m.generate()
>>> words
'effort pattern people adjust cement duck envelope notable flower scatter apple century'

BIP39のシード作成

>>> Mnemonic.to_seed(words).encode("hex")
'097e174a2feb1dfb9f71492ad4ceada2fcf8907f85c5671b0ab39acd5bb65242be2a5159e71a315f1bdb7e59fc7807c67a3f1c66b5bc0444fc6f3fc9a9c98812'

次にBIP44を見ていく、、、前にBIP32から

https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki

- マスターキーからほとんど無限に近い数のアドレス/秘密鍵のペアを階層的に作成することが可能
- 階層構造の中のアドレス/秘密鍵の位置を示すフォーマット(path)も規定されている
- 一般にBIP32の標準形式はm/a'/c/iで表されます。a(account)がアカウント番号、c(change)がお釣り用(0=受け取り用、1=お釣り用)、iが通常使うアドレス/秘密鍵でiの数字を増やしてアドレスを新規作成する

BIP44(HD)

https://github.com/bitcoin/bips/blob/master/bip-0044.mediawiki

BIP32はpycoinで確認できたのだが、、、BIP44直接求めてるところはないっぽい。

いや、BIP44はBIP32の一部だから、以下を応用したら求めれるのか?
https://github.com/richardkiss/pycoin/blob/6b9fb1c280343164d469d1c50b327a06ea6e89de/tests/bip32_test.py#L20

Mnemonic Code Converter で正解がでているし、比較して実装してみるか。
ただ、残った課題先にやらねば。

Sponsored Link

ビットコイン(Bitcoin)、イーサリアム(Ethereum)、リップル(Ripple)、ネム(NEM)などの仮想通貨を買うならコインチェックがおすすめです。

※アプリは指値売買ができず手数料が高いので、アプリをダウンロードするのではなくメール&パスワード登録へ!まずは5万円ほど入金して仮想通貨とブロックチェーンの世界を楽しんでください!

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

コメントはまだありません

コメントを残す

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

CAPTCHA


miningpoolhub
miningpoolhubのAPIを使って自動スイッチングを試してみる in ethOS

* アイキャッチの男性は、Flicker上のライセンスフリーの画像ひっぱってきているだけで、本文とま …

NEM
[memo] NEMを送金しようとするとFAILURE_TIMESTAMP_TOO_FAR_IN_FUTUREが出る

Docker上のコンテナで、NEM-libraryを使ってmosaicの送金を試していたところ FA …

NEM
NEMのテストネットワークで独自通貨を試す

NEMアプリケーションを作る際にテストネットワークでのテスト非常に重要になってきます。 このため今回 …