From 86df635f0aff80596685ff7dd26f900122ed27d4 Mon Sep 17 00:00:00 2001 From: Tri Nguyen Date: Wed, 11 May 2022 21:13:22 -0700 Subject: [PATCH 1/2] update rtm pools --- public/txt/mining-pools-configs/RTM/0.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/public/txt/mining-pools-configs/RTM/0.json b/public/txt/mining-pools-configs/RTM/0.json index b11bbb952..86f971094 100644 --- a/public/txt/mining-pools-configs/RTM/0.json +++ b/public/txt/mining-pools-configs/RTM/0.json @@ -159,6 +159,10 @@ "RUveYpGXR24ZEjtynvgP78jC2dzLqMbWNc" : { "name" : "Mining Madness", "link" : "https://miningmadness.com/" + }, + "RGY1sRzhW7bpoYV7ynCcqsufgApSE7xS7r" : { + "name" : "raptoreum.zone", + "link" : "https://raptoreum.zone/" } }, From a9f3eb9c0208a92c0b898e916a7df5c4b6cbcfb2 Mon Sep 17 00:00:00 2001 From: Tri Nguyen Date: Mon, 23 May 2022 00:54:26 -0700 Subject: [PATCH 2/2] improve rpc calls and cache handling --- app/api/rpcApi.js | 90 ++++++++++++++++++++++++++++--------- app/cache.js | 1 - routes/baseActionsRouter.js | 6 ++- views/transaction.pug | 4 +- 4 files changed, 75 insertions(+), 26 deletions(-) diff --git a/app/api/rpcApi.js b/app/api/rpcApi.js index 0980640b5..a2fa3c50e 100644 --- a/app/api/rpcApi.js +++ b/app/api/rpcApi.js @@ -414,7 +414,6 @@ function getRawTransaction(txid) { getBlockchainInfo().then(function(blockchainInfoResult) { var result = coins[config.coin].genesisCoinbaseTransaction; result.confirmations = blockchainInfoResult.blocks; - resolve(result); }).catch(function(err) { @@ -428,7 +427,6 @@ function getRawTransaction(txid) { return; } - resolve(result); }).catch(function(err) { @@ -599,10 +597,10 @@ function getRawTransactions(txids) { var rawResults = await getBatchRpcData(rawRequests); result.push(...rawResults); } + resolve(result); } catch(err) { reject(err); }; - resolve(result); }) } @@ -814,8 +812,10 @@ function lookForTransactions(transactionRequests, addresses) { function getRpcMethodHelp(methodName) { return getRpcDataWithParams({method:"help", parameters:[methodName]}); + } + function getRpcData(cmd) { return new Promise(function(resolve, reject) { debugLog(`RPC: ${cmd}`); @@ -844,6 +844,41 @@ function getRpcData(cmd) { }); } +function batchRpcCommand(requests, callback, resolve, reject, retry = 2) { + global.rpcClient.command(requests, function(err, result, resHeaders) { + if (err != null) { + if(retry <= 1) { + utils.logError("38eh39hdee", err, {result:result, headers:resHeaders}); + reject(err); + callback(); + } else { + setTimeout(() => { + retry--; + batchRpcCommand(requests, callback, resolve, reject, retry); + }, 10); + } + return; + } + for(var r of result) { + if(r == null || r.code && r.code < 0) { + if(retry <= 1) { + reject(r); + callback(); + } else { + setTimeout(() => { + retry--; + batchRpcCommand(requests, callback, resolve, reject, retry); + }, 10); + } + return; + } + } + resolve(result); + + callback(); + }); +} + function getBatchRpcData(requests) { return new Promise(function(resolve, reject) { debugLog(`RPC: ${JSON.stringify(requests)}`); @@ -852,14 +887,17 @@ function getBatchRpcData(requests) { global.rpcClient.command(requests, function(err, result, resHeaders) { if (err != null) { utils.logError("38eh39hdee", err, {result:result, headers:resHeaders}); - reject(err); - callback(); - return; } - + for(var r of result) { + if(r == null || r.code && r.code < 0) { + reject(r); + callback(); + return; + } + } resolve(result); callback(); @@ -870,26 +908,34 @@ function getBatchRpcData(requests) { }); } +function singeRpcCommand(request, callback, resolve, reject, retry = 2) { + global.rpcClient.command([request], function(err, result, resHeaders) { + if (err != null) { + utils.logError("38eh39hdee", err, {result:result, headers:resHeaders}); + if(retry <= 1) { + reject(err); + callback(); + } else { + setTimeout(() => { + retry--; + singeRpcCommand(request, callback, resolve, reject, retry); + }, 10); + } + return; + } + + resolve(result[0]); + + callback(); + }); +} + function getRpcDataWithParams(request) { return new Promise(function(resolve, reject) { debugLog(`RPC: ${JSON.stringify(request)}`); rpcCall = function(callback) { - global.rpcClient.command([request], function(err, result, resHeaders) { - if (err != null) { - utils.logError("38eh39hdee", err, {result:result, headers:resHeaders}); - - reject(err); - - callback(); - - return; - } - - resolve(result[0]); - - callback(); - }); + singeRpcCommand(request, callback, resolve, reject); }; rpcQueue.push({rpcCall:rpcCall}); diff --git a/app/cache.js b/app/cache.js index 9eab43390..4162da4df 100644 --- a/app/cache.js +++ b/app/cache.js @@ -33,7 +33,6 @@ class Cache { resolve(result); }).catch(function(err) { - console.log(err); reject(err); }); }; diff --git a/routes/baseActionsRouter.js b/routes/baseActionsRouter.js index 49171537c..92aa785aa 100644 --- a/routes/baseActionsRouter.js +++ b/routes/baseActionsRouter.js @@ -524,6 +524,9 @@ router.get("/tx/:transactionId", function(req, res, next) { res.locals.result.txInputs = txInputs; resolve(); + }).catch(err => { + res.locals.pageErrors.push(utils.logError("0q83hreuwgd", err)); + reject(err); }); }); })); @@ -535,8 +538,9 @@ router.get("/tx/:transactionId", function(req, res, next) { }).catch(function(err) { res.locals.pageErrors.push(utils.logError("1237y4ewssgt", err)); + res.locals.message = "Failed to load some part of transaction with txid=" + txid + " and reload may help. error: " + err; - res.render("transaction"); + res.render("error"); next(); }); diff --git a/views/transaction.pug b/views/transaction.pug index ac877b8dd..b3fc0aaef 100644 --- a/views/transaction.pug +++ b/views/transaction.pug @@ -31,7 +31,7 @@ block content each txInput, txInputIndex in result.txInputs if (txInput) - var vout = txInput.vout[result.getrawtransaction.vin[txInputIndex].vout]; - if (vout.value) + if (vout && vout.value) - totalInputValue = totalInputValue.plus(new Decimal(vout.value)); - var totalOutputValue = new Decimal(0); @@ -137,7 +137,7 @@ block content div(class="summary-split-table-label") Locktime div(class="summary-split-table-content monospace") if (result.getrawtransaction.locktime < 500000000) - span Spendable in block + span Spendable in block a(href=("/block-height/" + result.getrawtransaction.locktime)) #{result.getrawtransaction.locktime.toLocaleString()} span or later a(href="https://bitcoin.org/en/developer-guide#locktime-and-sequence-number", data-toggle="tooltip", title="More info about locktime", target="_blank")