NEM/mijinで備わっている基本機能

**この記事はNEM(mijin) v1の記事です**

# はじめに

某交換所で大量のXEMが盗難されたことで一躍有名となったNEMですが、プロトコルレベルでマルチシグやトークン(モザイク)の発行機能が備わっていて、それらの機能をAPI経由で使えることもあり、気軽に使えるブロックチェーンとして徐々にながらNEMを使ったサービスが出てきたり、ハッカソンなどのイベントも開催されたりと使われる方向で盛り上がってきています。
Qiitaでも [NEM Advent calendar 2017](https://qiita.com/advent-calendar/2017/nem) などNEMに関する投稿がありますが、意外にそもそもNEMって何ができるということに触れた記事がなかったので、NEMとそのプライベートチェーン版であるmijinの基本機能とNEMとmijinの違いを説明してみたいと思います。

※ここで触れている内容は現行のNEM/mijinの内容となります。

# 送金・モザイクの転送

NEM自体がブロックチェーンを使った暗号通貨であるため、NEM上の基軸通貨であるXEMや後述するNEM上で作ったモザイクを特定のアドレスに送ることができます。
XEMやモザイクを送る際に手数料としてXEMが必要となり、これがNEMのネットワークを維持するハーベスト報酬の原資となります。

## メッセージ機能

XEMやモザイクを送る際にメッセージを付与することができます。
メッセージは1024byteまで含めることができます。
メッセージは平文または暗号化して送ることができますが、平文で送った際は**誰でも閲覧することができる**状態なので注意が必要です。
メッセージ機能を活用してファイルの存在証明や消えない掲示板といった応用例も出てきています。

# マルチシグアカウント

XEMやモザイクを送る際に、m人中n人の署名がないと送ることができないアカウントをマルチシグアカウントといいます。
m, nともに1〜32の範囲で設定することができます。
連署人のうちの誰かがXEMやモザイクを転送をリクエストするトランザクションを作成し、一定時間内に署名が集まれば転送を実行されますが、集まらなければ転送は実行されずにキャンセルされます。
送信する際に複数人の署名がないといけないので、その分セキュリティを高めることができます。

<img width="720" alt="スクリーンショット 2018-05-03 0.43.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/9315/1b8d5c42-a9e0-6410-3ce7-f903b097f8a4.png">


# ネームスペース

NEM上のドメインにあたるもので、親.子1.子2と3階層設定することができます。
また後述するモザイクはネームスペースと紐付くため、モザイクを作成する際は必ずネームスペースを取得する必要があります。
親のネームスペースはNEMのアドレスと紐付けることができます。

例) NAXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXX = daoka

親ネームスペースはNEMネットワーク上で一意である必要があり、取得済のものは新たに取得することができません。
親ネームスペースの有効期限は約1年で1年ごとに更新する必要があり、失効すると配下の子ネームスペース、モザイクも無効になってしまいます。
親ネームスペースのレンタル費用は100xem/年、子ネームスペースの取得費用は10xemです。

公式のNanoWallet等ネームスペースに対応したウォレットの場合、`daoka`と入力することで、ネームスペースからアドレスを逆引きしてくれるため、いちいち長いアドレスを覚えたり(無理！)、QRコードを読み取るが必要ないためその分、楽にXEMやモザイクを送ることができます。

# モザイク

モザイクはNEM上で独自に発行できるトークンとなります。電子チケットや投票権、お店のポイントなど様々な用途で使うことができます。
モザイクは以下の項目を設定することができ、用途に応じて設定をすることができます。

* モザイク名
* 説明(512byteまで設定可能)
* 供給量(1〜90億まで)
* 可分性(小数点の有無、小数点6桁まで設定可能)
* 供給量変更可否
* 転送可否
* 徴収するモザイクの設定

モザイクのレンタル作成費用は10xemです。

## 供給量の変更

供給量の変更を可能としている場合は、モザイクの供給量を後から増やしたり減らしたりすることができます。
増やす場合は総供給量が90億を超えないようにする必要があり、減らす場合は発行者が保持している量を超えて減らすことはできません。

## 転送不可モザイク

転送不可のモザイクの場合、発行者から受け取ったモザイクを他の第三者のアドレスに送ることができません。
第三者に送ることはできませんが、発行者に送り返すことは可能です。
転売させたくない電子チケットや通行許可書などの用途に適しています。

<img width="720" alt="スクリーンショット 2018-05-03 0.42.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/9315/f3c3522e-f77e-4f4a-b101-f38777f34243.png">

## 転送可のモザイク

転送可のモザイクは発行者から受け取ったモザイクを他の第三者のアドレスに送ることでき、自由に流通させることができます。
転送可能な電子チケットや商品券、ポイント、トレーディングカードといった用途に適しています。

<img width="720" alt="スクリーンショット 2018-05-03 0.43.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/9315/076f7d6b-9e39-0737-d8d4-13ea45ce402b.png">

## 徴収モザイク

モザイクを送る際に手数料として発行者がXEMなど別のモザイクを受け取ることができます。
下の例では電子チケットを転売する際に、電子チケットの発行者が手数料としてXEMを受け取っています。

<img width="720" alt="スクリーンショット 2018-05-03 0.43.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/9315/a89c5c32-c1ad-4e72-8bd9-48d99427b931.png">

# mijinとは

mijinはテックビューロ社の製品で、NEMのプライベートチェーン版で特定の企業や団体のみが使えるブロックチェーンとなります。
上記で挙げたXEMやモザイクの送信、メッセージ機能、ネームスペース、モザイクといった基本的な機能やAPIはNEMと共通となっているため、NEM用に作ったものをmijin上で動かすことも可能です。

## NEMとmijinの違い

プライベート版ということで、パブリックであるNEMと違い一部のパラメータが調整可能となっています。

### 設定可能な項目

- ブロック生成間隔
- 転送手数料の有無
- ノード毎にアクセス可能なAPIを制限
- etc...

### 性能的な違い

NEMは1ブロックに120Tx格納可能で、ブロック生成間隔が約1分のため平均2tpsですが、現行のmijinでは数百tpsまで捌くことが可能らしいです。
なお、NEM/mijin v2(Catapult)では、プライベートのmijin環境下では約4,000tps捌くことができたようですが、パブリックであるNEMでどのくらい捌くことができるかは**現時点では未知数**です。