NEM Catapultで使えるQRコードとニーモニックを生成する


NEM catapultで利用できるQRコードとニーモニックの作成方法です。

QRコードの出力にはsymbol-qr-libraryを、ニーモニックの出力には symbol-hd-walletsを利用します。
今回はブラウザ上で表示させるために、私が公開しているbrowserify版を利用します。

ライブラリの定義と表示エリアの準備
<script src="https://xembook.github.io/nem2-browserify/symbol-sdk-pack-1.0.0.js"></script>

<body>
<h3>QR Code</h3>
<div ><img id="item1"></div>
<h3>ニーモニック</h3>
<div id="item2"></div>
</body>

今回新たに、2021年3月段階で最新版の symbol-sdkを利用します。
QRコードをitem1 に 日本語対応のニーモニックを item2に出力します。

jsスクリプト
$(function() {

const hd = require("/node_modules/symbol-hd-wallets");
const qr = require("/node_modules/symbol-qr-library");
const nem = require("/node_modules/symbol-sdk");

const mnemonic = hd.MnemonicPassPhrase.createRandom('japanese');
const exportMnemonic = new qr.MnemonicQR(mnemonic, "password", nem.NetworkType.MIJIN_TEST, 'no-chain-id');

const base64 = exportMnemonic.toBase64()
.subscribe(x=>{
    $('#item1').attr('src',x);
    $('#item2').text(mnemonic.plain);
});

})

MnemonicPassPhrase.createRandomでニーモニックを作成します。引数に"japanese"を指定するとひらがなで作成されます。対応しているのは以下の言語

chinese_simplified
chinese_traditional
english
french
italian
japanese
korean
spanish

jpapaneseはUTF8-MACで出力されるのでWindowsのテキストエディタにコピーなどでの運用を検討されている方は文字化けにご注意ください(濁点が文字化けます)。ちなみにこのライブラリはbitcoinjsのbip39のワードリストを使用しているので、他のブロックチェーンでも同じ現象が発生しているはずです。

MnemonicQR で作成したニーモニックに対応するQRコードを生成します。その後 toBase64() をサブスクライブすると画像データがdata:image/png;base64 形式で出力されるのでjQueryなどでそのままブラウザに表示させることができます。

実行結果

無事出力されました。少し大きいQRコードですね。

”ぜんら”とかあります。だれがリストしたんでしょうね。他にも調べてみると「でぬかえ」とか意味不明な語もあります。ここらは金田一先生など集めて早急に理想的なワードリストを作ってほしいものです。

他にもsymbol-qr-libraryでは、トランザクションのリクエストを要求するQRコードを作成することも可能です。
いろいろと試してみてください。