“使用Idemix凭据调用事务时出现“没有默认签名人设置”错误

问题描述 投票:0回答:1

我正在尝试根据发现的以下文档设置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/[email protected]" 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. 将用户[email protected]注册到结构CA fabric-ca-client register --id.name [email protected] --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://[email protected]: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. 创建创始块,通道块,启动网络等2(照常)
  7. 尝试查询交易,并出现上述错误

我进行了一些故障排除,并根据idemixgen文档,发现我需要将默认签名者放入idemix msp中,即user文件夹中。因此,我将[email protected]SignerConfig文件放入user文件夹中,然后重新运行configtxgen。我收到以下错误:

Error loading MSP configuration for org: Org1IdemixMSP: unexpected EOF

接下来,我对SignerConfigidemixgenSignerConfig生成的[email protected]进行了比较。 idemixgen生成的一个无法打开,而另一个是.json文件(如下所示),因此格式不同。使用configtxgen生成的SignerConfig成功运行idemixgen。我想尝试通过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": "[email protected]",
    "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个回答
0
投票

我深入研究了代码...如果您有兴趣,可以在结构1.4版本分支的msp / configbuilder.go中找到GetIdemixMspConfig函数。在此函数中,我们可以看到它将尝试加载具有原型类型的signconf。但是,我们使用ca client cli注册了msp,这将返回一个json ...我以Unable to unmarshal json to protobuf struct field

搜索了某个主题

在我看来,原型Unmarshal的json格式将失败。

© www.soinside.com 2019 - 2024. All rights reserved.