作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Fabric Java SDK 来查询在 Hyperledger fabric v1.3 上运行的链代码。这是我尝试执行的步骤:
创建 ChannelCLient 并使用方法 queryByChainCode(),我得到了 ProposalResponse 的集合。
在每个 ProposalResponse 上,我都可以通过方法 getTransactionID() 获取有效负载和 transactionID。
之后使用我从上述步骤中获得的交易 ID 通过方法 queryBlockByTransactionID() 查询 BlockInfo。因为我想获得包含我的交易的 block 的正确哈希值。
但我收到错误消息 500 无法获取 txID 的 block ...错误在索引中找不到条目
我的代码如下所示:
FabricClient fabClient = new FabricClient(adminUserContext);
ChannelClient channelClient = fabClient.createChannelClient(Config.CHANNEL_NAME);
Channel channel = channelClient.getChannel();
Peer peer = fabClient.getInstance().newPeer(Config.ORG1_PEER_0, Config.ORG1_PEER_0_URL);
EventHub eventHub = fabClient.getInstance().newEventHub("eventhub01", "grpc://localhost:7053");
Orderer orderer = fabClient.getInstance().newOrderer(Config.ORDERER_NAME, Config.ORDERER_URL);
channel.addPeer(peer);
channel.addEventHub(eventHub);
channel.addOrderer(orderer);
channel.initialize();
String transactionId = "";
Logger.getLogger(QueryChaincode.class.getName()).log(Level.INFO, "Query ");
Collection<ProposalResponse> responsesQuery = channelClient.queryByChainCode(chaincode, "query", args);
for (ProposalResponse pres : responsesQuery) {
transactionId = pres.getTransactionID();
String stringResponse = new String(pres.getChaincodeActionResponsePayload());
Logger.getLogger(QueryChaincode.class.getName()).log(Level.INFO, stringResponse);
System.out.println("transactionID is:" + transactionId + " chaincode id is: " + pres.getChaincodeID()
+ " peer name is: " + pres.getPeer().getName());
result += stringResponse;
}
BlockInfo blockInfo = channel.queryBlockByTransactionID(transactionId);
谁能帮我看看如何根据交易ID查询区 block ?
非常感谢。
最佳答案
BlockchainInfo blockchainInfo = channel.queryBlockchainInfo();
Long countBlock = blockchainInfo.getHeight();
blockInfoModel.setSize(countBlock.intValue());
for (int blockNumber = 0; blockNumber < countBlock; blockNumber++) {
BlockInfo blockInfo = channel.queryBlockByNumber(blockNumber);
blockInfoModel.getBlocks().add(new BlockInfoModel(
String.valueOf(blockInfo.getBlockNumber()),
blockInfo.getChannelId(),
Hex.encodeHexString(blockInfo.getDataHash()),
Hex.encodeHexString(blockInfo.getPreviousHash()),
blockInfo.getTransactionCount(),
queryDateTransactions(channel, blockInfo)
));
}
关于hyperledger-fabric - 无法使用 Fabric Java SDK 根据交易 ID 获取 BlockInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53738010/
我正在使用 Fabric Java SDK 来查询在 Hyperledger fabric v1.3 上运行的链代码。这是我尝试执行的步骤: 创建 ChannelCLient 并使用方法 queryB
我是一名优秀的程序员,十分优秀!