ホームページ >バックエンド開発 >Golang >実践ブロックチェーン・ハイパーレジャーファブリック (1) 初心者向け10分入門

実践ブロックチェーン・ハイパーレジャーファブリック (1) 初心者向け10分入門

michael li
michael liオリジナル
2020-04-28 13:17:203945ブラウズ

はじめに

みなさん、こんにちは。私の名前はマイケルです。私は現在、上海のインターネット会社で働いています。政府がブロックチェーン プロジェクトを非常に重視しているため、人々はブロックチェーン プロジェクトを重視し始めています。 「2020年はブロックチェーン発展元年です。友達とブロックチェーンについて何度も話してきて、自分も実践してみたいと思いました。そこでイーサリアム、EOS、NEOなど多くの選択肢を調べた結果、選択しました」今日の主役であるアライアンス チェーンは Hyperledger ファブリックです。

記事の構成

この一連の記事は 3 つの部分に分かれており、この 3 つの記事は、Hyperledger Fabric の開発を開始し、独自のアライアンス チェーン プロジェクトを構築するのに役立ちます。 :

1. 基本的な紹介

2. 環境設定

3. アプリケーションのデプロイとスタートアップ

基本的な紹介

ハイパーレジャー ファブリック - ブロックチェーン世界の新たな希望

12月2015 年、オープンソース界の旗艦組織である Linux Foundation が主導し、初期メンバー 30 社 (IBM、Accenture、Intel、JP Morgan、R3、DAH、DTCC、FUJITSU、HITACHI、SWIFT、Cisco、など)と共同でSuper The Hyperledger共同プロジェクトの設立を発表します。 Hyperledger プロジェクトは、透明性、オープン性、分散化されたエンタープライズレベルの分散台帳テクノロジーのオープンソースリファレンス実装を提供し、ブロックチェーンと分散台帳関連のプロトコル、仕様、標準の開発を促進することに取り組んでいます。プロジェクトの公式 Web サイトは hyperledger.org で、Hyperledger ファブリックはその重要なプロジェクトの 1 つです。

新入生の多くは、ブロックチェーンに特有の多くの用語についてあまり知らないかもしれないので、最初のセクションでは、Hyperledger ファブリックに関連する用語を紹介します。

名詞の紹介:

アンカー ピア - アンカー ノード アンカー ノードは、チャネル内のすべてのピアノードによって検出でき、そのノードと通信できるピアです。チャネル内の各メンバーには 1 つ (単一障害点の場合は複数) のアンカー ノードがあり、異なるメンバーシップを持つノードがチャネル内に存在する他のノードを検出できるようになります。

ブロック – ブロックは、チャネル上の順序付けられたトランザクションのコレクションです。多くの場合、ブロックは暗号化手段 (ハッシュ値) によって前のブロックに接続されます。

Zhu Jiang: ブロックは、チャネル内で暗号化 (ハッシュ暗号化) され、前のブロックに接続される、順序付けられたトランザクションのセットです。

Chain – チェーン チェーンは、ブロック間のハッシュ接続で構造化されたトランザクション ログです。ピアはオーダー サービスからトランザクション ブロックを受け取り、承認ポリシーと同時実行の競合に基づいてブロック上のトランザクションが有効かどうかをマークし、そのブロックをピア ファイル システムのハッシュ チェーンに追加します。 Z

hu Jiang: 台帳のチェーンは、トランザクション ブロックの「ハッシュ接続」によって構造化されたトランザクション ログです。ピアノードは順序付けサービスからトランザクション ブロックを受け取り、承認ポリシーと同時実行の競合に基づいてブロックのトランザクションを有効または無効としてマークし、ピアノードのファイル システムのハッシュ チェーンにブロックを追加します。

Chaincode – Chaincode Chaincode は台帳上で実行されるソフトウェアで、資産をエンコードでき、トランザクション命令 (またはビジネス ロジック) を使用して資産を変更することもできます。

チャネル - チャネルは、「ファブリック」ネットワーク上に構築されたプライベート ブロックチェーンであり、データの分離と機密性を実現します。チャネル固有の台帳はチャネル内のすべてのピアと共有され、取引当事者が台帳と対話するにはチャネルによって適切に認証される必要があります。チャネルは「構成ブロック」によって定義されます。

コミットメント – コミットメント チャネル内の各ピアは、順序付けられたトランザクションのブロックを検証し、そのブロックをチャネル上の台帳の各コピーにコミット (書き込みまたは追加) します。ピアはまた、各ブロック内の各トランザクションのステータスを有効または無効としてマークします。

