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)などの仮想通貨を買うならZaifがおすすめです。

特に国内でETHを購入するなら、アルトコインでも板取引に対応しているZaif(ザイフ)が割安なのでよいですよ。

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

コメントを残す

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

CAPTCHA


Ethereum(イーサリアム)
Ethereumの開発用ツールリストが公開されていた!

ALISのCTO石井さんがつぶやいてたんですが とてもありがたい #Ethereum 開発ツールの一 …

技術メモ
Counterpartyの環境構築が大変という話

暗号通貨の独自通貨を作ろうとするとEthereumが有名で簡単ですが、BitcoinでもCounte …

Ethereum(イーサリアム)
Error: The contract code couldn’t be stored, please check your gas amount.

ALISのICOソースのzeppelinバージョンを1.2から1.8にあげようとしたときにはまったエ …