イーサリアムに続いて、今度は2017年10月現在で時価総額第7位の暗号通貨NEM(ネム)について、作る側の視点から使ってみたいと思います。

 

イーサリアムについてはこちらをどうぞ。

過去記事:イーサリアムでスマートコントラクト・プログラミング。

 

NEMとはなにか

NEMとは時価総額第7位の暗号通貨で、その価格は約2,000億円相当。

暗号通貨御三家とよばれるビットコイン(11兆円)、イーサリアム(3兆円)、リップル(9,000億円)と比較するとまだまだ小さな存在なのです。

しかし、数ある暗号通貨の中で、どうも気になる存在なんですよねー。

 

それは……なんていうかですね、感覚です。

採用しているコンセンサス・アルゴリズムPoIの仕組みであるとか、目指す経済圏の思想が独特なんですよね。

さわってみれば何かわかってくるかもしれません。

 

NEMの概要は、nem東京の解説がとてもわかりやすいので、ざっくり仕組みを知りたい人はこちらも一度みてみてください。

 

NanoWalletをインストール

NEMの特徴として、APIが充実しているというのをよく耳にします。

しかし、そんなことを言われてもよくわからないというのも事実。

まずは黙ってNEMの標準アプリケーション、NanoWalletをインストールしましょう。

NanoWalletはNEMのブロックチェーンにアクセスして、ウォレットの管理や送金などの基本機能を備えたデスクトップアプリケーションです。

ダウンロードはNEM財団本家のサイトから。

以下のリンクから対応するOSのものをインストールします。

 

インストールが完了したら、早速起動してみましょう!

以下のような画面が出ます。

 

まずはアカウント作成ですねー。

右上の「アカウントの作成」からさくさくっとアカウント作っちゃってください。

 

 

とりあえず最初は「シンプルウォレット」で。

ネットワークはそのままで、ウォレット名とパスワードを入力して作成完了です。

 

これであなたもNEMberです!

 

ウォレットつくったら次は

NanoWalletでアカウントができたら、残高を確認したりNEMの通貨であるXEMを送ったりできるようになります。

でも、これにはなんの驚きもありません。

数あるビットコインのウォレットクライアントだって、これくらいは普通にできます。

 

じゃあ何が違うんでしょうか。

ブラウザを起動して、URLの欄に以下の文字列を打ち込んでみましょう。

http://185.117.22.111:7890/account/get?address=NAEK2RVKQM5F7XU7TP4ZVO6K5WMMWNHKBC2FH46C

 

すると、以下のような文字列が表示されます。ちょっとわかりやすいように改行しますね。

{
“meta”:{
“cosignatories”:[],
“cosignatoryOf”:[],
“status”:”LOCKED”,
“remoteStatus”:”INACTIVE”,
},
“account”{
“address”:”NDZPXQPR5DKGW5JDZUKO3SPZQPYTDOM54P3PWZBO”,
“harvestedBlocks”:0,
“balance”:0,
“importance”:0.0,
“vestedBalance”:0,
“publicKey”:null,
“label”:null,
“multisigInfo”:{}
}
}

 

エンジニアの方はすぐわかるかと思いますが、JSON形式のAPIレスポンスデータです。

わたしが先ほど作成したウォレットのアカウント情報が返って来ています。

それぞれの項目に意味がありまして、例えばbalanceは残高で、まだゼロです。

 

では、最初にURLにいれた文字列はどんな意味があったのでしょうか。

  • 185.117.22.111:とあるノードのIPアドレス。生きていれば何でもいいのです。NanoWalletでノードは検索できます。
  • :7890:ポート番号。NEMのAPIはすべてこのポート7890を使います。
  • /account/get:APIメソッド名。この場合アカウント情報を取得するAPIです。
  • ?address=XXX:リクエストパラメータ。APIによって異なります。

 

以上のAPI仕様が公式ドキュメントで定義されています。

 

で、これがNEMの特徴なわけですが、ユーザがブロックチェーンに登録した情報を、クライアントがブロックチェーンから直接取ってこれるわけです。

NEMのブロックチェーンが提供するAPIですから、仕様が全部同じで一度作り方を覚えてしまえば、いろんなアプリケーションを作ることができるのです。

 

ビットコインの場合は、クライアント向けAPIは基本的に取引所が用意していて、クライアントが直接ブロックチェーンにアクセスすることはできません。

そして、微妙に取引所ごとにAPI仕様が異なるのです。

こうなるとクライアントを作る側は大変です。

取引所は為替リスクやハッカー攻撃のリスクに晒されているわけで、いつ消えて無くなるかわかりませんので、そのような事態に直面した場合には、その度にクライアントを作り直さなければなりません。

 

まとめ

全ての人にブロックチェーンの力を。

というのはNEMと同じコアを使うmijinの発表時に、テックビューロ社が言っていた言葉ですが、まさにこれがNEMの思想なんですね。

ブロックチェーンに参加しているマイナーや取引所だけではなくて、その外側でサービスをこれから作ろうとするすべての人に、ブロックチェーンを活用してもらいたいという願いが込められているように感じます。

 

余談:スマートコントラクトはどこいった

NEMは後発なので、スマートコントラクトの実装も検討しているという話をどこかで耳にしたような気がしていました。

しかし現状あまり進んでいないように見えますねー。

というよりは、NEM財団の重要なお知らせに以下のような声明文がありますので、思想として進めていないのかもしれません。

 

NEMの理想は、ある事実を中心に展開されています。その事実とは、「全てのスマートコントラクトはブロックチェーン上に置かれるべきではない」という事実であり、その理由はもう明らかになっています。

NEMは、ブロックチェーン技術の優れている点(不変性・不可逆性・分散的・非集中的・高セキュリティ性・安価な台帳ソリューション)を高めることの可能性を信じています。この目的のため、NEMは、パブリックブロックチェーンとプライベートブロックチェーン、双方の利点を提供する強力なブロックチェーンソリューションであり、強力なひと組のAPIによって相互補完されています。

スマート・コントラクトとは反対に、「スマート・インテグレーション」を実現しており、それによって、企業が各々のビジネス・ルールや契約を分けてコントロールできるようになっています。ふさわしい取引は、インテグレーション(統合)によて作られたルールにとって行われ、それと同時に、混和性台帳の環境において複数の台帳を共存させることができるのです。

 

「組織がブロックチェーンの力を得るために、スマートコントラクトを習得する」というのがイーサリアムの思想なのであれば、「既存の仕組みの中に、ブロックチェーンを溶け込ませる」というのがNEMの思想なのですね。

かつて幾度となく繰り広げられてきた、「アップルとマイクロソフトのOS戦争」「マイクロソフトとグーグルのブラウザ戦争」「グーグルとアップルのモバイル戦争」の構図に似てきている感じがしますね。