Fabric2.0 新特性实践:通道成员可扩展链码

2023-05-16

  承接上文:Hyperledger Fabric 2.0新特性,Fabric2.0版本允许组织去扩展链码,也就是说通道成员之间的链码包可能会不同,这么做的好处是每个组织可以根据自身利益增加自己的业务逻辑。
  为测试这一特性,本文将会对比Fabric1.4版本和Fabric2.0版本,阅读过程中注意当前版本,及时切换到不同分支。

改造链码

  测试网络选用:fabric-samples/first-network
  链码选用:sacc
  在本文中,我们基于sacc构建了另一个链码sacc-check,相对于sacc增加了一个条件校验:如果key为age,则返回错误。
  进入fabric-samples/chaincode/sacc目录,sacc.go原代码:

// Set stores the asset (both key and value) on the ledger. If the key exists,
// it will override the value with the new one
func set(stub shim.ChaincodeStubInterface, args []string) (string, error) {
	if len(args) != 2 {
		return "", fmt.Errorf("Incorrect arguments. Expecting a key and a value")
	}

	err := stub.PutState(args[0], []byte(args[1]))
	if err != nil {
		return "", fmt.Errorf("Failed to set asset: %s", args[0])
	}
	return args[1], nil
}

  我们稍作修改,增加前面提到的校验:

// Set stores the asset (both key and value) on the ledger. If the key exists,
// it will override the value with the new one
func set(stub shim.ChaincodeStubInterface, args []string) (string, error) {
	if len(args) != 2 {
		return "", fmt.Errorf("Incorrect arguments. Expecting a key and a value")
	}
    if args[0] == "age" {
        return "",fmt.Errorf("错误的key")
    }
	err := stub.PutState(args[0], []byte(args[1]))
	if err != nil {
		return "", fmt.Errorf("Failed to set asset: %s", args[0])
	}
	return args[1], nil
}

基于1.4版本测试

  按照上节修改链码

cd fabric-samples/chaincode
cp -r sacc sacc-check
cd sacc-check
vim sacc.go

  进入fabric-samples/first-network目录执行,默认通道testchannel,链码mycc:

./byfn.sh up

  peer0.org1.example.com安装链码sacc

 docker exec cli peer chaincode install -n sacc -v 1.0 -p github.com/chaincode/sacc

  peer0.org2.example.com安装链码sacc

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 chaincode install -n sacc -v 1.0 -p github.com/chaincode/sacc-check

  可通过以下命令查看链码是否已安装成功,查询结果中Id是不同的。

# peer0.org1.example.com
docker exec cli peer chaincode list --installed
# peer0.org2.example.com
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 chaincode list --installed

  实例化链码

docker exec cli peer chaincode instantiate -o orderer.example.com:7050 --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C testchannel -n sacc -v 1.0 -c '{"Args": ["name","kc"]}' -P "AND('Org1MSP.member','Org2MSP.member')"

  调用合约查询

# peer0.org1.example.com
docker exec cli peer chaincode query -C testchannel -n sacc -c '{"Args":["query","name"]}'
# peer0.org2.example.com
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 chaincode query -C testchannel -n sacc -c '{"Args":["query","name"]}'

  在peer0.org1.example.com查询返回结果:kc,在peer0.org2.example.com返回错误:

Error: endorsement failure during query. response: status:500 message:"failed to execute transaction 0b0523dac965b32fff0fc0faadb3270646efc256198b6b8a42856006ccdb2ddd: [channel testchannel] failed to get chaincode container info for sacc:1.0: could not get chaincode code: chaincode fingerprint mismatch: data mismatch" 

  报错原因:链码不匹配。可见在1.4版本中是不支持组织安装不同链码的。

基于2.0.1版本测试

  Fabric 2.0 启用了新的链码周期,我们按照下图进行测试:
在这里插入图片描述
  测试网络仍然选择first-network,通道mychannel

cd fabric-samples/first-network
./byfn.sh up

  首先按上文编辑链码:

cd fabric-samples/chaincode
cp -r sacc sacc-check
cd sacc-check
vim sacc.go

  生成vendor目录:

cd chaincode/sacc
GO111MODULE=on go mod vendor
cd ../sacc-check
GO111MODULE=on go mod vendor

  打包链码:

docker exec cli peer lifecycle chaincode package sacc.tar.gz --path github.com/hyperledger/fabric-samples/chaincode/sacc/ --label sacc_1
docker exec cli peer lifecycle chaincode package sacc-check.tar.gz --path github.com/hyperledger/fabric-samples/chaincode/sacc-check/ --label sacc_1
docker exec cli ls

  执行结果如下图所示:
在这里插入图片描述
  安装链码:

