范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Hyperledger2。0链码安装

  简介
  以Hyperldger2.0为例,链码的安装主要分为以下几部分: package :打包源代码 install: 安装链码 approveformyorg: 节点所在组织审批链码 commit: 提交链码 在完成之后可以执行链码的查询和调用 package首先需要对合约进行编译,首先把我们写的go语言合约放到chaincode下新建的test文件夹下。 root@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# pwd /opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test root@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# ls CaAndFakeName.go root@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test#  执行命令 go mod init  生成go.modroot@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# go mod init go: creating new go.mod: module github.com/hyperledger/fabric-samples/chaincode/test root@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# ls CaAndFakeName.go  go.mod 执行命令 go run CaAndFakeName.go   生成go.sumroot@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# go run CaAndFakeName.go  Error starting UserCA chaincode: "CORE_CHAINCODE_ID_NAME" must be setroot@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# ls CaAndFakeName.go  go.mod  go.sum
  上述的 CORE_CHAINCODE_ID_NAME  不设置不影响链码部署和执行。执行命令 GO111MODULE=on go mod vendor  生成vendor包root@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# GO111MODULE=on go mod vendor root@lamaxiya:/opt/gopath/src/github.com/hyperledger/fabric-samples/chaincode/test# ls CaAndFakeName.go  go.mod  go.sum  vendor 将我们编译好的智能合约打包到容器内,执行命令如下: docker exec cli peer lifecycle chaincode package $1.tar.gz      --path github.com/hyperledger/fabric-samples/chaincode/$3             --label $1_$2
  上述参数定义为(下面的参数与此相同): $1 表示我们自定义的合约打包的名字如(mycc.tar.gz 则参数1为mycc)。$2 代表我们链码的版本开始时一般为1,后续如果需要升级合约可依次为2、3、4……。$3 代表我们链码放的位置(对应上文编译时为test文件夹,则参数2为test)。install
  在完成打包后执行安装命令(安装到示例网络的两个组织的节点上)如下: 节点1,msp配置文件、address、tls配置文件默认为peer0.org1不用添加 docker exec cli peer lifecycle chaincode install $1.tar.gz 节点2,因为时在cli容器执行需要添加指定的文件路径 docker exec      -e CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp      -e CORE_PEER_ADDRESS=peer0.org2.example.com:9051      -e CORE_PEER_LOCALMSPID="Org2MSP"      -e 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.crt      cli peer lifecycle chaincode install $1.tar.gz
  上述安装成功的话会输出链码的package_id如下: 3cd7767df34500f3d72faf7efd9774fbd72da4be0696b372207mycc_1" >  2022-01-04 14:13:44.443 UTC [cli.lifecycle.chaincode] submitInstallProposal -> INFO 002 Chaincode code package identifier: mycc_1:cb23fa9b0bace2c353cd7767df34500f3d72faf7efd9774fbd72da4be0696b37
  此 package identifier: mycc_1:cb23fa9b0bace2c353cd7767df34500f3d72faf7efd9774fbd72da4be0696b37 我们下文需要使用.approveformyorg
  在完成安装命令之后需要组织进行同意命令如下: peer0.org1执行命令 docker exec cli peer lifecycle chaincode approveformyorg      --tls      --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem      --channelID mychannel --name $1 --version $2      --init-required --sequence $2 --waitForEvent --package-id $4 peer0.org2执行命令 docker exec      -e CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp      -e CORE_PEER_ADDRESS=peer0.org2.example.com:9051      -e CORE_PEER_LOCALMSPID="Org2MSP"      -e 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.crt      cli peer lifecycle chaincode approveformyorg      --tls      --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem      --channelID $4 --name $3 --version $2 --init-required      --sequence $2 --waitForEvent --package-id $1
  上述参数 $4 就是上文中生成的package identifier。commit
  在完成组织审批之后,需要执行链码向orderer节点进行提交执行如下命令: docker exec cli peer lifecycle chaincode commit -o orderer.example.com:7050      --tls      --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem      --peerAddresses peer0.org1.example.com:7051      --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt      --peerAddresses peer0.org2.example.com:9051      --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt      --channelID $4 --name $3 --version $2 --sequence $2 --init-required
  上述命令成功执行完输出如下表明链码安装成功。 2022-01-04 14:20:56.239 UTC [cli.lifecycle.chaincode] setOrdererClient -> INFO 001 Retrieved channel (mychannel) orderer endpoint: orderer.example.com:7050 2022-01-04 14:20:58.526 UTC [chaincodeCmd] ClientWait -> INFO 002 txid [4e000545094b9b09c359a6f54d00e7a8efddf78e125e75ad25a3b14eb5d98885] committed with status (VALID) at  approced on org2 successful 2022-01-04 14:21:01.520 UTC [chaincodeCmd] ClientWait -> INFO 001 txid [5243ea90c3bc104e3998707e5859857f01fb360e38d3d325d8761c84ae455f6c] committed with status (VALID) at peer0.org1.example.com:7051 2022-01-04 14:21:01.522 UTC [chaincodeCmd] ClientWait -> INFO 002 txid [5243ea90c3bc104e3998707e5859857f01fb360e38d3d325d8761c84ae455f6c] committed with status (VALID) at peer0.org2.example.com:9051 commit successful 2022-01-04 14:21:05.637 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200
  以上就是fabric2.0中安装一个链码的正常步骤。 半自动化安装链码
  下面是我封装的安装链码的两个sh文件,可以简化终端输入 文件1是对步骤 package和install 的命令封装。function help(){         echo "para1-----package_name"         echo "para2-----chaincode_id"         echo "para3-----chaincode_dir" } if [ $1 == "help" -o $1 == "h" -o $1 == "-h" -o $1 == "-help" ]; then         help         exit 1 fi if [ $# -ne 3 ]; then         echo "You need to enter three para3"         exit 1 fi #打包 docker exec cli peer lifecycle chaincode package $1.tar.gz          --path github.com/hyperledger/fabric-samples/chaincode/$3          --label $1_$2 if [ $? -ne 0 ]; then         echo "package error"         exit 1 fi docker exec cli ls docker exec cli peer lifecycle chaincode install $1.tar.gz if [ $? -ne 0 ]; then         echo "install on org1 error"         exit 1 fi echo "install on org1 successful" docker exec          -e CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp          -e CORE_PEER_ADDRESS=peer0.org2.example.com:9051          -e CORE_PEER_LOCALMSPID="Org2MSP"          -e 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.crt          cli peer lifecycle chaincode install $1.tar.gz if [ $? -ne 0 ]; then         echo "install on org2 error"         exit 1 fi
  linux执行命令为如下: sh 文件名.sh $1 $2 $3  需要注意将输出的package identifier使用变量记录下来,文件2需要使用此参数文件2是对步骤 approveformyorg和commit 的命令封装。function help(){         echo "para1-----package_id"         echo "para2-----chaincode_id"         echo "para3-----chaincode_name"         echo "para4-----channel_name" } if [ $1 == "help" -o $1 == "h" -o $1 == "-h" -o $1 == "-help" ]; then         help         exit 1 fi docker exec cli peer lifecycle chaincode approveformyorg          --tls          --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem          --channelID $4 --name $3 --version $2          --init-required --sequence $2 --waitForEvent --package-id $1 if [ $? -ne 0 ]; then         echo "approve failed for org1"         exit 1 fi echo "approved on org1 successful " docker exec          -e CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp          -e CORE_PEER_ADDRESS=peer0.org2.example.com:9051          -e CORE_PEER_LOCALMSPID="Org2MSP"          -e 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.crt          cli peer lifecycle chaincode approveformyorg          --tls          --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem          --channelID $4 --name $3 --version $2 --init-required          --sequence $2 --waitForEvent --package-id $1 if [ $? -ne 0 ]; then         echo "approve failed for org2"         exit 1 fi echo "approced on org2 successful" docker exec cli peer lifecycle chaincode commit -o orderer.example.com:7050          --tls          --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem          --peerAddresses peer0.org1.example.com:7051          --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt          --peerAddresses peer0.org2.example.com:9051          --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt          --channelID $4 --name $3 --version $2 --sequence $2 --init-required if [ $? -ne 0 ]; then         echo "commit failed"         exit 1 fi echo "commit successful"
  linux执行命令为如下 sh 文件名.sh 参数1 参数2 参数3 参数4   参数1为上文输出的package identifier。
  Hyperledger中文文档

洋韭菜来了?那是洋厨子!散户更没未来今天看到不少人在发关于境外投资者要入场的消息,欢欣鼓舞,预感明天股市一定要涨。洋钱进场,势必要带一波热潮,明天涨基本是个定局,就是多少的问题,最近国外疫情苦,大A股经常独立,这下更忘记那桶油和深圳房价吧,都不是你能玩的!我真的是活太久了。不仅见识了水比油贵,还见识了倒贴钱的油,见识了出狱就身价数百万的罪犯网红,见识了银行刚放出去又要收回来的贷款。一个折叠的社会里,每层都有每层的魔幻。先是普罗大众都蒋凡道歉,如坐实传言马云是否要挥泪斩马稷?今天下午,蒋凡道歉了,在阿里内网。蒋凡在内网表达了两个主要观点第一,因为家人在微博上的言论和一些不实网络传言给公司带来了非常不好的影响,深表歉意第二,他恳请公司对自己展开相关调查。lwbnb!红米黑鲨疯狂合体,缝合毫无违和感刚看标题,你以为我想说卢本伟牛逼?再好好看看,是卢伟冰牛逼!四舍五入,lbw和lwb没啥区别。本以为卢伟冰口中的红米游戏手机会是什么酷炫狂拽吊炸天的神器,结果今天一公布差点没让我y特色国情之下,韭菜欠中国银行的钱要不要还?闹剧可能刚刚开始原油宝的事一出,万年被骂的P2P也不那么渣了。毕竟P2P只割韭菜,而原油期货是刨韭菜根。现在的理财途径,不是比谁赚的多,还是比谁亏的少。至于韭菜,不患被割而患被割的比别人多,看别人ienglish学英语,2年初中,4年本科,销售顶着传销的壳一种全新的学习英语方式来了!这种方式学习效果足以让新东方犯难VIP羞愧,甚至考试神器学科教学大神学而思可能都要反思。每天使用半小时,小白两年达到初中水平,四年达到本科水平,而且听说趣店又撒币了趣店又撒币了!昨天到今天,朋友圈都被趣店万里目的全明星阵容给承包了,真的是大手笔,一个网红都没有,都是真正的演艺明星,从一线到强二线,都有了,有钱真好。可能是给底层放现金贷起家的趣到处刷微粒贷的人,别傻了!昨天开始,朋友圈微信群到处都是发微粒贷二维码的人。告诉你利息比借呗低,扫码看额度就有20块红包,然后红包可以分你一半。因为微信强大的影响力,无数人刷码,直到服务器都应付不来,出现刷华为造车遭质疑?或许吐槽大会该邀请王兴当次嘉宾一直以来,行业大佬之间的互怼已经成为一种比较常见的现象。从手机到互联网,再到汽车,总有个别大佬只管自己口嗨过不过瘾,完全不顾对企业形象的影响,甚至有时候自己突然多个敌人也不知道。提只剩最后一张牌的华为,押注P50能有多大胜算?华为P50就往年来说,新一代的华为P系列都是在3月份海外首发,然后4月份前后在国内发布。然而由于人们都知道的一些原因,最新的P50系列已经迟到了一个月还多,时下已经到了5月份,关于520浇冰水系列家里没矿的,结婚之前先查征信,否则可能很惨本文转载自地产风声,作者内幕君婚姻不考虑爱情是功利的,只考虑爱情是愚蠢的。1hr当我们谈论婚姻的时候,我们在谈论什么?性,爱,或者是信任。当我们谈论信任时,我们又在谈论什么?坦诚,
适合敏感肌的潜水衣级防晒EQQUALBERRY潜水衣防晒霜前几天刷微博,看到了这个特别搞笑的视频,心疼小哥之余,想到暴晒的夏天又要来了。你买防晒了吗?你还在这笑。下面我们就来分享下EQQUALBERRY出品的潜水衣防晒霜目录一,我们为什么十五万级紧凑型SUV怎么选?这两款全系2。0T运动感十足要说目前汽车市场竞争最为火热的是哪一类车型?小编认为毫无疑问是SUV莫属,而SUV市场里竞争最激烈的则是紧凑级SUV。在这个级别里,很多车型都有着非常吸引人的属性,不论是颜值动力还全网爆火!580页Python编程快速上手,零基础也能轻松学会Python虽然一向号称新手友好,但对完全零基础的编程小白来讲,总会在很长时间内,都对某些概念似懂非懂,每次拿起书本教程,都要从第一章看起。对于这种迟迟入不了门的情况,给大家推荐一shell编程数组操作详细讲解,理论实战,零基础也能轻松学会7。1数组介绍变量存储单个元素的内存空间数组存储多个元素的连续的内存空间,相当于多个变量的集合数组名和索引索引的编号从0开始,属于数值索引索引可支持使用自定义的格式,而不仅是数值格为灵感增添色彩INNOCN26C1F美术显示器女生化妆台,男生数码桌面,绝对是两大宝藏,被细心的布置和呵护。单就男生而言,时不时的入手一件电子产品升级一下桌面,绝对是一件可以开心好几天的事情。桌面的主要构成当然是电脑主机和显示SPA级护肤,极致剃须体验舒适水次元5剃须刀套装ampampamp剃须泡今天开箱的是舒适的水次元5剃须刀,说到剃须刀就先说说胡子的小故事吧进化论说人是猴子变的,人类退化了各处的体毛,只留下一些有功能性的位置,为什么唯独男性留下了如此茂密的胡须当然科学说达芬奇高级调色台更换新键帽实现新功能更能配合新功能几个月前达芬奇17版本发布后,我们看到了许多新功能。但是细想一下,这些功能并不能在旧版的调色台上得以实现。我曾经设想过,BMD公司是不是会推出全新设计的调色台呢?毕竟某些调色软件搭德国Galileo系列纪录片采用DaVinciResolveStudio剪辑BlackmagicDesign今日发布消息称,为ProSieben电视网历史悠久的Galileo节目所制作的一组特别节目,采用DaVinciResolveStudio完成剪辑调色超宽曲面屏,体验真香感觉惠科HKCC299Q曲面屏显示器之前朋友一直在耳边唠叨,曲面屏显示器视野宽观感好如如何如何的,我还心中纳闷,习惯了正常的屏幕,曲面屏真的有那么好吗?直到这次体验到惠科HKCC299Q曲面屏显示器,我才真切的感受到新手必备!超详细Flask入门基础教程Flask是使用python编写的一个轻量级的可定制框架。相对于Django而言是更轻量级的Web框架。在很多社群里,大家都在讨论着到底是学习Flask好,还是学习Django好,Python正则表达式超详细教程!(看完这篇,别说你不会了)正则表达式是一个极强大的字符串处理工具,在各种程序语言中正则表达式的使用方法都有所不同,但其本质都差不多,只要学会了其中一种语言的正则表达式用法,其他的也都会很快理解。而Pytho