Last active
August 26, 2021 09:25
-
-
Save togosh/a96e841938aa05132e6883b2590879ed to your computer and use it in GitHub Desktop.
Staked Supply of HEX
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// https://codeakk.medium.com/hex-development-data-a1b1822446fa | |
// https://togosh.medium.com/hex-developer-guide-3b018a943a55 | |
test(); | |
async function test(){ | |
var { stakedSupply } = await get_stakeStartData(); | |
console.log("Staked Supply: " + Number(stakedSupply).toLocaleString(undefined, {minimumFractionDigits:0, maximumFractionDigits:0})); | |
} | |
async function get_stakeStartData(){ | |
var $lastStakeId = 0; | |
var stakedHEXSum = 0; | |
while (true) { | |
var data = await get_stakeStarts($lastStakeId); | |
if (data.count <= 0) { break; } | |
stakedHEXSum += data.stakedHEX; | |
$lastStakeId = data.lastStakeId; | |
console.log($lastStakeId) | |
await sleep(100); | |
} | |
return { | |
stakedSupply: parseInt(stakedHEXSum) | |
} | |
} | |
async function get_stakeStarts($lastStakeId){ | |
return await fetch('https://api.thegraph.com/subgraphs/name/codeakk/hex', { | |
method: 'POST', | |
headers: { 'Content-Type': 'application/json' }, | |
body: JSON.stringify({ query: ` | |
query { | |
stakeStarts(first: 1000, orderBy: stakeId, | |
where: { | |
stakeId_gt: "` + $lastStakeId + `", | |
stakeEnd: null | |
} | |
) { | |
stakeId | |
stakedHearts | |
} | |
}` | |
}), | |
}) | |
.then(res => res.json()) | |
.then(res => { | |
var stakeCount = Object.keys(res.data.stakeStarts).length; | |
if (stakeCount <= 0) { | |
return { | |
count: 0 | |
}; | |
} | |
else { | |
var stakeStartsReduced = res.data.stakeStarts.reduce(function(previousValue, currentValue) { | |
return { | |
stakedHearts: parseInt(previousValue.stakedHearts, 10) + parseInt(currentValue.stakedHearts, 10), | |
} | |
}); | |
var lastStakeId = res.data.stakeStarts[(stakeCount - 1)].stakeId; | |
var data = { | |
count: stakeCount, | |
stakedHEX: stakeStartsReduced.stakedHearts / 100000000, | |
lastStakeId: lastStakeId | |
}; | |
return data; | |
}}); | |
} | |
function sleep(ms) { | |
return new Promise(resolve => setTimeout(resolve, ms)); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment