【问题标题】:Hyperledger fabric 2.0: committed with status (ENDORSEMENT_POLICY_FAILURE)Hyperledger Fabric 2.0:已提交状态 (ENDORSEMENT_POLICY_FAILURE)
【发布时间】:2020-04-27 13:39:40
【问题描述】:

我正在尝试遵循official doc 的 HLF 2.0 链码生命周期

网络有 3 个排序节点,每个节点有两个 orgs 和一个 peer

但是在链码提交时我得到了错误

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

不知道为什么会出现这个错误

【问题讨论】:

  • 您找到解决方案了吗?同样的事情发生在我身上。
  • 这里有同样的问题。你到底有没有找到解决办法?

标签: hyperledger-fabric hyperledger


【解决方案1】:

我正在考虑所有对等容器都已启动且 MSP 名称正确的事实。

似乎缺少块验证策略。

 BlockValidation:
        Type: ImplicitMeta
        Rule: "ANY Writers"

【讨论】:

  • 你能分享一下链码实例化命令以及完整的 configtx.yaml 文件吗?
  • 我正在使用 HLF 2.0 更新了问题
  • 好的,你能分享一下策略命令吗,在这里你定义策略,比如 AND ('Org1.peer')。
  • 我没有指定默认的策略
【解决方案2】:

两天前我遇到了同样的问题,我刚刚解决了。在提交链码之前,我的配置文件和操作没有任何问题,但我仍然得到 ENDORSEMENT_POLICY_FAILURE。查看调试日志,我发现你应该同时将chaincode提交到足够多的背书节点以获得足够的签名以确保背书成功,有30多个orgs在我的结构网络中,但一开始我只将链码提交给一个节点,这并不奇怪我得到这个错误。

【讨论】:

    【解决方案3】:

    我刚刚想通了。当我调用链码时,我只包含了--peerAddresses 我在我的网络中拥有的两个对等点之一。正如我的政策所说,它需要 MAJORITY Endorsement 在背书政策中。因此,我必须在调用命令中包含 2/2 对等方。

    【讨论】:

      【解决方案4】:

      在我的例子中,我的区块链曾经是 1.4 版本,我在迁移后创建了通道,它缺少生命周期背书和背书所需的策略“背书”,以及低于 2.0 的一些功能

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-29
        • 2023-03-21
        • 2019-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多