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

はじめに

みなさん、こんにちは。私の名前はマイケルです。私は現在、上海のインターネット会社で働いています。政府がブロックチェーン プロジェクトを非常に重視しているため、人々はブロックチェーン プロジェクトを重視し始めています。 「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 までご連絡ください。
「文字列」パッケージを使用して、ステップバイステップで文字列を操作する方法「文字列」パッケージを使用して、ステップバイステップで文字列を操作する方法May 13, 2025 am 12:12 AM

Goの文字列パッケージは、さまざまな文字列操作機能を提供します。 1)文字列を使用して、サブストリングを確認します。 2)文字列を使用して、ストリングをサブストリングスライスに分割します。 3)文字列を通して文字列をマージします。 4)文字列または文字列を使用して、文字列の最初と端でブランクまたは指定された文字を削除します。 5)指定されたすべてのサブストリングを文字列に置き換えます。ReplaceAll。 6)文字列を使用して、hasprefixまたは文字列hassuffixを使用して、文字列の接頭辞または接尾辞を確認します。

文字列パッケージに行く:私のコードを改善する方法は?文字列パッケージに行く:私のコードを改善する方法は?May 13, 2025 am 12:10 AM

GO言語文字列パッケージを使用すると、コードの品質が向上します。 1)文字列を使用して()join()を使用して、パフォーマンスのオーバーヘッドを避けるために、文字列アレイをエレガントに接続します。 2)strings.split()とstrings.contains()を組み合わせて、テキストを処理し、ケースの感度の問題に注意を払います。 3)文字列の乱用を避け、replace()を回避し、多数の置換に正規表現を使用することを検討します。 4)文字列を使用して、ビルダーを使用して、頻繁にスプライシング文字列の性能を向上させます。

GO BYTESパッケージで最も有用な機能は何ですか?GO BYTESパッケージで最も有用な機能は何ですか?May 13, 2025 am 12:09 AM

GoのBYTESパッケージは、バイトスライスを処理するためのさまざまな実用的な機能を提供します。 1.bites.containsは、バイトスライスに特定のシーケンスが含まれているかどうかを確認するために使用されます。 2.bites.splitは、バイトスライスをスモールピースに分割するために使用されます。 3.bites.joinは、複数のバイトスライスを1つに連結するために使用されます。 4.bites.trimspaceは、バイトスライスのフロントブランクとバックブランクを削除するために使用されます。 5.バイト。エクアルは、2つのバイトスライスが等しいかどうかを比較するために使用されます。 6.bytes.indexは、大規模なスライスでサブスライスの開始インデックスを見つけるために使用されます。

Goの「エンコーディング/バイナリ」パッケージを使用したバイナリデータ処理の習得:包括的なガイドGoの「エンコーディング/バイナリ」パッケージを使用したバイナリデータ処理の習得:包括的なガイドMay 13, 2025 am 12:07 AM

エンコード/binaryPackageIngoisESSENTINESTENTINESTINESTIDANDARDIZEDWAIDTOREADANDWRITEBINIRYDATA、クロスプラットフォームコンパティビティアンドハンドリングの可能性を確保することを確認します

「Bytes」パッケージをすばやく参照します「Bytes」パッケージをすばやく参照しますMay 13, 2025 am 12:03 AM

byteSpackageingocialforforhandlingbyteslicesandbuffers、offering foreffisememorymanagementanddatamanipulation.1)Itprovidesは、バイテッツを使用して、n

マスタリングゴー文字列:「文字列」パッケージに深く潜るマスタリングゴー文字列:「文字列」パッケージに深く潜るMay 12, 2025 am 12:05 AM

テキストデータを処理するためのツールを提供し、基本的な文字列から高度な正規表現のマッチングにスプライシングするためのツールを提供するため、Goの「文字列」パッケージに注意する必要があります。 1)「文字列」パッケージは、パフォーマンスの問題を回避するために文字列をスプライスするために使用される結合関数など、効率的な文字列操作を提供します。 2)contensany関数などの高度な関数が含まれており、文字列に特定の文字セットが含まれているかどうかを確認します。 3)交換関数は、文字列のサブストリングを交換するために使用され、交換順序とケースの感度に注意を払う必要があります。 4)分割関数は、セパレーターに従って文字列を分割することができ、しばしば正規表現処理に使用されます。 5)使用するときは、パフォーマンスを考慮する必要があります。

Goの「エンコード/バイナリ」パッケージ:バイナリ操作のためのあなたの頼みGoの「エンコード/バイナリ」パッケージ:バイナリ操作のためのあなたの頼みMay 12, 2025 am 12:03 AM

「エンコード/バイナリ」パッケージを包みます

バイトスライス操作チュートリアル:「バイト」パッケージをマスターするバイトスライス操作チュートリアル:「バイト」パッケージをマスターするMay 12, 2025 am 12:02 AM

GOでBYTESパッケージをマスターすると、コードの効率と優雅さを向上させることができます。 1)バイナーズパッケージは、バイナリデータの解析、ネットワークプロトコルの処理、およびメモリ管理に不可欠です。 2)bytes.bufferを使用して、バイトスライスを徐々に構築します。 3)BYTESパッケージは、バイトスライスの検索、交換、およびセグメント化の関数を提供します。 4)BYTES.READERタイプは、特にI/O操作でのバイトスライスのデータを読み取るのに適しています。 5)BYTESパッケージは、GoのGarbage Collectorと協力して機能し、ビッグデータ処理の効率を向上させます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境