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

时间:2019-05-26 11:08:13

标签: hyperledger-fabric hyperledger-fabric-ca

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

但是在进行交易时,我收到以下错误:

numpy

我采取的步骤:

  1. 注册用户$ 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 到结构CA User1@org1.example.com
  2. 注册用户并创建一个idemix身份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
  3. fabric-ca-client enroll --enrollment.type idemix -u http://User1@org1.example.com:mysecret@localhost:7054重命名为$USER1_DIR/msp/IssuerRevocationPublicKey。在事务调用期间,应使用名称$USER1_DIR/msp/RevocationPublicKey,而不是RevocationPublicKey
  4. 准备idemix msp。我将CA的IssuerRevocationPublicKeyIssuerPublicKey复制到了IssuerRevocationPublicKey文件夹中。我需要将msp重命名为IssuerRevocationPublicKey,否则RevocationPublicKey会抱怨
  5. configtxgen中,添加一个Idemix MSP

    configtx.yaml
  6. 创建创世块,渠道块,启动网络等2(照常)
  7. 尝试查询交易,并出现上述错误

我进行了一些故障排除,并根据- &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')" 文档,发现需要将默认签名者放入idemix msp中,即idemixgen文件夹中。因此,我将user的{​​{1}}文件放入User1@org1.example.com文件夹中,然后重新运行SignerConfig。我收到以下错误:

user

接下来,我对configtxgen的{​​{1}}和Error loading MSP configuration for org: Org1IdemixMSP: unexpected EOF 生成的SignerConfig进行了比较。 idemixgen生成的一个无法打开,而另一个是.json文件(如下所示),因此格式不同。使用SignerConfig生成的SignerConfig运行User1@org1.example.com成功。我想尝试通过idemixgen生成的身份来调用事务,但是除了默认签名者之外,没有办法生成身份。

configtxgen

在此处回购:https://github.com/aldredb/idemix-sample

1 个答案:

答案 0 :(得分:0)

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

搜索了某个主题

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