mijin

mijin活用ブログ 記事

mijinをはじめとして、ブロックチェーン技術はすでに実装の段階に入っている今日。

毎日ブロックチェーンに関するニュースは絶え間なく、積極的に推進している企業も今年に入り急激に増えています。

 

 

その最中で、

 

「自社でもブロックチェーンを取り入れたい」

 

といった意向があるにもかかわらず、なかなか導入へ踏み切れない実情も一方で耳にします。

 

 

ブロックチェーンを利用する際に、

 

 

自社で用意すべきものは何か?

実際に何を使ってどんな操作・作業をするのか?

 

 

ブロックチェーンプラットフォーム提供サイトなどで資料請求フォームや問い合わせフォーム、概要資料はあっても、具体的でわかりやすく実践的な情報をその場ですぐに得られることは少ないのが現状です。

 

「mijin」では、いますぐご覧になれる製品資料や技術資料などを各種ご用意しております。実ビジネスで即実装するための、完成されたブロックチェーン製品の資料です。

●mijin製品資料(PDF)

●mijin技術資料(zip)

●mijin v.2 (Catapult) ホワイトペーパー(PDF)

など

 

また、「mijin技術資料(zip)」の中には、各種マニュアルや、mijinの使い方を体感しながら学ぶチュートリアルアプリケーション(詳しくは後述にて)を取揃えております。

(下記の画像は、2018/12/18現在のzip内容です)

 

 

読んで、使って、知ることのできる各種資料のダウンロードは、下記リンクボタンにて。

 

 

 

 

mijinのご利用や資料の内容についてなど、詳しくは下記リンクボタンからお問い合わせください。

 

 

 

 

 

以下、「mijin v.1 チュートリアル」についてご案内します。

 

 

 

 

 

【mijin技術資料内「mijin v.1 チュートリアル」でmijinの基本概念と使い方を体感して学ぶ】

 

 

「mijin技術資料(zip)」に含まれている「tutorial_ja/en.html」という名のhtmlファイルが「mijin v.1 チュートリアル」です。

 

 

これは、jQueryベースで作成された簡易的なアプリケーションです。

まずはじめに mijin がインストールされたサーバを用意します。

mijin環境がまだ無いという場合には、「BaaS」のご利用が最速です。BaaSはクラウド上で簡単にmijinブロックチェーンの利用開始ができるサービスで、初回申込のみ30日間ライセンス費無料mijinのインストール作業をすることなく最短5分でmijin v.1の環境が揃いますので、すぐにチュートリアルアプリケーションでmijinを使って学ぶことができます。

(※BaaSについて、詳しくはリンクボタンにて→  )

 

 

 

 

チュートリアルアプリケーションの仕様

1.入力フォームに入力された内容を電子署名付きJSON形式に変換

2.ノードへトランザクションを送信

3.結果をレスポンス欄に出力

 

 

チュートリアル目次

 

●はじめに

●mijinの概念

●mijinとのやり取り

・POST/GET について

・POSTメソッドで行えるトランザクション

●チュートリアルについて

 

ブロックチェーンのアカウントとは?

・アカウントの発行

  アカウントの発行準備

・ブロックチェーンに保持している情報

 

送る、もらう

・送金準備

  送金手順

・ワンクリックで送金

・受取確認

・送金確認

・ノード間の同期確認

 

独自コイン・地域通貨の流通

・通貨を発行するには

  通貨発行手順

・場所を借りる(ネームスペース=独自コイン流通確保のための空間)

・コインを発行する(モザイク機能)

・コインを流通させる

・コインの受取を確認する

 

このチュートリアルアプリケーションを使えば、単にマニュアルのドキュメントを読むだけではなく、実際にmijinを動かし操作しながら基本を学ぶことができるので、非常に実践的です。

トークン(独自コイン)の発行や流通まで含まれていますので、トークンエコノミーの一端も体験することができます。

 

もちろん、実際にmijin上でアプリケーションを操作しながら学ぶのが一番ではありますが、mijin環境が無くとも、ドキュメント資料としてチュートリアルを活用することができます。

 

 

 

 

以下、少々長くなりますが「mijin v.1 チュートリアル」の前半部分を、ブログ内ではありますができるだけ再現し掲載いたします。(※入力後の送信はできません)

フルバージョンのチュートリアルはぜひ資料をダウンロードしてご覧ください。

 

 

 

 

 

 

 

 

mijin v.1 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 ベースで作成された簡易的なアプリを使用します。

このアプリは以下の仕様になります。

 

 

1.入力フォームに入力された内容を電子署名付きJSON形式に変換

2.ノードへトランザクションを送信

3.結果をレスポンス欄に出力

 

 

アプリのほかサイトへの利用方法については、最後に記載します。
それではさっそくチュートリアルを開始します。

 

 

 

 

ブロックチェーンのアカウントとは?


アカウントの発行

 

mijinでデータのやり取りを行うには、アカウントが必要です。1つのアカウントには、以下ユニークな値が発行されます。

 

 

・アドレス

・公開鍵

・秘密鍵

 

 

通常のウェブサイトでは、ユーザーがアカウントには、サイト上に用意されている入力フォームに、名前やメールアドレス、ときには住所や電話番号などを入力してSubmitボタンをクリックすることでアカウントが発行されます。これはユーザーにとりとても面倒でストレスが掛かる作業です。

 

 

