LoginSignup
2
0

More than 1 year has passed since last update.

bitcoinjsでニーモニックコードの語数を変えて生成する

Last updated at Posted at 2021-12-04

はじめに

目新しさはないですが、ブロックチェーンプログラミング初心者向けにニーモニックコード(mnemonic code)のプログラミング入門など

bitcoinjs

bitcoinjs-libはbitcoinjsの中のひとつのリポジトリでして、bitcoinjsの中に、bip39リポジトリがあります。

READMEで大体わかりますが、ランダムなニーモニックを生成してみましょう。

getMnemonic.js
const bip39 = require('bip39');

function getMnemonic() {
    const mnemonic = bip39.generateMnemonic();
    return mnemonic;
}

const mnemonic = getMnemonic();

console.log(mnemonic);

↑こう書いて↓実行すると

node getMnemonic.js
outside picnic course town old below jewel upgrade cricket elephant mesh smart

12語で出力されます。ニーモニックを晒すのは危険です。この記事に書いてあるニーモニックは絶対に使わないでくださいね。

24語で出力したいときは、

getMnemonic.js
const mnemonic = bip39.generateMnemonic(256);

と書いてあげましょう。

↓24語になりました。

biology welcome illegal crunch warm know oval physical meat cigar color air game impulse proud enroll worry brand nose spirit cart exclude ozone already

どうなっているかというと、bip39のソースを見てあげましょう。

index.js
function generateMnemonic(strength, rng, wordlist) {
    strength = strength || 128;
    if (strength % 32 !== 0) {
        throw new TypeError(INVALID_ENTROPY);
    }
    rng = rng || randomBytes;
    return entropyToMnemonic(rng(strength / 8), wordlist);
}

generateMnemonicの引数の数値はエントロピーの強度なのですが、ルートシードのビット数になります。

128以上、32の倍数である必要があり、最小値の128ビットだと、ニーモニックは12語、
256ビットだとニーモニックは24語です。

なお、あまり使われないけど18語のニーモニックコードは192ビットを与えてあげます。

getMnemonic.js
const mnemonic = bip39.generateMnemonic(192);
raw check shallow drastic decrease lake turtle sheriff garage impact glove tail true that huge ask stay join

なお、使えるビット数は128, 192, 256ビットの3つで、512ビットなどは使えません。

理由についてはどこかで深掘りしていきたいと思います。

今回はこの辺で。

2
0
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
2
0