Browse Source

include breakdown of transaction counts by fee level on mempool info page

fix-133-memory-crash
Dan Janosik 7 years ago
parent
commit
ada2059c31
  1. 64
      app/rpcApi.js
  2. 8
      routes/baseActionsRouter.js
  3. 2
      views/layout.pug
  4. 18
      views/mempool-info.pug
  5. 87
      views/mempool.pug

64
app/rpcApi.js

@ -59,6 +59,67 @@ function getMempoolInfo() {
}); });
} }
function getMempoolStats() {
return new Promise(function(resolve, reject) {
client.cmd('getrawmempool', true, function(err, result, resHeaders) {
if (err) {
return console.log("Error 428thwre0ufg: " + err);
}
console.log("abc: " + JSON.stringify(result).substring(0, 100));
var compiledResult = {};
compiledResult.count = 0;
compiledResult.fee_0_5 = 0;
compiledResult.fee_6_10 = 0;
compiledResult.fee_11_25 = 0;
compiledResult.fee_26_50 = 0;
compiledResult.fee_51_75 = 0;
compiledResult.fee_76_100 = 0;
compiledResult.fee_101_150 = 0;
compiledResult.fee_151_max = 0;
var totalFee = 0;
for (var txid in result) {
var txMempoolInfo = result[txid];
totalFee += txMempoolInfo.modifiedfee;
var feeRate = Math.round(txMempoolInfo.modifiedfee * 100000000 / txMempoolInfo.size);
if (feeRate <= 5) {
compiledResult.fee_0_5++;
} else if (feeRate <= 10) {
compiledResult.fee_6_10++;
} else if (feeRate <= 25) {
compiledResult.fee_11_25++;
} else if (feeRate <= 50) {
compiledResult.fee_26_50++;
} else if (feeRate <= 75) {
compiledResult.fee_51_75++;
} else if (feeRate <= 100) {
compiledResult.fee_76_100++;
} else if (feeRate <= 150) {
compiledResult.fee_101_150++;
} else {
compiledResult.fee_151_max++;
}
compiledResult.count++;
}
compiledResult.totalFee = totalFee;
resolve(compiledResult);
});
});
}
function getBlockByHeight(blockHeight) { function getBlockByHeight(blockHeight) {
console.log("getBlockByHeight: " + blockHeight); console.log("getBlockByHeight: " + blockHeight);
@ -310,5 +371,6 @@ module.exports = {
getTransactionInputs: getTransactionInputs, getTransactionInputs: getTransactionInputs,
getBlockData: getBlockData, getBlockData: getBlockData,
getRawTransaction: getRawTransaction, getRawTransaction: getRawTransaction,
getRawTransactions: getRawTransactions getRawTransactions: getRawTransactions,
getMempoolStats: getMempoolStats
}; };

8
routes/baseActionsRouter.js

@ -58,13 +58,17 @@ router.get("/node-info", function(req, res) {
}); });
}); });
router.get("/mempool-info", function(req, res) { router.get("/mempool", function(req, res) {
var client = global.client; var client = global.client;
rpcApi.getMempoolInfo().then(function(getmempoolinfo) { rpcApi.getMempoolInfo().then(function(getmempoolinfo) {
res.locals.getmempoolinfo = getmempoolinfo; res.locals.getmempoolinfo = getmempoolinfo;
res.render("mempool-info"); rpcApi.getMempoolStats().then(function(mempoolstats) {
res.locals.mempoolstats = mempoolstats;
res.render("mempool");
});
}); });
}); });

2
views/layout.pug

@ -41,7 +41,7 @@ html
div(class="container") div(class="container")
a(href="/") Home a(href="/") Home
a(href="/node-info") Node Info a(href="/node-info") Node Info
a(href="/mempool-info") Mempool Info a(href="/mempool") Mempool Info

18
views/mempool-info.pug

@ -1,18 +0,0 @@
extends layout
block headContent
title Mempool Info
block content
ol(class="breadcrumb")
li(class="breadcrumb-item")
a(href="/")
strong #{host}
span :#{port}
li(class="breadcrumb-item active")
a(href="/mempool-info") Mempool Info
h1 Mempool Info
hr
include includes/getmempoolinfo-table.pug

87
views/mempool.pug

@ -0,0 +1,87 @@
extends layout
block headContent
title Mempool Info
block content
ol(class="breadcrumb")
li(class="breadcrumb-item")
a(href="/")
strong #{host}
span :#{port}
li(class="breadcrumb-item active")
a(href="/mempool-info") Mempool Info
h1 Mempool Info
hr
table(class="table")
tr
th(class="table-active properties-header") Transaction Count
td #{getmempoolinfo.size.toLocaleString()}
tr
- var scales = [ {val:1000000000, name:"GB"}, {val:1000000, name:"MB"}, {val:1000, name:"kB"} ];
- var scaleDone = false;
th(class="table-active properties-header") Size
td
span #{getmempoolinfo.bytes.toLocaleString()} bytes
each item in scales
if (!scaleDone)
- var fraction = Math.floor(getmempoolinfo.bytes / item.val);
if (fraction >= 1)
- scaleDone = true;
span(class="text-muted") (#{fraction} #{item.name})
tr
- var scales = [ {val:1000000000, name:"GB"}, {val:1000000, name:"MB"}, {val:1000, name:"kB"} ];
- var scaleDone = false;
th(class="table-active properties-header") Size
td
span #{getmempoolinfo.usage.toLocaleString()} bytes
each item in scales
if (!scaleDone)
- var fraction = Math.floor(getmempoolinfo.usage / item.val);
if (fraction >= 1)
- scaleDone = true;
span(class="text-muted") (#{fraction} #{item.name})
tr
th(class="table-active properties-header") Max Size
td #{getmempoolinfo.maxmempool.toLocaleString()}
tr
th(class="table-active properties-header") Min Fee
td #{getmempoolinfo.mempoolminfee.toLocaleString()}
tr
th(class="table-active properties-header") Total Fees
td #{mempoolstats.totalFee.toLocaleString()}
h4 Transaction count by fee level
hr
if (false)
#{JSON.stringify(mempoolstats)}
table(class="table")
tr
th(class="table-active properties-header") 0 - 5 sat/B
td #{mempoolstats.fee_0_5.toLocaleString()}
tr
th(class="table-active properties-header") 6 - 10 sat/B
td #{mempoolstats.fee_6_10.toLocaleString()}
tr
th(class="table-active properties-header") 11 - 25 sat/B
td #{mempoolstats.fee_11_25.toLocaleString()}
tr
th(class="table-active properties-header") 26 - 50 sat/B
td #{mempoolstats.fee_26_50.toLocaleString()}
tr
th(class="table-active properties-header") 51 - 75 sat/B
td #{mempoolstats.fee_51_75.toLocaleString()}
tr
th(class="table-active properties-header") 76 - 100 sat/B
td #{mempoolstats.fee_76_100.toLocaleString()}
tr
th(class="table-active properties-header") 101 - 150 sat/B
td #{mempoolstats.fee_101_150.toLocaleString()}
tr
th(class="table-active properties-header") 151+ sat/B
td #{mempoolstats.fee_151_max.toLocaleString()}
Loading…
Cancel
Save