|
- extends layout
-
- block headContent
- title Transaction #{txid}
- style.
- .field {
- word-wrap: break-word;
- }
-
-
- block content
- h1(class="h2") Transaction
- br
- small(class="monospace") #{txid}
- hr
-
- ul(class='nav nav-tabs mb-3')
- li(class="nav-item")
- a(data-toggle="tab", href="#tab-summary", class="nav-link active", role="tab") Summary
- li(class="nav-item")
- a(data-toggle="tab", href="#tab-scripts", class="nav-link", role="tab") Scripts
- li(class="nav-item")
- a(data-toggle="tab", href="#tab-raw", class="nav-link", role="tab") Raw
-
- - DecimalRounded = Decimal.clone({ precision: 4, rounding: 2 })
-
- - var totalInputValue = new Decimal(0);
- if (result.getrawtransaction.vin[0].coinbase)
- - totalInputValue = totalInputValue.plus(new Decimal(utils.getBlockReward(result.getblock.height)));
- each txInput, txInputIndex in result.txInputs
- if (txInput)
- - var vout = txInput.vout[result.getrawtransaction.vin[txInputIndex].vout];
- if (vout.value)
- - totalInputValue = totalInputValue.plus(new Decimal(vout.value));
-
- - var totalOutputValue = new Decimal(0);
- each vout, voutIndex in result.getrawtransaction.vout
- - totalOutputValue = totalOutputValue.plus(new Decimal(vout.value));
-
- div(class="tab-content")
- div(id="tab-summary", class="tab-pane active", role="tabpanel")
- if (txid == "00000f6be3e151f9082a2b82c2916192a791090015b80979934a45d625460d62")
- div(class="alert alert-warning", style="padding-bottom: 0;")
- h4(class="alert-heading h5") This transaction doesn't really exist!
- :markdown-it
- This is the coinbase transaction of the [Vivocoin Genesis Block](/block/00000f6be3e151f9082a2b82c2916192a791090015b80979934a45d625460d62). For more background about this special-case transaction, you can read [this brief discussion](https://github.com/bitcoin/bitcoin/issues/3303) among some of the [Vivocoin Core](https://bitcoin.org) developers.
-
- table(class="table")
- tr
- th(class="table-active properties-header") Included in Block
- td(class="monospace")
- if (result.getblock)
- a(href=("/block/" + result.getrawtransaction.blockhash)) #{result.getrawtransaction.blockhash}
- if (result.getblock.height)
- span(class="text-muted") (#{result.getblock.height.toLocaleString()})
- else
- span N/A
- span(class="text-muted") (unconfirmed)
-
- tr
- th(class="table-active properties-header") Timestamp
- if (result.getrawtransaction.time)
- td(class="monospace") #{moment.utc(new Date(result.getrawtransaction["time"] * 1000)).format("Y-MM-DD HH:mm:ss")} (utc)
- else
- td(class="monospace") N/A
- span(class="text-muted") (unconfirmed)
-
- //tr
- // th(class="table-active properties-header") Transaction ID
- // td #{txid}
-
- tr
- th(class="table-active properties-header") Version
- td(class="monospace") #{result.getrawtransaction.version}
-
- if (result.getrawtransaction.locktime > 0)
- tr
- th(class="table-active properties-header")
- span Locktime
- td(class="monospace")
- if (result.getrawtransaction.locktime < 500000000)
- span Spendable in block
- a(href=("/block-height/" + result.getrawtransaction.locktime)) #{result.getrawtransaction.locktime}
- span or later - (
- a(href="https://bitcoin.org/en/developer-guide#locktime-and-sequence-number", title="Locktime documentation")
- span docs
- i(class="fa fa-external-link")
- span )
- else
- span Spendable after #{moment.utc(new Date(result.getrawtransaction.locktime * 1000)).format("Y-MM-DD HH:mm:ss")} (utc) - (
- a(href="https://bitcoin.org/en/developer-guide#locktime-and-sequence-number", title="Locktime documentation")
- span docs
- i(class="fa fa-external-link")
- span )
-
- tr
- th(class="table-active properties-header") Confirmations
- td(class="monospace")
- if (!result.getrawtransaction.confirmations || result.getrawtransaction.confirmations == 0)
- strong(class="text-danger") 0 (unconfirmed)
- else if (result.getrawtransaction.confirmations < 6)
- strong(class="text-warning") #{result.getrawtransaction.confirmations}
- else
- strong(class="text-success") #{result.getrawtransaction.confirmations.toLocaleString()}
-
- if (result.getrawtransaction.vin[0].coinbase)
- tr
- th(class="table-active properties-header") Total Network Fees
- //td(class="monospace") Σ #{new Decimal(totalOutputValue).minus(totalInputValue)}
- td(class="monospace") Σ #{(totalOutputValue - totalInputValue)}
- else
- tr
- th(class="table-active properties-header") Network Fee Paid
- td(class="monospace")
- strong #{new Decimal(totalInputValue).minus(totalOutputValue)}
- //span(class="text-muted") (#{totalInputValue} - #{totalOutputValue})
- //br
- //span ~#{new DecimalRounded(totalInputValue).minus(totalOutputValue).dividedBy(result.getrawtransaction.size).times(100000000)} sat/B
-
- if (result.getrawtransaction.vin[0].coinbase)
- div(class="card mb-3")
- div(class="card-header")
- h2(class="h5 mb-0") Coinbase
- div(class="card-body")
- h6 Hex
- div(style="background-color: #fafafa; padding: 5px 10px;", class="mb-3")
- span(class="monospace word-wrap") #{result.getrawtransaction.vin[0].coinbase}
-
- h6 Decoded
- div(style="background-color: #fafafa; padding: 5px 10px;", class="mb-3")
- span(class="monospace word-wrap") #{utils.hex2ascii(result.getrawtransaction.vin[0].coinbase)}
-
- div(class="card mb-3")
- div(class="card-header")
- div(class="row")
- div(class="col-md-6")
- h2(class="h5 mb-0") Input (#{result.getrawtransaction.vin.length.toLocaleString()})
- div(class="col-md-6")
- h2(class="h5 mb-0") Output (#{result.getrawtransaction.vout.length.toLocaleString()})
- div(class="card-body")
- div(class="row")
- div(class="col-md-6")
- if (result.txInputs)
- table(class="table mb-0")
- thead
- tr
- th(style="width: 40px;")
- th Input
- th Amount
- tbody
-
- if (result.getrawtransaction.vin[0].coinbase)
- tr
- th 1
- td
- span(class="tag monospace") coinbase
- span(class="monospace") Newly minted VIVO
- td(class="monospace") Σ #{utils.getBlockReward(result.getblock.height)}
-
- each txInput, txInputIndex in result.txInputs
- if (txInput)
- - var vout = txInput.vout[result.getrawtransaction.vin[txInputIndex].vout];
-
- tr
- th #{(txInputIndex + 1)}
- //pre
- // code #{JSON.stringify(txInput)}
-
- td
- if (vout.scriptPubKey && vout.scriptPubKey.addresses)
- //span(class="monospace") #{vout.scriptPubKey.addresses[0]}
- span(class="monospace")
- a(href=("/address/" + vout.scriptPubKey.addresses[0])) #{vout.scriptPubKey.addresses[0]}
- br
- span(class="monospace text-muted") via tx
- a(href=("/tx/" + txInput.txid + "#output-" + result.getrawtransaction.vin[txInputIndex].vout), class="monospace") #{txInput.txid.substring(0, 14)}..., Output ##{result.getrawtransaction.vin[txInputIndex].vout + 1}
- td
- if (vout.value)
- span(class="monospace") Σ #{vout.value}
-
- tr
- td
- td
- td
- strong(class="monospace") Σ #{totalInputValue}
-
-
- div(class="col-md-6")
- table(class="table mb-0")
- thead
- tr
- th
- th Output
- th Amount
-
- tbody
- each vout, voutIndex in result.getrawtransaction.vout
- tr
- th #{(voutIndex + 1)}
- td
- if (vout.scriptPubKey)
- if (vout.scriptPubKey.addresses)
- a(id="output-" + voutIndex)
- //span(class="monospace") #{vout.scriptPubKey.addresses[0]}
- span(class="monospace")
- a(href=("/address/" + vout.scriptPubKey.addresses[0])) #{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") docs
- i(class="fa fa-external-link")
- 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))}
- td
- span(class="monospace") Σ #{vout.value}
-
- tr
- td
- td
- td
- strong(class="monospace") Σ #{totalOutputValue}
-
- div(id="tab-scripts", class="tab-pane", role="tabpanel")
- h3 Input Scripts
- table(class="table table-striped")
- thead
- tr
- th(style="width: 50px;")
- th Script Sig (asm)
- tbody
- each vin, vinIndex in result.getrawtransaction.vin
- tr
- th #{vinIndex + 1}
- td
- if (vin.scriptSig && vin.scriptSig.asm)
- span(class="word-wrap monospace") #{vin.scriptSig.asm}
-
- else if (vin.coinbase)
- div(style="line-height: 1.75em;")
- span(class="tag") coinbase
- br
- span(class="word-wrap monospace") #{vin.coinbase}
- br
- span(class="word-wrap monospace text-muted") (decoded) #{utils.hex2ascii(vin.coinbase)}
-
- h3 Output Scripts
- table(class="table table-striped")
- thead
- tr
- th(style="width: 50px;")
- th Script Pub Key (asm)
- tbody
- each vout, voutIndex in result.getrawtransaction.vout
- tr
- th #{voutIndex + 1}
- td
- if (vout.scriptPubKey && vout.scriptPubKey.asm)
- span(class="word-wrap monospace") #{vout.scriptPubKey.asm}
- if (vout.scriptPubKey.asm.startsWith("OP_RETURN"))
- br
- span(class="word-wrap monospace text-muted") (decoded) #{utils.hex2ascii(vout.scriptPubKey.asm)}
-
- div(id="tab-raw", class="tab-pane", role="tabpanel")
- div(class="highlight")
- pre
- code(class="language-json", data-lang="json") #{JSON.stringify(result.getrawtransaction, null, 4)}
-
- //pre #{JSON.stringify(result.txInputs, null, 4)}
-
-
|