2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

HyperLedger-fabricネットワークの構成と構築手順

Posted at

はじめに

Hyperledger-fabric(以下HLF)の基盤部分の理解があいまいだったので、まとめてみました。

【本記事で触れないこと】

  • Blockchainとは
  • Hyperledger-fabricとは
  • HLFネットワーク構築時の具体的なコマンド

HyperLedger-fabricネットワークの全体像

構築を始める前に、HLFネットワークの全体像を確認します。

image.png

要素 役割
R* HLFネットワークに参加する組織
C1 チャネル。 参加者が相互に通信するまとまり。参加者は複数のチャネルに所属することができる。(チャネルごとに、台帳やStateDBを保持する。)
CC1 HLFネットワークの構成情報やチャネルに参加する際のポリシー等をまとめたもの。(組織はこのポリシーに合意したうえでHLFネットワークに参加する。)
P* HLFネットワークを構成する。台帳とスマートコントラクトを保持する。
L* 台帳(Ledger)。トランザクションの履歴や結果、ネットワーク内の状態を保持する。
S* スマートコントラクト。 台帳に対して参照や更新などを行うロジック。
O トランザクションからブロックを作成し、各Peerに配布する。
A* クライアントアプリケーション。SDKを用いて、Peerに対してトランザクションを発行する※
CA* 認証局(Certificate Authority)。参加者に対して証明書の発行や失効を行う。(ここで発行された証明書を用いることで、各要素はトランザクションの発行や署名などが行える。)

※クライアントアプリケーションから発行されたトランザクションがどのようにHLFネットワーク内を伝播するかは下記参照ください。
https://qiita.com/Annoske/items/7e997461e4fd4c417aa6

補足:
あまり触れませんが、チャネルが複数ある場合は下記のような構成になります。
image.png

HyperLedger-fabricネットワークの構築手順

下記手順でHLFネットワークを構築します。

  1. ネットワークを作成する
  2. 認証局を設定する
  3. チャネルを作成し、参加者を所属させる
  4. チェーンコードを各Peerにインストールする
  5. クライアントアプリケーションをチャネルに接続する

ネットワークを作成する

image.png

まず、これから作成するHLFネットワークの構成情報やポリシーをまとめたChannel Configuration(CC1)を作成します。
CC1の中に、参加する組織(R*)を記載して、R1,R2,R0がHLFネットワークに参加することを明示します。

例)

- &Org1
    # DefaultOrg defines the organization which is used in the sampleconfig
    # of the fabric.git development environment
    Name: Org1MSP

    # ID to load the MSP definition as
    ID: Org1MSP

    MSPDir: ../organizations/peerOrganizations/org1.example.com/msp

    # Policies defines the set of policies at this level of the config tree
    # For organization policies, their canonical path is usually
    #   /Channel/<Application|Orderer>/<OrgName>/<PolicyName>
    Policies:
        Readers:
            Type: Signature
            Rule: "OR('Org1MSP.admin', 'Org1MSP.peer', 'Org1MSP.client')"
        Writers:
            Type: Signature
            Rule: "OR('Org1MSP.admin', 'Org1MSP.client')"
        Admins:
            Type: Signature
            Rule: "OR('Org1MSP.admin')"
        Endorsement:
            Type: Signature
            Rule: "OR('Org1MSP.peer')"

    # OrdererEndpoints is a list of all orderers this org runs which clients
    # and peers may to connect to to push transactions and receive blocks respectively.
    OrdererEndpoints:
        - "orderer.example.com:7050"

上記設定ファイル(configtx.yaml)の詳細は下記から確認できます。

認証局を設定する

image.png

次に、各組織にトランザクション実行可能なユーザを作成するために、認証局(CA*)を設定します。(組織ごと)

CA自体は、hyperledgerが公開しているリポジトリをもとに作成することができます。
https://hyperledger-fabric-ca.readthedocs.io/en/latest/users-guide.html#install

チャネルを作成し、参加者を所属させる

image.png

Peer・Ordererを作成し、チャネルに所属させます。

Peer・Ordererは下記からインストールできるDockerイメージをもとに作成できます。
https://hyperledger-fabric.readthedocs.io/en/release-1.4/install.html

チャネルの作成方法
https://hyperledger-fabric.readthedocs.io/en/latest/create_channel/create_channel_participation.html

チェーンコードを各Peerにインストールする

image.png

HLFネットワークに所属するすべてのPeerにチェーンコードをインストールします。

クライアントアプリケーションをチャネルに接続する

image.png

チェーンコードがPeerにインストールされ、チャネルに定義されると、クライアントアプリケーションはそのチェーンコードを参照することができます。

実際にクライアントアプリケーションがチェーンコードを実行する際、クライアントアプリケーションはPeerに対して「transaction proposal」を送信して、チェーンコードの実行を依頼します。

おわりに

今回は構築手順のイメージだけまとめてみました。
じゃあ実際にどんなライブラリ使ってどんなコマンド打って...みたいなのは別途まとめようと思います。

間違いあればご指摘ください!🙏

参考

https://hyperledger-fabric.readthedocs.io/en/latest/network/network.html
https://hyperledger-fabric.readthedocs.io/en/release-1.4/build_network.html#install-prerequisites

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?