© Hitachi, Ltd. 2023. All rights reserved.
Hyperledger Fabric 概説
日立製作所 研究開発グループ
2023/4/18
佐藤竜也
Hyperledger Meetup Tokyo 2023
1
© Hitachi, Ltd. 2023. All rights reserved.
本発表のアジェンダ
1. Hyperledger Fabricの概要 (8ページ)
2. Hyperledger Fabricの試し⽅ (1ページ)
3. Hyperledger Fabric Japanese Documentation WGの紹介 (1ページ)
2
© Hitachi, Ltd. 2023. All rights reserved.
1-1. Hyperledger Fabric
• エンタープライズ向けパーミッション型ブロックチェーンプラットフォーム
– ‘23年3⽉に新しいLong Term Support(LTS)版であるv2.5.0がリリース
– あらかじめ許可された参加「組織」でコンソーシアム(ブロックチェーンネットワーク)を形成
• 「組織」 (Organization) をトラストの単位とする
– 電⼦証明書(X.509)によるアイデンティティ
– スマートコントラクトは「チェーンコード」(chaincode)と呼ばれる
• 主な特徴
– データモデル: ブロックチェーンとステートデータベースを保持
– コンセンサス: Endorse-Order-Validateモデル (性能向上のためv1.0でアーキ⼤幅改定)
– データアクセス制御: レベルの異なるデータアクセス制御の仕組みを提供
Graduated
3
© Hitachi, Ltd. 2023. All rights reserved.
1-2. データモデル
• データモデルは(Versioned) Key-Value
• 各Peerは2種類の台帳 (Ledger) データを管理
– ブロックチェーン (Blockchain)
• 複数のトランザクション (TX) をブロックとしてまとめ、
そのブロックをつらねたもの
– ワールドステート (World State)
• Key, Valueの最新の値のスナップショット
– 全てのブロックの履歴を最初からたどれば復元可能
• State DB上で管理される
– LevelDB, CouchDBのいずれかを設定で選択可能
https://hyperledger-fabric.readthedocs.io/ja/latest/ledger/ledger.htmlを参考に作成
Ledger
Block
TX TX TX
Block
TX TX TX
Block
TX TX
key=Asset1, value={size:10, color: “red”}, v=0
key=Asset2, value={size:5, color: “blue”}, v=2
key=Asset3, value={size:5, color: “blue”}, v=1
・・・
決定
Blockchain
World State
・・・
4
© Hitachi, Ltd. 2023. All rights reserved.
1-3. Hyperledger Fabricの主要コンポーネント
Organization 1
Peer
Chaincode
(Smart contract)
Organization 2
Peer Chaincode
(Smart contract)
Organization 3
Chaincode
(Smart contract)
Client
Ordering
Service
Orderer
Orderer
Proposal
Endorsement
Endorsement
• エンドースされたTXを受け付
け順序付けし、複数TXを
まとめたブロックを⽣成
• ブロックをPeerに配布
• TXのリクエストを受け付けスマー
トコントラクトを実⾏しその結果を
返す (Endorsementと呼ばれる)
• 台帳(BC, ステート)を保持/管理
Peerから呼び出されTXリクエ
ストに応じた処理を実⾏
(ステートの読み出し/書き込み
はPeerに対して実施)
Ledger
Ledger
TX: Transaction
BC: Blockchain
5
© Hitachi, Ltd. 2023. All rights reserved.
1-4. コンセンサス処理フロー – 1. Endorse
• 3フェーズ
– Endorse
• SCを実⾏
(エンドースメント)
– Order
• TXの順序を決定
• ブロック⽣成/配布
– Validate
• TXのエンドースメント
とコンフリクトを検証
し、台帳を更新
Organization 1
Peer Chaincode
(Smart contract)
Organization 2
Peer Chaincode
(Smart contract)
Organization 3
Peer Chaincode
(Smart contract)
Client
Ordering
Service
Orderer
Orderer
Orderer
Proposal
Endorsement
Endorsement
TX: Transaction
SC: Smart contract
6
© Hitachi, Ltd. 2023. All rights reserved.
1-4. コンセンサス処理フロー – 2. Order
• 3フェーズ
– Endorse
• SCを実⾏
(エンドースメント)
– Order
• TXの順序を決定
• ブロック⽣成/配布
– Validate
• TXのエンドースメント
とコンフリクトを検証
し、台帳を更新
Organization 1
Peer Chaincode
(Smart contract)
Organization 2
Peer Chaincode
(Smart contract)
Organization 3
Peer Chaincode
(Smart contract)
Client
Ordering
Service
Orderer
Orderer
Orderer
Transaction
Endorsement
Endorsement Block
Block
Block
TX: Transaction
SC: Smart contract
7
© Hitachi, Ltd. 2023. All rights reserved.
1-4. コンセンサス処理フロー – 3. Validate
• 3フェーズ
– Endorse
• SCを実⾏
(エンドースメント)
– Order
• TXの順序を決定
• ブロック⽣成/配布
– Validate
• TXのエンドースメント
とコンフリクトを検証
し、台帳を更新
Organization 1
Peer Chaincode
(Smart contract)
Organization 2
Peer Chaincode
(Smart contract)
Organization 3
Peer Chaincode
(Smart contract)
Ordering
Service
Orderer
Orderer
Orderer
Block
Transaction
Transaction
Transaction
Validate
&
Commit
Block
Transaction
Transaction
Transaction
Validate
&
Commit
Block
Transaction
Transaction
Transaction
Validate
&
Commit
Ledger
Ledger
Ledger
TX: Transaction
SC: Smart contract
8
© Hitachi, Ltd. 2023. All rights reserved.
1-5. Hyperledger Fabricにおけるデータアクセス制御
• チャネル
– コンソーシアムに所属する組織の部分集合
(イメージとしてはサブネットワーク)
– LedgerやChaincodeはチャネルごとに管理される
• 少なくとも⼀つのチャネルが必要
– チャネル内ではブロック・ステート・Chaincodeは共有
• プライベートデータ
– チャネル内でアクセス可能な組織を限定したデータ
• 範囲などはプライベートデータコレクションとして定義
– ブロック(チャネル内すべての組織に公開)には、
書き込んだキー・値のハッシュ値のみ記録
• データプライバシーを維持しつつ検証可能とする
Org1 Org2 Org3 Org4
CH1
CH2
PDC
L1 L1
L2 L2
PD PD
ハッシュ値のみ
公開/記録
CH: Channel
L: Ledger
PDC: Private Data Collection
PD: Private Data
L1 L1
L2
9
© Hitachi, Ltd. 2023. All rights reserved.
1-6. バージョンごとの機能改善状況
• v2.0
– チェーンコードのライフサイクル管理が⾮中央集権的に
• v2.2 (これまでのLTS版: 2023年末までメンテナンスされる予定)
• v2.3
– 「システムチャネル」によるOrdererの組織管理を廃⽌
– Ledgerのスナップショット機能
• 新規追加Peerが最新ステートに追いつく時間を削減
• v2.4
– Fabric GatewayをSDKからpeerに統合
• ピア・チャネル・チェーンコードの状況を把握し、適切なピア等を選びリクエストを送信する機能
– Peerのチャネルからの脱退に対応
• v2.5 (LTS リリース最新版: 2023年3⽉リリース)
– プライベートデータの削除 (purge) に対応
• v3.x (開発中)
– OrdererのコンセンサスアルゴリズムにByzantine Fault Tolerance (BFT) 対応予定
10
© Hitachi, Ltd. 2023. All rights reserved.
2. Hyperledger Fabricを試してみる
• ここではFabricを試す上で役⽴ちそうな公式ドキュメント/リポジトリ内の情報を紹介
⽬的 リソース 概要
触ってみる 公式ドキュメントの
テストネットワーク
チュートリアル
サンプルのテスト⽤ネットワーク(fabric-samples/test-network)を
⽤いて、Fabricネットワークの起動とTX実⾏を確認できる
基本チュートリアル
各機能や
概念を知る
公式ドキュメント • チュートリアルの続きでアプリ開発や各機能の使い⽅提⽰
• キーコンセプト、アプリ開発者/運⽤者向けの情報など
fabric-samples 上記でも参照されるFabricの公式サンプル集リポジトリ
より⾼度な
使い⽅を
知る
fabric-samples/
test-network-k8s
Kubernetes(K8s)環境版のテストネットワーク実装
(現状はローカルK8s環境で試すことを想定)
fabric-samples/
full-stack-asset-
transfer-guide
Hyperledger Global Forumでのワークショップ内容を
マージしたもの。最新機能や周辺PJも駆使した⾼度な
使い⽅(SC開発、アプリ開発、K8s上へのデプロイ)を紹介
11
© Hitachi, Ltd. 2023. All rights reserved.
3. Fabric Japanese Documentation Working Groupの紹介
• コミュニティ内でFabric公式ドキュメントの⽇本語翻訳活動を推進中
• 翻訳状況: LTS版を対象に既に⽇本語版ドキュメントが利⽤可能
– v2.2 (これまでのLTS版): ほぼすべてのページの⽇本語翻訳済
– v2.5 (新LTS版): 正式リリースを受けてこれから随時翻訳・更新
• ⽇本語版ドキュメントへのアクセス⽅法 (v2.2の場合)
– https://hyperledger-fabric.readthedocs.io/ja/release-2.2
– または英語版から⾔語とバージョンを選択
• languages: ja, version: release-2.2
• 宣伝したいこと
– コミュニティ内でのレビューに基づいた精度の⾼い翻訳となっているのでぜひご活⽤ください︕
– v2.5版の⽇本語翻訳活動に協⼒頂けるメンバーも募集中です︕
– Hyperledger⽤Discordに専⽤チャンネルもあるのでお気軽に⽇本語で問合せください︕
(#fabric-japanese)
((*) チャットサービス)
Trademarks
• Hyperledger、Hyperledger Fabric、Kubernetesは、The Linux Foundationの
商標または登録商標です
• GitHubは、GitHub Inc.の商標または登録商標です
• その他記載の会社名、製品名、サービス名、その他固有名詞は、それぞれの会社
の商標または登録商標です
• 本発表中の⽂章、図では、TM、🄬マークは表記しておりません
Hyperledger Fabric 概説

Hyperledger Fabric 概説

  • 1.
    © Hitachi, Ltd.2023. All rights reserved. Hyperledger Fabric 概説 日立製作所 研究開発グループ 2023/4/18 佐藤竜也 Hyperledger Meetup Tokyo 2023
  • 2.
    1 © Hitachi, Ltd.2023. All rights reserved. 本発表のアジェンダ 1. Hyperledger Fabricの概要 (8ページ) 2. Hyperledger Fabricの試し⽅ (1ページ) 3. Hyperledger Fabric Japanese Documentation WGの紹介 (1ページ)
  • 3.
    2 © Hitachi, Ltd.2023. All rights reserved. 1-1. Hyperledger Fabric • エンタープライズ向けパーミッション型ブロックチェーンプラットフォーム – ‘23年3⽉に新しいLong Term Support(LTS)版であるv2.5.0がリリース – あらかじめ許可された参加「組織」でコンソーシアム(ブロックチェーンネットワーク)を形成 • 「組織」 (Organization) をトラストの単位とする – 電⼦証明書(X.509)によるアイデンティティ – スマートコントラクトは「チェーンコード」(chaincode)と呼ばれる • 主な特徴 – データモデル: ブロックチェーンとステートデータベースを保持 – コンセンサス: Endorse-Order-Validateモデル (性能向上のためv1.0でアーキ⼤幅改定) – データアクセス制御: レベルの異なるデータアクセス制御の仕組みを提供 Graduated
  • 4.
    3 © Hitachi, Ltd.2023. All rights reserved. 1-2. データモデル • データモデルは(Versioned) Key-Value • 各Peerは2種類の台帳 (Ledger) データを管理 – ブロックチェーン (Blockchain) • 複数のトランザクション (TX) をブロックとしてまとめ、 そのブロックをつらねたもの – ワールドステート (World State) • Key, Valueの最新の値のスナップショット – 全てのブロックの履歴を最初からたどれば復元可能 • State DB上で管理される – LevelDB, CouchDBのいずれかを設定で選択可能 https://hyperledger-fabric.readthedocs.io/ja/latest/ledger/ledger.htmlを参考に作成 Ledger Block TX TX TX Block TX TX TX Block TX TX key=Asset1, value={size:10, color: “red”}, v=0 key=Asset2, value={size:5, color: “blue”}, v=2 key=Asset3, value={size:5, color: “blue”}, v=1 ・・・ 決定 Blockchain World State ・・・
  • 5.
    4 © Hitachi, Ltd.2023. All rights reserved. 1-3. Hyperledger Fabricの主要コンポーネント Organization 1 Peer Chaincode (Smart contract) Organization 2 Peer Chaincode (Smart contract) Organization 3 Chaincode (Smart contract) Client Ordering Service Orderer Orderer Proposal Endorsement Endorsement • エンドースされたTXを受け付 け順序付けし、複数TXを まとめたブロックを⽣成 • ブロックをPeerに配布 • TXのリクエストを受け付けスマー トコントラクトを実⾏しその結果を 返す (Endorsementと呼ばれる) • 台帳(BC, ステート)を保持/管理 Peerから呼び出されTXリクエ ストに応じた処理を実⾏ (ステートの読み出し/書き込み はPeerに対して実施) Ledger Ledger TX: Transaction BC: Blockchain
  • 6.
    5 © Hitachi, Ltd.2023. All rights reserved. 1-4. コンセンサス処理フロー – 1. Endorse • 3フェーズ – Endorse • SCを実⾏ (エンドースメント) – Order • TXの順序を決定 • ブロック⽣成/配布 – Validate • TXのエンドースメント とコンフリクトを検証 し、台帳を更新 Organization 1 Peer Chaincode (Smart contract) Organization 2 Peer Chaincode (Smart contract) Organization 3 Peer Chaincode (Smart contract) Client Ordering Service Orderer Orderer Orderer Proposal Endorsement Endorsement TX: Transaction SC: Smart contract
  • 7.
    6 © Hitachi, Ltd.2023. All rights reserved. 1-4. コンセンサス処理フロー – 2. Order • 3フェーズ – Endorse • SCを実⾏ (エンドースメント) – Order • TXの順序を決定 • ブロック⽣成/配布 – Validate • TXのエンドースメント とコンフリクトを検証 し、台帳を更新 Organization 1 Peer Chaincode (Smart contract) Organization 2 Peer Chaincode (Smart contract) Organization 3 Peer Chaincode (Smart contract) Client Ordering Service Orderer Orderer Orderer Transaction Endorsement Endorsement Block Block Block TX: Transaction SC: Smart contract
  • 8.
    7 © Hitachi, Ltd.2023. All rights reserved. 1-4. コンセンサス処理フロー – 3. Validate • 3フェーズ – Endorse • SCを実⾏ (エンドースメント) – Order • TXの順序を決定 • ブロック⽣成/配布 – Validate • TXのエンドースメント とコンフリクトを検証 し、台帳を更新 Organization 1 Peer Chaincode (Smart contract) Organization 2 Peer Chaincode (Smart contract) Organization 3 Peer Chaincode (Smart contract) Ordering Service Orderer Orderer Orderer Block Transaction Transaction Transaction Validate & Commit Block Transaction Transaction Transaction Validate & Commit Block Transaction Transaction Transaction Validate & Commit Ledger Ledger Ledger TX: Transaction SC: Smart contract
  • 9.
    8 © Hitachi, Ltd.2023. All rights reserved. 1-5. Hyperledger Fabricにおけるデータアクセス制御 • チャネル – コンソーシアムに所属する組織の部分集合 (イメージとしてはサブネットワーク) – LedgerやChaincodeはチャネルごとに管理される • 少なくとも⼀つのチャネルが必要 – チャネル内ではブロック・ステート・Chaincodeは共有 • プライベートデータ – チャネル内でアクセス可能な組織を限定したデータ • 範囲などはプライベートデータコレクションとして定義 – ブロック(チャネル内すべての組織に公開)には、 書き込んだキー・値のハッシュ値のみ記録 • データプライバシーを維持しつつ検証可能とする Org1 Org2 Org3 Org4 CH1 CH2 PDC L1 L1 L2 L2 PD PD ハッシュ値のみ 公開/記録 CH: Channel L: Ledger PDC: Private Data Collection PD: Private Data L1 L1 L2
  • 10.
    9 © Hitachi, Ltd.2023. All rights reserved. 1-6. バージョンごとの機能改善状況 • v2.0 – チェーンコードのライフサイクル管理が⾮中央集権的に • v2.2 (これまでのLTS版: 2023年末までメンテナンスされる予定) • v2.3 – 「システムチャネル」によるOrdererの組織管理を廃⽌ – Ledgerのスナップショット機能 • 新規追加Peerが最新ステートに追いつく時間を削減 • v2.4 – Fabric GatewayをSDKからpeerに統合 • ピア・チャネル・チェーンコードの状況を把握し、適切なピア等を選びリクエストを送信する機能 – Peerのチャネルからの脱退に対応 • v2.5 (LTS リリース最新版: 2023年3⽉リリース) – プライベートデータの削除 (purge) に対応 • v3.x (開発中) – OrdererのコンセンサスアルゴリズムにByzantine Fault Tolerance (BFT) 対応予定
  • 11.
    10 © Hitachi, Ltd.2023. All rights reserved. 2. Hyperledger Fabricを試してみる • ここではFabricを試す上で役⽴ちそうな公式ドキュメント/リポジトリ内の情報を紹介 ⽬的 リソース 概要 触ってみる 公式ドキュメントの テストネットワーク チュートリアル サンプルのテスト⽤ネットワーク(fabric-samples/test-network)を ⽤いて、Fabricネットワークの起動とTX実⾏を確認できる 基本チュートリアル 各機能や 概念を知る 公式ドキュメント • チュートリアルの続きでアプリ開発や各機能の使い⽅提⽰ • キーコンセプト、アプリ開発者/運⽤者向けの情報など fabric-samples 上記でも参照されるFabricの公式サンプル集リポジトリ より⾼度な 使い⽅を 知る fabric-samples/ test-network-k8s Kubernetes(K8s)環境版のテストネットワーク実装 (現状はローカルK8s環境で試すことを想定) fabric-samples/ full-stack-asset- transfer-guide Hyperledger Global Forumでのワークショップ内容を マージしたもの。最新機能や周辺PJも駆使した⾼度な 使い⽅(SC開発、アプリ開発、K8s上へのデプロイ)を紹介
  • 12.
    11 © Hitachi, Ltd.2023. All rights reserved. 3. Fabric Japanese Documentation Working Groupの紹介 • コミュニティ内でFabric公式ドキュメントの⽇本語翻訳活動を推進中 • 翻訳状況: LTS版を対象に既に⽇本語版ドキュメントが利⽤可能 – v2.2 (これまでのLTS版): ほぼすべてのページの⽇本語翻訳済 – v2.5 (新LTS版): 正式リリースを受けてこれから随時翻訳・更新 • ⽇本語版ドキュメントへのアクセス⽅法 (v2.2の場合) – https://hyperledger-fabric.readthedocs.io/ja/release-2.2 – または英語版から⾔語とバージョンを選択 • languages: ja, version: release-2.2 • 宣伝したいこと – コミュニティ内でのレビューに基づいた精度の⾼い翻訳となっているのでぜひご活⽤ください︕ – v2.5版の⽇本語翻訳活動に協⼒頂けるメンバーも募集中です︕ – Hyperledger⽤Discordに専⽤チャンネルもあるのでお気軽に⽇本語で問合せください︕ (#fabric-japanese) ((*) チャットサービス)
  • 13.
    Trademarks • Hyperledger、Hyperledger Fabric、Kubernetesは、TheLinux Foundationの 商標または登録商標です • GitHubは、GitHub Inc.の商標または登録商標です • その他記載の会社名、製品名、サービス名、その他固有名詞は、それぞれの会社 の商標または登録商標です • 本発表中の⽂章、図では、TM、🄬マークは表記しておりません