日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Fabric--configtxlator转换配置添加组织到channel

發布時間:2025/3/21 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Fabric--configtxlator转换配置添加组织到channel 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

configtxlator轉換配置/添加Org組織到channel

設置環境

進入到fabric-samples/first-network目錄中, 執行.byfn.sh -m down關閉網絡,清理之前的任何環境

$ cd $HOME/hyfa/fabric-samples/first-network/ $ sudo ./byfn.sh -m down

重新生成默認的BYFN構件

$ sudo ./byfn.sh -m generate

啟用網絡

$ sudo ./byfn.sh -m up

添加組織Org3

使用eyfn.sh腳本將Org3引入網絡

$ sudo ./eyfn.sh up

從輸出中可以看到添加的Org3加密資料,配置更新正在創建和簽名,然后鏈接代碼被安裝以允許Org3執行分類賬查詢

如果執行成功, 會有如下輸出

========= All GOOD, EYFN test execution completed =========== _____ _ _ ____ | ____| | \ | | | _ \ | _| | \| | | | | | | |___ | |\ | | |_| | |_____| |_| \_| |____/

進入CLI容器

$ sudo docker exec -it cli bash

導出 ORDERER_CA 與 CHANNEL_NAME 變量:

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem && export CHANNEL_NAME=mychannel

檢查環境變量是否正確設置:

echo $ORDERER_CA && echo $CHANNEL_NAME

如果重新啟動了CLI容器,則必須重新導出兩個環境變量

查詢

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

查詢結果: Query Result: 80

調用,實現從a到b轉賬

peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

查詢

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

查詢結果: Query Result: 70


手動實現配置:

如果使用了eyfn.sh腳本,則需要將網絡關閉.刪除所有容器并撤銷添加Org3所做的操作

在 fabric-samples/first-network/目錄中執行如下命令:

$ sudo ./eyfn.sh down $ sudo ./byfn.sh -m down $ sudo ./byfn.sh -m generate $ sudo ./byfn.sh -m up

生成Org3加密材料

從 frist-network 目錄轉至 org3-artifacts 目錄中

% cd org3-artifacts

生成加密材料

$ sudo ../../bin/cryptogen generate --config=./org3-crypto.yaml

為Org3 CA以及與此新Org綁定的兩個對等生成密鑰和證書

新生成的文件被保存在當前目錄下新生成的文件夾 crypto-config 中

使用 configtxgen 工具以JSON輸出Org3特定的配置材料到指定的文件中

$ export FABRIC_CFG_PATH=$PWD $ sudo ../../bin/configtxgen -printOrg Org3MSP > ../channel-artifacts/org3.json

該文件包含Org3的策略定義,以及以Base 64格式提供的三個重要證書:admin用戶證書(稍后將用作Org3的管理員),CA根證書和TLS根證書證書

后面會將這個JSON文件附加到通道配置中

$ cd ../ $ sudo cp -r crypto-config/ordererOrganizations org3-artifacts/crypto-config/

將Orderer Org的MSP材料移植到Org3 crypto-config目錄中

更新通道配置

進入CLI容器

$ sudo docker exec -it cli bash

安裝jq工具

jq可以將所需要的數據格式轉換成任意的數據格式

jq工具允許腳本與configtxlator工具返回的JSON文件進行交互

apt update && apt install -y jq

參數說明:

-y: 忽略安裝時的提示

導出 ORDERER_CA 與 CHANNEL_NAME 變量:

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem && export CHANNEL_NAME=mychannel

檢查環境變量是否正確設置:

echo $ORDERER_CA && echo $CHANNEL_NAME

如果重新啟動了CLI容器,則必須重新導出兩個環境變量

獲取配置

獲取 mychannel 通道的最新配置塊, 可以防止重復或替換配置更改, 有助于確保并發性, 防止刪除兩個組織

peer channel fetch config config_block.pb -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA

上述命令將二進制protobuf通道配置塊保存到 config_block.pb , (文件名及擴展名命名無限制)

?

轉換配置為JSON

利用 configtxlator 工具將此通道配置塊解碼為JSON格式, 刪除所有與想要改變的內容無關的標題,元數據,創建者簽名等等

通過 jq 工具來完成

