更改订购者和同行的名称和域后,用户未注册到 hyperledger fabric

After changing name & domain of orderer & peers user is not getting enrolled in hyperledger fabric

我是 hyperledger 的新手,正在尝试修改结构样本中现有的余额转移示例。我正在做的更改是更改 cryptogen.yaml 文件中订购者和同行的名称和域。还在 configtx.yaml 和 docker-compose.yaml 文件中进行了相应的更改。这是 cryptogen.yaml 文件中的更改:

OrdererOrgs:
  - Name: Orderer
    Domain: say.com

    Specs:
      - Hostname: orderer

PeerOrgs:
  - Name: Customer1
    Domain: customer1.say.com
    CA:
       Hostname: ca

    Template:
      Count: 2
      SANS:
        - "localhost"

    Users:
      Count: 1

  - Name: Customer2
    Domain: customer2.say.com
    CA:
       Hostname: ca

    Template:
      Count: 2
      SANS:
        - "localhost"
    Users:
      Count: 1

这是 configtx.yaml 文件:

Profiles:
    TwoOrgsOrdererGenesis:
        Orderer:
            <<: *OrdererDefaults
            Organizations:
                - *OrdererOrg
        Consortiums:
            SampleConsortium:
                Organizations:
                    - *Customer1
                    - *Customer2
    TwoOrgsChannel:
        Consortium: SampleConsortium
        Application:
            <<: *ApplicationDefaults
            Organizations:
                - *Customer1
                - *Customer2

Organizations:
    - &OrdererOrg
        Name: OrdererMSP
        ID: OrdererMSP
        MSPDir: crypto-config/ordererOrganizations/say.com/msp

    - &Customer1
        Name: Customer1MSP
        ID: Customer1MSP
        MSPDir: crypto-config/peerOrganizations/customer1.say.com/msp
        AnchorPeers:
            - Host: peer0.customer1.say.com
              Port: 7051

    - &Customer2
        Name: Customer2MSP
        ID: Customer2MSP
        MSPDir: crypto-config/peerOrganizations/customer2.say.com/msp
        AnchorPeers:
            - Host: peer0.customer2.say.com
              Port: 7051

Orderer: &OrdererDefaults
    OrdererType: solo
    Addresses:
        - orderer.say.com:7050
    BatchTimeout: 2s
    BatchSize:
        MaxMessageCount: 10
        AbsoluteMaxBytes: 98 MB
        PreferredMaxBytes: 512 KB
    Kafka:
        Brokers:
            - 127.0.0.1:9092
    Organizations:

Application: &ApplicationDefaults
    Organizations:

我能够使用 cryptogen 工具生成加密材料并且容器正在启动。使用 docker ps 我可以看到所有容器。在注册用户时出现以下错误:

[DEBUG] Helper - [FileKeyValueStore.js]: FileKeyValueStore.js - constructor [ERROR] Helper - Failed to get registered user: Jim, error: TypeError: Cannot read property 'setStateStore' of undefined at hfc.newDefaultKeyValueStore.then (/home/ubuntu/fabric-samples/balance-transfer/app/helper.js:208:9)

请告诉我出现此问题的原因。

根据 app/helper.js 文件(第 38 行), 这是 if (key.indexOf('org') === 0) { 组织名称必须以“org”关键字开头。

例如,组织名称可以是 orgDemo 不能是 演示

我不知道余额转移,但大多数示例在 docker 配置中为 docker 容器安装本地目录,以指向本地文件系统上的加密。您需要修改它们以指向您的新加密路径或将您的新加密复制到现有目录中。

此外,创世块和通道创建必须使用相同的组织和加密货币创建。我不知道余额转移是否会重新创建创世块和通道以匹配。 docker 定义中通常还指定了几个对等点和域名,需要与 configtx.yaml 中的定义相匹配。

用户必须在 CA 注册后才能注册。即使以上所有内容都正确,如果脚本没有为您注册 Jim,您可能仍需要手动注册。

Jim 未注册,或者您没有指向正确的 CA 容器名称或加密路径,或者创世块仍在使用原始组织名称和加密路径等。您可以使用 configtxgen -inspectBlock genesisblockfilename 和 configtxgen -inspectChannelCreateTx channelfilename 以查看包含哪些组织。