TOP
54.20score

tadajam

【NEM/XEM】公開鍵からNEMのアドレスを作成する

今回は、公開鍵からNEMアドレスを作成します。

参考にしたのは、以下のNEM Technical Referenceや、GitHubのlightwalletのソースです。
https://docs.google.com/viewer?url=http%3A%2F%2Fnem.io%2FNEM_techRef.pdf

NemProject/nem-lightwallet

nem-lightwallet - NEM JS lightwallet
GitHub

まず、正解は以下です。
http://85.25.36.97:7890/account/get/from-public-key?publicKey=3f9f8c791f4b55c84278c10c7596f959a43a71dc35888d16e3d26a33456b6df2

ここに画像が表示されない場合はすでに削除されているか直接のリンクを拒否されている可能性があります

1.公開鍵
3f9f8c791f4b55c84278c10c7596f959a43a71dc35888d16e3d26a33456b6df2

2.SHA3(256bit)で公開鍵のハッシュ値を計算
400b2df583636fcf57001b96812c799969e51358c0e192015f48a1251fc10704

3.Ripemd(160bit)で上記2のハッシュ値を計算
9a556a8b28f1640e52e5546569f03d1367f6bf66

4.上記3の前にネットワークbyteを追加(メインネットは0x68)
689a556a8b28f1640e52e5546569f03d1367f6bf66

5.SHA3(256bit)で上記4のハッシュ値を計算
a2b5586dda65af73d93a2edb06783073b502c0039fa017173e6974b642567493

6.上記5の前半4byteをチェックサムとして切り出す
a2b5586d

7.上記4の後ろに6を追加
689a556a8b28f1640e52e5546569f03d1367f6bf66a2b5586d

8.上記7をbase32でエンコードする
NCNFK2ULFDYWIDSS4VKGK2PQHUJWP5V7M2RLKWDN

スーパーノードもローカルノードも使わずに、うまくアドレスまでたどり着くことが出来ました。
ただ、この作業は秘密鍵いらないので、素直にスーパーノード使ってAPI(/account/get)叩けばいいじゃんという説もあります。。

#ビットコイン #暗号通貨 #ブロックチェーン #NEM

.

最終更新日:2016-08-01 22:24

コメント (3)

  • liang

    こっ、これはw・・ちゃんとJSの中身理解しないとXEM送金の実装は難しそうですね。。これからも新しい記事期待しております。回答ありがとうございました。

  • tadajam

    コメントありがとうございます。 今回の実験ではjavascriptで署名し、そのままPOSTしてみました。 署名のロジックについては、やはり秘密鍵は外に出せないと思いますので、ローカルで実装するべきだと思います。 当然、暗号について一から実装なんてとてもじゃないですが出来ないので、以下を使っています。 https://github.com/NemProject/nem-lightwallet/blob/master/lightwallet/nacl-fast.js 流れは以下lightwalletのソースを参考にしました。 https://github.com/NemProject/nem-lightwallet/blob/5b314c163de32f942973c812656df23f9a23b599/lightwallet/services/Transactions.js KeyPairのsignが呼ばれてEd25519で署名している感じだと思います。

  • liang

    tadajamさん こんばんは いつも楽しく拝見しております。 tadajamさんの記事を参考に初回の記事からAPI挑戦してみたのですが、xemの送信でいきづまってしまったので、 質問させてください。 (xemの送信)記事に書かれている、 『2.作成したdataに署名』は署名する為に、何かクライアント側で実装するのでしょうか? 『./transaction/announceでPOSTする』について自分のスーパーノード宛にPOSTしようと思うのですが、POSTする際は tadajamさんはhtmlフォームなど作って飛ばしてますか? (イメージとしてはtomotomoさんが作られている https://twitter.com/tomotomo_9696/status/761343591138459649 な感じです。)

  • コメントを投稿するにはログインしてください