简体   繁体   English

Hyperledger Fabric v1.0 configtxlator添加新的组织错误

[英]Hyperledger Fabric v1.0 configtxlator add new org error

I try to use configtxlator to add new organization Org3 but fail. 我尝试使用configtxlator添加新组织Org3,但失败。 Below is the error from server console log: 以下是服务器控制台日志中的错误:

orderer.example.com       | 2017-09-06 10:16:04.960 UTC [orderer/main] Deliver -> DEBU 8b8 Starting new Deliver handler
orderer.example.com       | 2017-09-06 10:16:04.960 UTC [orderer/common/deliver] Handle -> DEBU 8b9 Starting new deliver loop
orderer.example.com       | 2017-09-06 10:16:04.960 UTC [orderer/common/deliver] Handle -> DEBU 8ba Attempting to read seek info message
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/main] Broadcast -> DEBU 8bb Starting new Broadcast handler
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/common/broadcast] Handle -> DEBU 8bc Starting new broadcast loop
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/common/broadcast] Handle -> DEBU 8bd Preprocessing CONFIG_UPDATE
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/configupdate] Process -> DEBU 8be Processing channel reconfiguration request for channel mychannel
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8bf Adding to config map: [Groups] /Channel
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c0 Adding to config map: [Groups] /Channel/Orderer
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c1 Adding to config map: [Groups] /Channel/Application
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c2 Adding to config map: [Values] /Channel/HashingAlgorithm
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c3 Adding to config map: [Values] /Channel/OrdererAddresses
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c4 Adding to config map: [Values] /Channel/BlockDataHashingStructure
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c5 Adding to config map: [Values] /Channel/Consortium
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c6 Adding to config map: [Policy] /Channel/Admins
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c7 Adding to config map: [Policy] /Channel/Readers
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c8 Adding to config map: [Policy] /Channel/Writers
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c9 Adding to config map: [Groups] /Channel
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8ca Adding to config map: [Groups] /Channel/Consortiums
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8cb Adding to config map: [Groups] /Channel/Consortiums/SampleConsortium
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8cc Adding to config map: [Groups] /Channel/Consortiums/SampleConsortium/Org3MSP
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8cd Adding to config map: [Values] /Channel/Consortiums/SampleConsortium/Org3MSP/MSP
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8ce Adding to config map: [Groups] /Channel/Orderer
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8cf Adding to config map: [Groups] /Channel/Application
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d0 Adding to config map: [Values] /Channel/Consortium
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d1 Adding to config map: [Values] /Channel/HashingAlgorithm
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d2 Adding to config map: [Values] /Channel/OrdererAddresses
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d3 Adding to config map: [Values] /Channel/BlockDataHashingStructure
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d4 Adding to config map: [Policy] /Channel/Admins
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d5 Adding to config map: [Policy] /Channel/Readers
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d6 Adding to config map: [Policy] /Channel/Writers
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [orderer/main] func1 -> CRIT 8d7 Broadcast client triggered panic: runtime error: slice bounds out of range
orderer.example.com       | goroutine 70 [running]:
orderer.example.com       | runtime/debug.Stack(0xc420b530b0, 0xb75a60, 0xc42000c0a0)
orderer.example.com       |     /opt/go/src/runtime/debug/stack.go:24 +0x79
orderer.example.com       | main.(*server).Broadcast.func1()
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/server.go:77 +0x97
orderer.example.com       | panic(0xb75a60, 0xc42000c0a0)
orderer.example.com       |     /opt/go/src/runtime/panic.go:458 +0x243
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).policyForItem(0xc420903c00, 0xc4208ff9b0, 0x0, 0x0, 0xc5135b, 0x7, 0xc4203506e0, 0x0, 0x1, 0x414c0e, ...)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/update.go:148 +0x28c
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).verifyDeltaSet(0xc420903c00, 0xc4208fec60, 0xc420024960, 0x1, 0x1, 0x0, 0xc42094b0e0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/update.go:76 +0x20f
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).authorizeUpdate(0xc420903c00, 0xc42098d500, 0x0, 0x0, 0xc1c2a0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/update.go:134 +0x4fc
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).proposeConfigUpdate(0xc420903c00, 0xc42098d230, 0x0, 0x0, 0x126ed10)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/manager.go:181 +0x11c
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).ProposeConfigUpdate(0xc420903c00, 0xc42098d230, 0xc42034ef80, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/manager.go:172 +0x35
orderer.example.com       | github.com/hyperledger/fabric/orderer/multichain.(*chainSupport).ProposeConfigUpdate(0xc420225e50, 0xc42098d230, 0x124b480, 0xc420835908, 0x5a8870)
orderer.example.com       |     <autogenerated>:74 +0x59
orderer.example.com       | github.com/hyperledger/fabric/orderer/configupdate.(*Processor).existingChannelConfig(0xc420016180, 0xc42098d230, 0xc420912790, 0x9, 0x7f4e64d25868, 0xc420225e50, 0xc420010aa0, 0x5, 0x2)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/configupdate/configupdate.go:121 +0x45
orderer.example.com       | github.com/hyperledger/fabric/orderer/configupdate.(*Processor).Process(0xc420016180, 0xc42098d230, 0x0, 0x0, 0xc4209126d0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/configupdate/configupdate.go:113 +0x1ac
orderer.example.com       | main.(*broadcastSupport).Process(0xc420329f80, 0xc42098d230, 0x1b, 0x0, 0x0)
orderer.example.com       |     <autogenerated>:8 +0x54
orderer.example.com       | github.com/hyperledger/fabric/orderer/common/broadcast.(*handlerImpl).Handle(0xc42078d2e0, 0x1231fc0, 0xc420912550, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/common/broadcast/broadcast.go:108 +0xa5d
orderer.example.com       | main.(*server).Broadcast(0xc420329fa0, 0x1231fc0, 0xc420912550, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/server.go:81 +0xb9
orderer.example.com       | github.com/hyperledger/fabric/protos/orderer._AtomicBroadcast_Broadcast_Handler(0xb7afc0, 0xc420329fa0, 0x1231360, 0xc42022a990, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/protos/orderer/ab.pb.go:543 +0xbb
orderer.example.com       | github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).processStreamingRPC(0xc4201c7900, 0x1231c00, 0xc42031c160, 0xc42000ac00, 0xc420336690, 0x1215d40, 0xc42098d1d0, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:907 +0xb49
orderer.example.com       | github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).handleStream(0xc4201c7900, 0x1231c00, 0xc42031c160, 0xc42000ac00, 0xc42098d1d0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:1001 +0xe8c
orderer.example.com       | github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc42035a250, 0xc4201c7900, 0x1231c00, 0xc42031c160, 0xc42000ac00)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:561 +0xab
orderer.example.com       | created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).serveStreams.func1
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:562 +0xa3
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [orderer/main] func1 -> DEBU 8d8 Closing Broadcast stream
orderer.example.com       | 2017-09-06 10:16:04.972 UTC [orderer/common/deliver] Handle -> WARN 8d9 Error reading from stream: rpc error: code = Canceled desc = context canceled
orderer.example.com       | 2017-09-06 10:16:04.972 UTC [orderer/main] func1 -> DEBU 8da Closing Deliver stream

Below is the content of config_update.json: 以下是config_update.json的内容:

  "channel_id": "mychannel",
  "read_set": {
    "groups": {
      "Application": {
        "version": "1"
      },
      "Orderer": {}
    },
    "policies": {
      "Admins": {},
      "Readers": {},
      "Writers": {}
    },
    "values": {
      "BlockDataHashingStructure": {},
      "Consortium": {},
      "HashingAlgorithm": {},
      "OrdererAddresses": {}
    }
  },
  "write_set": {
    "groups": {
      "Application": {
        "version": "1"
      },
      "Consortiums": {
        "groups": {
          "SampleConsortium": {
            "groups": {
              "Org3MSP": {
                "values": {
                  "MSP": {
                    "value": {
                      "config": {
                        "name": "Org3MSP"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Orderer": {}
    },
    "policies": {
      "Admins": {},
      "Readers": {},
      "Writers": {}
    },
    "values": {
      "BlockDataHashingStructure": {},
      "Consortium": {},
      "HashingAlgorithm": {},
      "OrdererAddresses": {}
    },
    "version": "1"
  }

Appreciate for any advice. 感谢任何建议。

From your config update, you are attempting to set the groups of SampleConsortiums to be exactly Org3MSP . 从配置更新中,您尝试将SampleConsortiums的组设置为完全Org3MSP

Based on the fact that the channel_id is mychannel , I assume that you are attempting to modify the membership of an application channel, and not of the ordering system channel. 基于channel_idmychannel的事实,我假设您正在尝试修改应用程序通道的成员身份,而不是订购系统通道的成员身份。

Standard application channels do not have a top level Consortiums group, instead they have an Application top level group, so this config update will not accomplish what you hope it to. 标准应用程序通道没有顶级Consortiums组,而是具有Application顶级组,因此此配置更新将无法实现您希望的目标。 Consider the content of config_update.json from https://github.com/hyperledger/fabric/tree/release/examples/configtxupdate/reconfig_membership 考虑来自https://github.com/hyperledger/fabric/tree/release/examples/configtxupdate/reconfig_membershipconfig_update.json的内容

{
  "channel_id": "example",
  "read_set": {
    "groups": {
      "Application": {
        "groups": {
          "SampleOrg": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "mod_policy": "",
        "policies": {
          "Admins": {
            "mod_policy": "",
            "version": "0"
          },
          "Readers": {
            "mod_policy": "",
            "version": "0"
          },
          "Writers": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "version": "1"
      }
    },
    "mod_policy": "",
    "version": "0"
  },
  "type": 0,
  "write_set": {
    "groups": {
      "Application": {
        "groups": {
          "ExampleOrg": {
            "mod_policy": "Admins",
            "policies": {
              "Admins": {
                "mod_policy": "Admins",
                "policy": {
                  "type": 1,
                  "value": {
                    "identities": [
                      {
                        "principal": {
                          "msp_identifier": "DEFAULT",
                          "role": "MEMBER"
                        },
                        "principal_classification": "ROLE"
                      }
                    ],
                    "rule": {
                      "n_out_of": {
                        "n": 1,
                        "rules": [
                          {
                            "signed_by": 0
                          }
                        ]
                      }
                    },
                    "version": 0
                  }
                },
                "version": "0"
              },
              "Readers": {
                "mod_policy": "Admins",
                "policy": {
                  "type": 1,
                  "value": {
                    "identities": [
                      {
                        "principal": {
                          "msp_identifier": "DEFAULT",
                          "role": "MEMBER"
                        },
                        "principal_classification": "ROLE"
                      }
                    ],
                    "rule": {
                      "n_out_of": {
                        "n": 1,
                        "rules": [
                          {
                            "signed_by": 0
                          }
                        ]
                      }
                    },
                    "version": 0
                  }
                },
                "version": "0"
              },
              "Writers": {
                "mod_policy": "Admins",
                "policy": {
                  "type": 1,
                  "value": {
                    "identities": [
                      {
                        "principal": {
                          "msp_identifier": "DEFAULT",
                          "role": "MEMBER"
                        },
                        "principal_classification": "ROLE"
                      }
                    ],
                    "rule": {
                      "n_out_of": {
                        "n": 1,
                        "rules": [
                          {
                            "signed_by": 0
                          }
                        ]
                      }
                    },
                    "version": 0
                  }
                },
                "version": "0"
              }
            },
            "values": {
              "MSP": {
                "mod_policy": "Admins",
                "value": {
                  "config": {
                    "admins": [
                      "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNqRENDQWpLZ0F3SUJBZ0lVQkVWd3NTeDBUbXFkYnpOd2xlTkJCem9JVDB3d0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNVEV4TVRjd056QXcKV2hjTk1UY3hNVEV4TVRjd056QXdXakJqTVFzd0NRWURWUVFHRXdKVlV6RVhNQlVHQTFVRUNCTU9UbTl5ZEdnZwpRMkZ5YjJ4cGJtRXhFREFPQmdOVkJBY1RCMUpoYkdWcFoyZ3hHekFaQmdOVkJBb1RFa2g1Y0dWeWJHVmtaMlZ5CklFWmhZbkpwWXpFTU1Bb0dBMVVFQ3hNRFEwOVFNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKSEJ1S3NBTzQzaHM0SkdwRmZpR01rQi94c0lMVHNPdm1OMldtd3BzUEhaTkw2dzhIV2UzeENQUXRkRy9YSkp2WgorQzc1NktFc1VCTTN5dzVQVGZrdThxT0JwekNCcERBT0JnTlZIUThCQWY4RUJBTUNCYUF3SFFZRFZSMGxCQll3CkZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZPRkMKZGNVWjRlczNsdGlDZ0FWRG95TGZWcFBJTUI4R0ExVWRJd1FZTUJhQUZCZG5RajJxbm9JL3hNVWRuMXZEbWRHMQpuRWdRTUNVR0ExVWRFUVFlTUJ5Q0NtMTVhRzl6ZEM1amIyMkNEbmQzZHk1dGVXaHZjM1F1WTI5dE1Bb0dDQ3FHClNNNDlCQU1DQTBnQU1FVUNJRGY5SGJsNHhuM3o0RXdOS21pbE05bFgyRnE0aldwQWFSVkI5N09tVkVleUFpRUEKMjVhRFBRSEdHcTJBdmhLVDB3dnQwOGNYMUdUR0NJYmZtdUxwTXdLUWozOD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
                    ],
                    "crypto_config": {
                      "identity_identifier_hash_function": "SHA256",
                      "signature_hash_family": "SHA2"
                    },
                    "name": "ExampleOrg",
                    "organizational_unit_identifiers": [
                      {
                        "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNZakNDQWdtZ0F3SUJBZ0lVQjNDVERPVTQ3c1VDNUs0a24vQ2FxbmgxMTRZd0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNREV5TVRrek1UQXcKV2hjTk1qRXhNREV4TVRrek1UQXdXakIvTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadgpjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVmTUIwR0ExVUVDaE1XU1c1MFpYSnVaWFFnClYybGtaMlYwY3l3Z1NXNWpMakVNTUFvR0ExVUVDeE1EVjFkWE1SUXdFZ1lEVlFRREV3dGxlR0Z0Y0d4bExtTnYKYlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktJSDViMkphU21xaVFYSHlxQytjbWtuSUNjRgppNUFkZFZqc1FpekRWNnVaNHY2cytQV2lKeXpmQS9yVHRNdllBUHEveWVFSHBCVUIxajA1M214bnBNdWpZekJoCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRWFowSTkKcXA2Q1A4VEZIWjlidzVuUnRaeElFREFmQmdOVkhTTUVHREFXZ0JRWFowSTlxcDZDUDhURkhaOWJ3NW5SdFp4SQpFREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcDVSYnA5RW0xRy9VbUtuOFdzQ2JxRGZXZWNWYlpQUWozUks0Cm9HNWtRUUlnUUFlNE9PS1loSmRoM2Y3VVJhS2ZHVGY0OTIvbm1SbXRLK3lTS2pwSFNyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
                        "organizational_unit_identifier": "COP"
                      }
                    ],
                    "root_certs": [
                      "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNZakNDQWdtZ0F3SUJBZ0lVQjNDVERPVTQ3c1VDNUs0a24vQ2FxbmgxMTRZd0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNREV5TVRrek1UQXcKV2hjTk1qRXhNREV4TVRrek1UQXdXakIvTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadgpjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVmTUIwR0ExVUVDaE1XU1c1MFpYSnVaWFFnClYybGtaMlYwY3l3Z1NXNWpMakVNTUFvR0ExVUVDeE1EVjFkWE1SUXdFZ1lEVlFRREV3dGxlR0Z0Y0d4bExtTnYKYlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktJSDViMkphU21xaVFYSHlxQytjbWtuSUNjRgppNUFkZFZqc1FpekRWNnVaNHY2cytQV2lKeXpmQS9yVHRNdllBUHEveWVFSHBCVUIxajA1M214bnBNdWpZekJoCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRWFowSTkKcXA2Q1A4VEZIWjlidzVuUnRaeElFREFmQmdOVkhTTUVHREFXZ0JRWFowSTlxcDZDUDhURkhaOWJ3NW5SdFp4SQpFREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcDVSYnA5RW0xRy9VbUtuOFdzQ2JxRGZXZWNWYlpQUWozUks0Cm9HNWtRUUlnUUFlNE9PS1loSmRoM2Y3VVJhS2ZHVGY0OTIvbm1SbXRLK3lTS2pwSFNyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
                    ],
                    "tls_root_certs": [
                      "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNZakNDQWdtZ0F3SUJBZ0lVQjNDVERPVTQ3c1VDNUs0a24vQ2FxbmgxMTRZd0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNREV5TVRrek1UQXcKV2hjTk1qRXhNREV4TVRrek1UQXdXakIvTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadgpjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVmTUIwR0ExVUVDaE1XU1c1MFpYSnVaWFFnClYybGtaMlYwY3l3Z1NXNWpMakVNTUFvR0ExVUVDeE1EVjFkWE1SUXdFZ1lEVlFRREV3dGxlR0Z0Y0d4bExtTnYKYlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktJSDViMkphU21xaVFYSHlxQytjbWtuSUNjRgppNUFkZFZqc1FpekRWNnVaNHY2cytQV2lKeXpmQS9yVHRNdllBUHEveWVFSHBCVUIxajA1M214bnBNdWpZekJoCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRWFowSTkKcXA2Q1A4VEZIWjlidzVuUnRaeElFREFmQmdOVkhTTUVHREFXZ0JRWFowSTlxcDZDUDhURkhaOWJ3NW5SdFp4SQpFREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcDVSYnA5RW0xRy9VbUtuOFdzQ2JxRGZXZWNWYlpQUWozUks0Cm9HNWtRUUlnUUFlNE9PS1loSmRoM2Y3VVJhS2ZHVGY0OTIvbm1SbXRLK3lTS2pwSFNyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
                    ]
                  },
                  "type": 0
                },
                "version": "0"
              }
            },
            "version": "0"
          },
          "SampleOrg": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "mod_policy": "Admins",
        "policies": {
          "Admins": {
            "mod_policy": "",
            "version": "0"
          },
          "Readers": {
            "mod_policy": "",
            "version": "0"
          },
          "Writers": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "version": "2"
      }
    },
    "mod_policy": "",
    "version": "0"
  }
}

Note that the existing orgs are sparsely represented as part of the read_set as well as the write_set . 注意,现有的组织稀疏地表示为read_setwrite_set

I strongly recommend that you run the reconfig_membership example and inspect the artifacts it generates in the example_output directory and use this as your guide for properly constructing the config update. 我强烈建议您运行reconfig_membership示例,并检查它在example_output目录中生成的工件,并以此为指导正确构建配置更新。

The fact that this config update triggers a (handled) panic is interesting. 此配置更新触发(已处理)紧急情况的事实很有趣。 I'll attempt to reproduce and push a fix for this behavior. 我将尝试重现并推动对此行为的修复。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM