2021-02-24 16:09:50 +01:00
|
|
|
const window = self;
|
|
|
|
|
2021-05-10 18:15:25 +02:00
|
|
|
self.importScripts('driver.js', 'web3.min.js');
|
2021-02-24 16:09:50 +01:00
|
|
|
|
|
|
|
async function sync(driver) {
|
|
|
|
driver.hi = driver.lo;
|
|
|
|
let getBlockNumber = async function () {
|
|
|
|
while (true) {
|
|
|
|
const currentBlockNumber = await driver.w3.eth.getBlockNumber();
|
|
|
|
if (currentBlockNumber > driver.hi) {
|
|
|
|
for (let i = driver.hi + 1; i <= currentBlockNumber; i++) {
|
|
|
|
console.log(driver.hi, i, currentBlockNumber);
|
2021-05-10 18:15:25 +02:00
|
|
|
driver.w3.eth.getBlock(i).then(async (block) => {
|
2021-02-24 16:09:50 +01:00
|
|
|
console.log('current block', block);
|
|
|
|
const count = await driver.w3.eth.getBlockTransactionCount(block.number);
|
|
|
|
console.log('count', count);
|
|
|
|
for (let i = 0; i < count; i++) {
|
|
|
|
console.log('driver process ', block.number, i);
|
|
|
|
driver.process(block.number, i);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
driver.hi++;
|
|
|
|
}
|
|
|
|
}
|
2021-05-10 18:15:25 +02:00
|
|
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
2021-02-24 16:09:50 +01:00
|
|
|
}
|
2021-05-10 18:15:25 +02:00
|
|
|
};
|
2021-02-24 16:09:50 +01:00
|
|
|
await getBlockNumber();
|
|
|
|
}
|
|
|
|
|
2021-05-10 18:15:25 +02:00
|
|
|
onmessage = function (o) {
|
|
|
|
const w3 = new Web3(o.data.w3_provider);
|
2021-02-24 16:09:50 +01:00
|
|
|
|
2021-05-10 18:15:25 +02:00
|
|
|
const callback = (o) => {
|
|
|
|
this.postMessage(o);
|
|
|
|
};
|
2021-02-24 16:09:50 +01:00
|
|
|
|
2021-05-10 18:15:25 +02:00
|
|
|
w3.eth.getBlockNumber().then(async function (blockNumber) {
|
|
|
|
const driver = new Driver(w3, blockNumber, undefined, undefined, callback);
|
|
|
|
await sync(driver);
|
|
|
|
});
|
2021-02-24 16:09:50 +01:00
|
|
|
};
|