无法通过web3js同时调用Quorum的多个合同

时间:2018-12-01 09:37:14

标签: web3 web3js quorum

全部, 我刚刚按照此处的example(不完全一样)部署了一个受许可的Quorum网络(与Tessera一起使用)。

我尝试通过web3js(版本0.20.0)发出多个并发合约调用来对网络进行基准测试。代码段如下。

function benchmark(tps){
    let contractInstance = web3.eth.contract(JSON.parse(abi_str)).at(address);
    let promises = [];
    for (...) {
      let func = ...;
      let args = ...
      promises.push(sendTxn(contractInstance, func, args, web3.accounts[0])); 
      sleep 1/tps
   }
   ...
}


function sendTxn(contractInstance, functionName, args, from_acc) {
    return new Promise((resolve, reject) => {
        contractInstance[functionName].sendTransaction(...args, {
                from: from_acc,
                gas: 0xE0000000,
                privateFor: (this.private ? this.privateFor : undefined)
            }, (err, txID) => {
                // console.log("txID: ", txID);
                if (txID) {
                    resolve(txID);
                } else {
                    reject(err);
                }
        });
    });
}

我有一个单独的状态例程,该例程通过构建的setInterval触发并定期收集已解析的txID

但是,当发出的txn速率稍高(每个进程大于10tps)时,状态例程以及sendTxn中的回调均无法响应。如果小于10tps ,一切正常。

我想可能是某些CPU繁重的任务阻止了事件循环。 但是,我再次检查仲裁txn是否异步触发。 我还注意到通过top cmd在控制台中产生了多个nodejs进程。 此外,会自动创建一些名为.node-xmlhttprequest-sync-*的文件。

知道发生了什么吗?顺便说一句,仲裁是否与web3js 1.0.0+兼容?

Thx

0 个答案:

没有答案