SlideShare a Scribd company logo
Hyperledger Fabric 簡単構築ツール minifabricのご紹介
~productionへの移行をminifabric で加速~
2021.10.7
富士通(株) データ&セキュリティ研究所
中川 格
Copyright 2021 FUJITSU LIMITED
1
@ Hyperledger Meetup Tokyo
自己紹介 (中川 格 / Itaru NAKAGAWA)
現所属に
Copyright 2021 FUJITSU LIMITED
2019.4
2020.12
Hyperledger Fabric の世界と関わりをもつ
minifabric と出会い、使い始める
2021.1
2021.4
minifabricへの貢献開始(利用者の立場からカイゼン)
(株)富士通研究所 入社。 ネットワーキングやIoT関連の研究開発を担当
今日
趣味:
コロナ前
コロナ後
minifabric commiter に就任 (現: コミット件数2位)
2021.8
担当部分
Fabric アプリケーション
Hyperledger Fabric
Fabric API
担当部分を動かすには
Fabric環境が必要
※以降、Hyperledger Fabric を 単に “Fabric”とよぶことがあります
@itaru2622
2
Hyperledger Fabricとは
エンタープライズ向けのブロックチェーンプラットフォーム
ユースケース:金融系からサプライチェーンまで様々
クラウド各社がマネージドサービスとして提供
Copyright 2021 FUJITSU LIMITED
“2nd Global Enterprise Blockchain Benchmarking Study”
ケンブリッジ大学, 2019年調査
Hyperledger Fabric
48%
Hyperledger Fabric ネットワークの概要
◆コンポーネント: 3種
 Peer 台帳(ブロック)を保持
 Orderer トランザクション管理とブロック生成を担当
 CA 証明書管理や認証を担当
◆ 台帳の読み書きにはchaincode(スマートコントラクト)を用いる
◆ 抽象概念:2つ
 チャンネル 台帳の共有範囲の制御に用いられる。
同一チャンネル内のPeerの台帳は同期される
 Organization 企業や組織に対応。
全コンポーネントは何かのOrganizationに所属
Peer
Peer
CA
台帳
CA
Peer
Peer
台帳
チャンネル
chaincode chaincode
アプリケーション
org1 org2
Orderer Orderer
3
before minifabric: Fabric構築はハードワーク
Copyright 2021 FUJITSU LIMITED
configtx
crypto-config
certs params
docker run:
cert path
endpoint
policy:
cn:
運試し
<=Start FIN=>
STOP
1
1
4
通信開始.
最初の難関
設定:相互に関連し、変更は多か所に影響
TODO
1.
:
100 ….
:
endpoint
cert path
数行~
最初の構築成功には… 1週間かかった
Fabricのネットワーク図
変更漏れとの戦い
タイプミスとの戦い x 100本ノック
オペレーション:大量の長いコマンド
4
before minifabric: Fabric構築はハードワーク
Copyright 2021 FUJITSU LIMITED
configtx
crypto-config
certs params
docker run:
cert path
endpoint
policy:
cn:
運試し
<=Start FIN=>
STOP
1
1
4
Organizations:
- &org0
ID: org0
AnchorPeers: #アクセス先エンドポイント
- Host: peer1.org0.example.com Port: 7051
Policies:
Readers:
Type: Signature
Rule: "OR('org0.admin', 'org0.peer', 'org0.client’)”
Admins:
Type: Signature
Rule: "OR('org0.admin')"
:
Channel: &ChannelDefaults
Policies:
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
configtxの具体例(一部)
TODO
1.
:
100 ….
:
endpoint
cert path
各組織・コンポーネントや
チャンネルの構成
設定:相互に関連し、変更は多か所に影響
オペレーション:大量の長いコマンド
よくある例
自分のマシンから使う:OK 他から:NG
5
before minifabric: Fabric構築はハードワーク
Copyright 2021 FUJITSU LIMITED
configtx
crypto-config
certs params
docker run:
cert path
endpoint
policy:
cn:
運試し
<=Start FIN=>
STOP
1
1
4
Organizations:
- &org0
ID: org0
AnchorPeers: #アクセス先エンドポイント
- Host: peer1.org0.example.com Port: 7051
Policies:
Readers:
Type: Signature
Rule: "OR('org0.admin', 'org0.peer', 'org0.client’)”
Admins:
Type: Signature
Rule: "OR('org0.admin')"
:
Channel: &ChannelDefaults
Policies:
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
configtxの具体例(一部)
TODO
1.
:
100 ….
:
endpoint
cert path
各組織・コンポーネントや
チャンネルの構成
設定:相互に関連し、変更は多か所に影響
オペレーション:大量の長いコマンド
よくある例
自分のマシンから使う:OK 他から:NG
うまくいかない…
他サンプルの値にしてみるか?
⇒ org0.memberに変更
・難解な用語:理解前の変更は失敗のもと
6
before minifabric: Fabric構築はハードワーク
Copyright 2021 FUJITSU LIMITED
configtx
crypto-config
certs params
docker run:
cert path
endpoint
policy:
cn:
運試し
<=Start FIN=>
STOP
1
1
4
Organizations:
- &org0
ID: org0
AnchorPeers: #アクセス先エンドポイント
- Host: peer1.org0.example.com Port: 7051
Policies:
Readers:
Type: Signature
Rule: "OR('org0.admin', 'org0.peer', 'org0.client’)”
Admins:
Type: Signature
Rule: "OR('org0.admin')"
:
Channel: &ChannelDefaults
Policies:
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
configtxの具体例(一部)
TODO
1.
:
100 ….
:
endpoint
cert path
各組織・コンポーネントや
チャンネルの構成
設定:相互に関連し、変更は多か所に影響
オペレーション:大量の長いコマンド
よくある例
自分のマシンから使う:OK 他から:NG
・難解な用語:理解前の変更は失敗のもと
他マシンから使うには
実際のIPやポートを指定する
・難解な用語:理解前の変更は失敗のもと
・エンドポイント: 各構築先に合わせて指定
⇒設計と実際が違うと構築失敗
7
before minifabric: Fabric構築はハードワーク
Copyright 2021 FUJITSU LIMITED
configtx
crypto-config
certs params
docker run:
cert path
endpoint
policy:
cn:
運試し
<=Start FIN=>
STOP
1
1
4
上記で1操作分。こういうのが100件以上。
export
CORE_PEER_ADDRESS=peer1.org0.example.com:7051
export ORDERER_ADDRESS=orderer1.example.com:7050
export CORE_PEER_LOCALMSPID=org0
export
CORE_PEER_MSPCONFIGPATH=/certs/peerOrganizations
/org0.example.com/users/Admin@org0.example.com/msp
export CORE_PEER_TLS_ROOTCERT_FILE=…/tls/ca.crt
export ORDERER_TLS_CA=/certs/…/tls/ca.crt
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_ID=cli
peer channel create -c mychannel -f mychannel.tx -o
$ORDERER_ADDRESS --cafile $ORDERER_TLS_CA --tls
TODO
1.
:
100 ….
:
endpoint
cert path
オペレーション:大量の長いコマンド
最初の難関
(通信開始)
設定:相互に関連し、変更は多か所に影響
エラー発生で最初からやり直し…もたびたび発生
オペレーション具体例:チャンネル作成
8
環境構築あるある Fabric編
Copyright 2021 FUJITSU LIMITED
Person.X
組織名変えて
従来の方法
トライアルでFabricを使いたいんだけど
組織増やして
新version使いたい
別マシンに移したい
9
環境構築あるある Fabric編
Copyright 2021 FUJITSU LIMITED
Person.X
組織名変えて
数日かかる
従来の方法
トライアルでFabricを使いたいんだけど
組織増やして
1週間後に
・・・
・・・
数日かかる
数日かかる
・・・
早めによろしく!
設定やコマンドが変わる
所に注意
新version使いたい
別マシンに移したい ・・・ 数日かかる
10
環境構築あるある Fabric編
Copyright 2021 FUJITSU LIMITED
Person.X
組織名変えて
数日かかる
従来の方法
トライアルでFabricを使いたいんだけど
組織増やして
1週間後に
・・・
別の系を作りたい。
構築方法教えて
(わかりやすく) n年かかる
・・・
数日かかる
数日かかる
・・・
早めによろしく!
設定やコマンドが変わる
所に注意
新version使いたい
・・・
ツール探さねば
別マシンに移したい ・・・
ツール欲しい・・・
数日かかる
11
with minifabric: Fabric構築は簡単
https://github.com/hyperledger-labs/minifabric
チェックリスト
~1分 設定の作成
~5分 オペレーション:コマンド1発
前提条件
 OS: Linux or Win10
 インターネットアクセス
 docker
