Blockchain explorer
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

71 lines
1.8 KiB

var models = require('../models');
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/:txid', async function(req, res, next) {
const txid = encodeURI(req.params.txid);
const transaction = await models.Transaction.findOne({
where: {
txid,
},
include: [{
attributes: ['hash', 'time', 'height'],
model: models.Block,
},{
model: models.Vout,
include: [
{
model: models.Address,
}, {
model: models.Transaction,
include: {
model: models.Vout,
},
}
],
},],
});
if (transaction === null) {
res.status(404).render('404');
return;
}
// const vouts = [];
// transaction.Vouts.forEach((vout) => {
// vout.Addresses.forEach((address) => {
// vouts.push({
// address: address.address,
// value: vout.value,
// });
// });
// });
const lastBlock = await models.Block.findOne({
attributes: [
[models.sequelize.fn('MAX', models.sequelize.col('height')), 'maxheight']
],
raw: true,
});
const confirmations = lastBlock.maxheight - transaction.Block.height + 1;
const txJson = transaction.toJSON();
// txJson.vins = txJson.Vouts.filter({TransactionVouts: {direction: 0}});
// txJson.vouts txJson.Vouts.filter({TransactionVouts: {direction: 1}});
const txTemplate = Object.assign(txJson, {
vins: txJson.Vouts.filter((vout) => vout.TransactionVouts.direction === 0),
vouts: txJson.Vouts.filter((vout) => vout.TransactionVouts.direction === 1),
});
txTemplate.blockTime = transaction.Block.time.toUTCString();
res.render('transaction', {
transaction: txTemplate,
// vouts,
confirmations,
});
});
module.exports = router;