Получение ETH транзакций для адресов Slow - PullRequest
0 голосов
/ 20 февраля 2019

В поисках метода, который мог бы ускорить выбор транзакций для определенного адреса.

Запуск этой функции

getTransactionsByAccount(address, 0, web3.eth.blockNumber);

Функция

// Get Wallet Transactions
function getTransactionsByAccount(myaccount, startBlockNumber, endBlockNumber) {
 if (endBlockNumber == null) {
  endBlockNumber = web3.eth.blockNumber;
  console.log("Using endBlockNumber: " + endBlockNumber);
 }
 if (startBlockNumber == null) {
   startBlockNumber = endBlockNumber - 1000;
   console.log("Using startBlockNumber: " + startBlockNumber);
 }
 console.log("Searching for transactions to/from account \"" + myaccount + "\" within blocks "  + startBlockNumber + " and " + endBlockNumber);

 for (var i = startBlockNumber; i <= endBlockNumber; i++) {
   if (i % 1000 == 0) {
     console.log("Searching block " + i);
   }
   var block = web3.eth.getBlock(i, true);
   if (block != null && block.transactions != null) {
     block.transactions.forEach( function(e) {
       if (myaccount == "*" || myaccount == e.from || myaccount == e.to) {
      console.log("  tx hash          : " + e.hash + "\n"
        + "   nonce           : " + e.nonce + "\n"
        + "   from            : " + e.from + "\n" 
        + "   to              : " + e.to + "\n"
        + "   value           : " + e.value + "\n"
        + "   time            : " + block.timestamp + " " + new Date(block.timestamp * 1000).toGMTString() + "\n");
      // Entering all transactions onto page
      var subVal = web3.fromWei(e.value, 'ether');
      $(".trans_list").append("<li class='trans_entry'>TX Hash: "+ e.hash +"<br/>From: "+ e.from +"<br/>To: "+ e.to +"<br/>Amount: "+ subVal +"</li>");

    }
  })
 }
}
}

По сути, этопросто поиск в каждом отдельном блоке, чтобы получить транзакции для этого адреса.Проблема поиска в каждом блоке занимает очень много времени.Можно ли получить их как-нибудь еще быстрее?

...