- 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.row.text-monospace div.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.clearfix div.tx-io-label a(data-toggle="tooltip", title=("Input #" + txVinIndex.toLocaleString()), style="white-space: nowrap;") span.font-weight-bold > small.d-inline.d-md-none Input span ##{txVinIndex.toLocaleString()} if (tx.vin.length > 0) small.d-inline.d-md-none.font-weight-light.text-muted / #{(tx.vin.length - 1).toLocaleString()} div.tx-io-content div.clearfix div.tx-io-desc if (txVin.coinbase) small.data-tag.bg-primary.mr-2 coinbase span Newly minted coins else div.word-wrap small.data-tag.bg-dark.mr-2 txo a(href=("/tx/" + txInput.txid + "#output-" + txVin.vout)) #{utils.ellipsize(txInput.txid, 26)} span ##{txVin.vout} if (vout && vout.scriptPubKey && vout.scriptPubKey.addresses) div.word-wrap small.text-muted span.mr-1 (addr: 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.fas.fa-certificate.text-primary span ) if (false) small span.border-dotted(title="Transaction output", data-toggle="tooltip") txo span.mr-1 : a(href=("/tx/" + txInput.txid + "#output-" + txVin.vout)) #{utils.ellipsize(txInput.txid, 20)}[#{txVin.vout}] else div.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.clearfix div.tx-io-label a(data-toggle="tooltip", title=("Input #" + (tx.vin.length - extraInputCount + 1).toLocaleString() + " - " + tx.vin.length.toLocaleString()), style="white-space: nowrap;") span.font-weight-bold > span.d-inline.d-md-none Input span #… div.tx-io-content div.clearfix div.tx-io-desc span.text-reset #{extraInputCount.toLocaleString()} more input if (extraInputCount > 1) span s br small.text-muted (see a(href=("/tx/" + tx.txid)) transaction page span for details) div.tx-io-value - var currencyValue = new Decimal(totalIOValues.output).minus(new Decimal(totalIOValues.input)); include ./value-display.pug hr div.row.mb-5.mb-lg-0 div.col div.font-weight-bold.text-left.text-md-right span.d-block.d-md-none Total Input: - var currencyValue = totalIOValues.input; include ./value-display.pug div.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=(hiddenRow ? "d-none" : "")) div.clearfix div.tx-io-label a(data-toggle="tooltip", title=("Output #" + voutIndex.toLocaleString()), style="white-space: nowrap;") span.font-weight-bold < small.d-inline.d-md-none Output span ##{voutIndex.toLocaleString()} if (tx.vout.length > 0) small.d-inline.d-md-none.font-weight-light.text-muted / #{(tx.vout.length - 1).toLocaleString()} div.tx-io-content div.clearfix div.tx-io-desc if (vout.scriptPubKey) if (vout.scriptPubKey.addresses) if (true) div.mb-tiny small.data-tag.bg-dark if (vout.scriptPubKey.type == "pubkey") span(title="Output Type: Pay to Public Key", data-toggle="tooltip") p2pk else if (vout.scriptPubKey.type == "pubkeyhash") span(title="Output Type: Pay to Public Key Hash", data-toggle="tooltip") p2pkh else if (vout.scriptPubKey.type == "scripthash") span(title="Output Type: Pay to Script Hash", data-toggle="tooltip") p2sh else if (vout.scriptPubKey.type == "witness_v0_keyhash") span(title="Output Type: Witness, v0 Key Hash", data-toggle="tooltip") v0_p2wpkh else if (vout.scriptPubKey.type == "witness_v0_scripthash") span(title="Output Type: Witness, v0 Script Hash", data-toggle="tooltip") v0_p2wsh else span ??? each addr in vout.scriptPubKey.addresses a(id=("output-" + voutIndex), href=("/address/" + addr)) span.text-monospace.word-wrap(class=(highlightRow ? "font-weight-bold" : "")) #{addr} if (global.specialAddresses[addr]) - var specialAddressInfo = global.specialAddresses[addr]; if (specialAddressInfo.type == "minerPayout") span a(data-toggle="tooltip", title=("Miner payout address: " + specialAddressInfo.minerInfo.name)) i.fas.fa-certificate.text-primary br else if (vout.scriptPubKey.hex && vout.scriptPubKey.hex.startsWith('6a24aa21a9ed')) div.mb-tiny small.data-tag.bg-primary OP_RETURN small.text-muted (SegWit committment - a(href="https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki#commitment-structure", data-toggle="tooltip", title="View developer docs", target="_blank") about span ) else if (vout.scriptPubKey.asm && vout.scriptPubKey.asm.startsWith('OP_RETURN ')) div.mb-tiny small.data-tag.bg-primary OP_RETURN small #{utils.hex2ascii(vout.scriptPubKey.asm.substring("OP_RETURN ".length))} else div.mb-tiny small.data-tag.bg-dark if (vout.scriptPubKey.type == "pubkey") span(title="Output Type: Pay to Public Key", data-toggle="tooltip") p2pk else if (vout.scriptPubKey.type == "pubkeyhash") span(title="Output Type: Pay to Public Key Hash", data-toggle="tooltip") p2pkh else if (vout.scriptPubKey.type == "scripthash") span(title="Output Type: Pay to Script Hash", data-toggle="tooltip") p2sh else if (vout.scriptPubKey.type == "witness_v0_keyhash") span(title="Output Type: Witness, v0 Key Hash", data-toggle="tooltip") v0_p2wpkh else if (vout.scriptPubKey.type == "witness_v0_scripthash") span(title="Output Type: Witness, v0 Script Hash", data-toggle="tooltip") v0_p2wsh else span ??? span small.font-weight-bold asm: small #{vout.scriptPubKey.asm} br small.font-weight-bold hex: small #{vout.scriptPubKey.hex} div.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.row.mb-0.mb-lg-0 div.col div.font-weight-bold.text-left.text-md-right span.d-block.d-md-none Total Output: - var currencyValue = totalIOValues.output; include ./value-display.pug