0

我正在使用 Hyperledger Fabric 1.4v,运行一个具有两个对等点(peer0,peer1)的组织,每个对等点(peer0,peer1)在本机设置中的单独虚拟机上运行。Orderer 也在单独的虚拟机上运行。在 web 客户端中,使用 java sdk 执行链代码,并使用 fabric-ca 对每个用户进行身份验证。当通过 java sdk 执行链代码时,我面临延迟问题(需要一分钟以上),但是当通过 shell 脚本执行链代码时它工作正常。

 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();
            }
4

1 回答 1

0

Chaincode 在其自己的 docker 容器上运行,该容器由对等方启动。第一次,如果该容器(对于该链代码版本)尚未启动,则必须启动它,因此需要时间。

第二个请求(在同一个对等方)是否需要这么多时间?如果是这样,您必须检查您的链代码,特别是丰富的查询(设置索引和改进查询)。网络相关和硬件相关的资源也很重要。

您客户的代码对您的问题贡献不大。

于 2020-04-02T06:45:35.000 回答