Hyperledger-Composer:如何为参与者构建交易处理器功能发布身份?
Hyperledger-Composer: How to build transaction processor function issuing identity for participant?
我构建了一个 hyperledger-composer 应用程序(angular 前端,连接到 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"时,我收到以下错误信息:
显然,函数 "issueIdentity" 不是 "known"(尽管它在文档中的此处使用:https://hyperledger.github.io/composer/latest/managing/identity-issue)
我如何构建交易处理器函数来为我的网络中的参与者颁发身份?
关于你上面的例子的一些观察......
您遇到的 ReferenceError 是因为您使用 @param
装饰器定义的参数是 issueID,但您为函数声明的参数是 发送。如果将装饰器行更改为:
* @param {org.comp.network.IssueID} tx
那么ReferenceError就解决了
我看到的第二个问题是运行时 API(这是事务使用的)不包括 issueIdentity 方法。
issueIdentity 是 BusinessNetworkConnection class 的一种方法,它是客户端 Api 而非运行时的一部分 API.
为了(向现有参与者)颁发身份,您不能使用交易逻辑,您需要编写单独的 Javascript API 程序,或使用 REST API 或命令行。
我构建了一个 hyperledger-composer 应用程序(angular 前端,连接到 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"时,我收到以下错误信息:
显然,函数 "issueIdentity" 不是 "known"(尽管它在文档中的此处使用:https://hyperledger.github.io/composer/latest/managing/identity-issue)
我如何构建交易处理器函数来为我的网络中的参与者颁发身份?
关于你上面的例子的一些观察......
您遇到的 ReferenceError 是因为您使用 @param
装饰器定义的参数是 issueID,但您为函数声明的参数是 发送。如果将装饰器行更改为:
* @param {org.comp.network.IssueID} tx
那么ReferenceError就解决了
我看到的第二个问题是运行时 API(这是事务使用的)不包括 issueIdentity 方法。 issueIdentity 是 BusinessNetworkConnection class 的一种方法,它是客户端 Api 而非运行时的一部分 API.
为了(向现有参与者)颁发身份,您不能使用交易逻辑,您需要编写单独的 Javascript API 程序,或使用 REST API 或命令行。