我正在使用Hyperledger Fabric 1.4v,在一个组织中运行两个对等体(peer0,peer1),每个对等体都在本机设置中的单独vm上运行。Orderer也在单独的vm上运行。在Web客户端中,使用java sdk执行链代码,并使用fabric-ca对每个用户进行身份验证。通过Java sdk执行chaincode时,我遇到延迟问题(需要一分钟以上),但通过shell脚本执行chaincode时,它可以正常工作。
try {
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
Gateway.Builder builder = Gateway.createBuilder();
builder.identity(wallet, "admin").networkConfig(networkConfigPath).discovery(true);
try (Gateway gateway = builder.connect()) {
Network network = gateway.getNetwork(channelName);
logger.info("ChannelName:::" + channelName);
Contract contract = network.getContract(chaincodeName);
logger.info("ChaincodeName:::" + chaincodeName);
result = contract.evaluateTransaction(chaincodeMethod);
logger.info("ChaincodeExecutor::::Result:::" + result);
}
} catch (Exception e) {
logger.info("ChaincodeExecutor::::ERROR::" + e.getMessage());
e.printStackTrace();
}
Chaincode在其自己的docker容器上运行,该容器由对等方启动。第一次,如果尚未启动该容器(针对该链码版本),则必须启动该容器,因此需要花费时间。
第二个请求(在同一个对等方上)会花费很多时间吗?如果是这样,则必须检查您的链码,特别是丰富的查询(设置索引并改善查询)。与网络相关和与硬件相关的资源也很重要。
您客户的代码对您的问题贡献不大。