Skip to content

Instantly share code, notes, and snippets.

@togosh
Last active August 26, 2021 09:25
Show Gist options
  • Save togosh/a96e841938aa05132e6883b2590879ed to your computer and use it in GitHub Desktop.
Save togosh/a96e841938aa05132e6883b2590879ed to your computer and use it in GitHub Desktop.
Staked Supply of HEX
// 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