post Image
nanowalletに学ぶ、JavaScriptだけで暗号通貨のNEMアカウントを生成する方法

nanowallet とはNEM用に開発されたウォレットで、すべてJavaScriptで記述されています。ローカルでブラウザを開くだけで起動し、ノードへの接続は必要ですが同期など時間のかかる処理は必要ありません。このJavaScriptで記述されたウォレットが暗号通貨の勉強には最適ですので、今回はこのnanowalletを参考にしてアカウントを生成する方法を学んでみたいと思います。

nanowalletの公式ダウンロードはこちら

GET THE NANO WALLET をクリックしてzipを解凍。start.htmlをダブルクリックで起動します。(インストール不要、ブラウザ必須)。慣れてきたら起動する前にzipファイルをアポスティーユ公証にかけて改ざんされていないかを確認するクセをつてもいいでしょう。github にソースコードがありますが、まだ私の方で動作確認できていません。
なお、mijin.io にも動作環境が提供されていますが、改ざんされていない保証はありません。

解凍したソースコードのうち、NEM開発者お手製のjsソースが main.js になります。AngularJSを利用しているようですね。開発には便利なのですが、解析するには多少骨が折れました。後は外部ライブラリとしてvendorsフォルダに格納されています。

さて、本題です。nanowalletでアカウントを作成するには2つ方法を使用しているようです。

  • 全くランダムに生成する
  • ログイン中のアカウントをマスターキーとして新たなアカウントを生成する

今回は1つ目の全くランダムに生成する方法を説明します。
依存するライブラリは以下のとおり。

library
    <script src="vendors/cryptoJS/core-min.js"></script>
    <script src="vendors/cryptoJS/x64-core-min.js"></script>
    <script src="vendors/cryptoJS/ripemd160-min.js"></script>
    <script src="vendors/cryptoJS/sha3-min.js"></script>

暗号鍵を作成します。これはjsには便利なcrypto.getRandomValuesというコマンドがついています。

var rawBytes = new Uint8Array(32);
var hexPriv = ua2hex(crypto.getRandomValues(rawBytes));

32個の配列を作成し、16進数で表記します。これだけです。
次に公開鍵を作成します。

var account = new KeyPair(hexPriv);
var strPub = account.publicKey.toString();

このKeyPairが暗号通貨によってそれぞれ処理が変わってくるかと思います。
Ed25519と呼ばれる暗号化アルゴリズムを使用します。このあたりも参考になるかもしれません。
【NEM/XEM】秘密鍵から公開鍵を作成する(Ed25519)

最後に、公開鍵をアドレス化します。

var address = toAddress(account.publicKey.toString(), 104);

104というのはネットワークIDでNEM のMainnet がそれにあたります。
これでアカウントに必要な、秘密鍵、公開鍵、アドレスが出来上がりました。

まあ、なーんてうすっぺらい説明なんでしょうw
ただのWeb技術屋なので勘弁してください。
でも、秘密鍵がただの乱数という発見がありましたね。これは注目すべきことです。
PHPセッション、ApacheセッションなどWeb技術には様々な乱数で生成された文字列が活躍します。
暗号通貨技術を利用すれば、これらのセッションIDにアドレスという名のお財布機能が付与できるということです。
サイトに訪問したユーザにチップをあげる、または逆に通行料を徴収する。
チップの代わりに属性情報を持ったトークンをやりとりする。まさに広告ビジネスに使えそうですね。
大量のアクセスをさばく場合は注意が必要です。ただし、NEMの場合はmijinがありますね!あれ、何かつながりました?

では最後に動くものをアップしておきます。
demo

QRコードもここに張っておきますね
実際にはXEMという通貨を入れないと、アカウントは使い物になりません。
まずは感謝の気持ちをXEMに込めて、ぜひ周りのみなさんでアカウントと少額のXEMをプレゼントしあってみてください。
image

次はマスターキーから、アカウントを生成する方法を説明したいと思います。
それでは!


以下のNEMアドレスは、全てNEM上でエンジニアが活動できるための資金に使用します。
これから私が書く記事に共感していただけましたら、ご寄附いただけると助かります。
NEM ADDRESS: NBZNQL-2JDWTG-UAW237-PXV4SS-XSPORY-43GUSW-GSB7


『 Bitcoin 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。