2017年7月23日日曜日

Spring Tool Suite (STS)をつかってみる

統合開発環境に Spring Tool Suite(STS)を利用し、 Spring MVC + Spring Boot のWebアプリケーションを動かしてみます。
WebサーバはTomcatを使います(Tomcatがインストール済みであることが前提)

<Tomcatのダウンロード先>
http://tomcat.apache.org/download-80.cgi
  1. 以下のサイトからSTSをダウンロードする。
    https://spring.io/tools/sts/all
  2. ZIPファイルを解凍する。「STS.exe」を実行し、STSを起動する。
  3. File メニュー > New > Spring Legacy Project をクリックする。
    Project nameは「WebApp」、Templates:は「Simple Spring Web Maven」を選択。「Finish」ボタンを押下する。
  4. 作成したプロジェクト「WebApp」を右クリックし、Maven > Update Project… をクリックする。
  5. 作成したプロジェクト「WebApp」を右クリックし、Run As > 9 Maven install をクリックする。
  6. Helpメニュー>Eclipse MarketPlaceを選択する。Eclipse Tomcatで検索し、Tomcatプラグラインをインストールする。
  7. Windowメニュー>Preferenceを選択し、Tomcat環境情報を設定する。
  8. 「http://127.0.0.1:8080/WebApp/」にアクセスし、以下の画面が表示されることを確認する。



Hyperdeger Fabric 1.0.0付属のサンプルコードを動かしてみる

Hyperdeger Fabric 1.0.0付属のサンプルコードを動かしてみます。

サンプルコードのイメージ図
(https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.htmlより抜粋)




  • ブロックチェーンネットワークの分散台帳に書き込むには、スマートコントラクトが必要。
  • 業務側のアプリケーションは、Fabricのネットワークエンドポイントにアクセスし、スマートコンストラクトを実行する
  • サンプルでは、台帳として車情報を管理し、アプリケーションに返す
  • 言語はJavaScriptを利用
  1. サンプルのダウンロード
    # git clone https://github.com/hyperledger/fabric-samples.git
    # cd fabric-samples/fabcar
    # ls
    creds  invoke.js  package.json  query.js  startFabric.sh
  2. startFabric.shの実行
    #./startFabric.sh
    このシェルを実行すると、サンプルを動かす環境を自動的に構築してくれる。
    シェルの中身をみてみると、だいたい以下のことを実行している。
    ・まず最初に、必要なDockerイメージのダウンロード
    ・Docker-composeでDockerコンテナの立ち上げ。以下の4つのコンテナを作成している。
        Creating orderer.example.com
        Creating ca.example.com
        Creating couchdb
        Creating peer0.org1.example.com
    ・ブロックチェーンネットワークを構成するチャネルの作成
    ・「peer0.org1.example.com」というノードをチャネルへ追加
    ・CLIコンテナの作成
    ・サンプルチェーンコードのインストール
    ・サンプルチェーンコードのイニシエト
    ・サンプルチェーンコードの実行
    docker psで確認してみると、以下のコンテナが起動されている。
  3. fabric-samples/fabcar配下で以下のコマンドを実行し、必要なパッケージをダウンロード
    # npm install
  4. クエリーから実行してみる。10データ分の車情報を取得できる。

query.jsソースをのぞいてみると、だいたい以下のことを実行している。

ユーザID'PeerAdmin’を利用する。チャネル名'mychannel'を指定する。また、チェーンコードID'fabcar'を指定して、7051ポートにアクセスする

var options = {
    wallet_path: path.join(__dirname, './creds'),
    user_id: 'PeerAdmin',
    channel_id: 'mychannel',
    chaincode_id: 'fabcar',
    network_url: 'grpc://localhost:7051',

};

Fabric Client SDKを呼び出し、認証に必要なKeyValueStoreを作成する。
client = new hfc();
return hfc.newDefaultKeyValueStore({ path: options.wallet_path });


チャネルを作成し、Peerノードに追加する。

channel = client.newChannel(options.channel_id);

channel.addPeer(client.newPeer(options.network_url));

トランザクションIDを生成し、'queryAllCars'という関数を呼び出す。

var transaction_id = client.newTransactionID();
console.log("Assigning transaction_id: ", transaction_id._transaction_id);

 // queryCar - requires 1 argument, ex: args: ['CAR4'],
 // queryAllCars - requires no arguments , ex: args: [''],
 const request = {
        chaincodeId: options.chaincode_id,
        txId: transaction_id,
        fcn: 'queryAllCars',
        args: ['']
 };

 return channel.queryByChaincode(request);

2017年7月17日月曜日

Hyperdeger Fabric 1.0.0 のソースからDockerイメージを作成してみる

Hyperdeger Fabric 1.0.0がリリースしたということで、ソースからDockerイメージを作成してみます。
OSはUbuntu 16.04を利用します(Google Cloud Platformの1年お試し無料を使いました)。


  1. 前提条件
    Git client
    Go - 1.7 or later (for releases before v1.0, 1.6 or later)
    Docker - 1.12 or later
    Docker Compose - 1.8.1 or later
    Pip
  2. GOPATHの設定
    export GOPATH=/usr/lib/go-1.8
  3. FafbricのDockerイメージを作成する
    mkdir -p $GOPATH/src/github.com/hyperledger
    cd $GOPATH/src/github.com/hyperledger
    git clone http://gerrit.hyperledger.org/r/fabric
    sudo ./fabric/devenv/setupUbuntuOnPPC64le.sh
    cd $GOPATH/src/github.com/hyperledger/fabric
    make dist-clean docker
  4. Dockerイメージが作成されていることを確認する


    ちゃんと作成されてました。
    (とおもってけど、バージョンが1.0.1になってます。。。とりあえず先に進みましょう)
    次回は、ミニマム構成で動かしてみます。


    export GOPATH=/usr/lib/go-1.8