coin supply: show projected value

gh-pages
stoffu 5 years ago
parent ab745bf8f3
commit 89e23f7870
No known key found for this signature in database
GPG Key ID: 41DAB8343A9EC012

@ -27,6 +27,7 @@
<script src="data/aeon-data-9.js"></script>
<script src="data/aeon-data-10.js"></script>
<script src="js/block-reward.js"></script>
<script src="aeon-config.js"></script>
<!-- Chart code -->
<script>
@ -42,7 +43,7 @@ var chart = get_chart([].concat(
chartData_8,
chartData_9,
chartData_10,
), 12);
), aeon_config);
function togglePan() {
chart.chartCursor.pan = document.getElementById("pan").checked;

@ -28,6 +28,7 @@
<script src="data/aeon-data-9.js"></script>
<script src="data/aeon-data-10.js"></script>
<script src="js/coin-supply.js"></script>
<script src="aeon-config.js"></script>
<!-- Chart code -->
<script>
@ -43,7 +44,12 @@ var chart = get_chart([].concat(
chartData_8,
chartData_9,
chartData_10,
), 12);
), aeon_config);
function toggleProj() {
chart.graphs[1].hidden = !document.getElementById("proj").checked;
chart.validateNow();
}
function togglePan() {
chart.chartCursor.pan = document.getElementById("pan").checked;
@ -54,6 +60,7 @@ function togglePan() {
<body>
<h1>Aeon coin supply</h1>
<div id="chartdiv"></div>
<p><input type="checkbox" id="proj" onclick="toggleProj()">Show projected supply</p>
<p><input type="checkbox" id="pan" onclick="togglePan()">Enable panning</p>
<p><a href="./">Back to top</a></p>
</body>

@ -0,0 +1,27 @@
function int_log2(x)
{
var r = 0;
while (true)
{
x >>= 1;
if (x == 0)
break;
++r;
}
return r;
}
var aeon_config = {
MONEY_SUPPLY: "18446744073709551615", // (uint64_t)(-1)
EMISSION_SPEED_FACTOR_PER_MINUTE: 20,
FINAL_SUBSIDY_PER_MINUTE: 300000000000, // 3 * pow(10, 11)
CRYPTONOTE_DISPLAY_DECIMAL_POINT: 12,
DIFFICULTY_TARGET_V2: 240,
DIFFICULTY_TARGET_V1: 60,
get_difficulty_target: function(height) {
return height < 592000 ? this.DIFFICULTY_TARGET_V1 : this.DIFFICULTY_TARGET_V2;
},
get_emission_speed_factor: function(target_minutes) {
return this.EMISSION_SPEED_FACTOR_PER_MINUTE - int_log2(target_minutes);
},
};

@ -27,13 +27,10 @@
<script src="data/aeon-data-9.js"></script>
<script src="data/aeon-data-10.js"></script>
<script src="js/diff.js"></script>
<script src="aeon-config.js"></script>
<!-- Chart code -->
<script>
var diff_targets = [
{ height: 0, value: 60},
{ height: 592000, value: 240},
];
var chart = get_chart([].concat(
chartData_0,
chartData_1,
@ -46,7 +43,7 @@ var chart = get_chart([].concat(
chartData_8,
chartData_9,
chartData_10,
), diff_targets);
), aeon_config);
function toggleLogScale() {
chart.valueAxes[0].logarithmic = document.getElementById("log_scale").checked;

@ -1,10 +1,10 @@
function get_chart(chartData, decimal_point) {
function get_chart(chartData, cryptonote_config) {
chartData.shift();
for (var i = 0; i < chartData.length; ++i) {
chartData[i].date = new Date(1000 * chartData[i][0]);
chartData[i].height = i + 1;
chartData[i].reward = print_money(chartData[i][3], decimal_point);
chartData[i].reward = print_money(chartData[i][3], cryptonote_config.CRYPTONOTE_DISPLAY_DECIMAL_POINT);
}
var chart = AmCharts.makeChart("chartdiv", {

@ -1,14 +1,27 @@
function get_chart(chartData, decimal_point) {
function get_chart(chartData, cryptonote_config) {
for (var i = 0; i < chartData.length; ++i) {
chartData[i].date = new Date(1000 * chartData[i][0]);
chartData[i].height = i;
chartData[i].coin_supply = bigInt(chartData[i][3]);
for (var j = 0; j < chartData[i][5].length; ++j)
chartData[i].coin_supply = chartData[i].coin_supply.minus(chartData[i][5][j][4]);
chartData[i].coin_supply = chartData[i].coin_supply.minus(chartData[i][5][j][4]); // subtract fees
if (i > 0)
chartData[i].coin_supply = chartData[i].coin_supply.plus(chartData[i - 1].coin_supply);
chartData[i].coin_supply_str = print_money(chartData[i].coin_supply, decimal_point);
chartData[i].coin_supply_real = chartData[i].coin_supply.toJSNumber() / Math.pow(10, decimal_point);
chartData[i].coin_supply_str = print_money(chartData[i].coin_supply, cryptonote_config.CRYPTONOTE_DISPLAY_DECIMAL_POINT);
chartData[i].coin_supply_real = chartData[i].coin_supply.toJSNumber() / Math.pow(10, cryptonote_config.CRYPTONOTE_DISPLAY_DECIMAL_POINT);
// projected supply
var target = cryptonote_config.get_difficulty_target(i);
var target_minutes = target / 60;
var emission_speed_factor = cryptonote_config.get_emission_speed_factor(target_minutes);
var already_generated_coins = i == 0 ? bigInt(0) : chartData[i - 1].coin_supply_proj;
var base_reward = bigInt(cryptonote_config.MONEY_SUPPLY).minus(already_generated_coins).shiftRight(emission_speed_factor);
if (base_reward.lesser(cryptonote_config.FINAL_SUBSIDY_PER_MINUTE * target_minutes))
{
base_reward = bigInt(cryptonote_config.FINAL_SUBSIDY_PER_MINUTE * target_minutes);
}
chartData[i].coin_supply_proj = base_reward.plus(already_generated_coins);
chartData[i].coin_supply_proj_str = print_money(chartData[i].coin_supply_proj, cryptonote_config.CRYPTONOTE_DISPLAY_DECIMAL_POINT);
chartData[i].coin_supply_proj_real = chartData[i].coin_supply_proj.toJSNumber() / Math.pow(10, cryptonote_config.CRYPTONOTE_DISPLAY_DECIMAL_POINT);
}
chartData.shift();
@ -27,7 +40,7 @@ function get_chart(chartData, decimal_point) {
"graphs": [{
"id": "g1",
"lineColor": "#cc9900",
"balloonText": "Supply: <b>[[coin_supply_str]]</b>\nHeight: <b>[[height]]</b>",
"balloonText": "Supply: <b>[[coin_supply_str]]</b>\n(Proj: [[coin_supply_proj_str]])\nHeight: <b>[[height]]</b>",
"bullet": "round",
"bulletBorderAlpha": 1,
"bulletColor": "#FFFFFF",
@ -38,6 +51,18 @@ function get_chart(chartData, decimal_point) {
"balloon":{
"cornerRadius": 10,
}
},{
"id": "g2",
"lineColor": "#447700",
"bullet": "round",
"bulletBorderAlpha": 1,
"bulletColor": "#FFFFFF",
"hideBulletsCount": 50,
"title": "projected coin supply",
"valueField": "coin_supply_proj_real",
"useLineColorForBulletBorder": true,
"showBalloon": false,
"hidden": true,
}],
"chartScrollbar": {
"autoGridCount": true,

@ -1,19 +1,11 @@
function get_diff_target(diff_targets, height) {
for (var i = diff_targets.length - 1; i >= 0; --i) {
if (diff_targets[i].height <= height)
return diff_targets[i].value;
}
return 0;
}
function get_chart(chartData, diff_targets) {
function get_chart(chartData, cryptonote_config) {
chartData.shift();
for (var i = 0; i < chartData.length; ++i) {
chartData[i].date = new Date(1000 * chartData[i][0]);
chartData[i].height = i + 1;
chartData[i].difficulty = chartData[i][2];
chartData[i].hashrate = formatHashrate(chartData[i].difficulty / get_diff_target(diff_targets, chartData[i].height), 2);
chartData[i].hashrate = formatHashrate(chartData[i].difficulty / cryptonote_config.get_difficulty_target(chartData[i].height), 2);
}
var chart = AmCharts.makeChart("chartdiv", {

@ -35,6 +35,7 @@
<script src="data/monero-data-17.js"></script>
<script src="data/monero-data-18.js"></script>
<script src="js/block-reward.js"></script>
<script src="monero-config.js"></script>
<!-- Chart code -->
<script>
@ -58,7 +59,7 @@ var chart = get_chart([].concat(
chartData_16,
chartData_17,
chartData_18,
), 12);
), monero_config);
function togglePan() {
chart.chartCursor.pan = document.getElementById("pan").checked;

@ -36,6 +36,7 @@
<script src="data/monero-data-17.js"></script>
<script src="data/monero-data-18.js"></script>
<script src="js/coin-supply.js"></script>
<script src="monero-config.js"></script>
<!-- Chart code -->
<script>
@ -59,7 +60,12 @@ var chart = get_chart([].concat(
chartData_16,
chartData_17,
chartData_18,
), 12);
), monero_config);
function toggleProj() {
chart.graphs[1].hidden = !document.getElementById("proj").checked;
chart.validateNow();
}
function togglePan() {
chart.chartCursor.pan = document.getElementById("pan").checked;
@ -70,6 +76,7 @@ function togglePan() {
<body>
<h1>Monero coin supply</h1>
<div id="chartdiv"></div>
<p><input type="checkbox" id="proj" onclick="toggleProj()">Show projected supply</p>
<p><input type="checkbox" id="pan" onclick="togglePan()">Enable panning</p>
<p><a href="./">Back to top</a></p>
</body>

@ -0,0 +1,14 @@
var monero_config = {
MONEY_SUPPLY: "18446744073709551615", // (uint64_t)(-1)
EMISSION_SPEED_FACTOR_PER_MINUTE: 20,
FINAL_SUBSIDY_PER_MINUTE: 300000000000, // 3 * pow(10, 11)
CRYPTONOTE_DISPLAY_DECIMAL_POINT: 12,
DIFFICULTY_TARGET_V2: 120,
DIFFICULTY_TARGET_V1: 60,
get_difficulty_target: function(height) {
return height < 1009827 ? this.DIFFICULTY_TARGET_V1 : this.DIFFICULTY_TARGET_V2;
},
get_emission_speed_factor: function(target_minutes) {
return this.EMISSION_SPEED_FACTOR_PER_MINUTE - (target_minutes - 1);
},
};

@ -35,13 +35,10 @@
<script src="data/monero-data-17.js"></script>
<script src="data/monero-data-18.js"></script>
<script src="js/diff.js"></script>
<script src="monero-config.js"></script>
<!-- Chart code -->
<script>
var diff_targets = [
{ height: 0, value: 60},
{ height: 1009827, value: 120},
];
var chart = get_chart([].concat(
chartData_0,
chartData_1,
@ -62,7 +59,7 @@ var chart = get_chart([].concat(
chartData_16,
chartData_17,
chartData_18,
), diff_targets);
), monero_config);
function toggleLogScale() {
chart.valueAxes[0].logarithmic = document.getElementById("log_scale").checked;

@ -17,10 +17,11 @@
<script src="js/util.js"></script>
<script src="data/wownero-data-0.js"></script>
<script src="js/block-reward.js"></script>
<script src="wownero-config.js"></script>
<!-- Chart code -->
<script>
var chart = get_chart(chartData_0, 11);
var chart = get_chart(chartData_0, wownero_config);
function togglePan() {
chart.chartCursor.pan = document.getElementById("pan").checked;

@ -18,10 +18,16 @@
<script src="js/util.js"></script>
<script src="data/wownero-data-0.js"></script>
<script src="js/coin-supply.js"></script>
<script src="wownero-config.js"></script>
<!-- Chart code -->
<script>
var chart = get_chart(chartData_0, 11);
var chart = get_chart(chartData_0, wownero_config);
function toggleProj() {
chart.graphs[1].hidden = !document.getElementById("proj").checked;
chart.validateNow();
}
function togglePan() {
chart.chartCursor.pan = document.getElementById("pan").checked;
@ -32,6 +38,7 @@ function togglePan() {
<body>
<h1>Wownero coin supply</h1>
<div id="chartdiv"></div>
<p><input type="checkbox" id="proj" onclick="toggleProj()">Show projected supply</p>
<p><input type="checkbox" id="pan" onclick="togglePan()">Enable panning</p>
<p><a href="./">Back to top</a></p>
</body>

@ -0,0 +1,14 @@
var wownero_config = {
MONEY_SUPPLY: "18446744073709551615", // (uint64_t)(-1)
EMISSION_SPEED_FACTOR_PER_MINUTE: 24,
FINAL_SUBSIDY_PER_MINUTE: 0,
CRYPTONOTE_DISPLAY_DECIMAL_POINT: 11,
DIFFICULTY_TARGET_V2: 300,
DIFFICULTY_TARGET_V1: 300,
get_difficulty_target: function(height) {
return this.DIFFICULTY_TARGET_V1;
},
get_emission_speed_factor: function(target_minutes) {
return this.EMISSION_SPEED_FACTOR_PER_MINUTE - (target_minutes - 1);
},
};

@ -17,13 +17,11 @@
<script src="js/util.js"></script>
<script src="data/wownero-data-0.js"></script>
<script src="js/diff.js"></script>
<script src="wownero-config.js"></script>
<!-- Chart code -->
<script>
var diff_targets = [
{ height: 0, value: 300},
];
var chart = get_chart(chartData_0, diff_targets);
var chart = get_chart(chartData_0, wownero_config);
function toggleLogScale() {
chart.valueAxes[0].logarithmic = document.getElementById("log_scale").checked;

Loading…
Cancel
Save