|
|
|
- var fontawesomeInputName = "sign-in-alt";
|
|
|
|
- var fontawesomeOutputName = "sign-out-alt";
|
|
|
|
|
|
|
|
- var totalIOValues = utils.getTxTotalInputOutputValues(tx, txInputs, blockHeight);
|
|
|
|
|
|
|
|
div(class="row")
|
|
|
|
div(class="col-md-6")
|
|
|
|
if (txInputs)
|
|
|
|
table(class="table monospace mb-0")
|
|
|
|
- var extraInputCount = 0;
|
|
|
|
each txVin, txVinIndex in tx.vin
|
|
|
|
if (txVin.coinbase)
|
|
|
|
tr
|
|
|
|
th(class="pl-0 pr-1")
|
|
|
|
a(data-toggle="tooltip", title="Input #1", style="white-space: nowrap;")
|
|
|
|
i(class=("fas fa-" + fontawesomeInputName + " mr-2"))
|
|
|
|
span 1
|
|
|
|
|
|
|
|
td(class="border-top-0")
|
|
|
|
span(class="tag") coinbase
|
|
|
|
span Newly minted coins
|
|
|
|
|
|
|
|
td(class="border-top-0 text-right")
|
|
|
|
- var currencyValue = coinConfig.blockRewardFunction(result.getblock.height);
|
|
|
|
include ./value-display.pug
|
|
|
|
|
|
|
|
else
|
|
|
|
- var vout = null;
|
|
|
|
if (txInputs && txInputs[txVinIndex])
|
|
|
|
- var txInput = txInputs[txVinIndex];
|
|
|
|
if (txInput.vout && txInput.vout[txVin.vout])
|
|
|
|
- var vout = txInput.vout[txVin.vout];
|
|
|
|
|
|
|
|
if (vout)
|
|
|
|
tr
|
|
|
|
th(class="pl-0 pr-1")
|
|
|
|
a(data-toggle="tooltip", title=("Input #" + (txVinIndex + 1)), style="white-space: nowrap;")
|
|
|
|
i(class=("fas fa-" + fontawesomeInputName + " mr-2"))
|
|
|
|
span #{(txVinIndex + 1)}
|
|
|
|
|
|
|
|
td(class=(txVinIndex == 0 ? "border-top-0" : false), class="pl-0")
|
|
|
|
if (vout && vout.scriptPubKey && vout.scriptPubKey.addresses)
|
|
|
|
div(style="word-break: break-word;")
|
|
|
|
a(href=("/address/" + vout.scriptPubKey.addresses[0])) #{vout.scriptPubKey.addresses[0]}
|
|
|
|
span(class="small") via
|
|
|
|
a(href=("/tx/" + txInput.txid + "#output-" + txVin.vout)) #{txInput.txid.substring(0, 20)}...[#{txVin.vout}]
|
|
|
|
|
|
|
|
td(class=(txVinIndex == 0 ? "border-top-0" : false), class="pl-0 text-right")
|
|
|
|
if (vout && vout.value)
|
|
|
|
- var currencyValue = vout.value;
|
|
|
|
include ./value-display.pug
|
|
|
|
else
|
|
|
|
- extraInputCount = extraInputCount + 1;
|
|
|
|
|
|
|
|
if (extraInputCount > 0)
|
|
|
|
tr
|
|
|
|
th(class="pl-0 pr-1")
|
|
|
|
|
|
|
|
td(class="border-top-0 pl-0")
|
|
|
|
span #{extraInputCount} Additonal
|
|
|
|
if (extraInputCount != 1)
|
|
|
|
span inputs
|
|
|
|
else
|
|
|
|
span input
|
|
|
|
|
|
|
|
a(data-toggle="tooltip", title="Additional inputs withheld for performance. See this transaction's details page for more info.")
|
|
|
|
i(class="fas fa-info-circle")
|
|
|
|
|
|
|
|
td(class="border-top-0")
|
|
|
|
|
|
|
|
tr
|
|
|
|
th
|
|
|
|
td
|
|
|
|
td(class="text-right font-weight-bold")
|
|
|
|
- var currencyValue = totalIOValues.input;
|
|
|
|
include ./value-display.pug
|
|
|
|
|
|
|
|
|
|
|
|
div(class="col-md-6")
|
|
|
|
table(class="table mb-0")
|
|
|
|
tbody
|
|
|
|
each vout, voutIndex in tx.vout
|
|
|
|
tr
|
|
|
|
th(class="pl-0 pr-1 monospace")
|
|
|
|
a(data-toggle="tooltip", title=("Output #" + (voutIndex + 1)), style="white-space: nowrap;")
|
|
|
|
i(class=("fas fa-" + fontawesomeOutputName + " mr-2"))
|
|
|
|
span #{(voutIndex + 1)}
|
|
|
|
|
|
|
|
td(class=(voutIndex == 0 ? "border-top-0" : false), class="pl-0")
|
|
|
|
if (vout.scriptPubKey)
|
|
|
|
if (vout.scriptPubKey.addresses)
|
|
|
|
a(id=("output-" + voutIndex), href=("/address/" + vout.scriptPubKey.addresses[0]))
|
|
|
|
div(class="monospace", style="word-break: break-word;") #{vout.scriptPubKey.addresses[0]}
|
|
|
|
|
|
|
|
else if (vout.scriptPubKey.hex && vout.scriptPubKey.hex.startsWith('6a24aa21a9ed'))
|
|
|
|
span(class="monospace") Segregated Witness committment
|
|
|
|
a(href="https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#commitment-structure", data-toggle="tooltip", title="View developer docs", target="_blank")
|
|
|
|
i(class="fas fa-info-circle")
|
|
|
|
|
|
|
|
else if (vout.scriptPubKey.asm && vout.scriptPubKey.asm.startsWith('OP_RETURN '))
|
|
|
|
span(class="monospace") OP_RETURN:
|
|
|
|
span(class="monospace text-muted") #{utils.hex2ascii(vout.scriptPubKey.asm.substring("OP_RETURN ".length))}
|
|
|
|
|
|
|
|
else
|
|
|
|
span(class="monospace")
|
|
|
|
span(class="text-danger font-weight-bold") Unable to decode output:
|
|
|
|
br
|
|
|
|
span(class="font-weight-bold") type:
|
|
|
|
span #{vout.scriptPubKey.type}
|
|
|
|
br
|
|
|
|
span(class="font-weight-bold") asm:
|
|
|
|
span #{vout.scriptPubKey.asm}
|
|
|
|
br
|
|
|
|
span(class="font-weight-bold") decodedHex:
|
|
|
|
span #{utils.hex2ascii(vout.scriptPubKey.hex)}
|
|
|
|
|
|
|
|
td(class=(voutIndex == 0 ? "border-top-0" : false), class="pl-0 text-right")
|
|
|
|
- var currencyValue = vout.value;
|
|
|
|
include ./value-display.pug
|
|
|
|
|
|
|
|
tr
|
|
|
|
th
|
|
|
|
td
|
|
|
|
td(class="text-right font-weight-bold")
|
|
|
|
- var currencyValue = totalIOValues.output;
|
|
|
|
include ./value-display.pug
|
|
|
|
|
|
|
|
|