Tutorial
はじめに
mijinとは、「ブロックチェーン」を誰もが気軽にプライベートP2Pネットワークとして利用できるよう開発された汎用プラットフォームです。
このチュートリアルでは、サーバ上に mijin がインストールされ、mijinのP2Pネットワークが構築されている環境を持っていることを前提に進めます。
mijinの概念
まずは、以下の図をご覧ください。

点線がブロック、あるいはトランザクションです。4台のサーバにmijin がインストールされ、node1-4 として Port:7895 を使い通信し合い、ブロック、トランザクションを同期していることを示しています。
mijin のブロックチェーンには、他のブロックチェーンにあるようなノードごとの権限、例えば「1: クライアント、2: 非検証ピア、4: 検証ピア、8: 監査人」といった役割はありません。各ノードがブロックやトランザクションを共有し、各ノード自身が検証を行い、そして共有し自身のブロックチェーンにつなぎます。
逆に言えば、以下のような使い方でノードごとに役割を持たせることも可能です。
以下の図をご覧ください。一般ユーザーからのトランザクションは node:4 で受け入れ、企業からのトランザクションは node:2 で受け入れています。

例えば、上記のような役割分担をもとに以下のようなアプリケーションを構成することも可能です。

mijinとのやりとり
mijinとのデータのやりとりはAPIを経由して行います。通信メソッドは POST/GET です。
通常のウェブサイトと同様、mijin がインストールされた host へ、HTMLフォームから POST/GET を行います。
POST/GET について
POST/GET はそれぞれ以下で使用します。
- POST ... トランザクション送信
- GET ... 各種情報取得
GETメソッドは、アドレスや公開鍵などをパラメータとして、通常のウェブサイトと同様に以下のように行います。
しかし、POSTメソッドは通常のウェブサイトと異なります。
通常のウェブサイトの場合、フォームから入力されたデータをそのまま POST メソッドで host に送信しますが、mijin では、各パラメータからシリアライズ化された data を作成、トランザクション作成者の秘密鍵から作られた電子署名と合わせて、以下の json 形式で POST を行います。
POSTメソッドで以下の処理が行なえますが、ノードへPOSTする際はいずれも上記 JSON 形式に変換した上でPOSTメソッドを使用する必要があります。
POSTメソッドで行えるトランザクション
- 送金(モザイク含む)
- マルチシグアカウント作成
- マルチシグトランザクション作成
- マルチシグトランザクションへの署名
- ネームスペースの作成
- モザイク作成
図にすると以下のようになります。

では、電子署名のJSONデータはどこで作成すればよいでしょうか?
mijin では各種パラメータからJSONデータを作成するAPI(/transaction/prepare-announce)が用意されています。ただし、各種パラメータを付与してノードへ向けてこのAPIをコールすると、秘密鍵情報が通信上に流れてしまいます。

使用する場合は、mijinがインストールされているサーバのローカル環境などで使用し、それ以外の場合は、クライアント側でJavaScriptを使用し JSONデータを作成、作成されたJSONデータをノードへ向けてPOSTするようにします。そうすることで、秘密鍵を通信上に流すことなくトランザクションをノードに送ることができます。

チュートリアルについて
今回のチュートリアルでは、jQuery ベースで作成された簡易的なアプリを使用します。
このアプリは以下の仕様になります。
- 入力フォームに入力された内容を電子署名付きJSON形式に変換
- ノードへトランザクションを送信
- 結果をレスポンス欄に出力
アプリのほかサイトへの利用方法については、最後に記載します。
それではさっそくチュートリアルを開始します。