「marbles」サンプルは、Alibaba Cloud Blockchain as a Service (BaaS) 上で Hyperledger Fabric の Node.js SDK アプリケーションをデプロイおよび実行する方法を示します。このサンプルにはチェーンコードと、ブラウザ上で動作するマーブル取引ゲームが含まれます。本ガイドでは、SDK 接続プロファイルの構成から、ブラウザでのゲームプレイまで、一連のセットアップ手順を順に解説します。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
BaaS 上で実行中の Hyperledger Fabric ネットワーク(少なくとも 1 つの組織およびチャンネルを含む)
BaaS コンソールからダウンロードした SDK 接続プロファイル(
connection-profile-standard.json)Node.js v8 および npm のインストール
バージョンを確認するには:
$ node --version
v8.11.2
$ npm --version
5.6.0仕組み
セットアップは、以下の 3 つの順次実行ステップで構成されます。
サンプルパッケージをダウンロードし、組織の証明機関(CA)認証情報を用いて接続プロファイルを構成します。
marbles チェーンコードを BaaS のチャンネルにアップロードおよびインスタンス化します。
アプリケーションを起動し、チェーンコードに接続してマーブル取引を開始します。
ステップ 1:サンプルのダウンロードと構成
1.1 パッケージのダウンロード
node-sdk-demo-1.4.5 をダウンロードし、任意のディレクトリに展開します。BaaS コンソールからダウンロードした connection-profile-standard.json を node-sdk-demo/config ディレクトリにコピーします。
最終的なディレクトリ構造は次のようになります。

1.2 接続プロファイルの構成
接続プロファイルは、Node.js SDK が Fabric ネットワークに接続する方法を定義します。SDK がユーザー登録(enrollment)を実行し証明書を取得できるようにするため、組織に属する証明機関(CA)の certificateAuthorities セクションに、組織の CA 認証情報を追加する必要があります。
config/connection-profile-standard.json を開き、組織に属する CA の下に registrar エントリを追加します。
"registrar": [
{
"enrollId": "user",
"enrollSecret": "user-secret"
}
]たとえば、ユーザー名が user、パスワードが user-secret であり、ユーザーが test10 組織に所属している場合、認証情報を CA エントリ ca1.test10.aliyunbaas.top に追加します。
変更後の certificateAuthorities セクションは次のようになります。

ヒント:保存前に、JSON を jsonlint.com に貼り付けて、フォーマットおよび検証を行ってください。
ステップ 2:チェーンコードのアップロード
node-sdk-demo/chaincode/marbles_v4.cc を BaaS にアップロードし、チャンネル上でインスタンス化します。詳細な手順については、「チェーンコードのデプロイ」をご参照ください。
ステップ 3:marbles アプリケーションの実行
3.1 依存関係のインストールとアプリケーションの起動
node-sdk-demo ディレクトリから、npm 依存関係をインストールしてアプリケーションを起動します。
npm install --registry http://registry.npmmirror.com
gulp marbles_baasアプリケーションが正常に起動すると、以下のような出力が表示されます。
Debug: Open your browser to http://localhost:3001 and login to tweak settings for startupブラウザで http://localhost:3001 を開きます。パスワード入力を求められた場合は、admin を入力します。
3.2 チェーンコード設定の構成
アプリケーションはセットアップガイドページで起動します。ガイド付き モードを選択します。自動的にステップ 3 に遷移し、チェーンコード接続の構成が行われます。

以下のフィールドを入力します。
| フィールド | 値 |
|---|---|
channel | marbles_v4 をアップロードしたチャンネル名(例:first-channel) |
chaincode_id | marbles |
chaincode_version | v4 |
再試行 をクリックします。チェーンコードが正常に検出された場合、以下のページが表示されます。

検出に失敗した場合は、チェーンコードが正しいチャンネルにアップロードおよびインスタンス化されているかを確認してください。
3.3 ゲームのプレイ
ダイアログボックスを閉じてマーブル取引ゲームを開始します。マーブルをあるユーザーから別のユーザーへドラッグすることで、資産の転送が可能です。ユーザーの横にある + をクリックするとマーブルを追加でき、マーブルをゴミ箱にドラッグすると削除できます。

予期される警告
アプリケーション起動時に、以下のようなエラーログが表示されることがあります。
Missing 'chaincodeId' parameterこれは想定内の挙動です。BaaS によって生成された connection-profile-standard.json は、標準の Fabric 接続プロファイル形式に従っており、チェーンコード固有の構成を含みません。チェーンコード固有の構成は、marbles のセットアップガイドで処理されます。これらのログはアプリケーションの動作に影響しません。
次のステップ
コミュニティリポジトリで、完全な marbles サンプルを確認します。
fabric-sdk-node ドキュメントで、Fabric Node.js SDK の詳細を確認します。