Hyperledgerファブリックチュートリアル:スタートガイド

へようこそ Hyperledgerファブリックチュートリアル. 

このチュートリアルでは、ブロックチェーンに深く投資していてHyperledger Fabricを使い始めたい開発者の一人である場合に、最初のHyperledgerアプリケーションを作成する方法やその他の重要なことを学びます。.

エンタープライズグレードのフレームワークを機能させるには、専門知識が必要です。あなたが初心者であるならば、あなたはあなた自身が小さなことを直すのに多くの苦労をしていることに気付くでしょう。そのため、早い段階から始めて、独自の方法で練習することが重要です。.

しかし、なぜ Hyperledgerファブリック ない 他のエンタープライズブロックチェーンフレームワーク?

その理由は、Hyperledger Fabricは、優れた許可された分散型台帳テクノロジー(DLT)を提供する一流のエンタープライズブロックチェーンフレームワークであるためです。それはそれを企業にとって理想的な選択にするいくつかの素晴らしい機能を持っています. 

CISCO、IBM、Intel、SAP、Accentureなどで構成されるメンバーをチェックすることで人気を測ることができます.

HyperledgerFabricとは何ですか?

Hyperledger Fabricは、オープンソースのエンタープライズグレードのフレームワークです。許可された分散型台帳テクノロジーに依存して、待望のアプリケーションとソリューションを提供します。 Linux Foundationはさまざまなプロジェクトに取り組んでおり、HyperledgerFabricはその1つです。.

オープンソースであるため、誰でもプロジェクトに参加して貢献することができます。現在、35の組織が協力して、HyperledgerFabricを最高のエンタープライズフレームワークにしています。.

コアとなるのは、HyperledgerFabricは構成可能でモジュール式です。これは、企業がフレームワークを使用してシームレスに作業できることを意味します。これらの望ましい機能のすべてが、HyperledgerFabricを優れた選択肢にします。これを書いている時点で、新しい機能が付属しているHyperledger Fabricv1.4を試すことができます。.

Hyperledgerファブリックの機能

Hyperledger Fabricには、5つの主要な機能があります。それらは次のとおりです

  • ID管理:ID管理は、許可されたネットワークにとって非常に重要です。そのため、ID管理はHyperledgerファブリックの重要な機能の1つです。管理者に適切なID管理を設定するように与えることで、企業は複数のアクセス許可レイヤーを確実に採用できます。.
  • 効率的な処理:HyperledgerFabricは効率的です。これは、ネットワークの役割がノードタイプとして割り当てられているためです。コミットメントや注文とは別にトランザクションを実行できるようにすることで、効率も向上します。.
  • モジュール設計: Hyperledger Fabricはモジュラー設計を利用しているため、サービスやその他のシステムを簡単に統合できます。これは、コンセンサスアルゴリズム、IDなどを指定できることも意味します。. 
  • プライバシーと守秘義務: Hyperledger Fabricは、適切な機密性とプライバシーも提供します。これは、企業にとって非常に重要です。情報が漏洩しないように適切なデータチャネルを提供し、機密性をどのようなコストでも維持できます.
  • チェーンコード機能: Hyperledger Fabricはチェーンコード機能を提供します。これにより、特定のタイプのトランザクションが呼び出された場合にのみロジックを呼び出すことができます。. 

Hyperledgerファブリックのその他の主要な機能には、高品質のコード、オープンソース、優れたスケーラビリティと効率、および業界全体での使用が含まれます。. 

Hyperledgerファブリックチュートリアル

アプリケーションの開発を開始する前に、HyperledgerFabricのシステムアーキテクチャを理解することをお勧めします。そうすることで、内部でどのように動作するかを理解できます。この知識は、最初のHyperledgerFabricアプリケーションの開発に使用できます。. 

システムアーキテクチャー

コアにはノードがあります。ノードは相互に通信し、ネットワークを構築します。ただし、ブロックチェーン自体によって実行されるプログラムがあります。それらはチェーンコードです。チェーンコードは、元帳と状態データの保持を担当し、トランザクションの実行も処理します. 

Hyperledger Fabricでは、トランザクションが操作としてチェーンコードで実行されるため、チェーンコードが最も重要視されます。一方、トランザクションは、承認によって検証する必要があります。承認されたトランザクションのみをコミットできます.

トランザクション

Hyperledger Fabricでのトランザクションには、次の2つのタイプがあります。

  • トランザクションのデプロイ: このタイプのトランザクションは、プログラムとしてパラメーターを使用して新しいチェーンコードを作成する役割を果たします。完了すると、チェーンコードはブロックチェーンに「インストール」されたと言われます.
  • 呼び出しトランザクション:呼び出しトランザクションは、以前のチェーンコード展開のコンテキストで実行されるトランザクションです。.

ブロックチェーンデータ構造

ブロックチェーンで使用される基本的なデータ構造は、Key-Valueストア(KVS)です。キーは主に名前であり、値はblobです。チェーンコードは、次の2つのKVS操作の助けを借りてデータ構造を操作できます.

  • 置く
  • 取得する

データ構造全体が状態として表示されます.

元帳