# peer0.org1.example.com
docker exec cli peer lifecycle chaincode install sacc.tar.gz
# peer0.org2.example.com
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 sacc-check.tar.gz

  查询已安装链码,得到packageID(注意此处两个节点返回的packageID是不同的):

# peer0.org1.example.com
docker exec cli peer lifecycle chaincode queryinstalled
# peer0.org2.example.com
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 queryinstalled

  peer0.org1.example.com返回结果:Package ID:sacc_1:a615a5892af0e8ab0a17851e76f995582138f6e8853a2fa782f50a05c82390d2, Label: sacc_1
  peer0.org2.example.com返回结果:Package ID:sacc_1:153bdd87b0d61052590bd154d6418acc9eaf7752b68b1ef40a231391172875ce, Label: sacc_1
  组织同意链码定义:

#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 sacc --version 1 --sequence 1 --waitForEvent --package-id sacc_1:a615a5892af0e8ab0a17851e76f995582138f6e8853a2fa782f50a05c82390d2
#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 mychannel --name sacc --version 1 --sequence 1 --waitForEvent --package-id sacc_1:153bdd87b0d61052590bd154d6418acc9eaf7752b68b1ef40a231391172875ce

  提交链码定义:

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 mychannel --name sacc --version 1 --sequence 1

  调用合约,此处参数传入“name”:

docker exec cli peer chaincode invoke -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 -C mychannel -n sacc -c '{"Args":["set","name","kc"]}'

  合约调用成功后,执行查询操作:

# peer0.org1.example.com
docker exec cli peer chaincode query -C mychannel -n sacc -c '{"Args":["query","name"]}'
# peer0.org2.example.com
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 chaincode query -C mychannel -n sacc -c '{"Args":["query","name"]}'

  查询结果如下图所示:
在这里插入图片描述
  sacc-check/sacc.go我们做了校验:不能通道调用链码设置"age",我们这里做个测试

docker exec cli peer chaincode invoke -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 -C mychannel -n sacc -c '{"Args":["set","age","30"]}'

  下图显示了执行结果:这里报错“错误的key”,由此我们完成了测试。在这里插入图片描述