$minifab up
オペレーション: 簡単・短い
カスタマイズ用オプション:
- fabric versionの指定(1.4~2.4)
- chaincodeの指定
- channel名の指定 など
$minifab cleanup
@全削除時
@構築時
fabric:
cas:
- "ca1.org0.example.com“
peers:
- "peer1.org0.example.com“
orderers:
- "orderer1.example.com“
settings:
ca:
peer:
orderer:
FABRIC_LOGGING_SPEC: DEBUG
# the default goproxy
# goproxy: https://proxy.golang.org,direct
# set the endpoint address to override detected IP address
# endpoint_address: 104.196.45.144
# set the docker network name
netname: "mysite"
# set the extra optins for docker run command
# container_options: "--restart=always …"
設定:簡単(spec.yaml)
1ファイル、相互関連なし
名前リストのみ
名前や件数:自由
必要なときだけ変更
12
Before/After minifabric
Copyright 2021 FUJITSU LIMITED
phase Before After
Fabric network 設計
設定の 書き下し
証明書生成
全インスタンス起動
チャンネル作成
チャンネル参加
anchor peer 更新
connection profile生成
chaincode インストール
chaincode 承認
chaincode コミット
chaincode 初期化
ハードコーディングありfor 労力削減
- Policies
- Passwords
1週間 数分
第一関門
制限事項なし
多数 コマンド1発
大変 簡単
fabric version差
は要自己解決
fabric version変更は簡単
設定
オペレーション
運試し
<=Start FIN=>
STOP
セキュリティに絡む部分
13
fabric:
cas:
- "ca1.org0.example.com"
- "ca1.org1.example.com“
peers:
- "peer1.org0.example.com"
- "peer2.org0.example.com"
- "peer1.org1.example.com"
- "peer2.org1.example.com“
:
orderers:
- "orderer1.example.com"
- "orderer2.example.com"
- "orderer3.example.com"
Type:
- Peer用
- Orderer用
minifabric の設定ファイル spec.yaml 作成方法 (名前リスト)
Copyright 2021 FUJITSU LIMITED
ドメイン名(≒organization) Type ホスト名 (1件以上) CA名
org0.example.com Peer peer1, peer2 ca1
org1.example.com Peer peer1, peer2 ca1
example.com Orderer orderer1,orderer2, orderer3 ー
peer1
peer2
ca1
peer1
peer2
ca1
orderer1
orderer2
orderer3
グループわけ
FQDNで列挙
ドット(.)でつなげる
1
3
spec.yaml完成
2
表をイメージし・・・
* ドメイン名は重複しないこと
4 ホスト名 ドメイン名
CAの件数
Peer用: 1件以上
Oderer用:0件でもok
ca, peer, orderer
FQDN=
org0.example.com
〃
〃
org1.example.com
〃
〃
example.com
〃
〃
※orderer件数は奇数にする(1以上)
14
minifabric アーキテクチャ: 簡単・フレキシブルな構築の実現方法
Copyright 2021 FUJITSU LIMITED
minifab
コマンド docker
リポジトリ
Playbooks
(workflow)
コマンド
設定
Fabric
構築の知識
Templates
実行(構築オペレーション)
minifab
コンテナ
起動
Fabric 構築手順
タイプミスなし
名前・件数:自由
エンドポイント
CLI
実行
・実行時の引数
・spec.yaml
engine
{{ }}
playbooks
フォルダ内
vars フォルダに出力・保存
configtx、crypto-config
構築コマンド、証明書、 ・・・
①
②実行
出力
ユーザ指定
実際の構築操作
minifabコンテナ内
15
Minifabricの柔軟性
Copyright 2021 FUJITSU LIMITED
項目 備考 Reference
Y Fabricの組織名やコンポーネント名の指定 自由 前ページ参照
Y Fabricの組織数やpeer数 自由 (ホスト性能内 or 制限ナシ@k8s) 前ページ参照
Y Fabric versionの選択 オプション ‘-i ver’ (1.4.4~2.4) CI@
Y 自分のchaincode(スマートコントラクト) 利用 予約フォルダに置いてオプション指定
(‘ -n chaincode名 -l 言語)
docs@
Y chaincode のアップグレード サブコマンド ‘minifab ccup -v newver” cmd refs
Y chaincode実行 (アプリ開発ナシで) サブコマンド ‘minifab invoke’ docs@
Y 稼働中Fabricの拡張(新組織追加) minifabric のgithubページ参照 docs@
Y 台帳へのリッチクエリ検索 オプション ‘-s couchdb’ cmd refs
Y チャンネル名の指定 オプション ‘-c yourchannel’ cmd refs
Y コンテナ群の起動のみ(チャンネル作成など省略) サブコマンド ‘minifab netup’ cmd refs
N public認証局発行の証明書利用 未サポート。現状オレオレ証明書のみ
about more … https://github.com/hyperledger-
labs/minifabric/tree/main/docs
16
Demo: playing movie
minifabric youtube playlist:
https://www.youtube.com/playlist?list=PL0MZ85B_96CExhq0YdHLPS5cmSBvSmwyO
Copyright 2021 FUJITSU LIMITED
https://youtu.be/QCsKQ1S4C9E?list=PL0MZ85B_96CExhq0YdHLPS5cmSBvSmwyO&t
17
Copyright 2021 FUJITSU LIMITED
~修了証書~
あなたはFabric構築に必要な事項を習得済です
minifabric インストール方法
構築コマンド (minifab up)
終了コマンド (minifab cleanup)
カスタム環境の作りかた① 設定ファイル spec.yaml とアレンジ方法
カスタム環境の作りかた② コマンドオプション各種 (minifab -h ほか)
ご自身でFabricを構築・ご活用ください
18
明日以降
Copyright 2021 FUJITSU LIMITED
Person.X
minifabric
数日かかる
数分
従来の方法
・・・ 選ぶのは
どっち
あなた 構築ツール
minifabric使うと
あなたも簡単に作れますよ!
でもこう言ってみませんか?
組織名変えて
トライアルでFabricを使いたいんだけど
組織増やして
別の系を作りたい。
構築方法教えて
(わかりやすく)
新version使いたい
別マシンに移したい
19
minifabric の利点
Copyright 2021 FUJITSU LIMITED
Trial / Sandbox など
ユースケース:
・新しいことを試す
・Pull Reqのマージ前テスト
・issueの再現テスト・修正環境
minifabricで構築
‘minifabric up’ はgithub actions(CI workflow)で動作済。
Production環境
他手段利用
minifabric
簡単・すぐに作れる
nightly
beta
issue
fragile
Welcome
使い捨てもできるFabric環境を得た
20
発表者自身の使い方
Copyright 2021 FUJITSU LIMITED
VMイメージ(共通)
* minifabric
* docker
* 他ツール
ソースリポジトリ
(用途別)
VM をコピーしてから
minifab up
main branch feature branch fixing branch
VM1 VM2 VM3
新しいことを試す issue再現・修正
必要になった時に
その場で作る
いつでも作り直せる
21
minifabric の最新情報: Kubernetes(k8s) 対応 の紹介
k8s は、 docker のシングルホスト動作が前提という性能限界へのブレイクスルーを提供。
minifabricを使う場合、手順の差は3か所のみ( k8sクラスタを持っている場合)
Copyright 2021 FUJITSU LIMITED
kube
config
k8s クラスタ環境の入手
minifab
予約フォルダにコピー
fabric:
cas:
peers:
orderers:
:
endpoint_address: extIP
エンドポイントアドレス指定
1
2
$minifab up -e true
a
3
必須 plugin 提供機能 マネージド k8s 他 のk8s
Ingress controller external Port 要インストール ready?
loadbarancer external IP 済 ready?
volume provisioner shared disk 済 ready?
extIP:extPort
spec.yaml
b 必須Plugins確認(必要に応じて導入)
your app
必須 plugins
最初はマネージド k8sの利用を推奨します。
k8s版は fabric 2.x以降のみサポート
コマンドにオプション指定(-e)
vars/kubernetes/config
https://github.com/hyperledger-labs/minifabric/blob/main/docs/DeployOntoK8S.md
22
参考) minifabric コマンドレファレンス
Usage: minifab <mode> [options]
Copyright 2021 FUJITSU LIMITED
option summary
-h print usage
-e flag if node endpoints should be exposed
-f output log verbosity
-i the fabric version to be used (2.1 or others)
-o organization name for org specific ops
-c channel name
-l chaincode language (go / nodejs / java )
-n chaincode name to be installed
-s the backend DB for peer (golevel or couchdb)
-b block number to be queried
-d chaincode initialization flag
-p chaincode instantiation and invocation parameters
-r flag if for chaincode processes private data
-t chaincode instantiation and invocation transient parameters
-v chaincode version to be installed
-y chaincode policy
mode summary
up all in one command for fabric setup
cleanup remove all the nodes and runtime files
imageget download docker images of fabric
generate generate certificates and genesis block
netup bring up the network only
stats list all nodes and status
create create application channel
join join all peers currently in the network to a channel
anchorupdate do channel update for all peer anchors in all orgs
profilegen generate connection profiles
install install chaincode
approve approve chaincode
commit commit chaincode for fabric>=2.0
initialize initialize chaincode for fabric >= 2.0
discover discover channel endorsement policy
Fabric構築
step
by
step
mode(cont.) summary
apprun (experimental) run chaincode app if there is any
caliperrun (experimental) run caliper test
explorerdown shutdown Hyperledger explorer
explorerup start up Hyperledger explorer
portainerdown shutdown portainer web management
portainerup start up portainer web management
blockquery do channel block query for the channel tx
channelquery do channel query for the channel configuration
channelsign do channel config update signoff
channelupdate do channel update with a given new channel
down tear down the network
instantiate instantiate chaincode for fabric < 2.0
invoke run chaincode invoke method
nodeimport import external node certs and endpoints
orgjoin (experimental) join an org to the current channel
query run chaincode query method
ccup Update or force re-install chaincode
restart restart the network
update (experimental) update minifabric to the latest
外部ツール起動
その他のオペレーション
構築する環境のカスタマイズ用オプション
23
参考) Hyperledger 公式サンプルのchaincode x minifabric
 fabric-samplesのchaincode asset-transfer-basic を minifabric で構築する Fabric環境で利用する方法
 https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-basic
 version v2.3.0 at https://github.com/hyperledger/fabric-samples/archive/refs/tags/v2.3.0.zip