元帳は、成功した状態変更と失敗した試行のシーケンスでもあります。それらは、後で参照できるように順序付けられています。また、それらはトランザクションの順序付けられたハッシュチェーンブロックです。元帳には順番にブロックが含まれ、その代わりに順序付けられたトランザクション配列が含まれます.

ノード

ノードは、ネットワーク内の任意の通信エンティティにすることができます.

クライアント

クライアントとは、エンドユーザーに代わって行動できる人のことです.

ピア

ピアは元帳の状態を処理し、ネットワークが最適に機能することを保証します。ピアは承認ピアにすることができ、トランザクションの承認に役立ちます.

最初のHyperledgerファブリックアプリの作成 

Hyperledger Fabricのアーキテクチャ構造を理解したので、次は最初のアプリケーションを作成します。アプリケーションを実行することで、Fabricアプリケーションがどのように機能するかを理解できるようになります。このチュートリアルでは、フレームワーク内でシンプルでスマートなコントラクトやその他のアプリケーションを使用する方法を学習します. 

開発を容易にするために、キーを簡単に参照できるアプリケーションSDKを使用します 

スマートコントラクトやその他のクエリの呼び出しを含む機能.

Hyperledgerファブリックアプリを開発する際に従う必要のある3つの主要な手順は、次のとおりです。

  1. 開発環境をセットアップします。開発環境は、アプリケーションが動作するために必要なネットワークを提供します。それはあなたにあなたのスマートコントラクトを機能させる能力を与えるでしょう.
  2. サンプルのスマートコントラクトについて学びます。ここでは、スマートコントラクトを通過し、そのトランザクションを理解する必要があります。アプリケーションによってシミュレートされたクエリを実行し、それを使用して元帳を更新します.
  3. サンプルアプリケーションの開発:最後のステップでは、スマートコントラクトを使用してサンプルアプリケーションを作成します.

最初のネットワークの構築

アプリケーションを開始する前に、最初のネットワークを構築しましょう。開始するには、いくつかの前提条件をインストールする必要があります。これらの前提条件により、すべてが意図したとおりに実行されることが保証されます.

前提条件のインストールガイドを確認してください ここに.

Hyperledger Composer:エンタープライズブロックチェーンの構築もチェックしてください

バイナリ、サンプル、およびDockerイメージをインストールすることをお勧めします。インストールガイドをご覧ください ここに.

サンプルをインストールすると、その中に含まれているファブリックサンプルが見つかります。 「fabric-samples」リポジトリに含める必要があります。リポジトリには、最初のネットワークサンプルがあります.

そのディレクトリに移動するには、以下のようにcdコマンドでフォルダに移動します.

cdファブリック-サンプル/最初のネットワーク

最初のネットワークサンプルを実行するには、byfn.shスクリプトを使用する必要があります。このスクリプトは、4つのピアでプロジェクトをすばやく開始するように設計されています。 4つのピアは、2つの異なる組織を表しています。また、コンテナ、チェーンコード、およびトランザクションを起動します。コンテナにより、より多くのピアがネットワークに参加できるようになります.

ネットワークアーティファクトの生成

これで、ネットワークエンティティの証明書とキーを生成できます。これを行うには、次のコマンドを実行する必要があります.

.byfn.sh生成

プロセスを開始する前に、確認を求められます。 Yキーを押して、注文サービスの電源供給、構成など、必要な情報をネットワークに入力し始めます。.

ネットワークへの電力供給

次に、ネットワークに電力を供給する必要があります。ネットワークへの電力供給は、以下の簡単なコマンドで実行できます.

./byfn.sh up

コマンドを実行すると、フレームワークがGolangチェーンコードイメージをコンパイルします。さらに、関連するコンテナも起動して、新しいピアにネットワークに参加する方法を提供します. 

デフォルトでは、Goの動作が表示されます。これは、Goがチェーンコードのデフォルト言語であるためです。しかし、それは他のプログラミング言語を使用できないという意味ではありません。チェーンコードはNode.jsとJavaもサポートしています。ノードに変更するには、次のコマンドを使用できます. 

.byfn.sh up-lノード

同様に、あなたはすることができます Javaに変更 もしあなたが必要ならば.

.byfn.sh up -l java

複数のチェーンコード言語を使用する場合は、RaftまたはKafkaを含む注文サービスを使用する必要があります.

./byfn.sh up -o etcdraft

./byfn.sh up -o kafka

コマンドを使用するたびに、コマンドを実行する前にもう一度確認するように求められます.

最初のネットワークを構築および維持する方法をさらに理解するには、ネットワーク構築チュートリアルを確認してください。 ここに.

ネットワークの立ち上げ

サンプルをインストールし、前提条件のページを通過したので、今度はネットワークを起動します。.

簡単にするために、JavaScriptは使用しません。また、fabcarサブディレクトリが必要です。ファブリックサンプルリポジトリのローカルクローンも作成します.

ネットワークを起動するには、startFabric.shシェルスクリプトを使用する必要があります。起動すると、認証局、注文者、ピアなどを含むブロックチェーンネットワークが得られます。 fabcarサブディレクトリが使用されているため、FabCarスマートコントラクトが自動的にインストールされて開始されます. 