mijinの場合、以下URLへアクセスするだけでアカウントが発行されます。

 

http://<ホストのIPアドレス>:7895/account/generate

たったこれだけです。

 

 

ただし、もし誰でもアカウントを発行できると、見知らぬ誰かがアカウントを大量に作成し、場合によっては悪用(といっても所持コインはゼロなので作成しただけでは何もできませんが)しようとすることも考えられます。
またアカウント作成時に、アドレス・公開鍵・秘密鍵情報が通信上に流れることになります。

 

 

そのため、mijinでは秘密鍵が通信上に流れるAPIについては通常NGとし、IPアドレスで制限をかけております。アカウントの発行は、以下手順で行えるようになります。

 

 

アカウントの発行準備

 

1.ノードにSSHでログイン

2.config-user.properties を開く

$ vi config-user.properties

 

3.nis.additionalLocalIps に許可するIPアドレス追加(複数の場合、バルブ区切り)

nis.additionalLocalIps = XX.XX.XX.XX|XX.XX.XX.XX

 

4.mijin を再起動

ps aux | grep java
kill -9 プロセス番号
$ screen -S mijin -d -m /home/[アカウント名]/mijin/startnem.sh
または
$ nohup ./startnem.sh &

 

これで設定されたIPアドレスからアカウントを作成することができます。試しに接続先ホストを入力し「アカウント作成」をクリックしてください。

/account/generate



 

 

 

 

レスポンス結果に作成されたアカウントのアドレス・公開鍵・秘密鍵が表示されたはずです。

なお、http://<ホスト名>/account/generateへアクセスしても同様にアカウント作成結果が得られます。

 

 

ブロックチェーンに保持している情報

 

ブロックチェーン上には、アカウントのアドレス、公開鍵、秘密鍵は保持しておりません。
各種情報の保持についてはアプリ、またはユーザー側に委ねられます。

 

 

 

送る、もらう


送金準備

 

それではさっそくアドレス間で送金を行います。送金は以下手順で行います。

 

送金手順

 

 

1.送金元アドレスと送金先アドレス情報を用意

2.必要パラメータの値を入力するHTMLフォームを用意

3.ノードへPOST

 

 

送金先アドレスは「アカウント発行」にある「アカウント作成」で作成できます。

では、さっそく新たに作成したアカウントへ送金を行います。

 

 

ワンクリックで送金

 

送金用フォームを用意いたしました。
相手に xem を送金します。xemは mijin でデフォルトで用意されている通貨(コイン)です。単位はミリマイクロです。

 

送金には手数料がかかります。

 

ブロックチェーンでは合意形成へ協力(マイニング)したアカウントへ報酬として通貨をプレゼントします。その報酬は、トランザクション生成時に徴収した手数料によって支払われます。mijin もその思想上にあり、トランザクション生成時には手数料を付与する必要があります。
手数料はトランザクション生成時に自由に設定できますが、最低 0.1 以上必要です。xemの送金については config-user.properties の設定により 0 とすることが可能です(ただし、mosaic送金には最低1xemが必要です)。なお、手数料はシステム上のアカウントに送られ蓄積され、mijin の各ノードにマイニング報酬として支払われます。

 

 

では早速送金します。必要な情報をコピー&ペーストし「送金ボタン」をクリックしてください。

 

※秘密鍵や公開鍵などのユーザーの入力手間を省きたい場合は、ブラウザのローカルストレージなどに保持して、内部処理から値を取得するなどの処理を入れますが、本アプリでは確認等をしやすいようフォームにてコピー&ペーストしていただく形としています。

 

/transaction/announce



 

 

 

 

 

 

これで送金完了です。

 

 

通常のウェブサイトでは、このあと送金された額について不正がないかどうかのチェックをサーバに配置されたアプリケーションで行う必要がありますが、mijinの場合、それらの確認はノード間で行います。送金が完了したかどうかは、APIを経由して行います。

 

 

 

受取確認

 

実際に相手に通貨(コイン)が送られたかどうかを確認します。
確認は「/account/transfers/incoming」のAPIを使用します。入力フォームに相手のアドレスをコピー&ペーストし、「受取確認」ボタンをクリックしてください。

/account/transfers/incoming



 

 

 

 

送金確認

 

同様に送金が完了したかの確認もAPIにて行います。
送金確認は「/account/transfers/outgoing」を使用します。入力フォームに送金元のアドレスをコピー&ペーストし、「送金確認」ボタンをクリックしてください。

/account/transfers/outgoing



 

 

 

 

 

ノード間の同期確認

 

上記トランザクションが他のノードにも同期されているかどうか確認します。
http://<ホスト名>/account/transfers/incoming?address=アドレス のURLでホスト名に他のノードのホストを入れて、ブラウザからアクセスしてください。同期済みであれば上記確認結果と同様の結果が得られます。

 

 

 

独自コイン・地域通貨の流通


企業独自のトークン発行や流通に関するチュートリアルです。トークンエコノミーの基盤づくりの一つとなります。

 

これより以降は、「各種資料」→「mijin技術資料」内のチュートリアルにてご案内しております。

ぜひご活用ください。