同時実行制御バージョン チェック – 同時実行制御バージョン チェック (CCVC) CCVC は、チャネル内のピア間で状態の同期を維持する方法です。ピア ノードはトランザクションを並行して実行し、トランザクションが台帳に送信される前に、ピア ノードはトランザクションの実行中に読み取られたデータが変更されているかどうかを確認します。実行とコミットの間に読み取りデータが変更された場合、CCVC 競合が発生し、トランザクションは台帳内で無効としてマークされ、状態データベース内の値は更新されません。

構成ブロック – 構成ブロックには、システム チェーン (注文サービス) またはチャネルのメンバーとポリシーを定義する構成データが含まれています。チャネルまたはネットワーク全体に対する構成の変更 (メンバーの脱退または参加など) により、新しい構成ブロックが生成され、適切なチェーンに追加されます。この構成ブロックには、ジェネシス ブロックの内容と増分が含まれます。

コンセンサス – コンセンサスは、合意された注文を生成し、ブロックを構成する一連のトランザクションの正確性を確認するために、トランザクション プロセス全体にわたって使用される広義の用語です。

現在の状態 – 台帳の現在の状態は、チェーン トランザクション ログ内のすべてのキーの最新の値を表します。ピアは、処理されたブロック内の各トランザクションに対応する変更された値を台帳の現在の状態に送信します。現在の状態は、チャネルが認識しているすべての最新の k-v を表すため、現在の状態はワールド状態とも呼ばれます。チェーンコードは、現在の状態に対してトランザクション提案を実行します。

ダイナミック メンバーシップ – ダイナミック メンバーシップ ファブリックは、ネットワーク全体の操作性に影響を与えることなく、メンバー、ピア、および順序付けサービス ノードの動的な追加と削除をサポートします。ビジネス関係を調整したり、さまざまな理由でエンティティを追加または削除する必要がある場合、動的メンバーシップは非常に重要です。

エンドースメント – エンドースメントとは、ピアがトランザクションを実行し、トランザクション提案を生成したクライアント アプリに YES/NO を返すプロセスを指します。チェーンコードには、対応する承認ポリシーがあり、承認ピアが指定されます。

エンドースメント ポリシー - エンドースメント ポリシーは、トランザクションを実行するために特定のチェーンコードに依存するチャネル上のピアの条件 (つまり、Yes または No を返す条件) と応答結果 (エンドースメント) の必要な組み合わせを定義します。

承認ポリシーでは、特定のチェーンコードのトランザクションを承認できる承認ノードの最小数または承認ノードの最小割合を指定できます。承認ポリシーは、アプリケーションおよび不正な動作に対する望ましい保護レベルに基づいてノードを承認することによって編成および管理されます。チェーンコードのインストールおよびインスタンス化 (tx のデプロイ) 時に、エンドースメント ポリシーを指定する必要があります。

Fabric-caFabric-ca は、ネットワーク メンバーとそのユーザーに PKI ベースの証明書を発行するデフォルトの証明書管理コンポーネントです。 CA は、各メンバーのルート証明書 (rootCert)、各許可ユーザーの登録証明書 (eCert)、および各登録証明書の多数のトランザクション証明書 (tCert) を発行します。

ジェネシス ブロック - 初期ブロックジェネシス ブロックは、ブロックチェーン ネットワークまたはチャネルを初期化する構成ブロックであり、チェーン上の最初のブロックでもあります。

ゴシップ プロトコル - ゴシップ プロトコル ゴシップ データ送信プロトコルには 3 つの機能があります:

1) ピア検出とチャネル メンバーの管理;

2) ネットワーク上のすべてのピア間で台帳をブロードキャストします。チャネル データ;

3) チャネル上のすべてのピア間で台帳データを同期します。

Initialize – チェーンコード プログラムを初期化するメソッドを初期化します。

インストール – ピアのファイル システムにチェーンコードをインストールするプロセス。 (注釈: ChaincodeDeploymentSpec 情報は、chaincodeInstallPath-chaincodeName.chainVersion ファイルに保存されます)

Instantiate – チェーンコード コンテナーをインスタンス化して開始するプロセス。 (注釈: ChaincodeData を lccc の状態に保存してから、Chaincode をデプロイし、Init メソッドを実行します) Invoke – Call は、チェーンコード内の関数を呼び出すために使用されます。

チェーンコードの呼び出しはトランザクションの提案であり、モジュール式プロセス (承認、合意、検証、送信) を実行します。 invoke の構造は関数とパラメータ配列です。

リーディング ピア - リーディング ノード 各メンバーは、サブスクライブしているチャネル上に複数のピアを持つことができ、ピアの 1 つがチャネルのリーディング ピアとして機能し、メンバーに代わって順序付けサービスと通信します。順序付けサービスはブロックを先頭のピアに配信し、その後、同じメンバーの下の他のピアにブロックを配布します。