ネットワークを起動するコマンドは次のとおりです。

./startFabric.sh javascript

アプリケーションのインストール

それでは、アプリケーションをインストールします。ただし、その前に、依存関係をインストールする必要があります. 

npmインストール

上記のコマンドは、で定義されている重要な依存関係のインストールを開始します package.json

パッケージには、開始される重要なクラスが含まれています

  • ファブリックネットワーククラス→トランザクション、ID、ウォレットを有効にします
  • fabric-ca-client→ユーザーをそれぞれの認証局に登録する

完了したら、fabcar / javascriptディレクトリに移動します。以下のディレクトリファイルを見てみましょう。

  • encrollAdmin.js
  • node_modules
  • package.json
  • registerUser.js
  • invoke.js
  • package-lock.json
  • query.js
  • 財布

認証局との通信

これで、実行中のネットワークができたので、認証局と通信する方法を学びましょう。. 

証明書署名要求(CSR)

私たちの最初の仕事は、CSRのプロセスを経ることです。このプロセスでは、 管理者 認証局に連絡して、パブリック、プライベート、およびX.509証明書を生成します。使用するプログラムはenroll.jsです

管理者を登録するには、次のコマンドを使用します.

ノードenrollAdmin.js

すべての情報がに保存されます 財布 ディレクトリ.

別のユーザーを登録する場合は、同じプロセスに従う必要があります。別のユーザーを登録してみましょう— usernew

ノードreisterUser.js 

これにより、新しいユーザーが登録され、その資格情報が管理者と一緒にウォレットに保存されます.

元帳のクエリ

ブロックチェーンネットワークには元帳のコピーがあるので、それを照会して情報を見つけることができます。元帳は読み取り専用であるため、読み取りクエリのみを実行できます。理解を深めるために、下の画像をチェックしてみましょう.

出典:Hyperledger Fabric Docs

元帳の値もそのままです 世界の状態. これは、チュートリアルの前半で説明したキーペアの値です。したがって、クエリはキーからのデータを明らかにすることができます。良いニュースは、CouchDBなどのデータベースを利用できることです。世界の州は、リレーショナルデータベースを使用するように構成できます.

元帳上のすべての車のリストを取得するには、次のコマンドを実行します,

ノードquery.js

クエリがどのように機能するかをよりよく理解するために、 query.js ファイルし、それを通過します。以下でそれを見てみましょう.

const {FileSystemWallet、Gateway} = require( ‘fabric-network’);

上記の行では、ネットワーク接続が確立されています

次に、アプリケーションが接続するためのゲートウェイが作成されます。以下の行を使用して行われます.

constゲートウェイ=新しいゲートウェイ();

ゲートウェイを待ちます。connect(ccp、{ウォレット、ID: ‘user1’});

ザ・ ccp ユーザーIDと関連するウォレット情報を識別するために使用されます. 

Hyperledger Fabricネットワークは複数のチャネルを実行するため、アプリケーションの特定のチャネルに接続することが重要です。.

const Contract = network.getContract( ‘fabcar’);

スマートコントラクトを理解する

スマートコントラクトをよりよく理解するために、それを見ていきましょう。また、それを介して行われたトランザクションを紹介します.

アクセスするには、サブディレクトリに移動する必要があります chaincode / fabcar / javascript / lib. そこに到達したら、エディターでfabcar.jsを開きます.

そこで、スマートコントラクトを定義するためのContractクラスの使用が表示されます。さらに、queryCar、queryAllCars、initLedger、changeCarOwner、createCarなど、スマートコントラクト内で定義された明確なトランザクションがあります。.

トランザクションは次のようになります。

非同期queryCar(ctx、carNumber){…}

queryCarトランザクションを見てみましょう.

非同期queryAllCars(ctx){

  const startKey = ‘CAR0’;

  const endKey = ‘CAR999’;

  const iterator = await ctx.stub.getStateByRange(startKey、endKey);

出典:Hyperledger Fabric Docs

元帳の更新:新しい車の購入

最後のステップは、元帳を新しい情報で更新することです。この場合、invoke.jsを使用して新しい車を作成しましょう。ファイルを開いて、次のコマンドを追加する必要があります.

Contract.submitTransaction( ‘createCar’、 ‘CAR12’、 ‘CarBrand’、 ’Model’、 ‘Color’、 ‘Owner’);を待ちます。

上記のコードでは、アプリはcreateCarスマートコントラクトトランザクションを呼び出します。その見返りとして、CarBrand、Color、Model、Ownerなどの属性を使用して車を作成します。.

次に、次のコードを実行して元帳にプッシュします

ノードinvoke.js

これにより元帳が更新され、正常に出力されます。.

結論

これでチュートリアルは終了です。チュートリアルでは、表面のみをカバーすることを目的としていました。深く掘り下げたい場合は、すべてを詳細に説明している公式のHyperledgerFabricドキュメントを確認できます。. 

では、エンタープライズブロックチェーンを構築するためにHyperledger Fabricを使用しますか?以下にコメントしてお知らせください.