Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

NEMを使ったサービスを作っててハマったところ

はじめまして、ゆーたろ@yutaro_elkと申します。エンジニア職に転職活動中です。主にフロントエンドをやってます。

ブロックチェーンの一種であるNEMで簡単なサービス(StreetNEMS)を作ったさいハマったところなど記録しておきたいと思います。

signerとsignatureを間違える

凡ミスです。

NEMのトランザクションはjsonデータで取得できます。
取引のトランザクションであるTransferトランザクションはこのようなjsonが返ってきます。

TransferTransaction.json
{
  "meta":{
    "innerHash":{},
    "id":834509,
    "hash":{
     "data":"aaaaaaaaaaaaaaaaaaaaaaaaa"
    },
    "height":1146325
  },
  "transaction":{
    "timeStamp":69421490,
    "amount":1000000,
    //署名者の公開鍵
    "signature":"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
    "fee":2000000,
    //受信者のアドレス
    "recipient":"NXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "type":257,
    "deadline":69507890,
    "message":{
       "payload":"dddddddddddddddddddddddddddddd",
       "type":1
   },
   "version":1744830465,
 //送信者の公開鍵
 "signer":"cccccccccccccccccccccccccccccccccccccccccc"
  }
 } 

その中から送信者の公開鍵を取得しようとしてsignersignatureを間違えてました…。signerが送信者の公開鍵で、signatureはトランザクション署名のことです。見た目が似てたので間違えました…

ホスティングでのSSL対応

これが一番ハマりました。

最初はGithub Pagesを使ってホスティングをしようとしましたが、ERR_SSL_PROTOCOL_ERRORが出てしまいました。

これはNEMのAPIを叩く際、APIサーバーであるノードがSSL対応ではないうえでGithub Pagesが自動でSSL対応になっているためでした。

最終的な対応としてはホスティングは自動SSL対応ではないAWS S3でホスティングし、叩くノードもhttpのものを使っています。

ノードをSSL対応にしたけど…

それまでに試したのはまずノードをSSL対応のものに差し替えました。xembookさんが優良ノードのリストを公開してくださっているのでそれを使ったり、あとはnemlogさんのソースを拝見したり。しかしノード側の問題なのかちゃんと反応が返ってきませんでした…

これはいまいち原因があいまいなのでまた後日ちゃんと調べたいです。

ホスティング先を変更した

次にノード側を変更せずいけるホスティングを探しました。Github Pagesを最初に選んだ理由が「簡単で安い」だったので、同じようなサービスであるFirebase、Netlifyを試してみました。しかし、どちらもやはりSSL対応が自動でされてしまいます。普段ならとても便利な機能なんでしょうが残念です。

最終的にAWS S3ならSSLじゃなくてもいけるということでそちらにしました。


こうしてみると、NEM自体でハマったことはあんまり無かったですね…(そのかわりSSLの部分はかなり長時間ハマっていて、根本的な解決にはまだ至っていないんですが…)

SSL対応については今後の課題として、解決したらまた記事にしたいと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What are the problem?