Ledger – 元帳 元帳は、チャネル上の各ピアによって維持されるチャネルのチェーンと現在の状態データです。元帳は、チャネルのチェーンとチャネル内の各ピアによって維持される世界の状態です。 (この説明は少し奇妙です)

メンバー – 法的に独立した組織であり、そのメンバーはネットワークの一意のルート証明書を所有します。ピア ノードやアプリ クライアントなどのネットワーク コンポーネントはメンバーにリンクされます。

メンバーシップ サービス プロバイダー – MSPMSP は、クライアントとピアに証明書を提供するシステム抽象コンポーネントを指します。

クライアントは証明書を使用してトランザクションを認証し、ピアは証明書を使用してトランザクションの承認を認証します。このインターフェイスはシステムのトランザクション処理コンポーネントと密接に関連しており、システムのトランザクション処理コンポーネントのコアを変更することなく、定義されたメンバーシップ サービス コンポーネントをこの方法でスムーズにプラグインできるように設計されています。

メンバーシップ サービス - メンバーシップ サービス メンバーシップ サービスは、許可されたブロックチェーン ネットワーク上でアイデンティティを認証、認可、管理します。

ピアおよびオーダーで実行されるメンバー サービス コードは、ブロックチェーン操作を認証および許可します。これは、PKI に基づいた MSP 実装です。 Fabric-ca コンポーネントは、ID を管理するためのメンバーシップ サービスを実装します。特に、ECert と TCert の発行と失効を処理します。 ECert は長期的な ID 資格情報であり、TCert は匿名でリンクできない短期の ID 資格情報です。

順序付けサービス – 順序付けサービスまたはコンセンサス サービスは、トランザクションをブロック内の一連のノードに分類します。

順序付けサービスはピア プロセスから独立しており、ネットワーク上のすべてのチャネルのトランザクションを先着順で並べ替えます。順序付けサービスはプラグイン可能な実装をサポートしており、現在 SOLO と Kafka がデフォルトで実装されています。順序付けサービスはネットワーク全体に共通のバインディングであり、各メンバーに関連する暗号化マテリアルが含まれています。ピア – 台帳を維持し、チェーンコード コンテナを実行して台帳に対して読み取り/書き込み操作を実行するネットワーク エンティティ。ピアはメンバーによって所有および維持されます。

ポリシー – 戦略には、承認戦略、検証戦略、ブロック送信戦略、チェーンコード管理戦略、ネットワークチャネル管理戦略が含まれます。

提案 – チャネル内のピアに対する承認リクエストを提案します。各プロポーザルは、チェーンコードのインスタンス化またはチェーンコードの呼び出しのいずれかです。

Query – 現在の状態のキーの値を問い合わせるリクエスト。

ソフトウェア開発キット – SDKSDK は、チェーンコード アプリケーションを作成およびテストするための構造化ライブラリ環境を開発者に提供します。

SDK は標準インターフェイスを通じて完全に構成および拡張でき、署名付き暗号化アルゴリズム、ロギング フレームワーク、状態ストレージなどのコンポーネントは簡単に置き換えることができます。 SDK API はトランザクション処理に gRPC を使用し、メンバー サービス、ノード トラバーサル、およびイベント処理はすべてファブリックとの通信に使用されます。現在、SDK は Node.js、Java、Python をサポートしています。

状態データベース – stateDB チェーンコードから効率的に読み書きするために、現在の状態データは levelDB や couchDB を含む stateDB に保存されます。

システム チェーン – システム チェーンには、システム レベルでネットワークを定義する構成ブロックが含まれています。

システム チェーンは順序付けサービス内に存在し、チャネルと同様に、MSP 情報、ポリシー、および情報構成の情報を含む初期構成があります。ネットワーク全体に変更を加えると (新しい組織の参加や新しい順序付けノードの追加など)、新しい構成ブロックがシステム チェーンに追加されます。

システム チェーンは、チャネルまたはチャネルのグループの共通のバインディングとみなすことができます。たとえば、金融機関の集合体はコンソーシアム (システム チェーンで表される) を形成し、同じまたは異なるビジネスに基づいてチャネルを作成できます。

トランザクション – トランザクション チェーンコードの呼び出しまたはインスタンス化操作。 Invokeは台帳からの読み取り/書き込みセットをリクエストし、Instantiateはピア上でChaincodeコンテナを開始するリクエストを実行します。

要約:

上記は、最初のセクションで紹介したブロックチェーンの基礎知識です。退屈かもしれませんが、これらの用語を理解する必要があります。と内容 予備知識はコードを書くときと同じで関数名やキーワードを知っておく必要があり、これらをマスターすることで初めて仕事をより良く始めることができます。

以上が実践ブロックチェーン・ハイパーレジャーファブリック (1) 初心者向け10分入門の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。