Kaleido 使ってみる

#はじめに
ConsenSys社とAWSが提供しているBaaSであるkaleidoの使用感を確かめることが目的

#アカウントを作る

[このページ](https://console.kaleido.io/login/signup?refAction=undefined-top-nav)でアカウントを作成する

#ネットワークを作る

まず[kaleidoコンソール](https://console.kaleido.io/)を開く
```Create Consortium```をクリックする


<img width="1434" alt="スクリーンショット 2019-06-23 12.47.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/8e836469-441f-a438-aa9a-bba563b103fe.png">

こんな感じで選んで```Next```をクリック
<img width="1419" alt="スクリーンショット 2019-06-23 12.53.41.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/7341fc3e-8c14-8bff-c575-5e826a101e3c.png">

```Finish``` をクリック
<img width="1434" alt="スクリーンショット 2019-06-23 13.03.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/fa5deddb-8881-e3ea-39d1-7d132539c46d.png">

#環境をセットアップする

```SETUP ENVIRONMENT```をクリック
<img width="1274" alt="スクリーンショット 2019-06-23 13.21.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/45b33a77-bb23-22af-6078-35f9647f3878.png">

Environment名を入力して```NEXT```をクリック
<img width="1415" alt="スクリーンショット 2019-06-23 21.36.05.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/621a1ee7-c766-5afb-5bd6-19a476cc2d8d.png">


クライアントは```geth``` を選択して```FINISH```


#ノードを追加する
```Add``` をクリック
<img width="1263" alt="スクリーンショット 2019-06-23 13.32.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/67c9f491-d5a4-53fa-e46d-e54d7e5b5abb.png">

node名に```node 1```を入力し、```Next```をクリック

<img width="1409" alt="スクリーンショット 2019-06-23 13.38.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/ddcec35f-84b4-2fbe-fe31-e1529f076afc.png">

こんな画面が出るのでそのまま```Next```
Node Sizeは```Small```を選んで```FINISH```

少し待つとnode 1が```started```になります

<img width="1338" alt="スクリーンショット 2019-06-23 21.40.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/597a9a21-ec61-fcec-9381-506d518f62fe.png">

#スマートコントラクトをデプロイする
次に```Click here to connect your nodes```をクリックします

<img width="1109" alt="スクリーンショット 2019-06-23 15.51.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/f6bad281-b1f2-1b6e-0780-8d3e13c15398.png">

REST API Gatewayの方の```VIEW DETAILS```をクリックします

<img width="580" alt="スクリーンショット 2019-06-23 15.53.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/f1c7ceb9-d948-765d-f2ce-485728a69eea.png">

```GENERATE NEW```をクリック

<img width="1410" alt="スクリーンショット 2019-06-23 16.03.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/0d33f3c0-df47-fc32-84d6-a69f9df90eef.png">

```DEPLOY``` をクリックするとサンプルの```Simple Storage```コントラクトがデプロイされます

<img width="1413" alt="スクリーンショット 2019-06-23 16.07.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/990accd1-5eec-1fe6-f4db-65702f463c42.png">

完了するとこのような画面になります
```CHECK REPLY```をクリックするとトランザクションレシートが見えます

<img width="1380" alt="スクリーンショット 2019-06-23 21.41.45.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/b21b75b2-f760-0021-8ada-d2b10bcd6636.png">

#スマートコントラクトと対話する
SmartContract interfaceはEthConnect Kafkaブリッジを介してデプロイされたコントラクト用のRESTful APIを生成して公開します。またコントラクトの各メソッドに対するRESTエンドポイントの自動生成もサポートしています。

<img width="1391" alt="スクリーンショット 2019-06-23 21.42.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/87a1a889-25fc-087d-3c84-9b528a0ad9d8.png">

<img width="1271" alt="スクリーンショット 2019-06-23 21.44.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/41afac6c-42ce-2670-63ba-0eddde62a1b5.png">

```View``` をクリックします
スマートコントラクトとコミュニケーションが取れるページが表示されます

<img width="1431" alt="スクリーンショット 2019-06-23 21.49.03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/9c409164-9615-4767-1c72-e72f5011b3da.png">

```GET``` の```/get```タブを開いて```TRY```をクリックします
<img width="680" alt="スクリーンショット 2019-06-23 21.52.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/8ec0c87a-84a6-bc7e-1f85-187ac7471130.png">

```SimpleStorage``` コントラクトのコンストラクタで```retVal```に入れておいた```12345```が返ってきます


今度はトランザクションを送信して```retVal```の値を変更します

<img width="1404" alt="スクリーンショット 2019-06-23 21.58.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/5ac93689-1bdf-f5b8-3734-cc618d648743.png">

```POST``` の```/set```タブを開いて```^-?[0-9]+$```を```99```に変更しましょう
```TRY``` をクリックします

<img width="1188" alt="スクリーンショット 2019-06-23 22.00.15.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/c36b3d3a-a1cd-bb77-de44-b0559757e906.png">

少し待つとresponseが返ってきます
デフォルトではresponseはトランザクションがブロックに含まれて、そのブロックがマイニングされてから返ってくるようになっています
マイニングよりも先にresponseを返すためには```kld-sync```というパラメータを```false```にすると言いそう

<img width="1419" alt="スクリーンショット 2019-06-23 22.04.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/326169/b60285ed-7607-e499-5c98-13eb60e63f15.png">

先ほどのようにGETすると```99```が返ってきます


#まとめ
正直に感想を述べるとKaleidoは神です。神ポイントは

- ネットワークのデプロイがワンクリックでできる
- スマートコントラクトのデプロイがブラウザ上できる
- スマートコントラクトとの対話がブラウザ上でできる
- ブロックチェーンエクスプローラー標準装備
- ネットワークのメンバーが一人だと料金がタダ

など至れり尽くせりでした
その証拠にこの記事ではコードを一行も書いておりません
プライベートチェーンを運用する方はKaleidoを使えば間違い無いと思います