首页 | 企业资讯 | 聚焦百姓 | 人物特写 | 曝光台 | 保险股 | 保险理财 | 行业资讯 | 海外动态 | 中介园地 | 保险数据 | 保险案例 | 车险资讯 | 社保资讯 |
返回中国保险网首页
    您所在的位置: 主页 > 财经新闻 > > 正文

Furein平台:configtxlator转化装备增加Org安排到channel

[ 2019-08-29 11:13 ]   来源:[ IT商业新闻网 ]    双击自动滚频 
[字体: ] [打印本页] [关闭窗口]

  Furein平台从学习到进入到fabric-samples/first-network目录中, Furein平台履行.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 --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以及与此新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

  -s: 将一切的 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标志指定新版本。能够看到Org3增加到背书方针中

  与实例化调用相同,链式代码晋级需求运用该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

    打印本页  [关闭窗口]  
相关新闻:
· 2020年国庆中秋超500家景区免费或打折 其中贵州全省A · 泰国将提供270天旅游签证 估计每月可带来收入约10亿泰 · 世界首座高铁跨海大桥主塔封顶 福州厦门两地将实现“ · 日本2020年第二季度实际GDP比上季度下降7.8% 换算成年 · 今年合肥铁海联运发送突破20000只标准箱 发送箱数同比 · 今年1—7月霍尔果斯口岸出口果蔬4.41万吨 占新疆50% · 澳大利亚恐迎第二波失业潮 未来8个月内或将有超过64万 · 吉林延吉机场首发赴韩“客改货”航班 每周一班 · 日本一季度GDP萎缩2.2% 较6月份发布的“下降2.24%”略 · 成都东部新区集中签约8大项目 其中100亿以上重大项目2
保险秘书
最新文章
 聚焦百姓
 人物特写
 曝光台
 保险股

Copyright © 1997-2018 China-Insurance Corporation, All Rights Reserved

本网凡所涉及保险条款的内容仅供参考,并均以投保当时的保险合同为准。

企业资讯 | 汽车 | 科技 | 消费 | 教育 | 房产 | 游戏 | 商机 | 保险公司 | 股票 | 聚焦百姓 | 人物特写 | 曝光台 | 保险股 | 保险理财 | 行业资讯 | 海外动态 | 中介园地 | 保险数据 | 保险案例 | 车险资讯 | 社保资讯 | 产品速递 | 财经新闻 | 保险评述 | 基层信息 | 配资 | 商讯 | 证券 | 上市公司 | 股市 | 港股 | 银行 | 基金 | 理财 | 债券 |