Hyperledger Composer发出身份但缺少名片

时间:2017-11-17 00:46:33

标签: hyperledger-fabric hyperledger hyperledger-composer

我正在使用Node.js应用程序和'composer-client'npm模块进行概念验证。

我尝试了不同的命令,例如添加参与者,添加资源和执行交易,所有内容似乎都能正常运行。

然而,当我尝试发布新身份时,我没有得到我期望的结果。我使用以下代码执行我的Node.js应用程序:

var businessNetwork = new BusinessNetworkConnection();
return businessNetwork.connect('admin@tutorial-network')
.then(() => {
  return businessNetwork.issueIdentity('org.acme.biznet.Trader#Trader_001', 'usr001')
})
.then((result) => {
  console.log(`userID = ${result.userID}`);
  console.log(`userSecret = ${result.userSecret}`);
})
.catch((error) => {
  console.error(error);
});

然后,UserId和UserSecret显示在控制台日志中。之后,我尝试ping商业网络:

var businessNetwork = new BusinessNetworkConnection();
return businessNetwork.connect('usr001@tutorial-network')
.then(() => {
  return businessNetwork.ping();
})
.then((result) => {
  console.log(`participant = ${result.participant ? result.participant : '<no participant found>'}`);
})
.catch((error) => {
  console.error(error);
});

但是,我收到以下错误消息:

{ Error: Card not found: usr001@tutorial-network
at IdCard.fromDirectory.catch.cause (/home/user.name/git_repositories/nodejs/first.blockchain.test/node_modules/composer-common/lib/cardstore/filesystemcardstore.js:73:27)
at <anonymous>
cause: 
{ Error: Unable to read card directory: /home/user.name/.composer/cards/user001@tutorial-network

如果我执行命令composer identity list -c admin@tutorial-network,我会得到以下输出:

$class:      org.hyperledger.composer.system.Identity
  identityId:  9b49f67c262c0ae23e1e0c4a8dc61c4a12b5119df2b6a49fa2e02fa56b8818c3
  name:        usr001
  issuer:      27c582d674ddf0f230854814b7cfd04553f3d0eac55e37d915386c614a5a1de9
  certificate: 
  state:       ISSUED
  participant: resource:org.acme.biznet.Trader#Trader_001

但是,我无法找到名片。

4 个答案:

答案 0 :(得分:0)

它对我有用。我正在使用作曲家0.15.1。

var businessNetwork = new BusinessNetworkConnection();

return businessNetwork.connect('admin@carauction-network')
.then(() => {
  return businessNetwork.ping();
})
.then((result) => {
  console.log(`participant = ${result.participant ? result.participant : '<no participant found>'}`);
})
.catch((error) => {
  console.error(error);
});

输出就像这样

linux1@fabric:~/eventclient$ node event.js
participant = org.hyperledger.composer.system.NetworkAdmin#admin

您可能需要将身份证导入钱包吗?

composer card import --file networkadmin.card

答案 1 :(得分:0)

上周末我遇到了类似的问题。从V0.14到V0.15的部分升级说明指出我们必须删除(如果存在)~/.composer~/.composer-connection-profiles~/.composer-credentials。我在第一次升级到v01.5时跳过了这一步,遇到了你看到的错误。返回并删除了这三个文件夹,重新安装了二进制文件并重新检查了docker镜像状态。错误消失了,并没有再出现。

答案 2 :(得分:0)

您将新卡user001命名为user001@@tutorial-network,而不是user001。尝试仅使用ObjectOutputStream作为连接卡名称进行连接。

答案 3 :(得分:0)

我使用以下命令使用从javascript获得的注册密码为参与者创建卡片。

composer card create -u usr001 -s <enrollment_secret> -f usr001.card -n tutorial-network -p connection.json

您可能在之前的教程之前的某个步骤中创建了所需的connection.json。如果此文件未明确提供,您可以从作曲家钱包中获取该文件。在当前版本中,它可以位于/home/your_user/.composer/cards/中。如果您只关注本教程,则此目录中的任何connection.json都可以。 之后,您必须使用以下方法将创建的凭据添加到钱包:

composer card import -f usr001.card

您测试已发布身份的代码是正确的。