Hyperledger Fabricのブロックの内容を見る

Hyperledger Fabricをお仕事で調査しているのですが、イマイチブロックチェーンのブロックの内容が分からないため、悶絶しておりました。何がロギングされているんや、といった具合に。で、SDKアクセスで見れないこともないんですが、今回は `Hyperledger Explorer` というツールを用いてかっこいい感じで見てみます。

# 前提

Hyperleder Fabricをローカル環境（Mac)で動かそうとしている

# Hyperleder　Fabricを動かす

自分が書くよりもいろんな方が書かれているのでそれを参考にしてもらうのがお互い幸福度が上がりそうです。
FABCARというサンプルを動かすことを想定しています。

[Docker Composeを使ってHyperledger Fabricのサンプルチェーンコードfabcarを試してみる](https://qiita.com/masayuki5160/items/02d86ff1a1b43ef510cb)
[ブロックチェーン基盤 Hyperledger Fabric v1.0 アプリケーションの実装](http://hiroki-sawano.hatenablog.com/entry/2017/11/19/173926)

# Hyperledger Explorerを動かす

[Hyperledger Explorer](https://github.com/hyperledger/blockchain-explorer)を動かしていきます
README読めば大体わかりますが下記のようにコマンド打ち込んでいけばOKです

Postgresqlのインストールが必要なので、brewでインストールしておきましょう

```bash
brew install postgresql # postgresqlのインストール
brew services start postgresql # 起動
```

SQLの実行は下記のコマンドで実行可能です。尚、DBを指定しているのは、DBを作成するクエリだとしても、DBの指定なしにpsqlを実行出来ないためです。

```bash
psql -d postgres
postgres=# \i app/persistance/postgreSQL/db/explorerpg.sql
postgres=# \i app/persistance/postgreSQL/db/updatepg.sql
```

ドキュメントによれば　`app/platform/fabric/config.json` の修正が必要ですが、これは先に作成したfabcarで参照しているデータにアクセス出来ればOKです。下記のように設定します。

```json:config.json
{
    "network-config": {
        "org1": {
            "name": "peerOrg1",
            "mspid": "Org1MSP",
            "peer1": {
                "requests": "grpc://127.0.0.1:7051",
                "events": "grpc://127.0.0.1:7053",
                "server-hostname": "peer0.org1.example.com",
                "tls_cacerts": "<fabric-samples-PATH>/basic-network/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt"
            },
            "admin": {
                "key": "<fabric-samples-PATH>/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore",
                "cert": "<fabric-samples-PATH>/basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts"
            }
        }
    },
    "channel": "mychannel",
    "orderers": [
        {
            "mspid": "OrdererMSP",
            "server-hostname": "orderer.example.com",
            "requests": "grpc://127.0.0.1:7050",
            "tls_cacerts": "<fabric-samples-PATH>/basic-network/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/ca.crt"
        }
    ],
    "keyValueStore": "/tmp/fabric-client-kvs",
    "configtxgenToolPath": "<fabric-samples-PATH>/bin",
    "SYNC_START_DATE_FORMAT": "YYYY/MM/DD",
    "syncStartDate": "2018/01/01",
    "eventWaitTime": "30000",
    "license": "Apache-2.0",
    "version": "1.1"
}
```

上記の `config.json` は元々の設定から下記の設定を変更しています。

- peerを2つから1つに変更(fabric-samplesの構成が一つだけ)
- grpcsからgrpcに変更(ローカル環境なのでSSL通信しません)

あとは手順通りにnpmを実行していけばOKです

```bash
blockchain-explorer:$ npm install
blockchain-explorer:$ cd app/test
blockchain-explorer:$ npm install
blockchain-explorer:$ npm run test
blockchain-explorer:$ cd ../../client/
blockchain-explorer:$ npm install
blockchain-explorer:$ npm test ---u --coverage
blockchain-explorer:$ npm run build
blockchain-explorer:$ cd ..
blockchain-explorer:$ ./start.sh
```

起動に成功すると下記のような画面が確認できます

![image.png](https://qiita-image-store.s3.amazonaws.com/0/8350/1cac7477-936f-17aa-d7b4-7ad50ce40672.png)

ブロックの中身も下記のように確認できます

![画像がペーストされた日時- 2018_07_07 11_02 午前.png](https://qiita-image-store.s3.amazonaws.com/0/8350/54e39f41-069b-85ee-1ccc-6650b2ec6e42.png)