首页 > 解决方案 > Hyperledger Fabric 从通道配置中删除组织导致错误

问题描述

下面是我的用例:

我有两个组织 Org1,Org2,当我从频道配置中替换 Org2 时,一切正常,组织会从频道中删除,但是当我删除配置 json 中索引 0 处的 Org1 并将其更新到频道结果时在下面列出的错误中。似乎我能够以 LIFO(LAST IN FIRST OUT)的方式删除组织,但我想实现无论添加顺序如何都可以删除组织的功能。

error applying config update to existing channel 'mychannel': initializing policymanager failed: policy Admins at path Channel/Application did not compile: identity index out of range, requested 1, but identities length is 1

标签: hyperledger-fabric

解决方案


您似乎没有正确更新任何涉及被删除组织的政策。

删除组织时,必须删除 下的整个条目Application.groups,例如Application.groups.Org1MSP

Application.policies例如,您还必须从任何策略中删除该组织Application.policies.Admins

根据策略类型,您可能拥有一个或多个如下所示的策略 ( AND('Org1MSP.admin', 'Org2MSP.admin')):

"Admins": {
    "mod_policy": "Admins",
    "policy": {
        "type": 1,
        "value": {
            "identities": [
                {
                    "principal": {
                        "msp_identifier": "Org1MSP",
                        "role": "ADMIN"
                    },
                    "principal_classification": "ROLE"
                },
                {
                    "principal": {
                        "msp_identifier": "Org2MSP",
                        "role": "ADMIN"
                    },
                    "principal_classification": "ROLE"
                }
            ],
            "rule": {
                "n_out_of": {
                    "n": 1,
                    "rules": [
                        {
                            "signed_by": 0
                        },
                        {
                            "signed_by": 1
                        }
                    ]
                }
            },
            "version": 0
        }
    },
    "version": "0"
}

policy.value.identities从阵列中删除组织是不够的。数组中的数组引用条目中的signed_bypolicy.value.rule.n_out_of.rules(通过它们的数组索引)在policy.value.identities数组中。

您遇到的错误表明您在某处有一个signed_by值为 的策略1,但该策略的相应policy.value.identities数组的长度仅为 1。


推荐阅读