次世代NEM（Catapult）で簡単にブロックチェーン送金を体験してみる

次世代NEMのコアエンジンでもあるCatapultのリリースビルド版が公開されました。
NEM財団よりテスト環境も提供され、いよいよ誰でもNEM開発に挑戦できる環境が整いました。

さっそく、提供された環境だけでブロックチェーンを操作してみましょう。
環境構築は必要ありません。必要なのはインターネットにつながるWebブラウザだけです。

- 体験の流れ
  - アカウント作成
  - 蛇口サイトから必要額を入金
  - トランザクション送信
  - 結果確認


# アカウント作成

まずはNEM財団が提供しているテストネット検証用サイトにアクセスします。
http://nfwallet.z31.web.core.windows.net/login

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/0d46163a-b416-a0c5-eee6-a55f15bd4972.png)
リロードボタンをクリックして秘密鍵をシャッフルした後、JP(13.114.200.132) ノードを選択してログインします。
**初期表示されている秘密鍵は共用で利用しているので使用しないでください**
**現在 「my」ノード設定に不具合があるようです。JPノードかCNノードを選択してください**

ログインすると様々なトランザクションをテストできる画面が表示されます。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/c98b1c6b-703a-01db-dfb8-1596ed649838.png)
右上の人型アイコンをクリックし、自分のアドレスを確認。クリップボードにコピーします。

# 蛇口サイトから必要額を入金


次にアドレスにお金を入れます。FAUCET（蛇口）サイトにアクセスします。
http://nf-catapult-testnet.herokuapp.com/

![図3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/458bbf44-bea9-3087-2cc8-428009e9b871.png)

さきほどクリップボードにコピーしたアドレスと必要額を入力し、CLAIMをクリックして入金を要求しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/2380ce83-a8e7-5746-abdc-ee57265d480e.png)

しばらくすると入金が完了するので、さきほどの検証用サイトの右上フォークのようなアイコンを選択し、ACCOUNTをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/78748a36-50ea-2add-90a0-03171cd91f24.png)

ノードに直接残高照会をしました。モザイクID:308F144790CD7BC4が 10000000単位で入金されています。`308F144790CD7BC4` がテストネット環境でのXEMになっているようです。10000000は小数点部分を消してマイクロ単位でデータをやり取りします。コンピュータが苦手な少数を避けるためです。

# トランザクション送信

それでは送金してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/45367ea0-ffda-4421-12d7-34b0bf8e91f5.png)

送信先アドレス、送金額、メッセージを入力して、最後にANNOUNCEをクリックします。
送金は `@nem.xem::` で送信先アドレスに紐づけられたネームスペースを指定することができます。　`::` の後ろに送金額を指定してください。先ほどのFAUCETは10XEM送りたい場合は10と入力しましたが、この検証画面ではマイクロ単位で指定します。つまり今回の説明では5マイクロXEMを送金します。MaxFeeはこれ以上は払いたくないという手数料額を指定しておきます。必要額を下回る場合は遅延ではなくエラーとなります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/c4d4b12a-e97c-2df8-f8dc-c351321a1be4.png)


# 結果確認

トランザクションが投げられると上図のようにリンクつきトランザクションIDが表示されます。アクセスすると、ノードの処理状態がわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/f9913b58-75b4-c9d6-492f-82b75743b0da.png)
statusが`Success`とあります。トランザクションがネットワークに届いたことを意味します。groupが`unconfirmed`となっているため、まだ未承認状態です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/1790258f-0006-8393-d101-c5c84a16cce5.png)
しばらく待ってリロードをかけると、groupが`confirmed`になりました。これでトランザクションがネットワークに承認されました。

もう一度REST一覧を開き、TRANSACTIONを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29187/dfabf824-1ca3-bd1f-cc6c-3197c5e38d66.png)

ノードより以下のトランザクションが承認されたことが確認できました。

```json

"meta":{
	"height":"37330",
	"hash":"4DFAFC629AAB16A567774EC0007FB0B7F9959BAF29E0F3D9B4078B29A3BBC9C5",
	"merkleComponentHash":"4DFAFC629AAB16A567774EC0007FB0B7F9959BAF29E0F3D9B4078B29A3BBC9C5",
	"index":0,
	"id":"5DA592113BE8864A4D18B6DC"
},
"transaction":{
	"signature":"C6AB04CD19E94FB00F644458BD180606B4B18F6F21F65E9F15A330CB6FA669EDF6E186DD35C9115D757B4E66211719C39C619470CE747971AE714FCBC23B1608",
	"signerPublicKey":"EAB1DEEC81480F99575CD9A8739D3F6BEC2C8669FD3959B2F62DA450C87F4C91",
	"version":36865,
	"type":16724,
	"maxFee":"100000",
	"deadline":"111670312073",
	"recipientAddress":"90758EB47C28D6143BAA3DE6A8D9C319B503A1BFD8E789E9E2",
	"message":{
		"type":0,
		"payload":"48656C6C6F204E656D3221"
	},"mosaics":[
		{"id":"D525AD41D95FCF29","amount":"5"}
	]
}

```

# まとめ

たったこれだけの操作でブロックチェーンによる送金を体験することができました。
一つの秘密鍵に結びつけられた、世界中のだれでも見ることができるデータを他の誰にも改ざんされずに自分だけが操作できたことを意味します。近い将来、この仕組みが世界中のあらゆるシステムに組み込まれることでしょう。

NEMのコアエンジンとなるCatapultはこのデータ操作を群として一括で扱ったり、操作の権限を複数人に分割させたりといったことが簡単に行える仕組みになっています。これからさまざまな例を交えて説明していこうと思うのでぜひご期待ください。