问题标签 [hyperledger-fabric-sdk-js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2621 浏览

hyperledger-fabric - Hyperledger Fabric:检查交易是否已提交到账本

我有三个客户端应用程序,它们分别使用 Java、Node.js 和 Go SDK 与我的区块链 Fabric 进行交互。使用它们,我可以成功查询和更新分类帐。

现在我想测量更新分类帐期间的延迟。所以,我想在提交请求之前获取一个时间戳,然后在事务成功提交到账本之后再获取一个时间戳,然后计算差异。

我的问题是我找不到任何关于 SDK 的 Java、Go 和 Node.js 的 API 的完整文档,所以我不知道当提交方法返回时,我是否可以认为交易正确提交到账本.

这是我的三个客户的代码。爪哇:

节点.js:

去:

这些代码有效。我的问题是:我可以确定在线路之后

(在 Java 中)

(在 Node.js 中)

(在 Go 中)交易是否已提交到账本?

我只在文档中发现:

“向账本提交交易。交易函数名称将在背书节点上进行评估,然后提交给排序服务以提交到账本。” 在https://fabric-sdk-node.github.io/release-1.4/module-fabric-network.Contract.html#submitTransaction__anchor的 Node.js 中的 submitTransaction

在https://godoc.org/github.com/hyperledger/fabric-sdk-go/pkg/client/channel#Client.Execute在 Go 中执行的“使用请求和可选请求选项执行准备和执行事务”

对于 Java,我找不到文档……我也不确定 Node.js 和 Go。

0 投票
2 回答
1420 浏览

hyperledger-fabric - 超级账本结构发现服务失败背书

大家好,我正在尝试使用节点 js 客户端的服务发现来生成交易提案,我遇到的问题是,当发现生成背书计划时,它会将提案发送给同一个对等方并且无法背书,这是其中之一生成了背书计划,不知道为什么,但是同行的名字都是错误的

这是发送提案时的日志

编辑 1:初始化日志

当我执行 channel.getChannelPeers() 时,我会得到一个包含同行的列表,其中包含正确的名称。

0 投票
3 回答
719 浏览

hyperledger-fabric - 如何使用fabric sdk(fabric-client)安装链码?

基于此处列出的包定义https://fabric-sdk-node.github.io/master/tutorial-chaincode-lifecycle.html

我应该将位于我笔记本电脑中的链码 go (golang) 代码的字节数组放在哪里?也不确定什么chaincodePathmetadataPath是为了什么?它们是结构系统中的路径吗?

基本上,我不知道如何将我的 golang 源代码(链代码)加载到安装链代码的请求中。

0 投票
1 回答
4381 浏览

hyperledger-fabric - 无法调用链代码名称:“lscc”,错误:容器以 1 退出:链代码注册失败(Fabric 1.4.1)

我正在尝试创建一个由nodejs-sdk. 我已使用此示例作为参考。

当我尝试使用链码时instantiate(),我在访问的对等方中收到此错误docker logs ax-peer

订购者没有注册额外的日志。我的代码如下

由于语言是node我必须提供链码的绝对路径。我的文件夹结构是

如果我运行,client.queryInstalledChaincodes(defaultPeer)那么它会返回此日志,所以我猜想正在安装链代码。

我该如何解决?我想坚持使用nodejs而不是将我的链码更改为golang. 该示例还提取证书并将其存储在根文件夹中,因此无需执行任何操作即可访问它docker exec -it bash

0 投票
1 回答
386 浏览

spring-boot - Hyperledger Fabric-sdk-java 无法与 orderer 连接(未找到与 localhost 匹配的主题替代 DNS 名称)

我正在使用余额转移示例来启动一个结构网络。样本已生成加密材料。我在我的 Fabric-SDK-JAVA 集成中artifact folder使用了相同的引用。network-config.yaml

我能够注册/注册用户,查询链码,甚至所有交易都得到通道所有对等方的成功认可。

但是,事务提交到 orderer 以进行提交失败并出现错误:

奇怪的是,同一个网络可以与 Node SDK 完美配合。我不确定我是否缺少使用 SSL 所需的一些配置(因为它在余额转移示例网络中默认启用)。

我在主机文件中添加了主机条目。

0 投票
1 回答
2075 浏览

node.js - 为 Hyperledger Fabric Web 应用程序分配对等上下文

免责声明:我之前没有任何软件开发经验,并且从 4 个月前开始负责开发区块链应用程序。请原谅我对大多数事情缺乏了解。

我目前正在构建一个 Web 应用程序来与 Hyperledger Fabric 进行交互。我已经设法为对等节点、排序节点等启动 docker 容器,每个容器都在连接配置文件中定义,并具有自己的本地主机端口。

我还在开发一个简单的前端和服务器端restAPI,并且已经实现了允许用户登录并设置他们的用户上下文并执行一些特定于应用程序的功能的功能。

对于项目的区块链方面,我正在尝试修改“余额转移”(https://github.com/hyperledger/fabric-samples/blob/release-1.4/balance-transfer/app.js)示例我的用例的织物样品。

到目前为止,我已经设法建立“通道创建”端点,以允许 Web 应用程序上的管理员通过使用 Hyperledger Fabric SDK 通过上传 channel.tx 文件来执行通道创建。

但是当我必须将同伴加入频道时,我会迷失方向。织物示例示例具有以下代码。

根据 testAPI.sh 脚本的片段(https://github.com/hyperledger/fabric-samples/blob/release-1.4/balance-transfer/testAPIs.sh

似乎提供了对等方名称(必须在连接配置文件中指定)作为将对等方加入通道的请求。这对我来说不太有意义,因为我设想对等点就像访问 Web 应用程序的“不同 IP 的用户”。通过提供连接配置文件引用名称来指定哪些对等方加入通道似乎是一种静态(硬编码、非动态)方法。

我不明白的是:如何将经过身份验证的用户分配给他们的个人对等上下文,并且在 Web 应用程序上设置他们自己的对等上下文,用户能够自己加入频道?

Fabric 教程仅通过 CLI 执行 peer 上下文的切换,并通过 CLI 将 peer 加入通道。 CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp CORE_PEER_ADDRESS=peer0.org2.example.com:9051 CORE_PEER_LOCALMSPID="Org2MSP" CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt peer channel join -b mychannel.block

如何通过 Hyperledger Fabric SDK 实现对等上下文的切换?甚至 1 个经过身份验证的用户的对等上下文,并且以另一个用户身份登录将意味着对等上下文更改为当前经过身份验证的另一个用户。

在这样一个分散的设置中,我似乎无法理解物理意义上的对等点。请为我提供详细和外行的解释,以尽可能地理解这个概念。非常感谢!

0 投票
1 回答
1478 浏览

hyperledger-fabric - Hyperledger Fabric 上的身份管理

我正在使用 Hyperledger Fabric 1.4.1 和最新版本的 fabric-contract-api 用于智能合约,fabric-client用于管理通道创建和链码的低级 API,以及fabric-network与对等方的交互。我已参考此示例来设置我的网络。

我已经编写了一个基本的链代码包,nodejs并设置了一个简单的 1 个组织、1 个对等点、1 个排序网络。第一步是连接到对等节点并使用fabric-ca-client创建管理员身份。根据示例,使用的注册 ID 和密码是admin, adminpw。这取决于此处使用的配置

我用来创建和加入频道,然后安装和实例化链码的代码是

以上将检查admin用户是否在状态存储中可用。关于上述过程的一些疑问

  1. 假设只使用一个 CA,此处生成的管理员用户可用于与同一组织的任何和所有对等方进行交互?
  2. 这个身份的实际用途是什么,因为对于其余功能,cryptogen使用每个对等方生成的管理员身份(代码如下)
  3. 在注册 admin 时,没有attrs传入ca.enroll(),所以在查询身份roles字段时自然返回 null。共享的ca-server链接清楚地为其分配了角色client, user, peer, validator, auditoradmin既然它使用andadminpw来注册 id 和 secret ,那不应该在这里反映出来吗?

继续代码

其中stateStore有两个文件(如预期的那样),称为adminAdmin@ax-peer。这些看起来像

当这个用户从状态存储中被使用时await myClient.getUserContext('admin', true);,客户端如何签署交易?fabric-client我无法找到使用SDK创建的任何用户的私钥/证书。

现在,如果我使用fabric-networkAPI,FileSystemWallet()则实现了一个函数,该函数存储由它创建的每个用户的私有和公共证书。

此函数的用途与 相同,ca.enroll()但以可见的方式存储私有证书。如果我想使用 SDK 中创建的用户fabric-clientfabric-network我需要转移证书,我该如何实现呢?

TLDR - 使用注册用户fabric-client,然后使用Gateway()class fromfabric-network向同一用户提交交易。

非常感谢任何建议,指导。谢谢!

0 投票
1 回答
36 浏览

hyperledger-fabric-sdk-js - 如何在对等体中插入新记录并提取这些记录?

从结构中的对等方获取数据时出错并且无法解决问题。

试图在我创建并输入代码的其中一个节点中插入新记录,但我没有收到任何响应,光标移动到下一个点,当我获取该新记录的详细信息时出现错误

错误:查询时背书失败。响应:状态:500 消息:“事务返回失败:错误:CAR10 不存在”

我使用以下查询来获取行详细信息

我的任务是将新记录插入对等点并获取记录详细信息,并且数据应该插入到我创建的所有对等点中。

0 投票
2 回答
332 浏览

hyperledger-fabric - Hyperledger Fabric 中的动态通道工件(channel.tx)

是否有任何其他方法可以为 Hyperledger-Fabric 通道创建生成通用通道工件(channel.tx),以便可以在运行时单独更改通道名称,而不是为每个新通道发出具有不同通道名称的以下命令。

./bin/configtxgen -profile OneOrgChannel -outputCreateChannelTx ./config/channel5.txt

0 投票
1 回答
120 浏览

hyperledger-fabric - 找不到 Fabric CA 的特定 SDK 功能

我想使用 Hyperledger Fabric 创建一个用于身份管理的仪表板。我知道如何使用fabric-clientfabric-network调用FabricCAServices对象以及注册和注册新用户。但是,我无法访问其他功能来检索颁发的证书列表。

fabric-ca-clientnpm repo 没有公开可以通过 CLI 调用的函数,如下所示 - https://hyperledger-fabric-ca.readthedocs.io/en/release-1.4/clientcli.htmlfabric-ca-client certificate xxx命令就是我正在寻找的为了。

此链接显示如何获取CertificateService似乎有一些证书查询代码,但没有关于如何使用它的进一步文档。作为参考,这些文件似乎具有我需要的功能。