如何更新channel的orderer地址

如何更新一个channel的orderer地址

详细文件请参考:fabric文档:Updating a Channel Configuration

假设CHANNEL_NAME=mychannel

Step 1:得到channel的最新配置块(config block)

#!/bin/bash

export CHANNEL=mychannel

export CORE_PEER_LOCALMSPID=Org1MSP
export CORE_PEER_MSPCONFIGPATH=crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

peer channel fetch config config.pb \
  -o orderer.example.com:7050 \
  -c ${CHANNEL} \
  --tls --cafile crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

生成本地配置块文件config.pb

注意:peer channel fetch config拿到的最新的配置块,而如果使用peer channel fetch 0则是拿到第一个配置块,第一个配置块就是channel的第一个块。从log也能看出其中的差异:

如果是0:
2018-08-02 05:30:49.968 UTC [channelCmd] readBlock -> DEBU 00a Received block: 0

如果是config:
2018-08-02 05:30:52.896 UTC [channelCmd] readBlock -> DEBU 00a Received block: 6
这个数字会根据配置的更新历史发生变化。

Step 2:从config.pb中提取有效的数据,并转换成可编辑json格式

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

Step 3:修改config.json里面的orderer地址
例如修改orderer地址,或者添加orderer地址。

      "OrdererAddresses": {
        "mod_policy": "/Channel/Orderer/Admins",
        "value": {
          "addresses": [
            "orderer.example.com:7050"
          ]
        },
        "version": "0"
      }

修改后保存为新的文件名,例如config_update.json

或者使用jq更新:

jq '.channel_group.values.OrdererAddresses.value.addresses = ["orderer.example.com:7050","orderer2.example.com:7050"]' config.json > config_update.json

Step 4:把前后的两个json文件重新转换回pb类型文件

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

注意两个都要改,替换原来从channel里面直接拿到的config.pb文件,否则无法比较。

Step 5:比较前后两个pb文件的差异,即改动部分

configtxlator compute_update \
  --channel_id mychannel \
  --original config.pb \
  --updated config_update.pb \
  --output mychannel_update.pb

Step 6:把配置变化部分转换成json格式

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

Step 7:为上述json文件添加头部信息(Header)
封装成一个完整的config update请求。

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

Step 8:把封装好的json文件转换回pb格式文件

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

Step 9:获取签名

#!/bin/bash

export CHANNEL=mychannel

export CORE_PEER_LOCALMSPID=Org1MSP
export CORE_PEER_MSPCONFIGPATH=crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
peer channel signconfigtx -f ${CHANNEL}config_update_in_envelope.pb \
    -o orderer.example.com:7050 \
    --tls \
    --cafile crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem

Step 10:提交修改请求到orderer

#!/bin/bash

export CHANNEL=mychannel

# Notice, there must use orderer MSP,otherwise, you will see following error:
# Error: got unexpected status: BAD_REQUEST -- error authorizing update: error validating DeltaSet: policy for [Value]  /Channel/OrdererAddresses not satisfied: Failed to reach implicit threshold of 1 sub-policies, required 1 remaining
# and from orderer log, you may find:
# orderer.example.com    | 2018-08-02 05:51:23.892 UTC [cauthdsl] func2 -> DEBU 253 0xc420116060 identity 0 does not satisfy principal: the identity is a member of a different MSP (expected OrdererMSP, got Org1MSP)

export CORE_PEER_LOCALMSPID=OrdererMSP
export CORE_PEER_MSPCONFIGPATH=crypto-config/ordererOrganizations/example.com/users/Admin@example.com/msp

peer channel update -f mychannel_update_in_envelope.pb \
        -o orderer.example.com:7050 \
        -c ${CHANNEL} \
        --tls \
        --cafile crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,654评论 18 139
  • Fabric 是联盟链,一个 channel 就好比一个联盟,如果有新的机构需要加入,则必须得到联盟内的成员的认可...
    Kerwong阅读 5,599评论 0 5
  • 不管多忙都要留出余闲 不管你是日理万机的经理,还是工作堆满的工作狂,还有忙着赶早班车的上班族。不管多忙都要留出余闲...
    是小怪物阅读 270评论 0 0
  • 最近在读《杀死一只知更鸟》,用里面一句打动我的话结尾吧:Courage is not a man with a...
    孙梦2017工作备忘阅读 612评论 0 0
  • 《好好说话》马东出品马薇薇 黄执中等著 1、 “跳崖式”让步最关键的就是在一次降价之后绝不能在降,同时让步理由必须...
    梅梅_c7d4阅读 91评论 0 0