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")
|
else if(option == "getdifficulty-progpow")
|
||||||
result = Number(blockDetails.TotalDifficultyProgpow);
|
result = Number(blockDetails.TotalDifficultyProgpow);
|
||||||
else if(option == "totalcoins")
|
else if(option == "totalcoins")
|
||||||
result = 21000000 * 100000000;
|
result = blockDetails.coin_existence;
|
||||||
else if(option == "maxcoins")
|
else if(option == "maxcoins")
|
||||||
result = 21000000;
|
result = 21000000;
|
||||||
else if(option == "average-blocktime")
|
else if(option == "average-blocktime")
|
||||||
@ -342,9 +342,9 @@ console.log(__dirname);
|
|||||||
console.log(`Node Express server listening on http://localhost:${PORT}`);
|
console.log(`Node Express server listening on http://localhost:${PORT}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
cron.schedule('*/30 * * * * *', () => {
|
// cron.schedule('*/30 * * * * *', () => {
|
||||||
universalGetLatestBlockDetails('Testnet');
|
// universalGetLatestBlockDetails('Testnet');
|
||||||
});
|
// });
|
||||||
var interval;
|
var interval;
|
||||||
const io = require("socket.io").listen(server);
|
const io = require("socket.io").listen(server);
|
||||||
io.sockets.on("connection", socket => {
|
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'
|
let key = process.env.REDIS_KEY + socket.handshake.query.network + 'Latest_Block_details'
|
||||||
interval = setInterval(function() {
|
interval = setInterval(function() {
|
||||||
Global.client.get(key, function(err, reply){
|
Global.client.get(key, function(err, reply){
|
||||||
socket.emit("latestblockdetail", JSON.parse(reply) );
|
// socket.emit("latestblockdetail", JSON.parse(reply) );
|
||||||
});
|
});
|
||||||
},10000);
|
},10000);
|
||||||
//socket.on("disconnect", () => console.log("Client disconnected"));
|
//socket.on("disconnect", () => console.log("Client disconnected"));
|
||||||
|
@ -89,6 +89,7 @@
|
|||||||
},
|
},
|
||||||
"api-view": {
|
"api-view": {
|
||||||
"query-api" : "Abfrage-API",
|
"query-api" : "Abfrage-API",
|
||||||
|
"maxcoins" : "Maximale Versorgung zurückgeben",
|
||||||
"query-api-line1" : "Die aufzurufende API-Funktion wird über den Parameter q angegeben.",
|
"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 ",
|
"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",
|
"circulating" : "Gibt die Anzahl der umlaufenden Münzen zurück",
|
||||||
|
@ -89,6 +89,7 @@
|
|||||||
},
|
},
|
||||||
"api-view": {
|
"api-view": {
|
||||||
"query-api" : "Query API",
|
"query-api" : "Query API",
|
||||||
|
"maxcoins" : "Return maximum supply",
|
||||||
"query-api-line1" : "The API function to call is specified through the q parameter.",
|
"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 ",
|
"query-api-line2" : "For instance you can ask the totalcoins of epic cash with ",
|
||||||
"circulating" : "returns the number of circulating coins",
|
"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()=> {
|
const latestBlockDetails = async()=> {
|
||||||
let block_height = '',
|
let block_height = '',
|
||||||
@ -290,6 +462,12 @@ let currentReward = 16;
|
|||||||
cuckoohashrate = Math.round(cuckoohashrate)
|
cuckoohashrate = Math.round(cuckoohashrate)
|
||||||
progpowhashrate = Math.round(progpowhashrate)
|
progpowhashrate = Math.round(progpowhashrate)
|
||||||
randomxhashrate = Math.round(randomxhashrate)
|
randomxhashrate = Math.round(randomxhashrate)
|
||||||
|
|
||||||
|
// Total foundation reward
|
||||||
|
let totalFoundationReward = await circulationsupply(height)
|
||||||
|
console.log("------------------------------------------------------------------");
|
||||||
|
console.log("Current foundation reward is ", totalFoundationReward)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
block_height,
|
block_height,
|
||||||
letest_block,
|
letest_block,
|
||||||
@ -311,7 +489,8 @@ let currentReward = 16;
|
|||||||
userReward,
|
userReward,
|
||||||
cuckoohashrate,
|
cuckoohashrate,
|
||||||
progpowhashrate,
|
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-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=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=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=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>
|
<li><b><a target="_blank" href="./api?q=average-blocktime">average-blocktime</a></b>: {{'api-view.averageblocktime' | translate}}</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
Loading…
Reference in New Issue
Block a user