API changes for Foundation reqward
This commit is contained in:
parent
48111f329c
commit
89c429f382
10
server.ts
10
server.ts
@ -141,7 +141,7 @@ try {
|
||||
else if(option == "getdifficulty-progpow")
|
||||
result = Number(blockDetails.TotalDifficultyProgpow);
|
||||
else if(option == "totalcoins")
|
||||
result = 21000000 * 100000000;
|
||||
result = blockDetails.coin_existence;
|
||||
else if(option == "maxcoins")
|
||||
result = 21000000;
|
||||
else if(option == "average-blocktime")
|
||||
@ -342,9 +342,9 @@ console.log(__dirname);
|
||||
console.log(`Node Express server listening on http://localhost:${PORT}`);
|
||||
});
|
||||
|
||||
cron.schedule('*/30 * * * * *', () => {
|
||||
universalGetLatestBlockDetails('Testnet');
|
||||
});
|
||||
// cron.schedule('*/30 * * * * *', () => {
|
||||
// universalGetLatestBlockDetails('Testnet');
|
||||
// });
|
||||
var interval;
|
||||
const io = require("socket.io").listen(server);
|
||||
io.sockets.on("connection", socket => {
|
||||
@ -356,7 +356,7 @@ console.log(__dirname);
|
||||
let key = process.env.REDIS_KEY + socket.handshake.query.network + 'Latest_Block_details'
|
||||
interval = setInterval(function() {
|
||||
Global.client.get(key, function(err, reply){
|
||||
socket.emit("latestblockdetail", JSON.parse(reply) );
|
||||
// socket.emit("latestblockdetail", JSON.parse(reply) );
|
||||
});
|
||||
},10000);
|
||||
//socket.on("disconnect", () => console.log("Client disconnected"));
|
||||
|
@ -89,6 +89,7 @@
|
||||
},
|
||||
"api-view": {
|
||||
"query-api" : "Abfrage-API",
|
||||
"maxcoins" : "Maximale Versorgung zurückgeben",
|
||||
"query-api-line1" : "Die aufzurufende API-Funktion wird über den Parameter q angegeben.",
|
||||
"query-api-line2" : "Zum Beispiel können Sie die Gesamtmünzen des epischen Bargeldes mit fragen ",
|
||||
"circulating" : "Gibt die Anzahl der umlaufenden Münzen zurück",
|
||||
|
@ -89,6 +89,7 @@
|
||||
},
|
||||
"api-view": {
|
||||
"query-api" : "Query API",
|
||||
"maxcoins" : "Return maximum supply",
|
||||
"query-api-line1" : "The API function to call is specified through the q parameter.",
|
||||
"query-api-line2" : "For instance you can ask the totalcoins of epic cash with ",
|
||||
"circulating" : "returns the number of circulating coins",
|
||||
|
@ -49,6 +49,178 @@ function dateDiff(date2, insec = false) {
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Function returns total coins based on height
|
||||
*/
|
||||
|
||||
const getTotalRewardByHeight= async(height) => {
|
||||
|
||||
var coin_existence;
|
||||
|
||||
let DAY_HEIGHT = 1440
|
||||
/// Height of the first epic block emission era
|
||||
const BLOCK_ERA_1 = DAY_HEIGHT * 334;
|
||||
/// Height of the second epic block emission era
|
||||
const BLOCK_ERA_2 = BLOCK_ERA_1 + (DAY_HEIGHT * 470);
|
||||
/// Height of the third epic block emission era
|
||||
const BLOCK_ERA_3 = BLOCK_ERA_2 + (DAY_HEIGHT * 601);
|
||||
/// Height of the fourth epic block emission era
|
||||
const BLOCK_ERA_4 = BLOCK_ERA_3 + (DAY_HEIGHT * 800);
|
||||
/// Height of the fifth epic block emission era
|
||||
const BLOCK_ERA_5 = BLOCK_ERA_4 + (DAY_HEIGHT * 1019);
|
||||
/// After the epic block emission era 6, each era will last 4 years (approximately 1460 days)
|
||||
const BLOCK_ERA_6_ONWARDS = DAY_HEIGHT * 1460;
|
||||
/// Block Reward that will be assigned after we change from era 5 to era 6.
|
||||
const BASE_REWARD_ERA_6_ONWARDS = 0.15625;
|
||||
|
||||
let remaining_height = 0;
|
||||
let currentReward = 16;
|
||||
/// Compute the total reward generated by each block in a given height.
|
||||
if (height <= BLOCK_ERA_1) {
|
||||
coin_existence = height * 16;
|
||||
currentReward = 16;
|
||||
} else if (height <= BLOCK_ERA_2) {
|
||||
remaining_height = height - BLOCK_ERA_1;
|
||||
coin_existence = (16 * BLOCK_ERA_1) + 8 * remaining_height;
|
||||
currentReward = 8;
|
||||
} else if (height <= BLOCK_ERA_3) {
|
||||
remaining_height = height - BLOCK_ERA_2;
|
||||
coin_existence = (16 * BLOCK_ERA_1) + (8 * BLOCK_ERA_2) + 4 * remaining_height;
|
||||
currentReward = 4;
|
||||
} else if (height <= BLOCK_ERA_4) {
|
||||
remaining_height = height - BLOCK_ERA_3;
|
||||
coin_existence = (16 * BLOCK_ERA_1) + (8 * BLOCK_ERA_2) + (4 * BLOCK_ERA_3) + 2 * remaining_height;
|
||||
currentReward = 2;
|
||||
} else if (height <= BLOCK_ERA_5) {
|
||||
remaining_height = height - BLOCK_ERA_4;
|
||||
coin_existence = (16 * BLOCK_ERA_1) + (8 * BLOCK_ERA_2) + (4 * BLOCK_ERA_3) + (2 * BLOCK_ERA_4) +1 * remaining_height;
|
||||
currentReward = 1;
|
||||
} else {
|
||||
// After the era 6, we reduce the block rewards by half each 1460 days.
|
||||
// Minus 1 to include multiples in the same index
|
||||
// (i.e changes greater than to greater or equals to)
|
||||
|
||||
let preious_circulation = (16 * BLOCK_ERA_1) + (8 * BLOCK_ERA_2) + (4 * BLOCK_ERA_3) + (2 * BLOCK_ERA_4) + (1 * BLOCK_ERA_5);
|
||||
|
||||
let height_with_offset = height - (BLOCK_ERA_5 - 1);
|
||||
let exp = height_with_offset / BLOCK_ERA_6_ONWARDS;
|
||||
let reward_emission = BASE_REWARD_ERA_6_ONWARDS / (1 << exp);
|
||||
coin_existence = preious_circulation + reward_emission ;
|
||||
currentReward = reward_emission;
|
||||
}
|
||||
|
||||
return coin_existence;
|
||||
}
|
||||
|
||||
// function returns foundation reward
|
||||
|
||||
const circulationsupply = async(height) => {
|
||||
let first_duration = 1440 * 120;
|
||||
let year_height = 365 * 1440;
|
||||
let foundationpercentage = [8.8,7.7,6.6,5.5,4.4,3.3,2.2,1.1]
|
||||
let circulatingsuppy = 0
|
||||
if(height < first_duration) {
|
||||
let coin = await getTotalRewardByHeight(height)
|
||||
circulatingsuppy = (coin / 100) * foundationpercentage[0]
|
||||
}
|
||||
else if(height < (first_duration + year_height) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin
|
||||
}
|
||||
else if(height < (first_duration + (2 * year_height)) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(first_duration + year_height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
let thirdyear = await getTotalRewardByHeight(height)
|
||||
let thirdyearcoin = ( (thirdyear -secondyear) / 100) * foundationpercentage[2]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin + thirdyearcoin
|
||||
}
|
||||
else if(height < (first_duration + (3 * year_height)) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(first_duration + year_height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
let thirdyear = await getTotalRewardByHeight(first_duration + (2 * year_height))
|
||||
let thirdyearcoin = ( (thirdyear -secondyear) / 100) * foundationpercentage[2]
|
||||
let forthyear = await getTotalRewardByHeight(height)
|
||||
let forthyearcoin = ( (forthyear -thirdyear) / 100) * foundationpercentage[3]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin + thirdyearcoin + forthyearcoin
|
||||
}
|
||||
else if(height < (first_duration + (4 * year_height)) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(first_duration + year_height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
let thirdyear = await getTotalRewardByHeight(first_duration + (2 * year_height))
|
||||
let thirdyearcoin = ( (thirdyear -secondyear) / 100) * foundationpercentage[2]
|
||||
let forthyear = await getTotalRewardByHeight(first_duration + (3 * year_height))
|
||||
let forthyearcoin = ( (forthyear -thirdyear) / 100) * foundationpercentage[3]
|
||||
let fifthyear = await getTotalRewardByHeight(height)
|
||||
let fifthyearcoin = ( (fifthyear - forthyear) / 100) * foundationpercentage[4]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin + thirdyearcoin + forthyearcoin+fifthyearcoin
|
||||
}
|
||||
else if(height < (first_duration + (5 * year_height)) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(first_duration + year_height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
let thirdyear = await getTotalRewardByHeight(first_duration + (2 * year_height))
|
||||
let thirdyearcoin = ( (thirdyear -secondyear) / 100) * foundationpercentage[2]
|
||||
let forthyear = await getTotalRewardByHeight(first_duration + (3 * year_height))
|
||||
let forthyearcoin = ( (forthyear -thirdyear) / 100) * foundationpercentage[3]
|
||||
let fifthyear = await getTotalRewardByHeight(first_duration + (4 * year_height))
|
||||
let fifthyearcoin = ( (fifthyear - forthyear) / 100) * foundationpercentage[4]
|
||||
let sixthyear = await getTotalRewardByHeight(height)
|
||||
let sixthyearcoin = ( (sixthyear - fifthyear) / 100) * foundationpercentage[5]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin + thirdyearcoin + forthyearcoin+fifthyearcoin+sixthyearcoin
|
||||
}
|
||||
|
||||
else if(height < (first_duration + (6 * year_height)) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(first_duration + year_height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
let thirdyear = await getTotalRewardByHeight(first_duration + (2 * year_height))
|
||||
let thirdyearcoin = ( (thirdyear -secondyear) / 100) * foundationpercentage[2]
|
||||
let forthyear = await getTotalRewardByHeight(first_duration + (3 * year_height))
|
||||
let forthyearcoin = ( (forthyear -thirdyear) / 100) * foundationpercentage[3]
|
||||
let fifthyear = await getTotalRewardByHeight(first_duration + (4 * year_height))
|
||||
let fifthyearcoin = ( (fifthyear - forthyear) / 100) * foundationpercentage[4]
|
||||
let sixthyear = await getTotalRewardByHeight(first_duration + (5 * year_height))
|
||||
let sixthyearcoin = ( (sixthyear - fifthyear) / 100) * foundationpercentage[5]
|
||||
let seventhyear = await getTotalRewardByHeight(height)
|
||||
let seventhyearcoin = ( (seventhyear - sixthyear) / 100) * foundationpercentage[6]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin + thirdyearcoin + forthyearcoin+fifthyearcoin+sixthyearcoin+seventhyearcoin
|
||||
}
|
||||
|
||||
else if(height < (first_duration + (7 * year_height)) ) {
|
||||
let firstyear = await getTotalRewardByHeight(first_duration)
|
||||
let firstyearcoin = (firstyear / 100) * foundationpercentage[0]
|
||||
let secondyear = await getTotalRewardByHeight(first_duration + year_height)
|
||||
let secondyearcoin = ( (secondyear -firstyear) / 100) * foundationpercentage[1]
|
||||
let thirdyear = await getTotalRewardByHeight(first_duration + (2 * year_height))
|
||||
let thirdyearcoin = ( (thirdyear -secondyear) / 100) * foundationpercentage[2]
|
||||
let forthyear = await getTotalRewardByHeight(first_duration + (3 * year_height))
|
||||
let forthyearcoin = ( (forthyear -thirdyear) / 100) * foundationpercentage[3]
|
||||
let fifthyear = await getTotalRewardByHeight(first_duration + (4 * year_height))
|
||||
let fifthyearcoin = ( (fifthyear - forthyear) / 100) * foundationpercentage[4]
|
||||
let sixthyear = await getTotalRewardByHeight(first_duration + (5 * year_height))
|
||||
let sixthyearcoin = ( (sixthyear - fifthyear) / 100) * foundationpercentage[5]
|
||||
let seventhyear = await getTotalRewardByHeight(first_duration + (6 * year_height))
|
||||
let seventhyearcoin = ( (seventhyear - sixthyear) / 100) * foundationpercentage[6]
|
||||
let eigthyear = await getTotalRewardByHeight(height)
|
||||
let eigthyearcoin = ( (eigthyear - seventhyear) / 100) * foundationpercentage[7]
|
||||
circulatingsuppy = firstyearcoin + secondyearcoin + thirdyearcoin + forthyearcoin+fifthyearcoin+sixthyearcoin+seventhyearcoin + eigthyearcoin
|
||||
}
|
||||
return circulatingsuppy
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
const latestBlockDetails = async()=> {
|
||||
let block_height = '',
|
||||
@ -290,6 +462,12 @@ let currentReward = 16;
|
||||
cuckoohashrate = Math.round(cuckoohashrate)
|
||||
progpowhashrate = Math.round(progpowhashrate)
|
||||
randomxhashrate = Math.round(randomxhashrate)
|
||||
|
||||
// Total foundation reward
|
||||
let totalFoundationReward = await circulationsupply(height)
|
||||
console.log("------------------------------------------------------------------");
|
||||
console.log("Current foundation reward is ", totalFoundationReward)
|
||||
|
||||
return {
|
||||
block_height,
|
||||
letest_block,
|
||||
@ -311,7 +489,8 @@ let currentReward = 16;
|
||||
userReward,
|
||||
cuckoohashrate,
|
||||
progpowhashrate,
|
||||
randomxhashrate
|
||||
randomxhashrate,
|
||||
totalFoundationReward
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
<li><b><a target="_blank" href="./api?q=getdifficulty-progpow">getdifficulty-progpow</a></b>: {{'api-view.getdifficulty-progpow' | translate}}</li>
|
||||
<li><b><a target="_blank" href="./api?q=getdifficulty-cuckoo">getdifficulty-cuckoo</a></b>: {{'api-view.getdifficulty-cuckoo' | translate}}</li>
|
||||
<li><b><a target="_blank" href="./api?q=totalcoins">totalcoins</a></b>: {{'api-view.totalcoins' | translate}}</li>
|
||||
<li><b><a target="_blank" href="./api?q=maxcoins">maxcoins</a></b>: {{'api-view.maxcoins' | translate}}</li>
|
||||
<li><b><a target="_blank" href="./api?q=reward">reward</a></b>: {{'api-view.reward' | translate}}</li>
|
||||
<li><b><a target="_blank" href="./api?q=average-blocktime">average-blocktime</a></b>: {{'api-view.averageblocktime' | translate}}</li>
|
||||
</ul>
|
||||
|
Loading…
Reference in New Issue
Block a user