TOP
55.46score

tadajam

【NEM/XEM】AndroidアプリでNEMを使う手順

今回は、自作のAndroidアプリでNEMを利用するシナリオについて考えます。
参考にしたのは以下Mobile Walletのソースです。

NemProject/NEMAndroidApp

NEMAndroidApp - NEM Android Wallet Application
GitHub


 
1.初回起動時に秘密鍵と公開鍵を生成する
秘密鍵、公開鍵、アドレスのセットはAPIのgenerateを使っても取得出来ますが、秘密鍵はやはり秘密にしておきたいものなのでローカルで生成します。(前回参照)
 
2.秘密鍵を暗号化して保存する
アプリ起動時に毎回秘密鍵を直接入力するのは逆にリスクなので、ユーザの決めたパスワードなどで暗号化して端末に保管します。
 
3.署名を利用して本人確認
ゲームのアイテムなどをMosaic化するような場合、一つのアドレスを誰もが使いまわせるようでは意味がありませんので、そのアドレスが本当にそのユーザのものか確かめる必要があります。
アドレスの所有権を確認するということは、そのアドレスの秘密鍵を所持しているかを確認するということになると思います。
当然、秘密鍵を直接送る訳にはいきませんので、都度サーバ側から送られてくる文字列に署名して、公開鍵と一緒に送り返すなどで検証します。
 
署名をするにはorg.nem.core.crypto.ed25519.Ed25519DsaSignerを利用します。
コンストラクタに作成したKeyPairを渡し、sign()メソッドに署名したい文字列のbyte配列を渡すと、org.nem.core.crypto.Signatureが返ってきます。
返ってきたSignatureのgetBytes()でbyte配列を取得し、org.nem.core.utils.HexEncoder.getString()で文字列に変換します。

これを公開鍵と一緒に送り返します。
 
4.署名を検証する
送り返されてきた公開鍵と署名を、サーバ側で検証します。

署名の検証には、先ほども利用したEd25519DsaSignerを利用します。
ただ、サーバ側ではユーザの秘密鍵は保持していないので、Ed25519DsaSignerを生成する際にPrivateKeyがnullのKeyPairを渡します。
Ed25519DsaSignerの準備が出来たら、verify()メソッドに元データと署名を渡すことで検証します。
trueなら、本人確認完了です。
 
5.ブロックチェーンのデータを利用する
あとはサーバ側でAPIを使うなりしてMosaic残高を取得し、所持アイテムやステータスなどを変化させます。
 
ということで、結構簡単にNEMを導入することが出来ました。
何かそれっぽいゲームなど、作ってみたくなってきましたね。
 
#ビットコイン #暗号通貨 #ブロックチェーン #NEM

.

最終更新日:2016-08-28 15:33

コメント (0)