TOP
51.40score

tadajam

【NEM/XEM】AndroidアプリでNEMのアドレスを生成する

今回は、自作のAndroidアプリで、秘密鍵からアドレスを生成するまでの手順をまとめます。
参考にしたのは以下NEMのMobile Walletのソースです。

NemProject/NEMAndroidApp

NEMAndroidApp - NEM Android Wallet Application
GitHub


 
1.NEMAndroidAppから以下2つのパッケージを拾ってくる。
org.nem.nacのほうは使わずにcoreだけでやってみます。
 
org.nem.core.crypto
org.nem.core.utils
 
2.依存ライブラリを整える。
以下2つのライブラリをbuild.gradleのdependenciesに追加します。
 
com.madgag.spongycastle:prov:1.51.0.0
commons-codec:commons-codec:1.10
 
3.秘密鍵と公開鍵を生成する
org.nem.core.crypto.KeyPairを利用します。
引数無しのコンストラクタを使用すると、秘密鍵が新しく生成されます。
すでに秘密鍵がある場合は、org.nem.core.crypto.PrivateKeyが引数となるコンストラクタを使用します。
PrivateKeyのコンストラクタは、引数がjava.math.BigIntegerですが、PrivateKey.fromHexString()を利用すれば、文字列からも生成できます。
 
生成した秘密鍵と公開鍵を確認するには、KeyPairのgetPrivateKey()とgetPublicKey()を利用します。
toString()で変換すると、NCCで表示される文字列と同じになります。
 
4.アドレスを作成する
このロジックは、Android Walletではorg.nem.nac.models.primitives.AddressValueにあり、大元のorg.nem.coreではorg.nem.core.model.Addressにあります。
今回はAddressValueを改造して、コンストラクタと、fromPublicKey()、toString()、generateEncoded()、generateChecksum()の4つのメソッドだけ実装しました。fromPublicKeyの引数NacPublicKeyはPublicKeyに書き換え、NetworkVersionはMAIN_NETWORKの(byte)0x68をハードコードしました。
AddressValue.fromPublicKey()にKeyPair.getPublicKey()を渡してtoString()で変換すると、見慣れたNEMのアドレスになります。
 
#ビットコイン #暗号通貨 #ブロックチェーン #NEM

.

最終更新日:2016-08-28 13:37

コメント (0)