cic-staff-client/src/assets/js/block-sync/head.js

43 lines
1.3 KiB
JavaScript
Raw Normal View History

const window = self;
2021-05-10 18:15:25 +02:00
self.importScripts('driver.js', 'web3.min.js');
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) => {
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-05-10 18:15:25 +02:00
};
await getBlockNumber();
}
2021-05-10 18:15:25 +02:00
onmessage = function (o) {
const w3 = new Web3(o.data.w3_provider);
2021-05-10 18:15:25 +02:00
const callback = (o) => {
this.postMessage(o);
};
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);
});
};