Hyperledger-Composer:如何为参与者建立交易处理器功能发布身份?

时间:2018-07-30 12:14:23

标签: hyperledger-composer

我构建了一个hyperledger-composer应用程序(有角前端,连接到composer-rest-server),到目前为止,该应用程序缺少身份验证。

我很难弄清楚如何实现身份验证。

即使第一步也没有用。据我从文档中了解到,实施身份验证的第一步是为网络中的每个参与者颁发身份。

我创建了一个最小的示例,它说明了我目前遇到的问题。

这是此最小示例网络的model.cto文件:

namespace org.comp.network


participant SampleParticipant identified by participantId {
  o String participantId
  o String firstName
  o String lastName
}

transaction IssueID {
  --> SampleParticipant participant
  o String identity
}

这是logic.js文件:

'use strict';

/**
 * Sample transaction
 * @param {org.comp.network.IssueID} issueID
 * @transaction
 */
async function issueID(tx) {


   let ID = tx.participant.participantId;

   let p = 'org.comp.network.SampleParticipant#' + ID;

   let IDENTITY = tx.identity;

   await issueIdentity(p, IDENTITY);

}

功能“ issueIdentity”应该为给定的参与者颁发身份(请参见https://hyperledger.github.io/composer/latest/managing/identity-issue.html

但是,在提交事务“ issueID”时,出现以下错误消息:

enter image description here

显然,函数“ issueIdentity”不是“已知”(尽管在文档中使用了https://hyperledger.github.io/composer/latest/managing/identity-issue

如何构建一个交易处理器功能来为网络中的参与者发布身份?

1 个答案:

答案 0 :(得分:0)

关于您上面的示例的一些观察结果...

您遇到的ReferenceError是因为用@param装饰器定义的参数是 issueID ,但是您为函数声明的参数是 tx 。如果将装饰器行更改为:

* @param {org.comp.network.IssueID} tx

然后解决ReferenceError。

我看到的第二个问题是运行时API(事务使用的)不包含issueIdentity方法。 issueIdentity BusinessNetworkConnection 类的一种方法,属于客户端Api,而不是运行时API。

为了向现有参与者颁发身份,您不能使用事务逻辑,您将需要编写单独的Javascript API程序,或者使用REST API或命令行。