Corda サンプルCorDappを動かしてみる2

#目的
[Corda サンプルCorDappを動かしてみる1](https://qiita.com/lcez1nna/items/8de7705ac61b76856608 "Corda サンプルCorDappを動かしてみる1")の続き。
サンプルCorDappがどのように動作するのか確認する。

#環境
Mac環境。

#内容
##前回までのおさらい
[Corda サンプルCorDappを動かしてみる1](https://qiita.com/lcez1nna/items/8de7705ac61b76856608 "Corda サンプルCorDappを動かしてみる1")では、サンプルCordappがインストールされたノードを起動するまで実施した。
続いて、サンプルの構成を確認して実際にサンプルCordappを動かしてみる。

##サンプルの構成
ざっくり以下のような構成である。アプリとしては借用証書IOU(I Owe You)のやりとりができるようになっている。ノードの構成情報はkotlin(java)-source/build/nodes/NodeX/node.confに記載されている。

* Notary
<br>トランザクションを検証する
* Node
<br>それぞれの台帳を管理、アプリを実行
* Webserver
<br>フロントWebサーバー
<img width="799" alt="スクリーンショット 2018-08-08 16.04.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/93d5da54-0939-fa3c-fd94-e2c1d12bb500.png">

##サンプルAPIが用意されている
https://docs.corda.net/tutorial-cordapp.html

>/api/status
　ノードが起動しているか確認
>/api/example/me
　ノードの情報を確認
>/api/example/peers
　他ノードの情報を確認
>/api/example/ious
　自身のIOUの情報を確認
>/api/example/create-iou
　IOUを作成

##Webフロントエンド
>/web/example

<img width="887" alt="スクリーンショット 2018-08-08 16.14.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/e718468c-b0ca-955b-f45f-539dd0faa0c9.png">

##IOUを発行してみる

###API
PartyA(貸し手)からPartyB(借り手)へのIOUを発行

```
$ curl -X PUT 'http://localhost:10009/api/example/create-iou?iouValue=1&partyName=O=PartyB,L=New%20York,C=US'
Transaction id 3E880090502DAED406F2441946BD79FD7918FAC5A8AB79600E1DE26A512A84C4 committed to ledger.
```

###Webフロントエンド
PartyA(貸し手)からPartyB(借り手)へのIOUを発行
<img width="1208" alt="スクリーンショット 2018-08-08 17.25.06.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/7323d92f-59d1-499f-c5c9-975e3341493a.png">

APIやWebフロントエンドから結果を確認できる。
Party AとParty Bからはトランザクションを見ることができるが、Party Cからはできていない。
Party A
<img width="979" alt="スクリーンショット 2018-08-08 17.25.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/85718f86-c470-0694-0585-b16b8494c6d2.png">
Party B
<img width="946" alt="スクリーンショット 2018-08-08 17.35.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/bd98e172-a400-4d52-6af5-049c036f99ad.png">
Party C
<img width="768" alt="スクリーンショット 2018-08-08 17.35.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/df31821b-cf2d-1387-ef0e-2603e354d95a.png">

##Databaseの中身を直接確認してみる
ノードのデータはH2 databaseに保管されている。以下からH2をダウンロードする。
http://www.h2database.com/html/download.html
zipを解凍して、以下のディレクトリに移動して起動

```
$ cd h2/bin
$ sh h2.sh
```

ブラウザでH2コンソールが起動するので、みたいノードの情報を入力していく。
JDBC URLはノードのコンソールに表示されている。

```
Database connection url is              : jdbc:h2:tcp:YourJDBCURL
```

ユーザーとパスワードはh2のデフォルト(ユーザー="sa" パスワード="")

<img width="459" alt="スクリーンショット 2018-08-08 18.16.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/999e9fdc-f49f-0cc2-43b0-ee98c6f834bf.png">

接続して"SELECT * FROM IOU_STATES" を実行すると、データベースに格納されているIOUのデータを確認できる。
Party A　トランザクションある
<img width="1178" alt="スクリーンショット 2018-08-08 18.18.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/c0ffd162-ac65-9a91-5cd6-1f4cd7254fb9.png">

Party B　トランザクションある
<img width="1217" alt="スクリーンショット 2018-08-08 18.22.10.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/8748ed45-752b-38d0-621a-43c18067e3a7.png">

Party C　トランザクションない
<img width="772" alt="スクリーンショット 2018-08-08 18.22.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/231906/6c9a0732-52b4-c3e6-1564-7690b1c883f4.png">


#まとめ
分散台帳を実現していることがわかるサンプルアプリケーションでした。

#参考文献
QuickStart
https://docs.corda.net/quickstart-index.html
Node database
https://docs.corda.net/node-database.html