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.
 
 
 

215 lines
8.9 KiB

- var fontawesomeInputName = "sign-in-alt";
- var fontawesomeOutputName = "sign-out-alt";
- var totalIOValues = utils.getTxTotalInputOutputValues(tx, txInputs, blockHeight);
script.
function showAllTxOutputs(link, txid) {
var hiddenRows = document.querySelectorAll("[data-txid='" + txid + "']");
hiddenRows.forEach(function(hiddenRow) {
hiddenRow.classList.remove("d-none");
});
link.classList.add("d-none");
}
div(class="row text-monospace")
div(class="col-lg-6")
if (txInputs)
- var extraInputCount = 0;
each txVin, txVinIndex in tx.vin
if (!txVin.coinbase)
- 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 (txVin.coinbase || vout)
div(class="row")
div(class="tx-io-label")
a(data-toggle="tooltip", title=("Input #" + (txVinIndex + 1).toLocaleString()), style="white-space: nowrap;")
i(class=("fas fa-" + fontawesomeInputName + " mr-2"))
span(class="d-inline d-md-none") Input #
span #{(txVinIndex + 1).toLocaleString()}
if (tx.vin.length > 0)
span(class="d-inline d-md-none font-weight-light text-muted") / #{tx.vin.length.toLocaleString()}
div(class="tx-io-content")
div(class="row pr-3")
div(class="tx-io-desc")
if (txVin.coinbase)
span(class="rounded bg-primary text-white px-2 py-1 mr-2") coinbase
span Newly minted coins
else
if (vout && vout.scriptPubKey && vout.scriptPubKey.addresses)
div(class="word-wrap")
a(href=("/address/" + vout.scriptPubKey.addresses[0]), class=(txIOHighlightAddress == vout.scriptPubKey.addresses[0] ? "font-weight-bold" : null)) #{vout.scriptPubKey.addresses[0]}
if (global.specialAddresses[vout.scriptPubKey.addresses[0]])
- var specialAddressInfo = global.specialAddresses[vout.scriptPubKey.addresses[0]];
if (specialAddressInfo.type == "minerPayout")
span
a(data-toggle="tooltip", title=("Miner payout address: " + specialAddressInfo.minerInfo.name))
i(class="fas fa-certificate text-primary")
else if (specialAddressInfo.type == "donation")
span
a(data-toggle="tooltip", title=("Development donation address. All support is appreciated!"))
i(class="fas fa-certificate text-primary")
span(class="small") via
a(href=("/tx/" + txInput.txid + "#output-" + txVin.vout)) #{txInput.txid.substring(0, 20)}...[#{txVin.vout}]
div(class="tx-io-value")
if (txVin.coinbase)
- var currencyValue = coinConfig.blockRewardFunction(blockHeight, global.activeBlockchain);
include ./value-display.pug
else
if (vout && vout.value)
- var currencyValue = vout.value;
include ./value-display.pug
hr
else
- extraInputCount = extraInputCount + 1;
if (extraInputCount > 0)
div(class="row")
div(class="tx-io-label")
a(data-toggle="tooltip", title=("Input #" + (tx.vin.length - extraInputCount + 1).toLocaleString() + " - " + tx.vin.length.toLocaleString()), style="white-space: nowrap;")
i(class=("fas fa-" + fontawesomeInputName + " mr-2"))
span(class="d-inline d-md-none") Input #
i(class=("fas fa-ellipsis-h mr-2"))
div(class="tx-io-content")
div(class="row pr-3")
div(class="tx-io-desc")
span #{extraInputCount.toLocaleString()} more input(s)
br
span(class="small") see
a(href=("/tx/" + tx.txid)) transactions details
div(class="tx-io-value")
- var currencyValue = new Decimal(totalIOValues.output).minus(new Decimal(totalIOValues.input));
include ./value-display.pug
hr
div(class="row mb-5 mb-lg-2 pr-3")
div(class="col")
div(class="font-weight-bold text-left text-md-right")
span(class="d-block d-md-none") Total Input:
- var currencyValue = totalIOValues.input;
include ./value-display.pug
div(class="col-lg-6")
- var maxRegularRowCount = (txIOHighlightAddress != null ? config.site.addressPage.txOutputMaxDefaultDisplay : 10000000);
- var regularRowCount = 0;
- var hiddenRowCount = 0;
each vout, voutIndex in tx.vout
- var highlightRow = false;
if (txIOHighlightAddress != null && vout.scriptPubKey && vout.scriptPubKey.addresses && vout.scriptPubKey.addresses[0] == txIOHighlightAddress)
- highlightRow = true;
if (!highlightRow)
- regularRowCount++;
- var hiddenRow = false;
if (!highlightRow && regularRowCount > maxRegularRowCount)
- hiddenRow = true;
- hiddenRowCount++;
div(data-txid=tx.txid, class=("pr-0 " + (hiddenRow ? "d-none" : "")))
div(class="row")
div(class="tx-io-label")
a(data-toggle="tooltip", title=("Output #" + (voutIndex + 1).toLocaleString()), style="white-space: nowrap;")
i(class=("fas fa-" + fontawesomeOutputName + " mr-2"))
span(class="d-inline d-md-none") Output #
span #{(voutIndex + 1).toLocaleString()}
if (tx.vout.length > 0)
span(class="d-inline d-md-none font-weight-light text-muted") / #{tx.vout.length.toLocaleString()}
div(class="tx-io-content")
div(class=("row pr-3"))
div(class="tx-io-desc")
if (vout.scriptPubKey)
if (vout.scriptPubKey.addresses)
if (false)
if (vout.scriptPubKey.type == "pubkey")
span(class="border border-secondary rounded bg-light px-2 py-1 mr-2") P2PK
else if (vout.scriptPubKey.type == "pubkeyhash")
span(class="border border-secondary rounded bg-light px-2 py-1 mr-2") P2PKH
else if (vout.scriptPubKey.type == "scripthash")
span(class="border border-secondary rounded bg-light px-2 py-1 mr-2") P2SH
else if (vout.scriptPubKey.type == "witness_v0_keyhash")
span(class="border border-secondary rounded bg-light px-2 py-1 mr-2") V0_P2WPKH
a(id=("output-" + voutIndex), href=("/address/" + vout.scriptPubKey.addresses[0]))
span(class=("monospace word-wrap " + (highlightRow ? "font-weight-bold" : ""))) #{vout.scriptPubKey.addresses[0]}
if (global.specialAddresses[vout.scriptPubKey.addresses[0]])
- var specialAddressInfo = global.specialAddresses[vout.scriptPubKey.addresses[0]];
if (specialAddressInfo.type == "minerPayout")
span
a(data-toggle="tooltip", title=("Miner payout address: " + specialAddressInfo.minerInfo.name))
i(class="fas fa-certificate text-primary")
else if (specialAddressInfo.type == "donation")
span
a(data-toggle="tooltip", title=("Development donation address. All support is appreciated!"))
i(class="fas fa-certificate text-primary")
else if (vout.scriptPubKey.hex && vout.scriptPubKey.hex.startsWith('6a24aa21a9ed'))
span(class="monospace")
span(class="rounded bg-primary text-white px-2 py-1 mr-2") OP_RETURN
span(title="Segregated Witness", data-toggle="tooltip") SegWit
span 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")
span(class="rounded bg-primary text-white px-2 py-1 mr-2") OP_RETURN
span #{utils.hex2ascii(vout.scriptPubKey.asm.substring("OP_RETURN ".length))}
else
span(class="monospace")
span(class="text-warning 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)}
div(class="tx-io-value")
if (utxos)
if (utxos[voutIndex])
i.fas.fa-lock.text-success.mr-2(title="Unspent output." data-toggle="tooltip")
else if (utxos[voutIndex] == null)
i.fas.fa-lock-open.text-secondary.mr-2(title="Spent output." data-toggle="tooltip")
- var currencyValue = vout.value;
include ./value-display.pug
hr
if (hiddenRowCount > 0)
a(href="javascript:void(0)", onclick=("showAllTxOutputs(this, '" + tx.txid + "');")) Show all #{tx.vout.length.toLocaleString()} outputs
div(class="row mb-2 pr-3")
div(class="col")
div(class="font-weight-bold text-left text-md-right")
span(class="d-block d-md-none") Total Output:
- var currencyValue = totalIOValues.output;
include ./value-display.pug