forked from janoside/btc-rpc-explorer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
testRouter.js
75 lines (56 loc) · 2.3 KB
/
testRouter.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
"use strict";
const debug = require("debug");
const debugLog = debug("btcexp:router");
const express = require('express');
const csurf = require('csurf');
const router = express.Router();
const util = require('util');
const moment = require('moment');
const bitcoinCore = require("btc-rpc-client");
const qrcode = require('qrcode');
const bitcoinjs = require('bitcoinjs-lib');
const bip32 = require('bip32');
const bs58check = require('bs58check');
const { bech32, bech32m } = require("bech32");
const sha256 = require("crypto-js/sha256");
const hexEnc = require("crypto-js/enc-hex");
const Decimal = require("decimal.js");
const semver = require("semver");
const markdown = require("markdown-it")();
const asyncHandler = require("express-async-handler");
const utils = require('./../app/utils.js');
const coins = require("./../app/coins.js");
const config = require("./../app/config.js");
const coreApi = require("./../app/api/coreApi.js");
const addressApi = require("./../app/api/addressApi.js");
const rpcApi = require("./../app/api/rpcApi.js");
const btcQuotes = require("./../app/coins/btcQuotes.js");
router.get("/tx-display", asyncHandler(async (req, res, next) => {
res.locals.transactions = [];
res.locals.txInputsByTransaction = {};
res.locals.blockHeightsByTxid = {};
var txidOrder = [];
const promises = [];
for (const [txid, data] of Object.entries(global.coinConfig.testData.txDisplayTestList)) {
txidOrder.push(txid);
const blockHash = data.blockHash;
res.locals.blockHeightsByTxid[txid] = data.blockHeight;
promises.push(utils.timePromise("test.tx-display.getRawTransactionsWithInputs", async () => {
const transactionData = await coreApi.getRawTransactionsWithInputs([txid], 5, blockHash);
res.locals.transactions.push(transactionData.transactions[0]);
for (const [resultTxid, resultData] of Object.entries(transactionData.txInputsByTransaction)) {
res.locals.txInputsByTransaction[resultTxid] = resultData;
}
//console.log(JSON.stringify(transactionData.txInputsByTransaction));
}));
}
res.locals.maxTxOutputDisplayCount = 12;
// todo: include a random mempool tx
await Promise.all(promises);
res.locals.transactions.sort((a, b) => {
return txidOrder.indexOf(a.txid) - txidOrder.indexOf(b.txid);
});
res.render("test/tx-display.pug");
next();
}));
module.exports = router;