我正在尝试循环&排序大量数据(整个以太坊区块链LOL)
我正在尝试为每个地址创建所有交易的记录。
显然,这是一个非常密集的过程,我不确定如何使其超出我拥有的(不是那么高效)
的效率它开始很快,但我认为现在由于查找txs
对象中的地址的查找。
任何帮助意见/帮助都将不胜感激。
https://giphy.com/gifs/3o6fj7kwqxesy9okk8
var txs = {};
var i = 0;
// Loop over blocks
(function loop () {
setTimeout(function () {
// Get current block
var block = web3.eth.getBlock(i, true, (error, block) => {
// debugger;
// Loop over transactions in block
for(var j = 0; j < block.transactions.length; j++) {
// debugger;
if(txs[block.transactions[j].to]) {
txs[block.transactions[j].to].transactions.push(block.transactions[j]);
} else if (txs[block.transactions[j].to]) {
txs[block.transactions[j].from].transactions.push(block.transactions[j]);
} else {
txs[block.transactions[j].to] = {
transactions: [block.transactions[j]]
}
txs[block.transactions[j].from] = {
transactions: [block.transactions[j]]
}
}
}
});
i++
if (i < highestBlock) {
loop();
}
}, 50);
})();
我认为您的代码在其位于" else-if"中有一个错误,似乎您应该使用txs[block.transactions[j].from]
属性而不是txs[block.transactions[j].to]
。如果您只想完成递归模式,则可以使用setImmediate
函数或process.nextTick
方法。如果使用node.js v6 ,则可以使用 Map
代替对象。