async function* minerPowerStream() {
const concurrency = 15
const callMinerPowerStream = transform(concurrency, async miner => {
try {
const minerPower = (await client.stateMinerPower(miner, tipSetKey)).MinerPower
return {
miner,
rawBytePower: Number(minerPower.RawBytePower),
qualityAdjPower: Number(minerPower.QualityAdjPower)
}
} catch (e) {
console.error('StateMinerPower error', e)
return {}
}
})
let counter = 0
for await (const { miner, rawBytePower, qualityAdjPower } of callMinerPowerStream(miners)) {
if (rawBytePower || qualityAdjPower) {
yield {
counter,
epoch: selectedEpoch,
miner,
rawBytePower,
qualityAdjPower
}
} else if (counter % 100 === 0) {
yield {
counter
}
}
if (++counter > scanMax) {
yield {
counter
}
break
}
}
}