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

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 投票
1 回答
269 浏览

java - 在 android 上没有由网络与 hyperledger 应用程序提供的对等点

通过商业论文教程,我继续尝试将 java 应用程序实现到 Android 模拟器。

Issue.java 上,当调用Network network = gateway.getNetwork("mychannel");发生错误时:IllegalArgumentException: No peers provided

由于网络参数getChaincodeQueryPeersForOrganization(DefaultQueryHandlers.java:50),他不给我一个同行的集合并导致错误SingleQueryHandler.java:29

我想到了connection-org2.yaml文件,但看不出有什么问题。(默认 Java 应用程序无法正常工作)

我怎样才能给正确的网络,正确的同伴?

完全错误:

0 投票
1 回答
176 浏览

hyperledger-fabric - 使用 Java SDK 创建创世块和通道配置事务

我正在寻找使用 Hyperledger Fabric 中的 Java SDK 创建创世块和通道配置事务。我知道我们可以使用 configtxgen 来执行此操作,但我试图避免这种情况,因为我们需要由对等组织管理员从 UI 创建通道

所以,在我看来,目前只有一个选项可用——即使用 ProcessBuilder 创建创世块和通道配置事务。然后继续使用 SDK 创建通道,加入对等点等。

有没有人有任何使用 Java SDK 本地执行此操作的经验?

0 投票
1 回答
207 浏览

hyperledger-fabric - Hyperledger Fabric:私有数据收集的服务发现

在 Hyperledger Fabric 中,服务发现是否支持为私有数据收集 (PDC) 查找查询对等点。

在由 2 个组织(org1 和 org2)组成的通道中,如果我仅为 org1 创建一个 PDC,则只有 org1 中的对等方持有私有数据。如果在 PDC 收集配置文件中我指定 memberReadOnly=false,它允许 org2 用户查询 org1 peer 以读取私有数据。但这需要对等点和 Fabric Java SDK 中服务发现的支持。

我们要完成的目标是在客户端作为org2用户,通过Java SDK,调用chaincode读取私有数据时,SDK会自动连接org1 peer。

目前是否支持此功能。

0 投票
1 回答
250 浏览

hyperledger-fabric - Fabric sdk java升级1.4到2.2版本

我正在尝试将我的fabric sdk java从1.4版本升级到2.2版本看到eventthub从2.x版本中删除现在我应该如何注册我的事件以及我应该如何等待2.2版本中的链码事件我是hyperledger的新手,有人可以帮忙吗请给我这个。是否有任何样品

0 投票
0 回答
163 浏览

hyperledger-fabric - 无法使用 Fabric SDK Java 更新通道配置:字段“common.ConfigUpdate.channel_id”包含无效的 UTF-8

网络设置:

网络设置有 1 个排序者 + 2 个组织,每个组织有 2 个对等点(2 * 2 = 4 个对等点)。

我认为网络、加密材料、通道配置事务都没有问题,因为我使用 Fabric SDK Go 完成了类似的事情而没有遇到此类问题。

我做了什么:

错误发生在我创建通道“mychannel”,将客户端组织的两个对等点添加到通道,使用 Fabric SDK Java 初始化通道,然后尝试更新通道之后。

在我尝试调用channel.updateChannelConfiguration()以应用配置 tx 文件之前Org1MSPanchors.tx,我设法从两个组织的管理员那里获得了签名。

关键行(项目是用 Kotlin 编写的,以下是 Java 等价物):

日志:

调用后,程序崩溃并显示以下信息。

和码头工人日志orderer.***.com

配置和网络文件:

https://1drv.ms/u/s!Aj_rPvkyS8y8gtsXEaKBXD1riM12CQ?e=jkMeYn

请帮忙:

如果解决方案不明显,请告诉我可能的原因是什么?

谢谢!

0 投票
1 回答
378 浏览

java - 如何让文件系统钱包与 fabric-gateway-java 示例一起使用

我在 IBM 云上部署了一个区块链。我实现了一个 Node.js 客户端应用程序,该应用程序为 MyOrg 注册了管理员用户,并在文件系统上本地导入了一个钱包。导入钱包后,我可以在链码上提交交易以将数据上传到账本中并评估交易以查询账本。一切都在使用 Node.js 客户端。

