我正在尝试根据发现的以下文档设置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
我采取的步骤:
[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
fabric-ca-client enroll --enrollment.type idemix -u http://[email protected]:mysecret@localhost:7054
$USER1_DIR/msp/IssuerRevocationPublicKey
重命名为$USER1_DIR/msp/RevocationPublicKey
。在事务调用期间,应使用名称RevocationPublicKey
,而不是IssuerRevocationPublicKey
IssuerPublicKey
和IssuerRevocationPublicKey
复制到了msp
文件夹中。我需要将IssuerRevocationPublicKey
重命名为RevocationPublicKey
,否则configtxgen
会抱怨在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')"
我进行了一些故障排除,并根据idemixgen
文档,发现我需要将默认签名者放入idemix msp中,即user
文件夹中。因此,我将[email protected]
的SignerConfig
文件放入user
文件夹中,然后重新运行configtxgen
。我收到以下错误:
Error loading MSP configuration for org: Org1IdemixMSP: unexpected EOF
接下来,我对SignerConfig
的idemixgen
和SignerConfig
生成的[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=="
}
我深入研究了代码...如果您有兴趣,可以在结构1.4版本分支的msp / configbuilder.go中找到GetIdemixMspConfig函数。在此函数中,我们可以看到它将尝试加载具有原型类型的signconf。但是,我们使用ca client cli注册了msp,这将返回一个json ...我以Unable to unmarshal json to protobuf struct field
搜索了某个主题在我看来,原型Unmarshal的json格式将失败。