日韩性视频-久久久蜜桃-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的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 免费三级黄 | 野花视频免费在线观看 | 久久精品视频播放 | 日本变态折磨凌虐bdsm在线 | 久久亚洲国产 | 老司机深夜福利网站 | 亚洲爱v| 欧美特一级片 | 欧美日韩字幕 | 久久视频在线观看免费 | 亚欧成人在线 | 久草视频2 | 国产精品免费视频一区二区三区 | 国产欧美在线观看 | 肮脏的交易在线观看 | 超碰人人射 | 专干老肥女人88av | 人人爽久久涩噜噜噜网站 | 一级 黄 色 片69 | 国产精品久久久久久白浆 | 久久这里都是精品 | 亚洲欧洲av在线 | 在线免费观看视频a | 美女超碰在线 | 日韩免费黄色 | 精品一区二区在线免费观看 | 久久久久香蕉 | 视频一区二区中文字幕 | 久久网站免费观看 | 日韩欧美亚洲国产精品字幕久久久 | 手机成人av在线 | 亚洲激情精品 | 国产亚洲欧美在线视频 | 精品国产一区二区三区久久狼黑人 | 国产丝袜在线视频 | 六月丁香婷婷网 | www.天天综合 | 美女精品网站 | 欧美激情影音先锋 | 性生生活大片又黄又 | 午夜免费高清视频 | 国产又大又黄又粗 | 国产午夜精品久久 | 天天燥日日燥 | 欧美专区亚洲专区 | 四虎国产成人永久精品免费 | 男人的天堂视频 | 国产精品女主播 | 丁香婷婷综合网 | 性——交——性——乱免费的 | 自拍偷拍 亚洲 | 日韩精品视频三区 | 欧美天天性影院 | 蜜臀久久精品久久久用户群体 | 亚洲图片 自拍偷拍 | 超碰1000| 欧美日韩高清一区二区 国产亚洲免费看 | 17c在线观看 | 久草视频中文在线 | 国模私拍xvideos私拍 | 国产熟妇乱xxxxx大屁股网 | 77久久| 韩国妻子的朋友 | 自拍偷拍第| 91看毛片| 天天鲁| 小视频国产 | 中文字幕一区二区三区人妻不卡 | 无码人妻丰满熟妇啪啪网站 | 久久人妻无码aⅴ毛片a片app | 久久精品视频91 | 国产18p | 亚洲一区中文字幕在线观看 | 国产视频在线观看一区二区 | 巨大黑人极品videos精品 | 欧美性猛烈 | 色婷婷在线观看视频 | 欧美精品一区二区三区视频 | 欧美性大战久久久久久 | 欧美成人免费在线视频 | 四川话毛片少妇免费看 | 蜜臀久久99精品久久久画质超高清 | 精品久久91 | 午夜黄色网 | 黄色一极毛片 | 久久7777 | 九色丨蝌蚪丨成人 | av超碰 | 成人福利一区二区三区 | 久久αv| 国产精品久久久久久久9999 | 新91在线| 亚洲欧洲日本国产 | 国产成人av电影 | 黄色大片日本 | 91婷婷色 | 中文字幕1区 | 日韩av黄色片 | 日韩一区二区三区在线观看 |