Copyright 2021 FUJITSU LIMITED
1) chaincode をダウンロード・解凍する。
https://github.com/hyperledger/fabric-samples/archive/refs/tags/v2.3.0.zip
2) 解凍したフォルダ内のchaincode ソースを、minifabricの予約フォルダにコピーする
mkdir -p vars/chaincide/basic/go
cp -r fabric-samples-2.3.0/asset-transfer-basic/chaincode-go/* vars/chaincide/basic/go/
3) Fabric 構築 ※ spec.yamlファイルはデフォルトのままでok
minifab up -i 2.3.0 -c mychannel -n basic -l go -o org1.example.com -e true
4) chaincode実行
minifab invoke -p ‘”InitLedger”’
minifab invoke -p ‘”GetAllAssets”’
※ asset-transfer-basic の添付アプリケーション(application-*)をそのまま上記構築環境で動かすことはできませんでした。
原因: 添付アプリケーションのソースが fabric-sample添付の専用ツールで環境構築することを前提にしているため。
各種パスを変更すれば動くと思います。
Fabric ver 2.3.0
公式のchaincodeサンプル
24
参考) minifabric の内部について、もう少し
主なフォルダ構成
Copyright 2021 FUJITSU LIMITED
項目 In/out path
利用するchaincode in vars/chaincode/<chaincodename>/<language>/*
サンプル:https://github.com/hyperledger-labs/minifabric/tree/main/chaincode
Fabric 構築ノウハウ in playbooks/* // 構築用スクリプトや テンプレートファイル
scripts/* // minifabric のコマンド一覧など
fabopts.yaml // ansible実行時の大元ファイル
Fabric アプリ用connection profile out vars/profiles/<channelname>_* (言語別)
※Fabric SDKを利用したアプリ開発に便利
構築時に生成されるファイル
(実際の構築オペレーション用)
out vars/configtx.yaml vars/crypto-config.yaml // Fabricの設定大元
vars/keyfiles/* 上記を元に生成した証明書やmsp
vars/run/* 構築時に実行したコマンド群
25
弊社のHyperledgerに関連するその他の取り組み
分散データトレーシング:
Chain Data Lineage
C 社
a b
処理履歴
b d
c
A 社 B 社
出 力
データ
利用者
各社が持つモノの流通・加工の履歴データを
エンド-エンドでトレース
処理履歴
ブロックチェーンの統合サービス用フレームワーク:
ConnectionChain
Hyperledger Fabricをサプライチェーンに適用し、
多組織による記録・トレースを公正に実現
Copyright 2021 FUJITSU LIMITED
事前に合意された価値取引を
ガバナンスを確保しつつ執行
ConnectionChain技術のオープン化を狙って、
Hyperledger Cactusにコア開発社として参加
ConnectionChain
プレスリリース(2017.11.15発表)「ブロックチェーン同士を安全につなげるセキュリティ技術を開発」
https://pr.fujitsu.com/jp/news/2017/11/15.html
プレスリリース(2020.5.15発表) 「富士通研究所とアクセンチュア、安心かつ確実な異なるブロックチェーン連携を共同で加速」
https://pr.fujitsu.com/jp/news/2020/05/15.html
https://github.com/hyperledger/cactus
https://youtu.be/LKUdWoxz_lQ?t=4107
https://youtu.be/Ndo52HxAr0Q
26
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜

More Related Content

PPTX
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
PDF
Hyperledger Fabric のプラットフォームおよびインフラ運用
PDF
Hyperledger Fabric Private Chaincodeについて
PDF
Hyperledger Besuの動向
PDF
今なら間に合う分散型IDとEntra Verified ID
PDF
ブロックチェーンを用いた自己主権型デジタルID管理
PDF
Keycloak拡張入門
PDF
Hyperledgerプロジェクト概観
ここがつらいよ、Hyperledger Fabricの商用適用(Blockchain GIG #4発表資料)
Hyperledger Fabric のプラットフォームおよびインフラ運用
Hyperledger Fabric Private Chaincodeについて
Hyperledger Besuの動向
今なら間に合う分散型IDとEntra Verified ID
ブロックチェーンを用いた自己主権型デジタルID管理
Keycloak拡張入門
Hyperledgerプロジェクト概観

What's hot (20)

PDF
データベース屋がHyperledger Fabricを検証してみた
PPTX
ブロックチェーンの仕組みと動向(入門編)
PDF
ブロックチェーン間のインターオペラビリティ概論
PDF
分散トレーシング技術について(Open tracingやjaeger)
PDF
SSIとDIDで何を解決したいのか?(β版)
PDF
分散型IDと検証可能なアイデンティティ技術概要
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
OCHaCafe #4 Hyperledger Fabric アプリケーション設計入門ガイドでしゃべった内容+おまけ資料
PDF
Hyperledger Cactus V0.4 リリースの概要と今後の開発方針
PDF
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
PDF
EXE #6:Hyperledger Fabric活用によるデータ流通ネットワーク
PDF
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
PPTX
Amazon EKS によるスマホゲームのバックエンド運用事例
PDF
KeycloakのDevice Flow、CIBAについて
PPTX
Istioサービスメッシュ入門
PDF
Post-quantum zk-SNARKs on Hyperledger Fabric​
PDF
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
PDF
Githubを使って簡単に helm repoを公開してみよう
PDF
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
PDF
暗号技術の実装と数学
データベース屋がHyperledger Fabricを検証してみた
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーン間のインターオペラビリティ概論
分散トレーシング技術について(Open tracingやjaeger)
SSIとDIDで何を解決したいのか?(β版)
分散型IDと検証可能なアイデンティティ技術概要
コンテナ未経験新人が学ぶコンテナ技術入門
OCHaCafe #4 Hyperledger Fabric アプリケーション設計入門ガイドでしゃべった内容+おまけ資料
Hyperledger Cactus V0.4 リリースの概要と今後の開発方針
KubeCon + CloudNativeCon Europe 2022 Recap - Batch/HPCの潮流とScheduler拡張事例 / Kub...
EXE #6:Hyperledger Fabric活用によるデータ流通ネットワーク
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Amazon EKS によるスマホゲームのバックエンド運用事例
KeycloakのDevice Flow、CIBAについて
Istioサービスメッシュ入門
Post-quantum zk-SNARKs on Hyperledger Fabric​
IDA,VC,DID関連仕様 最新情報 - OpenID BizDay #15
Githubを使って簡単に helm repoを公開してみよう
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
暗号技術の実装と数学
Ad

Similar to Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜 (20)

PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
PDF
Hyperledger Fabric 1.0 概要
PDF
エンタープライズブロックチェーン構築の基礎
PDF
[CTO Night & Day 2019] Blockchain on AWS #ctonight
PPTX
FabricとRailsと私
PDF
Fabric + Amazon EC2で快適サポート生活 #PyFes
KEY
Fabricでサーバー管理をDRYにしよう
PDF
Hyperledger Fabric 概説
PDF
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
PDF
Fabric Essentials
PDF
Fabricによるcloud stackインストール自動化
PPTX
Fabric
PDF
Linux Kernel Seminar in tripodworks
PDF
Blockchain EXE #1ブロックチェーン技術の可能性について解説|IBMコンサルティング・アーキテクト 平山毅
PDF
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
PPTX
明日からはじめられる Docker + さくらvpsを使った開発環境構築
PPTX
microPCFを使ってみよう
PDF
Windows Azure で 2/29 に起こった問題のまとめ
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
Hyperledger Fabric公式サンプル fabric-samples徹底解説
Hyperledger Fabric 1.0 概要
エンタープライズブロックチェーン構築の基礎
[CTO Night & Day 2019] Blockchain on AWS #ctonight
FabricとRailsと私
Fabric + Amazon EC2で快適サポート生活 #PyFes
Fabricでサーバー管理をDRYにしよう
Hyperledger Fabric 概説
Blockchain EXE #16:Hyperledger fabricの技術動向とファイナンシャルエンジニアリング視点でのトークンエコノミー|平山 毅...
Fabric Essentials
Fabricによるcloud stackインストール自動化
Fabric
Linux Kernel Seminar in tripodworks
Blockchain EXE #1ブロックチェーン技術の可能性について解説|IBMコンサルティング・アーキテクト 平山毅
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
明日からはじめられる Docker + さくらvpsを使った開発環境構築
microPCFを使ってみよう
Windows Azure で 2/29 に起こった問題のまとめ
Ad

More from LFDT Tokyo Meetup (20)

PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
PDF
LF Decentralized Trust Tokyo Meetup 3
PPTX
From Labs to Production: The Growing Ecosystem of LF Decentralized Trust
PDF
LF Decentralized Trust Member Summit 2024 参加レポート
PDF
LF Decentralized Trust Tokyo Meetup #1
PDF
LF Decentralized Trust: A Bigger Tent for Projects, Labs, Members, and Commun...
PDF
サステナブルファイナンス分野における日立の取り組み
PDF
IBMブロックチェーンサプライチェーンソリューションで実現するサステナビリティ経営
PDF
Overview of Hyperledger Foundation
PDF
Hyperledger Irohaを活用した海外におけるCBDCとクロスボーダー送金
PDF
Hyperledger FireFly - HYPERLEDGER Workshop, WebX
PDF
Hyperledger Irohaを活用した海外におけるCBDCとクロスボーダー送金
PDF
異種ブロックチェーン統合ツールHyperledger Cactiご紹介
PDF
ファイアフライ「蛍」FireFly to Public and Private Chains
PDF
Hyperledger Iroha
PDF
Hyperledger Aries 101
PDF
Introduction; Blockchain 101
PDF
Trusted Data Ecosystems(信頼できるデータエコシステム):アイデンティティに価値を見出す
PDF
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
PDF
パネルディスカッション : エンタープライズブロックチェーンの活用例 オラクル資料
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LF Decentralized Trust Tokyo Meetup 3
From Labs to Production: The Growing Ecosystem of LF Decentralized Trust
LF Decentralized Trust Member Summit 2024 参加レポート
LF Decentralized Trust Tokyo Meetup #1
LF Decentralized Trust: A Bigger Tent for Projects, Labs, Members, and Commun...
サステナブルファイナンス分野における日立の取り組み
IBMブロックチェーンサプライチェーンソリューションで実現するサステナビリティ経営
Overview of Hyperledger Foundation
Hyperledger Irohaを活用した海外におけるCBDCとクロスボーダー送金
Hyperledger FireFly - HYPERLEDGER Workshop, WebX
Hyperledger Irohaを活用した海外におけるCBDCとクロスボーダー送金
異種ブロックチェーン統合ツールHyperledger Cactiご紹介
ファイアフライ「蛍」FireFly to Public and Private Chains
Hyperledger Iroha
Hyperledger Aries 101
Introduction; Blockchain 101
Trusted Data Ecosystems(信頼できるデータエコシステム):アイデンティティに価値を見出す
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
パネルディスカッション : エンタープライズブロックチェーンの活用例 オラクル資料

Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜

  • 1. Hyperledger Fabric 簡単構築ツール minifabricのご紹介 ~productionへの移行をminifabric で加速~ 2021.10.7 富士通(株) データ&セキュリティ研究所 中川 格 Copyright 2021 FUJITSU LIMITED 1 @ Hyperledger Meetup Tokyo
  • 2. 自己紹介 (中川 格 / Itaru NAKAGAWA) 現所属に Copyright 2021 FUJITSU LIMITED 2019.4 2020.12 Hyperledger Fabric の世界と関わりをもつ minifabric と出会い、使い始める 2021.1 2021.4 minifabricへの貢献開始(利用者の立場からカイゼン) (株)富士通研究所 入社。 ネットワーキングやIoT関連の研究開発を担当 今日 趣味: コロナ前 コロナ後 minifabric commiter に就任 (現: コミット件数2位) 2021.8 担当部分 Fabric アプリケーション Hyperledger Fabric Fabric API 担当部分を動かすには Fabric環境が必要 ※以降、Hyperledger Fabric を 単に “Fabric”とよぶことがあります @itaru2622 2
  • 3. Hyperledger Fabricとは エンタープライズ向けのブロックチェーンプラットフォーム ユースケース:金融系からサプライチェーンまで様々 クラウド各社がマネージドサービスとして提供 Copyright 2021 FUJITSU LIMITED “2nd Global Enterprise Blockchain Benchmarking Study” ケンブリッジ大学, 2019年調査 Hyperledger Fabric 48% Hyperledger Fabric ネットワークの概要 ◆コンポーネント: 3種  Peer 台帳(ブロック)を保持  Orderer トランザクション管理とブロック生成を担当  CA 証明書管理や認証を担当 ◆ 台帳の読み書きにはchaincode(スマートコントラクト)を用いる ◆ 抽象概念:2つ  チャンネル 台帳の共有範囲の制御に用いられる。 同一チャンネル内のPeerの台帳は同期される  Organization 企業や組織に対応。 全コンポーネントは何かのOrganizationに所属 Peer Peer CA 台帳 CA Peer Peer 台帳 チャンネル chaincode chaincode アプリケーション org1 org2 Orderer Orderer 3
  • 4. before minifabric: Fabric構築はハードワーク Copyright 2021 FUJITSU LIMITED configtx crypto-config certs params docker run: cert path endpoint policy: cn: 運試し <=Start FIN=> STOP 1 1 4 通信開始. 最初の難関 設定:相互に関連し、変更は多か所に影響 TODO 1. : 100 …. : endpoint cert path 数行~ 最初の構築成功には… 1週間かかった Fabricのネットワーク図 変更漏れとの戦い タイプミスとの戦い x 100本ノック オペレーション:大量の長いコマンド 4
  • 5. before minifabric: Fabric構築はハードワーク Copyright 2021 FUJITSU LIMITED configtx crypto-config certs params docker run: cert path endpoint policy: cn: 運試し <=Start FIN=> STOP 1 1 4 Organizations: - &org0 ID: org0 AnchorPeers: #アクセス先エンドポイント - Host: peer1.org0.example.com Port: 7051 Policies: Readers: Type: Signature Rule: "OR('org0.admin', 'org0.peer', 'org0.client’)” Admins: Type: Signature Rule: "OR('org0.admin')" : Channel: &ChannelDefaults Policies: Writers: Type: ImplicitMeta Rule: "ANY Writers" Admins: Type: ImplicitMeta Rule: "MAJORITY Admins" configtxの具体例(一部) TODO 1. : 100 …. : endpoint cert path 各組織・コンポーネントや チャンネルの構成 設定:相互に関連し、変更は多か所に影響 オペレーション:大量の長いコマンド よくある例 自分のマシンから使う:OK 他から:NG 5
  • 6. before minifabric: Fabric構築はハードワーク Copyright 2021 FUJITSU LIMITED configtx crypto-config certs params docker run: cert path endpoint policy: cn: 運試し <=Start FIN=> STOP 1 1 4 Organizations: - &org0 ID: org0 AnchorPeers: #アクセス先エンドポイント - Host: peer1.org0.example.com Port: 7051 Policies: Readers: Type: Signature Rule: "OR('org0.admin', 'org0.peer', 'org0.client’)” Admins: Type: Signature Rule: "OR('org0.admin')" : Channel: &ChannelDefaults Policies: Writers: Type: ImplicitMeta Rule: "ANY Writers" Admins: Type: ImplicitMeta Rule: "MAJORITY Admins" configtxの具体例(一部) TODO 1. : 100 …. : endpoint cert path 各組織・コンポーネントや チャンネルの構成 設定:相互に関連し、変更は多か所に影響 オペレーション:大量の長いコマンド よくある例 自分のマシンから使う:OK 他から:NG うまくいかない… 他サンプルの値にしてみるか? ⇒ org0.memberに変更 ・難解な用語:理解前の変更は失敗のもと 6
  • 7. before minifabric: Fabric構築はハードワーク Copyright 2021 FUJITSU LIMITED configtx crypto-config certs params docker run: cert path endpoint policy: cn: 運試し <=Start FIN=> STOP 1 1 4 Organizations: - &org0 ID: org0 AnchorPeers: #アクセス先エンドポイント - Host: peer1.org0.example.com Port: 7051 Policies: Readers: Type: Signature Rule: "OR('org0.admin', 'org0.peer', 'org0.client’)” Admins: Type: Signature Rule: "OR('org0.admin')" : Channel: &ChannelDefaults Policies: Writers: Type: ImplicitMeta Rule: "ANY Writers" Admins: Type: ImplicitMeta Rule: "MAJORITY Admins" configtxの具体例(一部) TODO 1. : 100 …. : endpoint cert path 各組織・コンポーネントや チャンネルの構成 設定:相互に関連し、変更は多か所に影響 オペレーション:大量の長いコマンド よくある例 自分のマシンから使う:OK 他から:NG ・難解な用語:理解前の変更は失敗のもと 他マシンから使うには 実際のIPやポートを指定する ・難解な用語:理解前の変更は失敗のもと ・エンドポイント: 各構築先に合わせて指定 ⇒設計と実際が違うと構築失敗 7
  • 8. before minifabric: Fabric構築はハードワーク Copyright 2021 FUJITSU LIMITED configtx crypto-config certs params docker run: cert path endpoint policy: cn: 運試し <=Start FIN=> STOP 1 1 4 上記で1操作分。こういうのが100件以上。 export CORE_PEER_ADDRESS=peer1.org0.example.com:7051 export ORDERER_ADDRESS=orderer1.example.com:7050 export CORE_PEER_LOCALMSPID=org0 export CORE_PEER_MSPCONFIGPATH=/certs/peerOrganizations /org0.example.com/users/Admin@org0.example.com/msp export CORE_PEER_TLS_ROOTCERT_FILE=…/tls/ca.crt export ORDERER_TLS_CA=/certs/…/tls/ca.crt export CORE_PEER_TLS_ENABLED=true export CORE_PEER_ID=cli peer channel create -c mychannel -f mychannel.tx -o $ORDERER_ADDRESS --cafile $ORDERER_TLS_CA --tls TODO 1. : 100 …. : endpoint cert path オペレーション:大量の長いコマンド 最初の難関 (通信開始) 設定:相互に関連し、変更は多か所に影響 エラー発生で最初からやり直し…もたびたび発生 オペレーション具体例:チャンネル作成 8
  • 9. 環境構築あるある Fabric編 Copyright 2021 FUJITSU LIMITED Person.X 組織名変えて 従来の方法 トライアルでFabricを使いたいんだけど 組織増やして 新version使いたい 別マシンに移したい 9
  • 10. 環境構築あるある Fabric編 Copyright 2021 FUJITSU LIMITED Person.X 組織名変えて 数日かかる 従来の方法 トライアルでFabricを使いたいんだけど 組織増やして 1週間後に ・・・ ・・・ 数日かかる 数日かかる ・・・ 早めによろしく! 設定やコマンドが変わる 所に注意 新version使いたい 別マシンに移したい ・・・ 数日かかる 10
  • 11. 環境構築あるある Fabric編 Copyright 2021 FUJITSU LIMITED Person.X 組織名変えて 数日かかる 従来の方法 トライアルでFabricを使いたいんだけど 組織増やして 1週間後に ・・・ 別の系を作りたい。 構築方法教えて (わかりやすく) n年かかる ・・・ 数日かかる 数日かかる ・・・ 早めによろしく! 設定やコマンドが変わる 所に注意 新version使いたい ・・・ ツール探さねば 別マシンに移したい ・・・ ツール欲しい・・・ 数日かかる 11
  • 12. with minifabric: Fabric構築は簡単 https://github.com/hyperledger-labs/minifabric チェックリスト ~1分 設定の作成 ~5分 オペレーション:コマンド1発 前提条件  OS: Linux or Win10  インターネットアクセス  docker $minifab up オペレーション: 簡単・短い カスタマイズ用オプション: - fabric versionの指定(1.4~2.4) - chaincodeの指定 - channel名の指定 など $minifab cleanup @全削除時 @構築時 fabric: cas: - "ca1.org0.example.com“ peers: - "peer1.org0.example.com“ orderers: - "orderer1.example.com“ settings: ca: peer: orderer: FABRIC_LOGGING_SPEC: DEBUG # the default goproxy # goproxy: https://proxy.golang.org,direct # set the endpoint address to override detected IP address # endpoint_address: 104.196.45.144 # set the docker network name netname: "mysite" # set the extra optins for docker run command # container_options: "--restart=always …" 設定:簡単(spec.yaml) 1ファイル、相互関連なし 名前リストのみ 名前や件数:自由 必要なときだけ変更 12
  • 13. Before/After minifabric Copyright 2021 FUJITSU LIMITED phase Before After Fabric network 設計 設定の 書き下し 証明書生成 全インスタンス起動 チャンネル作成 チャンネル参加 anchor peer 更新 connection profile生成 chaincode インストール chaincode 承認 chaincode コミット chaincode 初期化 ハードコーディングありfor 労力削減 - Policies - Passwords 1週間 数分 第一関門 制限事項なし 多数 コマンド1発 大変 簡単 fabric version差 は要自己解決 fabric version変更は簡単 設定 オペレーション 運試し <=Start FIN=> STOP セキュリティに絡む部分 13
  • 14. fabric: cas: - "ca1.org0.example.com" - "ca1.org1.example.com“ peers: - "peer1.org0.example.com" - "peer2.org0.example.com" - "peer1.org1.example.com" - "peer2.org1.example.com“ : orderers: - "orderer1.example.com" - "orderer2.example.com" - "orderer3.example.com" Type: - Peer用 - Orderer用 minifabric の設定ファイル spec.yaml 作成方法 (名前リスト) Copyright 2021 FUJITSU LIMITED ドメイン名(≒organization) Type ホスト名 (1件以上) CA名 org0.example.com Peer peer1, peer2 ca1 org1.example.com Peer peer1, peer2 ca1 example.com Orderer orderer1,orderer2, orderer3 ー peer1 peer2 ca1 peer1 peer2 ca1 orderer1 orderer2 orderer3 グループわけ FQDNで列挙 ドット(.)でつなげる 1 3 spec.yaml完成 2 表をイメージし・・・ * ドメイン名は重複しないこと 4 ホスト名 ドメイン名 CAの件数 Peer用: 1件以上 Oderer用:0件でもok ca, peer, orderer FQDN= org0.example.com 〃 〃 org1.example.com 〃 〃 example.com 〃 〃 ※orderer件数は奇数にする(1以上) 14
  • 15. minifabric アーキテクチャ: 簡単・フレキシブルな構築の実現方法 Copyright 2021 FUJITSU LIMITED minifab コマンド docker リポジトリ Playbooks (workflow) コマンド 設定 Fabric 構築の知識 Templates 実行(構築オペレーション) minifab コンテナ 起動 Fabric 構築手順 タイプミスなし 名前・件数:自由 エンドポイント CLI 実行 ・実行時の引数 ・spec.yaml engine {{ }} playbooks フォルダ内 vars フォルダに出力・保存 configtx、crypto-config 構築コマンド、証明書、 ・・・ ① ②実行 出力 ユーザ指定 実際の構築操作 minifabコンテナ内 15
  • 16. Minifabricの柔軟性 Copyright 2021 FUJITSU LIMITED 項目 備考 Reference Y Fabricの組織名やコンポーネント名の指定 自由 前ページ参照 Y Fabricの組織数やpeer数 自由 (ホスト性能内 or 制限ナシ@k8s) 前ページ参照 Y Fabric versionの選択 オプション ‘-i ver’ (1.4.4~2.4) CI@ Y 自分のchaincode(スマートコントラクト) 利用 予約フォルダに置いてオプション指定 (‘ -n chaincode名 -l 言語) docs@ Y chaincode のアップグレード サブコマンド ‘minifab ccup -v newver” cmd refs Y chaincode実行 (アプリ開発ナシで) サブコマンド ‘minifab invoke’ docs@ Y 稼働中Fabricの拡張(新組織追加) minifabric のgithubページ参照 docs@ Y 台帳へのリッチクエリ検索 オプション ‘-s couchdb’ cmd refs Y チャンネル名の指定 オプション ‘-c yourchannel’ cmd refs Y コンテナ群の起動のみ(チャンネル作成など省略) サブコマンド ‘minifab netup’ cmd refs N public認証局発行の証明書利用 未サポート。現状オレオレ証明書のみ about more … https://github.com/hyperledger- labs/minifabric/tree/main/docs 16
  • 17. Demo: playing movie minifabric youtube playlist: https://www.youtube.com/playlist?list=PL0MZ85B_96CExhq0YdHLPS5cmSBvSmwyO Copyright 2021 FUJITSU LIMITED https://youtu.be/QCsKQ1S4C9E?list=PL0MZ85B_96CExhq0YdHLPS5cmSBvSmwyO&t 17
  • 18. Copyright 2021 FUJITSU LIMITED ~修了証書~ あなたはFabric構築に必要な事項を習得済です minifabric インストール方法 構築コマンド (minifab up) 終了コマンド (minifab cleanup) カスタム環境の作りかた① 設定ファイル spec.yaml とアレンジ方法 カスタム環境の作りかた② コマンドオプション各種 (minifab -h ほか) ご自身でFabricを構築・ご活用ください 18
  • 19. 明日以降 Copyright 2021 FUJITSU LIMITED Person.X minifabric 数日かかる 数分 従来の方法 ・・・ 選ぶのは どっち あなた 構築ツール minifabric使うと あなたも簡単に作れますよ! でもこう言ってみませんか? 組織名変えて トライアルでFabricを使いたいんだけど 組織増やして 別の系を作りたい。 構築方法教えて (わかりやすく) 新version使いたい 別マシンに移したい 19
  • 20. minifabric の利点 Copyright 2021 FUJITSU LIMITED Trial / Sandbox など ユースケース: ・新しいことを試す ・Pull Reqのマージ前テスト ・issueの再現テスト・修正環境 minifabricで構築 ‘minifabric up’ はgithub actions(CI workflow)で動作済。 Production環境 他手段利用 minifabric 簡単・すぐに作れる nightly beta issue fragile Welcome 使い捨てもできるFabric環境を得た 20
  • 21. 発表者自身の使い方 Copyright 2021 FUJITSU LIMITED VMイメージ(共通) * minifabric * docker * 他ツール ソースリポジトリ (用途別) VM をコピーしてから minifab up main branch feature branch fixing branch VM1 VM2 VM3 新しいことを試す issue再現・修正 必要になった時に その場で作る いつでも作り直せる 21
  • 22. minifabric の最新情報: Kubernetes(k8s) 対応 の紹介 k8s は、 docker のシングルホスト動作が前提という性能限界へのブレイクスルーを提供。 minifabricを使う場合、手順の差は3か所のみ( k8sクラスタを持っている場合) Copyright 2021 FUJITSU LIMITED kube config k8s クラスタ環境の入手 minifab 予約フォルダにコピー fabric: cas: peers: orderers: : endpoint_address: extIP エンドポイントアドレス指定 1 2 $minifab up -e true a 3 必須 plugin 提供機能 マネージド k8s 他 のk8s Ingress controller external Port 要インストール ready? loadbarancer external IP 済 ready? volume provisioner shared disk 済 ready? extIP:extPort spec.yaml b 必須Plugins確認(必要に応じて導入) your app 必須 plugins 最初はマネージド k8sの利用を推奨します。 k8s版は fabric 2.x以降のみサポート コマンドにオプション指定(-e) vars/kubernetes/config https://github.com/hyperledger-labs/minifabric/blob/main/docs/DeployOntoK8S.md 22
  • 23. 参考) minifabric コマンドレファレンス Usage: minifab <mode> [options] Copyright 2021 FUJITSU LIMITED option summary -h print usage -e flag if node endpoints should be exposed -f output log verbosity -i the fabric version to be used (2.1 or others) -o organization name for org specific ops -c channel name -l chaincode language (go / nodejs / java ) -n chaincode name to be installed -s the backend DB for peer (golevel or couchdb) -b block number to be queried -d chaincode initialization flag -p chaincode instantiation and invocation parameters -r flag if for chaincode processes private data -t chaincode instantiation and invocation transient parameters -v chaincode version to be installed -y chaincode policy mode summary up all in one command for fabric setup cleanup remove all the nodes and runtime files imageget download docker images of fabric generate generate certificates and genesis block netup bring up the network only stats list all nodes and status create create application channel join join all peers currently in the network to a channel anchorupdate do channel update for all peer anchors in all orgs profilegen generate connection profiles install install chaincode approve approve chaincode commit commit chaincode for fabric>=2.0 initialize initialize chaincode for fabric >= 2.0 discover discover channel endorsement policy Fabric構築 step by step mode(cont.) summary apprun (experimental) run chaincode app if there is any caliperrun (experimental) run caliper test explorerdown shutdown Hyperledger explorer explorerup start up Hyperledger explorer portainerdown shutdown portainer web management portainerup start up portainer web management blockquery do channel block query for the channel tx channelquery do channel query for the channel configuration channelsign do channel config update signoff channelupdate do channel update with a given new channel down tear down the network instantiate instantiate chaincode for fabric < 2.0 invoke run chaincode invoke method nodeimport import external node certs and endpoints orgjoin (experimental) join an org to the current channel query run chaincode query method ccup Update or force re-install chaincode restart restart the network update (experimental) update minifabric to the latest 外部ツール起動 その他のオペレーション 構築する環境のカスタマイズ用オプション 23
  • 24. 参考) Hyperledger 公式サンプルのchaincode x minifabric  fabric-samplesのchaincode asset-transfer-basic を minifabric で構築する Fabric環境で利用する方法  https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-basic  version v2.3.0 at https://github.com/hyperledger/fabric-samples/archive/refs/tags/v2.3.0.zip Copyright 2021 FUJITSU LIMITED 1) chaincode をダウンロード・解凍する。 https://github.com/hyperledger/fabric-samples/archive/refs/tags/v2.3.0.zip 2) 解凍したフォルダ内のchaincode ソースを、minifabricの予約フォルダにコピーする mkdir -p vars/chaincide/basic/go cp -r fabric-samples-2.3.0/asset-transfer-basic/chaincode-go/* vars/chaincide/basic/go/ 3) Fabric 構築 ※ spec.yamlファイルはデフォルトのままでok minifab up -i 2.3.0 -c mychannel -n basic -l go -o org1.example.com -e true 4) chaincode実行 minifab invoke -p ‘”InitLedger”’ minifab invoke -p ‘”GetAllAssets”’ ※ asset-transfer-basic の添付アプリケーション(application-*)をそのまま上記構築環境で動かすことはできませんでした。 原因: 添付アプリケーションのソースが fabric-sample添付の専用ツールで環境構築することを前提にしているため。 各種パスを変更すれば動くと思います。 Fabric ver 2.3.0 公式のchaincodeサンプル 24
  • 25. 参考) minifabric の内部について、もう少し 主なフォルダ構成 Copyright 2021 FUJITSU LIMITED 項目 In/out path 利用するchaincode in vars/chaincode/<chaincodename>/<language>/* サンプル:https://github.com/hyperledger-labs/minifabric/tree/main/chaincode Fabric 構築ノウハウ in playbooks/* // 構築用スクリプトや テンプレートファイル scripts/* // minifabric のコマンド一覧など fabopts.yaml // ansible実行時の大元ファイル Fabric アプリ用connection profile out vars/profiles/<channelname>_* (言語別) ※Fabric SDKを利用したアプリ開発に便利 構築時に生成されるファイル (実際の構築オペレーション用) out vars/configtx.yaml vars/crypto-config.yaml // Fabricの設定大元 vars/keyfiles/* 上記を元に生成した証明書やmsp vars/run/* 構築時に実行したコマンド群 25
  • 26. 弊社のHyperledgerに関連するその他の取り組み 分散データトレーシング: Chain Data Lineage C 社 a b 処理履歴 b d c A 社 B 社 出 力 データ 利用者 各社が持つモノの流通・加工の履歴データを エンド-エンドでトレース 処理履歴 ブロックチェーンの統合サービス用フレームワーク: ConnectionChain Hyperledger Fabricをサプライチェーンに適用し、 多組織による記録・トレースを公正に実現 Copyright 2021 FUJITSU LIMITED 事前に合意された価値取引を ガバナンスを確保しつつ執行 ConnectionChain技術のオープン化を狙って、 Hyperledger Cactusにコア開発社として参加 ConnectionChain プレスリリース(2017.11.15発表)「ブロックチェーン同士を安全につなげるセキュリティ技術を開発」 https://pr.fujitsu.com/jp/news/2017/11/15.html プレスリリース(2020.5.15発表) 「富士通研究所とアクセンチュア、安心かつ確実な異なるブロックチェーン連携を共同で加速」 https://pr.fujitsu.com/jp/news/2020/05/15.html https://github.com/hyperledger/cactus https://youtu.be/LKUdWoxz_lQ?t=4107 https://youtu.be/Ndo52HxAr0Q 26