Hyperledger fabric部署链码(三)批准链码定义

简介: fabric部署chaincode-go(智能合约)系列之三

在打包chaincode并提交到fabric后,您需要为您的组织批准此chaincode定义。定义包括chaincode的重要参数,如名称、版本和chaincode认可政策等。
在部署链码之前需要批准链码的Channel成员集合受/Channel/Application/LifecycleEndorsement策略管辖。即需要大多数通道成员批准后才能部署链码。在测试环境中,Channel有两个组织,基于策略,我们的asset-transfer(basic)的chaincode部署需要Org1和Org2的同意。

如果某个组织的peer上安装了该chaincode,在其组织中批准链码定义时需要包含packageID,我们可以通过以下命令获取相关信息:

peer lifecycle chaincode queryinstalled

packageID是链码label和二进制文件哈希值的组合,每个peer都会生成相同的packageID。查询后会看到以下输出:

Installed chaincodes on peer:
Package ID: basic_1.0:69de748301770f6ef64b42aa6bb6cb291df20aa39542c3ef94008615704007f3, Label: basic_1.0

将该packageID保存为环境变量,以备后续批准链码时使用

export CC_PACKAGE_ID=basic_1.0:69de748301770f6ef64b42aa6bb6cb291df20aa39542c3ef94008615704007f3

以下为Org1 peer的批准链码命令,需重新配置上文的Org1 peer的环境变量

peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"
  • --package-id 参数表示在链码定义中包含的packageID
  • --sequence 参数表示记录链码定义或更新的次数,每次递增,首次定义时,序号为1。
  • --init-required,如果使用的是fabric chaincode shim API提供的底层API,可以向上述命令传递,请求执行init函数来初始化链码。首次调用chaincode时,需要以init函数为目标,并包含--isInit标志,然后才能使用链码中的其他函数与资产进行交互。
  • signaure-policy或--channel0config-policy,以指定链码背书策略。背书策略规定了需要多少个属于不同channel的peer根据给定链码验证交易。默认的策略为必须得到大多数的成员背书,在2个org中,多数为2,因此需要两个org的同意才能成功部署链码。
    Org1 peer的环境变量配置
    export CORE_PEER_LOCALMSPID="Org1MSP"
    export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
    export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
    export CORE_PEER_ADDRESS=localhost:7051
    
    Org1 peer的批准链码命令
    peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name basic --version 1.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile "${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem"
    

Org2 peer的环境变量配置

export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=localhost:9051

Org2 peer的批准链码命令

# org2
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --channelID mychannel --name asset --version 2.0 --package-id $CC_PACKAGE_ID --sequence 1 --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
相关文章
|
6月前
|
开发框架 .NET 区块链
Hyperledger fabric部署链码(五)初始化与链码升级
fabric部署chaincode-go(智能合约)系列之五
|
6月前
|
存储 JSON 安全
Hyperledger fabric智能合约编写(一)
本篇文章主要对链码编写的主要思路和部分API进行梳理。
|
6月前
|
Go API 区块链
Hyperledger Fabric相关概念介绍
在学习Hyperledger Fabric的过程中,初步对相关概念的了解。
Hyperledger Fabric相关概念介绍
|
6月前
|
JSON 区块链 数据格式
Hyperledger fabric部署链码(四)提交链码定义到channel
fabric部署chaincode-go(智能合约)系列之四
|
6月前
|
区块链
Hyperledger fabric部署链码(二)安装链码到fabric
fabric部署chaincode-go(智能合约)系列之二
|
6月前
|
JavaScript 测试技术 Go
Hyperledger fabric部署链码(一)打包链码
fabric部署chaincode-go(智能合约)系列之一
|
6月前
|
测试技术 Go 区块链
Hyperledger fabric 测试环境部署
Hyperledger fabric 测试环境部署及相关问题解答
109 3
|
8月前
|
消息中间件 Java Kafka
Hyperledger Fabric 通道配置文件和容器环境变量详解
Fabric 节点的主配置路径为 FABRIC_CFG_PATH 环境变量所指向路径(默认为 /etc/hyperledger/fabric)。在不显式指定配置路径时,会尝试从主配置路径下查找相关的配置文件。
220 0
|
Java API 区块链
Hyperledger Fabric 2.x Java区块链应用
在上一篇文章中分享了智能合约的安装并使用cli客户端进行合约的调用;本文将使用Java代码基于fabric-gateway-java进行区块链网络的访问与交易,并集成SpringBoot框架。
742 0
Hyperledger Fabric 2.x Java区块链应用
|
安全 区块链 数据库
联盟链 Hyperledger Fabric 应用场景
本文主要通过一个例子分享以Hyperledger Fabric为代表的联盟链应用场景。
648 0
联盟链 Hyperledger Fabric 应用场景