我现在想用 Java 实现一个类似的 Hyperledger 客户端。https://hyperledger.github.io/fabric-gateway-java/上的 fabric-gateway 示例与上传和查询账本的 Node.js 代码非常相似。将下面的基本 Node.js 代码与 Java 网关示例代码进行比较,Node.js 和使用的 Java 类之间有明显的对应关系(两者都有网关、网络、合同方法相似的类):

问题是 Java 网关示例假定本地已经有一个可用的钱包,并且没有显示如何创建该钱包。我尝试将 Node.js 客户端导入的钱包目录与 Java 网关示例一起使用,但它不起作用。它在调用下面的 .identity() 方法时抛出异常(说指定的身份“MyOrg_Admin”不存在):

// 配置用于访问网络的网关连接。Gateway.Builder builder = Gateway.createBuilder() .identity(wallet, "MyOrg_Admin") .networkConfig(networkConfigFile);

我尝试使用较低级别的 fabric-sdk-java 类来创建钱包。下面是为 MyOrg 注册管理员用户并在本地导入钱包的 Node.js 代码:

唯一需要的信息是 OrgCA URL 和组织名称(都可以通过解析 connection.json 文件获得)以及组织管理员用户名和密码(您只需要知道)。FabricCAServices 对应的 Java 类似乎是 HFCAClient。使用此类搜索代码示例,最有用的链接是以下链接(除了 fabric-sdk-java 源代码的单元测试): https ://developer.ibm.com/technologies/blockchain/tutorials/hyperledger-fabric -java-sdk-for-tls-enabled-fabric-network/

我注册管理员用户的 Java 代码(导入钱包的第一步):

ca.enroll() 调用引发此异常:错误 org.hyperledger.fabric_ca.sdk.HFCAClient - org.hyperledger.fabric.sdk.exception.CryptoException: Unable to add CA certificate to trust store。错误:java.io.IOException:数据不完整

你能帮忙注册管理员用户吗?我究竟做错了什么?

谢谢, Ionut

0 投票
0 回答
16 浏览

hyperledger-fabric - 为chaincode tar.gz构建ChaincodeID时如何设置chaincodePath?

注意:本题基于Fabric release-1.4,因为我没有全网升级到release-2.x的选项。

在我当前的用例中,我试图通过使用InputStream它的tar.gz包来部署它来部署 Java 链代码 - 原因是我试图避免为客户端部署打包源代码。

在下面的代码段中,ccis指的是这样一个InputStream- 例如,new FileInputStream("chaincode.tar.gz").

因为chaincodePath不能为空或为空,所以我设置chaincodePath/opt/gopath/src/github.com/chaincode因为显然对于 Java 链代码,我需要通过其绝对路径来引用它。

无论如何,我都会收到以下错误:

我理解这个错误,因为我的 tar.gz 及其内容都不存在于该路径中,但由于我正在使用InputStream我不确定要设置什么值。

0 投票
0 回答
21 浏览

hyperledger-fabric - 每个对等方的双重输入导致 UnknownHostException 错误

使用该语句channel.getPeers().forEach(p -> System.out.println(p));,我尝试查看我的频道中有哪些同行。我得到以下输出:

当我尝试发送交易时,对于每个对等方,我将看到两者中不正确的错误 - 例如:

我如何为网络中的每个对等方获取两个条目?我应该如何确保我只得到正确的?

0 投票
0 回答
15 浏览

hyperledger-fabric - 为网关通道获取错误的 orderers/peers

我正在尝试动态创建通道并实例化链码。我有以下两种方法:

以上client来自GatewayImplFabric Gateway(https://github.com/hyperledger/fabric-gateway-java/blob/main/src/main/java/org/hyperledger/fabric/gateway/impl/GatewayImpl.java)。

我正在测试的两个用例是:

  1. 创建一个通道并在该通道上实例化链码
  2. 在网络中的现有通道上实例化链码

我的第一个用例没有问题。这是一个示例调试输出,作为我的问题的上下文:

相比之下,当我独立测试我的第二个用例时,我看到以下内容:

这个测试用例失败了,因为:

  1. 订购者有不同的 URL,导致UnknownHostException我尝试发送交易时。
  2. 对于每个对等点,我看到两个条目:对等点 1 有两个PeerID 为 8 和 19,依此类推。这成为一个问题,因为实例化提案被发送到所有对等体,所以我得到了六个响应而不是三个响应,其中三个由于UnknownHostException.

示例 UnknownHostException 堆栈跟踪:

我应该如何解决这个问题,以便两个用例都成功?