Не в состоянии одновременно вызывать несколько контрактов в Кворум через web3js - PullRequest
0 голосов
/ 01 декабря 2018

Все, я только что развернул разрешенную сеть Кворума (с 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все работает нормально.

Полагаю, что некоторые сложные задачи ЦП блокируют цикл событий.Однако я дважды проверяю, что кворум txn запускается асинхронно.Я также заметил, что есть несколько процессов nodejs, порождаемых в консоли через top cmd.Кроме того, некоторые файлы с именем .node-xmlhttprequest-sync-* создаются автоматически.

Есть идеи, что происходит?Кстати, совместим ли кворум с web3js 1.0.0 +?

Thx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...