はじめに
目新しさはないですが、ブロックチェーンプログラミング初心者向けにニーモニックコード(mnemonic code)のプログラミング入門など
bitcoinjs
bitcoinjs-libはbitcoinjsの中のひとつのリポジトリでして、bitcoinjsの中に、bip39リポジトリがあります。
READMEで大体わかりますが、ランダムなニーモニックを生成してみましょう。
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語で出力したいときは、
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のソースを見てあげましょう。
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ビットを与えてあげます。
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ビットなどは使えません。
理由についてはどこかで深掘りしていきたいと思います。
今回はこの辺で。