fabric peer 调试环境搭建

fabric peer 本地运行

配置单 peer, 单 order, 单cli 测试环境,方便调试 peer

1. 修改配置

1.1 修改配置文件

  • configtx.yaml 删除所有 关于 Org2 的选项
  • crypto-config.ymal PeerOrgs.Template.Count 改为 1

1.2 修改 docker-compose-cli.yml

删除 peer1.org1.example.com, peer1.org2.example.com, peer0.org2.example.com 等容器(以及依赖)

只留 orderer.example.com, cli 两个容器的配置

  • cli 的配置添加extra_host, 到时候将域名指向宿主机
extra_hosts:
      - "peer0.org1.example.com:192.168.1.xxx"

1.3 修改 byfn.sh

启动容器后,先不执行script.sh

注释

1.4 修改 script.sh 脚本

  • joinChannel 方法替换如下
joinChannel () {
    joinChannelWithRetry 0 1    
    sleep $DELAY
}
  • script.sh 中 install or instantiate 都改为对 peer0.org1 的操作, 如下
if [ "${NO_CHAINCODE}" != "true" ]; then

    ## Install chaincode on peer0.org1 and peer0.org2
    echo "Installing chaincode on peer0.org1..."
    installChaincode 0 1

    # Instantiate chaincode on peer0.org1
    echo "Instantiating chaincode on peer0.org1..."
    instantiateChaincode 0 1

    # Query chaincode on peer0.org1
    echo "Querying chaincode on peer0.org1..."
    chaincodeQuery 0 1 100

    # Invoke chaincode on peer0.org1 and peer0.org1
    echo "Sending invoke transaction on peer0.org1 peer0.org1..."
    chaincodeInvoke 0 1

    # Query on chaincode on peer1.org1, check if the result is 90
    echo "Querying chaincode on peer1.org1..."
    chaincodeQuery 0 1 90
    
fi

utils.sh(被 script.sh 引用) , instantiateChaincode 函数中 共识策略改成 "OR ('Org1MSP.peer')"

2 启动

2.1 启动容器(order, cli)

两个容器启动无误后

2.2 debug 模式启动 peer

peer 启动会读取一系列环境变量, 从系统读入,或者从 core.yml 文件,为了方便,我们 debug 时就把用到变量设置到core.yaml

docker-compose 文件中可以看到,peer 启动需要的一些环境变量

CORE_PEER_ID=peer0.org1.example.com
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
CORE_PEER_LISTENADDRESS=0.0.0.0:7051
CORE_PEER_CHAINCODEADDRESS=peer0.org1.example.com:7052
CORE_PEER_CHAINCODELISTENADDRESS=0.0.0.0:7052
CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org1.example.com:8051
CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
CORE_PEER_LOCALMSPID=Org1MSP
CORE_PEER_TLS_ENABLED=true
CORE_PEER_GOSSIP_USELEADERELECTION=true
CORE_PEER_GOSSIP_ORGLEADER=false
CORE_PEER_PROFILE_ENABLED=true
CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt

peer 程序中会将 CORE_PEER_ID 转化成 peer.id, CORE_PEER_CHAINCODEADDRESS 转化为 peer.chaincodeaddress 等,如下

peer:
    id: peer0.org1.example.com
     address: peer0.org1.example.com:7051
     localMspId: Org1MSP
     
     tls:
            cert:
                    file: ./tls/server.crt

 ....

这里注意 几个 文件的位置,

tls 的目录对应到 crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls 这个目录。

2.3 Goland 下的配置

新建 build config

这里的 working directory 指向的是 sampleconfig2(sampleconfig 目录拷贝而来), 将 crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tlscrypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp 目录复制到 sampleconfig2 目录下。修改 core.yaml 的配置如上 2.2 .

peer 启动默认用到 /var/hyperledger 目录存储。需要提前创建并改权限
sudo mkdir /var/hyperledger/ && sudo chown tanhui /var/hyperledger

2.4 本机添加hosts

peer 会找 orderer 节点,为本机添加host

127.0.0.1    orderer.example.com
127.0.0.1    peer0.org1.example.com

最后启动 peer

peer node start

2.5 执行 script.sh

进入 cli 容器

执行

./scripts/script.sh mychannel 3 golang 10

如果没有报错, peerdebug 环境就搭好了!

如果 createChannel 的时候报错如下

Principal deserialization failure (the supplied identity is not valid: x509: certificate signed by unknown authority) for identity 0

可能是因为之前docker 容器残留的数据导致,所以导致证书认证失败。

解决方案:执行如下命令删除卷

docker-compose -f docker-compose-cli.yaml down --volumes --remove-orphans
sudo docker rm -f $(docker ps -a | grep "hyperledger/*" | awk "{print \$1}")
sudo  docker volume prune

我用的材料: first-network.zip

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

推荐阅读更多精彩内容