banner
leaf

leaf

It is better to manage the army than to manage the people. And the enemy.

超级帳簿開発例2 - fabcarブロックチェーンアプリケーション

使用超级アカウントブックを使用して Fabric ネットワークを構築し、CLI コマンドラインを使用してこの Fabric ネットワークと対話します。このセクションでは、Fabric Samples の別の例である fabcar を学びます。fabcar は、NODE SDK を使用し、スマートコントラクトを持つサンプルです(NODE_SDK は、超級アカウントブック公式の JavaScript ソフトウェア開発キットであり、開発者は NODE_SDK を使用して CLI 以外の方法で Fabric ネットワークと対話できます)。この例を通じて、NODE SDK の使用方法と、NODE SDK と Fabric ネットワークを使用したページ内での対話方法を理解することができます。

この例の開発に入る前に、ブロックチェーンアプリケーションとブロックチェーンネットワークの間の相互作用プロセスをまとめましょう。

Fabric ネットワークでは、アプリケーション(Application)はまず開発者証明書(Application Developer Identity)の確認を受ける必要があります。確認後、スマートコントラクト(Run smart contracts)を実行し、スマートコントラクトはブロックチェーンネットワークのクエリと更新(Receive ledger updates)を行うことができます。ブロックチェーンネットワークが正常に更新された後、アプリケーションに通知されます。図

image

fabcar は、車両データ管理の機能を実装しており、管理者と一般ユーザーの 2 つの役割が含まれています。管理者は車両データの更新と管理を行い、一般ユーザーはすべての車両データをクエリできます。この例では、次の具体的な機能が実装されています。

●Car の構造体を定義し、車両のデータと所有者情報を保存します。

●テストネットワークを初期化して起動します。

●管理者の登録と登録の機能を持ちます。

●新しいユーザーの登録機能を持ちます。

●車両の情報をクエリおよび更新することができます。

fabcar フォルダに移動すると、シェルスクリプトといくつかの js ファイルが表示されます。

image

その中の package.json は、このプロジェクトに必要な JavaScript モジュールとプロジェクトの設定情報(名前、バージョン、ライセンスなど)を定義しています。npm install コマンドを実行すると、この設定ファイルに基づいて必要なモジュールが自動的にダウンロードされ、プロジェクトの実行環境と開発環境が構成されます。startFabric.sh スクリプトは、Fabric ネットワークを初期化し、ノードを起動し、チャネルを作成し、Chaincode をインスタンス化し、車両の初期情報をブロックチェーンに書き込みます。enrollAdmin.js は、管理者の登録に使用されます。registerUser.js は、新しいユーザーの登録に使用されます。query.js は、すべての車両の情報をクエリするために使用されます。invoke.js は、Chaincode を呼び出し、その機能を実行するために使用されます。

次に、fabcar アプリケーションの開発とデプロイを開始します。

fabcar の開発とデプロイ#

この例では、まず Fabric ネットワークを起動して初期化し、テスト用の管理者と新しいユーザーを作成し、次に NODE SDK を使用してネットワークと対話し、NODE SDK をウェブページに統合します。ユーザーはこの対話ページを使用して超級アカウントブックを操作できます。

  1. ネットワークの起動とデータの初期化

ステップ 1 では、fabcar フォルダ内の startFabric.sh スクリプトを実行します。このスクリプトファイルの役割は、まずこの基本ネットワークを起動し、次に CLI コンテナを起動し、Chaincode をインスタンス化し、車両の初期情報をロードすることです。

上記のプロセスで重要なのは Chaincode の機能です。次に、Chaincode の実装の詳細について説明します。Chaincode のコードは、fabric-samples/chaincode/fabcar/go フォルダにあり、fabcar.go ファイルには車両の構造体が定義されています。

image

Chaincode のコードでは、Init()メソッドと Invoke()メソッドの実装も必要です。Init()メソッドでは、Chaincode の初期化操作と、クエリカー情報(queryCar)、レジャーの初期化(initLedger)、新しいカー情報の作成(createCar)、すべてのカー情報のクエリ(queryAllcars)、カーの所有者の変更(changeCarOwner)などのさまざまなイベントに対する処理ロジックが実装されています。

Invoke()メソッドでは、queryCar(カー情報のクエリ)、initLedger(レジャーの初期化)、createCar(新しいカー情報の作成)、queryAllCars(すべてのカー情報のクエリ)、changeCarOwner(カーの所有者の変更)などの機能を呼び出すことができます。

startFabric.sh を使用してネットワークを起動すると、正常に実行された場合、成功の出力メッセージ、起動にかかる時間、およびヘルプ情報が表示されます。

ネットワークの起動に成功した出力メッセージ

ネットワークの起動後、管理者と新しいユーザーを作成する必要があります。

  1. 管理者と新しいユーザーの作成

enrollAdmin.js を使用して管理者を作成します。このファイルでは、SDK を呼び出して admin という名前の管理者を作成します。

image

admin 管理者の作成

registerUser.js を使用して新しいユーザーを作成します。このファイルでは、SDK を呼び出して user1 という名前の新しいユーザーを作成します。

image

user1 新しいユーザーの作成

これらのスクリプトを実行する前に、npm install コマンドを使用して SDK をインストールする必要があります。

SDK のインストール

インストールが完了したら、node enrollAdmin.js と node registerUser を使用して管理者と新しいユーザーを登録します。

image

次に、特定の車(CAR3 など)の情報をクエリし、query.js を変更します。

コマンド "node query.js" を実行すると、CAR3 の情報が返されることがわかります。

次に、Chaincode を呼び出して超級アカウントブックの内容を更新してみましょう。invoke.js で Chaincode の createCar を呼び出して新しい車の情報を作成します。

image

コマンド "node invoke.js" を実行すると、次のようになります。その後、すべての車の情報をクエリすると、1 台の車が追加されていることがわかります。

image

最後に、NODE SDK をウェブページに統合し、ユーザーがウェブページを介して Fabric ネットワークと対話し、超級アカウントブックのクエリ操作を直接実行できるようにします。ここでは、express フレームワークを使用して、SDK を表示および呼び出すためのシンプルなページを開発します。Express は、シンプルで柔軟な node.js Web アプリケーションフレームワークであり、さまざまな Web およびモバイルアプリケーションを作成するための強力な機能を提供します。

ウェブサイトの機能は、ホームページにアクセスするとすべての車の情報が返され、対応する車のページにアクセスすると車の詳細ページが返されることです。まず、npm install express コマンドを使用して express フレームワークをインストールし、次に server.js という名前のファイルを作成します。このファイルでは、express アプリケーションをロードおよび作成し、ポート 3000 でリッスンし、3000 ポートにアクセスすると、1. ネットワークの起動とデータの初期化の部分でロードされたすべての車の情報をクエリして返します。

主なコードは次のとおりです。

image

コードを完成させたら、node app.js コマンドを使用してアプリケーションを実行します。実行後、ブラウザで 127.0.0.1:3000 にアクセスしてすべての車の情報を表示できます。

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。