JSFiddle - React, Tailwind, and code Playground
JavaScript
var relaysToTokensMultiplier = 1;
var validatorStakeFloorMultiplier = 15000;
var servicerStakeWeightCeiling = 60000
var unconsolidatedNodes = [{
entity: 'A',
stake: 15000
}, {
entity: 'A',
stake: 15000
}, {
entity: 'A',
stake: 15000
},
{
entity: 'B',
stake: 15000
}, {
entity: 'B',
stake: 15000
}, {
entity: 'B',
stake: 15000
},
{
entity: 'B',
stake: 15000
}, {
entity: 'B',
stake: 15000
}, {
entity: 'B',
stake: 15000
},
{
entity: 'B',
stake: 15000
}, {
entity: 'B',
stake: 15000
}, {
entity: 'B',
stake: 15000
},{
entity: 'B',
stake: 15000
},
{
entity: 'C',
stake: 15000
},
{
entity: 'D',
stake: 15000
}, {
entity: 'D',
stake: 15000
}, {
entity: 'D',
stake: 15000
},
{
entity: 'D',
stake: 15000
}, {
entity: 'D',
stake: 15000
}, {
entity: 'D',
stake: 15000
}
];
var consolidatedNodes = [{
entity: 'A',
stake: 45000
}, {
entity: 'B',
stake: 60000
}, {
entity: 'B',
stake: 60000
},
{
entity: 'B',
stake: 30000
},
{
entity: 'C',
stake: 15000
}, {
entity: 'D',
stake: 45000
},
{
entity: 'D',
stake: 45000
}
];
//MAGIC FUNCTION. EXPAND A LIST OF CONSOLIDATED NODES INTO
//AN EQUIVALENT LIST OF UNCONSOLIDATED NODES.
function computeSelectionArray(nodeList)
{
var result=[];
nodeList.forEach(node=>
{
var slots = Math.min(servicerStakeWeightCeiling, node.stake)/validatorStakeFloorMultiplier;
for (i=0;i<slots;i++) result.push({entity: node.entity});
});
return result;
}
function calculateRewardsCurrent(relays) {
var coins = relaysToTokensMultiplier * relays;
return coins;
}
var relaysPerNode = 100;
var totalRelays = 100000;
//SIMULATE PROCESSING 100 RELAYS THROUGH EACH NODE IN THE LIST
function simulateRelays(nodeList)
{
var i = 0;
var rewards = {};
...