LoginSignup
3
6

More than 5 years have passed since last update.

RippleでBIP44 HDWALLETを作成する

Last updated at Posted at 2017-06-29

RippleでBIP44 HDWALLETを作成する

ledger wallet nano sでbip44ウォレットを使っていたのでニーモニックからアドレスを復元する互換ライブラリを開発してみた

この方法で作成されたリップルアドレスにはシークレットキーが存在しないのでシークレットキーを利用したサービスが利用できないので注意する必要がある

用意

npm で以下のモジュールをインストール

  • bip39
  • ripple-bip32

bip39は乱数の初期化ベクトル作るだけの仕組みでビットコイン全く関係ないからビットコインのモジュールそのまま使える

BIP仕様

コイン種別

サンプルコード

var bip39 = require('bip39');
var bip32 = require('ripple-bip32')

var mnemonic = 'armed bundle pudding lazy strategy impulse where identify submit weekend physical antenna flight social acoustic absurd whip snack decide blur unfold fiction pumpkin athlete';
var password = '';
var masterseed = bip39.mnemonicToSeed(mnemonic, password);
var hdnode = bip32.fromSeedBuffer(masterseed);

var getKeyPair = function(hdnode){
    return {
        "address" : hdnode.getAddress(),
        "private" : hdnode.keyPair.getKeyPairs().privateKey,
        "public" : hdnode.keyPair.getKeyPairs().publicKey,
    }
}

// cointype=144=xrp
// m / purpose' / coin_type' / account' / change / address_index
console.log(getKeyPair(hdnode.derivePath("m/44'/144'/0'/0/0")))
console.log(getKeyPair(hdnode.derivePath("m/44'/144'/0'/0/1")))

利用場面

ledger-nano-s-fold-large.png

残高確認やトランザクションの送信

  • ripple-libでrippledにつないでwebsocket経由でおこなう
  • トランザクションの署名はbip32で作ったアドレスはripple-libのsecretkeyと互換性がないので別途ripple-sign-keypairsをインストールして署名する必要がある

関連ページ

なぜbip32で生成するとrippleのsecretkeyと互換性がないか

BIP32
mnemonic + password -> seed -> xprv -> privatekey -> wif
                                   +-> xpub -> publickey -> address
ripple(AccountFamily)
secretkey -> privategenerator -> privatekey
                             +-> publicgenerator -> publickey -> address

上記図からsecretkeyと呼んでいるものはbitcoinにおけるseedとなっていてアドレスに対応した秘密鍵ではないことがわかる

3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6