configtxlator proto_decode --input config_block.pb --type common.Block | jq .data.data[0].payload.data.config > config.json

.data.data[0],payload.data.config域內數據代表了完整的通道配置信息

查看config.json文件中的內容

more config.json

使用jq將Org3配置定義追加org3.json到通道的應用程序組字段,并命名輸出modified_config.json

jq -s '.[0] * {"channel_group":{"groups":{"Application":{"groups": {"Org3MSP":.[1]}}}}}' config.json ./channel-artifacts/org3.json > modified_config.json

將 config.json 中的內容輸出為 config.pb

configtxlator proto_encode --input config.json --type common.Config --output config.pb

將 modified_config.json 中的內容輸出為 modified_config.pb

configtxlator proto_encode --input modified_config.json --type common.Config --output modified_config.pb

利用這兩個配置文件, 使用configtxlator計算出更新配置時的更新量信息。該命令將輸出一個新的二進制文件,命名為org3_update.pb:

configtxlator compute_update --channel_id $CHANNEL_NAME --original config.pb --updated modified_config.pb --output org3_update.pb

將 org3_update.pb 中的內容解碼為可編輯的JSON格式并將其稱為org3_update.json

configtxlator proto_decode --input org3_update.pb --type common.ConfigUpdate | jq . > org3_update.json

對通道配置進行更新時, 還需要封裝為 org3_update_in_envelope 結構的配置更新交易. 因此, 需要將 org3_update 結構數據進行補全

echo '{"payload":{"header":{"channel_header":{"channel_id":"mychannel", "type":2}},"data":{"config_update":'$(cat org3_update.json)'}}}' | jq . > org3_update_in_envelope.json

將其轉換為Fabric所需的二進制交易配置文件。命名為最終更新對象org3_update_in_envelope.pb

configtxlator proto_encode --input org3_update_in_envelope.json --type common.Envelope --output org3_update_in_envelope.pb

簽署并提交配置更新

peer channel signconfigtx -f org3_update_in_envelope.pb

導出Org2環境變量:

export CORE_PEER_LOCALMSPID="Org2MSP"export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/mspexport CORE_PEER_ADDRESS=peer0.org2.example.com:7051

更新通道

peer channel update -f org3_update_in_envelope.pb -c $CHANNEL_NAME -o orderer.example.com:7050 --tls --cafile $ORDERER_CA

命令執行后會有如下輸出: Successfully submitted channel update

新終端中(終端2)中輸出日志

打開一個新的終端(終端2)執行如下命令:

$ sudo docker logs -f peer0.org1.example.com

將Org3加入到通道

打開一個新的終端(終端3), 從 first-network 中啟動Org3 docker compose

$ cd hyfa/fabric-samples/first-network/ $ sudo docker-compose -f docker-compose-org3.yaml up -d

進入Org3特定的CLI容器中:

$ sudo docker exec -it Org3cli bash

導出環境變量:

export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem && export CHANNEL_NAME=mychannel

檢查變量 :

echo $ORDERER_CA && echo $CHANNEL_NAME

檢索該塊:

peer channel fetch 0 mychannel.block -o orderer.example.com:7050 -c $CHANNEL_NAME --tls --cafile $ORDERER_CA

發出命令并通過創世區塊:

peer channel join -b mychannel.block

導出TLS與ADDRESS變量并重新發布

export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org3.example.com/peers/peer1.org3.example.com/tls/ca.crt && export CORE_PEER_ADDRESS=peer1.org3.example.com:7051peer channel join -b mychannel.block

升級并調用Chaincode

在Org3的CLI中執行(終端3):

peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

終端1中執行

使用Org2管理員身份提交了頻道更新通話(在終端1中執行):

export CORE_PEER_LOCALMSPID="Org2MSP"export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/mspexport CORE_PEER_ADDRESS=peer0.org2.example.com:7051

安裝

peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

切換為Org1身份:

export CORE_PEER_LOCALMSPID="Org1MSP"export CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crtexport CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/mspexport CORE_PEER_ADDRESS=peer0.org1.example.com:7051

再次安裝:

peer chaincode install -n mycc -v 2.0 -p github.com/chaincode/chaincode_example02/go/

發送電話:

peer chaincode upgrade -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 2.0 -c '{"Args":["init","a","90","b","210"]}' -P "OR ('Org1MSP.peer','Org2MSP.peer','Org3MSP.peer')"

如果報如下錯誤:

Error: Error getting broadcast client: failed to load config for OrdererClient: unable to load orderer.tls.rootcert.file: open /etc/hyperledger/fabric/-C: no such file or directory 則需要檢查 echo $ORDERER_CA && echo $CHANNEL_NAME 變量是否正確設置export ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem && export CHANNEL_NAME=mychannel

通過v標志指定新版本??梢钥吹絆rg3添加到背書政策中

與實例化調用一樣,鏈式代碼升級需要使用該init 方法

終端3中執行

升級調用將新的塊 - 塊6 - 添加到頻道的分類賬中,并允許Org3同行在認可階段執行交易。跳回Org3 CLI容器(終端3)并發出一個查詢值a:

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

在終端1與終端3中通過,正確顯示查詢結果: Query Result: 90

調用,實現從a到b轉賬(終端3):

peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'

查詢:

peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}'

在終端1與終端3中通過,正確顯示查詢結果: Query Result: 80

總結

以上是生活随笔為你收集整理的Fabric--configtxlator转换配置添加组织到channel的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲免费av一区 | 浪潮av色| 麻豆精品国产传媒av | 日本簧片在线观看 | 亚洲自拍偷拍一区 | 欧美一级片在线免费观看 | 尤物最新网址 | 国产aⅴ精品一区二区三区久久 | 国产粉嫩在线观看 | 有码在线播放 | 国产夫妻自拍小视频 | 激情四射网| 久操操 | 日韩三级a| 日韩av不卡在线 | 人妻一区二区三区视频 | 久久久久久久久久久97 | 玉女心经 在线 | 成人毛片视频免费看 | 欧美中文日韩 | 欧美日韩精品一二三区 | 黑丝美女啪啪 | 91无毒不卡 | 国产精品一区二区三区四区视频 | 久久一区二区三区视频 | 一级片久久 | 亚欧在线免费观看 | 超91在线 | 久久青青国产 | 精品少妇视频 | 亚洲综合视频在线 | av在线一区二区 | 国产乱一区二区三区 | 国产农村妇女精品一区二区 | 四虎成人精品在永久免费 | 亚洲美女毛片 | 日本亲近相奷中文字幕 | 瑟瑟视频网站 | 99小视频 | 91av在线免费| 99在线精品视频 | 亚洲天堂2015 | 麻豆免费在线观看 | 色窝网 | 浪漫樱花动漫在线观看免费 | 成人网页在线观看 | 亚洲av无码乱码国产麻豆 | 成人777| 永久在线免费观看 | 成年视频在线 | av影院在线播放 | 大又大粗又爽又黄少妇毛片 | 99久久精品国产一区色 | free黑人多人性派对hd | jizzjizz亚洲 | 欧美日韩国产成人 | 亚洲天堂一级片 | 一道本av| av性天堂网 | www亚洲色图 | 日韩一区二区三免费高清在线观看 | 女性喷水视频 | 久草福利在线视频 | 欧美中文| 韩国毛片视频 | 99热免费 | 一区二区三区四区在线免费观看 | 韩国一区二区在线观看 | www啪啪| 狠狠干2022| 成年人黄色小视频 | 欧美日韩在线综合 | 伊人365影院 | 中文视频一区二区 | 一级片免费观看视频 | 成人自拍视频在线观看 | 中文字幕人妻一区二区 | 在线播放你懂得 | 亚洲综合av一区二区 | 国产精品1000部啪视频 | 手机av免费看 | 欧美xxxxbbbb| 欧美tv| 亚洲一区二区不卡在线观看 | 国产sss| 国产做爰免费观看视频 | 强videoshd酒醉 | 欧美日韩伊人 | 欧美少妇一区二区三区 | 少妇高潮一区二区三区69 | 色狠狠久久av大岛优香 | 国产女厕一区二区三区在线视 | 97人妻精品一区二区三区 | 精品伊人| 亚洲xxxx视频 | 日韩精品第1页 | 老司机久久精品视频 | 可以直接看av的网址 | 四虎永久免费影院 |