我正在尝试按照HLF 2.0链式代码的生命周期进行实验。正式文件
该网络有3个订购节点,每个节点有2个orgs和1个对等节点。
但在链式代码提交时,我得到的错误是
committed with status (ENDORSEMENT_POLICY_FAILURE) at peer1.base.right:9051
configtx.yml
Organizations:
- &OrdererOrg
Name: OrdererOrg
ID: OrdererMSP
MSPDir: crypto-config/ordererOrganizations/base.order/msp
Policies:
Readers:
Type: Signature
Rule: "OR('OrdererMSP.member')"
Writers:
Type: Signature
Rule: "OR('OrdererMSP.member')"
Admins:
Type: Signature
Rule: "OR('OrdererMSP.admin')"
- &Org1
Name: LeftOrgMSP
ID: LeftOrgMSP
MSPDir: crypto-config/peerOrganizations/base.left/msp
Policies:
Readers:
Type: Signature
Rule: "OR('LeftOrgMSP.admin', 'LeftOrgMSP.peer', 'LeftOrgMSP.client','LeftOrgMSP.member')"
Writers:
Type: Signature
Rule: "OR('LeftOrgMSP.admin', 'LeftOrgMSP.client','LeftOrgMSP.peer','LeftOrgMSP.member')"
Admins:
Type: Signature
Rule: "OR('LeftOrgMSP.admin','LeftOrgMSP.peer')"
Endorsement:
Type: Signature
Rule: "OR('LeftOrgMSP.peer')"
AnchorPeers:
- Host: peer1.base.left
Port: 7051
- &Org2
Name: RightOrgMSP
ID: RightOrgMSP
MSPDir: crypto-config/peerOrganizations/base.right/msp
Policies:
Readers:
Type: Signature
Rule: "OR('RightOrgMSP.admin', 'RightOrgMSP.peer', 'RightOrgMSP.client','RightOrgMSP.member')"
Writers:
Type: Signature
Rule: "OR('RightOrgMSP.admin','RightOrgMSP.peer', 'RightOrgMSP.client','RightOrgMSP.member')"
Admins:
Type: Signature
Rule: "OR('RightOrgMSP.admin','RightOrgMSP.peer')"
Endorsement:
Type: Signature
Rule: "OR('RightOrgMSP.peer')"
AnchorPeers:
- Host: peer1.base.right
Port: 9051
Capabilities:
Channel: &ChannelCapabilities
V2_0: true
Orderer: &OrdererCapabilities
V2_0: true
Application: &ApplicationCapabilities
V2_0: true
Application: &ApplicationDefaults
Organizations:
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
LifecycleEndorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
Endorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"
Capabilities:
<<: *ApplicationCapabilities
Orderer: &OrdererDefaults
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 99 MB
PreferredMaxBytes: 512 KB
Organizations:
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"
Channel: &ChannelDefaults
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"
Capabilities:
<<: *ChannelCapabilities
Profiles:
MainChannel:
Consortium: BaseConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
Raft:
<<: *ChannelDefaults
Capabilities:
<<: *ChannelCapabilities
Orderer:
<<: *OrdererDefaults
OrdererType: etcdraft
EtcdRaft:
Consenters:
- Host: orderer1.base.order
Port: 7050
ClientTLSCert: crypto-config/ordererOrganizations/base.order/orderers/orderer1.base.order/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/base.order/orderers/orderer1.base.order/tls/server.crt
- Host: orderer2.base.order
Port: 8050
ClientTLSCert: crypto-config/ordererOrganizations/base.order/orderers/orderer2.base.order/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/base.order/orderers/orderer2.base.order/tls/server.crt
- Host: orderer3.base.order
Port: 9050
ClientTLSCert: crypto-config/ordererOrganizations/base.order/orderers/orderer3.base.order/tls/server.crt
ServerTLSCert: crypto-config/ordererOrganizations/base.order/orderers/orderer3.base.order/tls/server.crt
Addresses:
- orderer1.base.order:7050
- orderer2.base.order:8050
- orderer3.base.order:9050
Organizations:
- *OrdererOrg
Capabilities:
<<: *OrdererCapabilities
Application:
<<: *ApplicationDefaults
Organizations:
- <<: *OrdererOrg
Consortiums:
BaseConsortium:
Organizations:
- *Org1
- *Org2
当检查读提交的时候,我得到了所需的输出。
{
"approvals": {
"LeftOrgMSP": true,
"RightOrgMSP": true
}
}
链码批准
peer lifecycle chaincode approveformyorg --channelID basechannel --name fabcar --version 1.0 --init-required --package-id fabcar_1:206a5ce87aefb8b9780b75451523c2aa3ef718ceebaaeae5082ae88ea259b305 --sequence 1 -o orderer1.base.order:7050 --tls --cafile $CA_PATH
链码提交命令
peer lifecycle chaincode commit -o orderer1.base.order:7050 --channelID basechannel --name fabcar --version 1.0 --sequence 1 --init-required --tls true --cafile $ORDER_CA_PATH --peerAddresses peer1.base.right:9051 --tlsRootCertFiles $PATH_RIGHT --peerAddresses peer1.base.left:7051 --tlsRootCertFiles $PATH_LEFT
不知道为什么我得到这个错误
我考虑到所有的对等体容器都已建立,MSP名称也正确。
似乎缺少块验证策略。
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"