Hyperledger fabri c удаление организации из конфигурации канала приводит к ошибке - PullRequest
0 голосов
/ 13 февраля 2020

Ниже приведен мой пример использования:

У меня есть две организации Org1, Org2, когда я заменяю Org2 из конфигурации канала, все работает хорошо, организация удаляется из канала, но когда я удаляю Org1, который находится в индексе 0 в конфигурации json, и обновление его до канала приводит к ошибке, указанной ниже. Кажется, что я могу удалить организации в режиме LIFO (ПОСЛЕДНЯЯ ВПЕРВЫЕ), но я хочу добиться функциональности, благодаря которой я могу удалить организацию независимо от порядка добавления.

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

1 Ответ

2 голосов
/ 13 февраля 2020

Похоже, вы не обновляете должным образом политики, относящиеся к удаляемой организации.

При удалении организации необходимо удалить всю запись в 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_by в ссылочных записях массива policy.value.rule.n_out_of.rules (по индексу массива) в массиве policy.value.identities.

Появившаяся ошибка говорит о том, что у вас где-то есть политика со значением signed_by 1, но соответствующий массив policy.value.identities для политики имеет длину только 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...