总结

  Fabric2.0这一特性,使得不同组织可以根据自身利益安装智能合约。当然最终合约调用是否成功和背书策略也有关系,在上节演示时,我们使用的是默认的背书策略即大多数组织同意,由于我们选用的是两组织的first-network网络,因此此处需要两个组织均同意,由此上节交易不能通过。在实际应用场景中,需要综合考虑相关问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fabric2.0 新特性实践:通道成员可扩展链码 的相关文章

  • Debian/Ubuntu云服务器配置最速实践笔记[1]

    在腾讯云购买了一台轻量云服务器跑几个机器人用 一篇基础配置的实践笔记 系统是Debian 11 理论上Ubuntu等衍生版本基本可以无修改地参考添加普通用户安装Docker安装Node js安装miniconda安装Jupyter Note
  • ros编队仿真

    在用ros进行编队仿真时遇到报错 xff1a ERROR 1674979376 956803293 256 792000000 tb3 2 passed to lookupTransform argument target frame do
  • 入门DP | 2:租用游艇问题

    租用游艇问题 成绩10开启时间2020年03月24日 星期二 23 15折扣0 8折扣时间2020年04月21日 星期二 23 55允许迟交否关闭时间2020年04月21日 星期二 23 55 问题描述 长江游艇俱乐部在长江上设置了n个游艇
  • 本人亲测解决ipython及jupyter不能使用tensorflow的问题

    1 在ipython下无法使用的解决方案 尝试在Anaconda lib site packages中新建path pth文件 xff0c 里面内容为指定的虚拟环境名下的lib site packages位置 例如 xff1a D Prog
  • 树莓派连接“手机热点“或“WiFi“ 后无法上网,以及连接“手机热点“或“WiFi“时VNC连接失败问题

    问题描述 之前一直在开热点 xff0c 通过电脑端VNC控制树莓派拍摄照片 xff0c 今天突然发现树莓派上不去网 xff0c 所以就试着尝试解决了一下 xff0c 心路历程如下 xff1a 要么就是树莓派连不上网 xff0c 要么就是连上
  • 基于python批量调整图像大小

    前言 在写论文的时候常常因为截图的尺寸大小不一样 xff0c 导致图片排版很难受 xff0c 在word中又不会批量修改 xff0c 用下面的代码可以批量处理修改成一样的尺寸哦 xff01 代码如下 xff1a 在本文中 xff0c 我将向
  • Nginx 命令

    nginx 启动Nginx nginx s reopen 重启Nginx nginx s reload 重新加载Nginx配置文件 xff0c 然后以优雅的方式重启Nginx nginx s stop 强制停止Nginx服务 nginx s
  • jieba,为中文分词而生的Python库

    jieba xff0c 为中文分词而生的Python库 中文分词 xff0c 通俗来说 xff0c 就是将一句 段 话按一定的规则 算法 拆分成词语 成语 单个文字 中文分词是很多应用技术的前置技术 xff0c 如搜索引擎 机器翻译 词性标
  • MDK的内嵌汇编与内联汇编

    内联汇编 asm 34 指令 34 这是内联汇编 而MDK下 xff0c 内联汇编仅支持ARM汇编语言 xff0c 不支持Thumb或者Thumb 2汇编语言 xff0c 但内嵌汇编器支持Thumb和Thumb 2 STM32的core c
  • 【李刚-21天通关Python-08】之 字典

    李刚 21天通关Python 08 之 字典 一 字典的概念 1 字典用于保存具有映射关系的数据 xff0c 字典相当于保存了两组数据 xff0c 其中一组数据被称为key xff0c 另一组数据可通过key来访问 xff0c 被称为val
  • 按键精灵 百度文字识别(百度ocr)OCRSpace文字识别

    目录 1 申请百度OCR服务1 1 百度OCR登录1 2 创建新应用1 3 免费领取次数1 3 查看是否创建成功 2 按键精灵运用百度OCR接口2 1 通用文字识别 xff08 高精度版 xff09 文档2 1 1 接口描述2 1 2 请求
  • Ubuntu系统扩大/home分区

    gparted是一款免费 开源的Linux下的具有图形用户界面的分区软件 在Ubuntu中 xff0c 可以使用如下命令安装 xff1a sudo apt get install gparted 之后就可以使用如下命令启动gparted s
  • sqlsever导入sql文件

    sqlsever导入sql文件 新建一个数据库 xff0c 数据库名与到导入的文件的数据库名一致 把文件拖入当前窗口 xff0c 把创建表的语句删除 xff0c creat table到go语句之前 xff08 因为创建表的路径不一样 xf
  • Python接口自动化——自动化测试分层(1)

    从本期开始 xff0c 我们会围绕 Python接口自动化 做专题连载 xff0c 今天开始做第一讲 自动化测试分层 目录 xff1a 1 1 1 1 单元自动化测试 2 1 1 2 接口自动化测试 3 1 1 3 UI自动化测试 现在流行
  • C++快读模板(读入整型数据)

    先上代码 span class token macro property span class token directive keyword include span span class token string lt iostream
  • Linux安装jenkins2.3详解

    Linux安装jenkins2 3详解 下载 官网下载jenkins xff0c 我们选择rpm包进行安装 xff1a 地址 xff1a https mirrors jenkins ci org redhat https get jenki
  • 程序设计思维 week4 作业C-TT 的神秘礼物

    题目 TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT 任务
  • 程序设计思维 week11 作业E-东东与ATM

    题目 一家银行计划安装一台用于提取现金的机器 机器能够按要求的现金量发送适当的账单 机器使用正好N种不同的面额钞票 xff0c 例如D k xff0c k 61 1 2 N xff0c 并且对于每种面额D k xff0c 机器都有n k张钞

随机推荐

  • 程序设计思维 CSP-M3

    T1 瑞神的数列 题目 Sample Input 12 2 3 3 6 6 6 1 1 4 5 1 4 Sample Output 8 思路 利用vector xff0c 使用vector lt int gt v储存数字 若v为空 xff0
  • ubuntu一段时间后突然无法上网

    在VMware中安装Ubuntu虚拟机 xff0c 总会发生无法上网的情况 xff0c 主要情况有以下几点 xff1a 宿主机可以上网 xff1b 虚拟机却无法访问网页虚拟机ping不通任何网站 xff0c 用浏览器显示error 一般情况
  • STM32 - 使用 HAL 库实现软件模拟 I2C

    不要让自己太懒的个人空间 I2C 的两个引脚 xff08 SCL 引脚和 SDA 引脚 xff09 需要既能输出又能输入 xff0c 为了避免复杂的配置操作需要把该引脚配置为开漏输出模式 xff0c 该模式的说明如下图所示 xff1a 当单
  • 二进制基础:补码,左移,右移

    binary 引入为什么要有补码特殊的值溢出数学移位逻辑位移逻辑右移的应用 引入 二进制是计算机的基础 xff0c 追根溯源还是因为Si的半导体性 除了二进制 xff0c 还有十六进制 xff0c 它是简化二进制的表示 做个测试 xff1a
  • GitLab配置SSH key

    1 我们已经有了gitlab的账户 xff0c 项目组已经将我们添加到了group 2 打开git bash xff0c 输入命令 ls al ssh 如果显示如下图 xff1a 则表示生成过key 可以去执行第4个步骤 否则的话执行第三个
  • centos误删python2后怎么重新安装

    此教程为离线安装 一 先查询系统版本 cat proc version Linux version 3 10 0 1127 el7 x86 64 mockbuild 64 kbuilder bsys centos org gcc versi
  • Week 6 H (A - 氪金带东)(B - 戴好口罩!)(C - 掌握魔法の东东 I)(D - 数据中心)

    Week 6 A 氪金带东题意思路代码 B 戴好口罩 xff01 题意思路代码 C 掌握魔法 东东 I题意思路代码 D 数据中心题意思路代码 A 氪金带东 题意 思路 首先 xff0c 这个图是棵树 解法 xff1a 三遍DFS 前两遍用来
  • CSP M2(A - HRZ 的序列)(B - HRZ 学英语)(C - 咕咕东的奇妙序列)

    CSP M2 A HRZ 的序列题意思路代码 B HRZ 学英语题意思路代码 C 咕咕东的奇妙序列题意思路代码 A HRZ 的序列 题意 思路 我们先求有多少个不同的数 xff0c 记为cnt xff0c 然后分情况进行处理 cnt gt
  • CSP M4 (A - TT数鸭子)(B - ZJM要抵御宇宙射线)(C - 宇宙狗的危机)

    CSP M4 A TT数鸭子思路代码 B ZJM要抵御宇宙射线思路代码 C 宇宙狗的危机思路代码 A TT数鸭子 思路 给你n个很多未的数 xff0c 然后有个k表示最大能有k 1位数是不一样的 xff0c 输出符合的数的个数 xff08
  • 1.C语言基础-给字符数组赋值

    1 定义字符数组定义时直接初始化 定义字符数组定义时直接初始化 下面例子中直接将字符串123456的首地址赋值给a span class token keyword char span a span class token punctuat
  • 【阿里云】Apsara Clouder云计算专项技能认证-云服务器ECS入门,考试真题分享

    以下是阿里云Apsara Clouder云计算专项技能认证 云服务器ECS入门真题汇总篇分享 xff1a 1 下列哪一个不是重置ECS密码的步骤 A 查看实例详情 B 进入控制台 C 远程连接ECS D 点击控制台 概览 2 针对云服务器E
  • IDEA启动报错 could not find main class

    IDEA启动报错 could not find main class IDEA启动时发生报错 xff1a 排查过程如下 xff1a 首先在idea安装目录下 xff0c 找到 bin idea bat 文件cmd运行bat后可以看到报错信息
  • 网站访问高峰之后,如何回收已占用的swap分区

    如下所示 xff1a root 64 oldboy free m total used free shared buffers ached Mem 981 834 146 0 7 181 43 buffers cache 646 335 S
  • pip 安装使用国内镜像源

    pip 包管理器 默认是去官方国外网站下载 xff0c 速度比较慢 xff0c 我们可以通过使用国内镜像源来提高下载速度 1 临时使用 xff1a 可以在使用pip的时候加参数 i 镜像源 xff0c 如使用豆瓣源 xff1a pip in
  • 如何解压 .lz4 后缀文件

    首先需要window电脑 看好你电脑是64还是86 xff0c 直接把lz4后缀的文件拖拽到 exe上面就可以了 下载地址 xff1a https pan baidu com s 1VUAq1v6j9a abwtfmN1w2Q 密码 vw4
  • 关于CondaHTTPError:HTTP 000 CONNECTION FAILED错误的解决

    关于CondaHTTPError HTTP 000 CONNECTION FAILED错误的解决 虚拟环境是系统的一个位置 xff0c 你可以在其中安装包 xff0c 并将其与其他Python包隔离 将项目的库与其他的项目隔离是有益的 我想
  • kinit无密码登录配置

    通常在远程客户端上登录kerbros都需要密码 xff0c 在学习hadoop的时候提到了ktutil这个工具 xff0c 这里将使用方法贴出来 运行命令 ktutil add entry password p hadoop admin 6
  • (二)C语言数据类型(2)

    今天主要总结了一下运算符 xff0c 详细介绍了运算符分类和优先级的基本知识 欢迎加入嵌入式学习群 xff1a 559601187 运算符按操作数可以分为 xff1a 单目运算符 双目运算符和三目运算符 xff0c 优先级依次为单目运算符
  • Error: failed to create deliver client for orderer: orderer client failed to connect to orderer

    环境 操作系统 CentOS 7 Fabric版本 2 0 1 问题 创建通道时报错 yaml文件已通过extra hosts方式配置域名解析 peer channel create o orderer example com 7050 c
  • Fabric2.0 新特性实践:通道成员可扩展链码

    承接上文 xff1a Hyperledger Fabric 2 0新特性 xff0c Fabric2 0版本允许组织去扩展链码 xff0c 也就是说通道成员之间的链码包可能会不同 xff0c 这么做的好处是每个组织可以根据自身利益增加自己的