【问题标题】:"no default signer setup" error when invoking transaction using Idemix credential使用 Idemix 凭证调用事务时出现“无默认签名者设置”错误
【发布时间】:2019-11-05 13:37:26
【问题描述】:

我正在尝试根据我找到的以下文档设置 Idemix:

但在调用事务时,我收到以下错误:

$ docker exec -e "CORE_PEER_LOCALMSPTYPE=idemix" -e "CORE_PEER_LOCALMSPID=Org1IdemixMSP" -e "CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/User1@org1.example.com" cli peer chaincode query -C channel1 -n chaincode1 -c '{"Args":["query","a"]}'
Error: error getting default signer: error obtaining the default signing identity: no default signer setup

我采取的步骤:

  1. 注册用户User1@org1.example.com 到fabric CA fabric-ca-client register --id.name User1@org1.example.com --id.secret mysecret --id.type client --id.affiliation org1 --id.attrs role=2 -u http://localhost:7054
  2. 注册用户并创建 idemix 身份fabric-ca-client enroll --enrollment.type idemix -u http://User1@org1.example.com:mysecret@localhost:7054
  3. $USER1_DIR/msp/IssuerRevocationPublicKey 重命名为$USER1_DIR/msp/RevocationPublicKey。在事务调用期间,名称应为 RevocationPublicKey,而不是 IssuerRevocationPublicKey
  4. 准备 idemix msp。我将CA的IssuerPublicKeyIssuerRevocationPublicKey复制到msp文件夹中。我需要将 IssuerRevocationPublicKey 重命名为 RevocationPublicKey 否则 configtxgen 会抱怨
  5. configtx.yaml 中,添加一个 Idemix MSP

    - &Org1Idemix
        Name: Org1IdemixMSP
    
        # ID to load the MSP definition as
        ID: Org1IdemixMSP
    
        msptype: idemix
        MSPDir: crypto-config/peerOrganizations/org1idemix.example.com/
    
        Policies: &Org1IdemixMSPPolicies
            Readers:
                Type: Signature
                Rule: "OR('Org1IdemixMSP.member')"
            Writers:
                Type: Signature
                Rule: "OR('Org1IdemixMSP.member')"
            Admins:
                Type: Signature
                Rule: "OR('Org1IdemixMSP.admin')"
    
  6. 创建创世区块、通道区块、启动网络 etc2(照常)
  7. 尝试查询交易,出现上述错误

我做了一些故障排除,根据idemixgen 文档,我发现我需要将默认签名者放入 idemix msp 中,即在 user 文件夹中。所以我将User1@org1.example.comSignerConfig文件放入user文件夹并重新运行configtxgen。我收到以下错误:

Error loading MSP configuration for org: Org1IdemixMSP: unexpected EOF

接下来我与idemixgenUser1@org1.example.com 中的SignerConfig 生成的SignerConfig 做了一些比较。 idemixgen生成的那个是打不开的,另一个是.json文件(如下图),所以格式不一样。使用idemixgen生成的SignerConfig运行configtxgen是成功的。我想尝试通过idemixgen 生成的身份来调用事务,但是除了默认签名者之外,没有其他方法可以生成身份。

{
    "Cred": "CkQKIK/7Slvg7laNMv8n7urCKpRN4gTZJZ7xQUyqPQ0GskWFEiCq/aRBmXlQAnSeJLXViGEHLRoztSCoHU6PDXaft+STexJECiB1dosl0QwT5dR/iNwfj0UvWZLph5U6fTMUVjYXE3W/UhIg6U+q6S9xMZhL7SHYe/v//Vhsw7X7N+93Ha4qQiWu0OIaIKcFZamTWwD5VQppZDEdxv5nr4DZAOn/S0r3gchLFG66IiD7kc8IZFRji8ub7yS5ueK8ZcLm5o+WR9a7wAx7o6fKQCogieDBP6ZS9S2R/JDVaLcAcNbtGlnF2fRS37GyoZmxko4qIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACKiArm8Pnrt+hrBAk1PD9trARpE6XVbdfXN+27uSe9r8uxCogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE=",
    "Sk": "LwrgRX48aewbqKWrvNjo5VFfNSDIJAvdaR4brzOsnWM=",
    "organizational_unit_identifier": "org1",
    "enrollment_id": "User1@org1.example.com",
    "credential_revocation_information": "CAESiAEKIP4MM1C0yWwgKFYPV3wokTrOHFOaEr+EPNImFraJwJ77EiBOpmBXc4rAVNta4cY32BO5JN144ofQNYnSae00o35qKxogcCBG58VCo7N2dw11Ek4+Ue/LJHWNYVhI6Qm0gb7cJ/8iIAVU47zTiMKQQu6mSSl+sp+LTL6AghqYs+ASgRFKrQSbGmgwZgIxAJRyRpR+k3SaAVRm4GM3l+zBU6V/7g73C9RQIU9kPef9XqVl0Gb+hQqrgd1HsTQ5GgIxANb6XNB+CrrQgwbt6msa0SG+aQKpSl48EeP/V7beUkshNubudBS+WjS+PRbf5aW0Nw=="
}

在这里回购:https://github.com/aldredb/idemix-sample

【问题讨论】:

    标签: hyperledger-fabric hyperledger-fabric-ca


    【解决方案1】:

    我深入研究了代码... 如果您有兴趣,可以在 fabric 1.4 发布分支的 msp/configbuilder.go 中找到 GetIdemixMspConfig 函数。 在这个函数中,我们可以看到它会尝试加载一个带有 proto 类型的 signconf。 但是,我们使用 ca 客户端 cli 注册了 msp,它返回了一个 json ...... 我搜索了一些主题为Unable to unmarshal json to protobuf struct field

    在我看来,原型 Unmarshal 会以 json 格式失败。

    【讨论】:

    • @user1055010, ...,我已经向 Fabric 提出了关于不同格式问题的问题。如果您仍然需要它,您可以尝试将 json 文件转换为 proto 格式... :-)
    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2018-11-23
    • 2020-10-21
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    相关资源
    最近更新 更多