tx-per-day: more detailed stat on tx size (data format upgraded)

pull/4/head
stoffu 5 years ago
parent f80548a08a
commit 853acd269f
No known key found for this signature in database
GPG Key ID: 41DAB8343A9EC012

@ -93,9 +93,10 @@ class GetData():
outs_total += tx['vout'][k]['amount'] outs_total += tx['vout'][k]['amount']
fee = tx['rct_signatures']['txnFee'] if (tx['version'] & 0xff) > 1 else ins_total - outs_total fee = tx['rct_signatures']['txnFee'] if (tx['version'] & 0xff) > 1 else ins_total - outs_total
extra_size = len(tx['extra']) extra_size = len(tx['extra'])
tx_size = len(res_txs['txs'][j]['as_hex']) / 2
if j > 0: if j > 0:
txs_str += ',' txs_str += ','
txs_str += "[%d,%d,%d,%d,%d,%d,%d]" % (unlock_time, ins, outs, ring_size, fee, extra_size, ins_total) txs_str += "[%d,%d,%d,%d,%d,%d,%d,%d]" % (unlock_time, ins, outs, ring_size, fee, extra_size, ins_total, tx_size)
print('[%d,%d,%d,%d,%d,%d,[%s]],' % (timestamp, nonce, difficulty, reward, block_size, blob_size, txs_str)) print('[%d,%d,%d,%d,%d,%d,[%s]],' % (timestamp, nonce, difficulty, reward, block_size, blob_size, txs_str))
print(']') print(']')

@ -13,21 +13,42 @@ function get_chart(chartData, cryptonote_config, offset) {
block_date = block_date_new; block_date = block_date_new;
chartData_tpd.push({ chartData_tpd.push({
"date": block_date, "date": block_date,
"num_txes": 0, "tx_sizes": [],
"tx_size_sum": 0,
}); });
} }
var blk_size = chartData[i][4];
var blk_blob_size = chartData[i][5];
var num_txes = chartData[i][6].length; var num_txes = chartData[i][6].length;
var height = i + (offset === undefined ? 1 : offset.height); for (var j = 0; j < num_txes; ++j) {
var miner_tx_size = blk_blob_size - cryptonote_config.get_blockheader_size(height) - num_txes * 32 - 1; var tx_size = chartData[i][6][j][7]
chartData_tpd[chartData_tpd.length - 1].num_txes += num_txes; chartData_tpd[chartData_tpd.length - 1].tx_sizes.push(tx_size);
chartData_tpd[chartData_tpd.length - 1].tx_size_sum += blk_size - miner_tx_size; }
} }
for (var i = 0; i < chartData_tpd.length; ++i) { for (var i = 0; i < chartData_tpd.length; ++i) {
chartData_tpd[i].tx_size = chartData_tpd[i].num_txes === 0 ? 1 : (chartData_tpd[i].tx_size_sum / chartData_tpd[i].num_txes); var tpd = chartData_tpd[i];
chartData_tpd[i].tx_size_str = formatBytes(chartData_tpd[i].tx_size, 3); tpd.num_txes = tpd.tx_sizes.length;
tpd.tx_size_avg = 0;
tpd.tx_size_max = 0;
tpd.tx_size_min = 100000;
tpd.tx_size_var = 0;
for (var j = 0; j < tpd.num_txes; ++j) {
var tx_size = tpd.tx_sizes[j];
tpd.tx_size_avg += tx_size;
tpd.tx_size_max = Math.max(tpd.tx_size_max, tx_size);
tpd.tx_size_min = Math.min(tpd.tx_size_min, tx_size);
}
if (tpd.num_txes > 0)
tpd.tx_size_avg /= tpd.num_txes;
for (var j = 0; j < tpd.num_txes; ++j) {
var tx_size = tpd.tx_sizes[j];
var d = tx_size - tpd.tx_size_avg;
tpd.tx_size_var += d * d;
}
if (tpd.num_txes > 0)
tpd.tx_size_var /= tpd.num_txes;
tpd.tx_size_stddev = Math.sqrt(tpd.tx_size_var);
tpd.tx_size_avg_str = formatBytes(tpd.tx_size_avg, 3);
tpd.tx_size_max_str = formatBytes(tpd.tx_size_max, 3);
tpd.tx_size_min_str = formatBytes(tpd.tx_size_min, 3);
tpd.tx_size_stddev_str = formatBytes(tpd.tx_size_stddev, 3);
} }
var chart = AmCharts.makeChart("chartdiv", { var chart = AmCharts.makeChart("chartdiv", {
@ -77,22 +98,54 @@ function get_chart(chartData, cryptonote_config, offset) {
"cornerRadius": 10, "cornerRadius": 10,
} }
},{ },{
"id": "g_size", "id": "g_size_avg",
"valueAxis": "va_size", "valueAxis": "va_size",
"lineColor": "#22b681", "lineColor": "#22b681",
"lineThickness": 1, "lineThickness": 1,
"showBalloon" : true, "showBalloon" : true,
"balloonText": "Size: [[tx_size_str]]", "balloonText":
"Size: [[tx_size_avg_str]]<br/>" +
"Max: [[tx_size_max_str]]<br/>" +
"Min: [[tx_size_min_str]]<br/>" +
"StdDev: [[tx_size_stddev_str]]",
"bullet": "round", "bullet": "round",
"bulletBorderAlpha": 1, "bulletBorderAlpha": 1,
"bulletColor": "#FFFFFF", "bulletColor": "#FFFFFF",
"hideBulletsCount": 50, "hideBulletsCount": 50,
"title": "size", "title": "size",
"valueField": "tx_size", "valueField": "tx_size_avg",
"useLineColorForBulletBorder": true, "useLineColorForBulletBorder": true,
"balloon":{ "balloon":{
"cornerRadius": 10, "cornerRadius": 10,
} }
},{
"id": "g_size_max",
"valueAxis": "va_size",
"type": "step",
"lineColor": "#28d79a",
"lineAlpha": 0.5,
"showBalloon" : false,
"bullet": "round",
"bulletBorderAlpha": 1,
"bulletColor": "#FFFFFF",
"hideBulletsCount": 50,
"title": "Max",
"valueField": "tx_size_max",
"useLineColorForBulletBorder": true,
},{
"id": "g_size_min",
"valueAxis": "va_size",
"type": "step",
"lineColor": "#18815c",
"lineAlpha": 0.5,
"showBalloon" : false,
"bullet": "round",
"bulletBorderAlpha": 1,
"bulletColor": "#FFFFFF",
"hideBulletsCount": 50,
"title": "Min",
"valueField": "tx_size_min",
"useLineColorForBulletBorder": true,
}], }],
"chartScrollbar": { "chartScrollbar": {
"autoGridCount": true, "autoGridCount": true,

@ -83,7 +83,7 @@ class Daemon(object):
gettransactions = { gettransactions = {
'txs_hashes': tx_hashes, 'txs_hashes': tx_hashes,
'decode_as_json': True, 'decode_as_json': True,
'prune': True 'prune': False
} }
return self.rpc.send_request('/gettransactions', gettransactions) return self.rpc.send_request('/gettransactions', gettransactions)

Loading…
Cancel
Save