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.
257 lines
9.5 KiB
257 lines
9.5 KiB
extends layout
|
|
|
|
block headContent
|
|
title Address #{address}
|
|
|
|
block content
|
|
if (result && result.validateaddress)
|
|
if (!result.validateaddress.isvalid)
|
|
h1(class="h3 text-danger") Invalid Address
|
|
br
|
|
small(class="monospace") #{address}
|
|
else
|
|
h1(class="h3") Address
|
|
br
|
|
small(class="monospace") #{address}
|
|
|
|
hr
|
|
|
|
if (payoutAddressForMiner)
|
|
div(class="alert alert-primary", style="padding-bottom: 0;")
|
|
div(class="float-left", style="width: 50px; height: 50px; font-size: 18px;")
|
|
i(class="fas fa-certificate fa-2x", style="margin-top: 10px;")
|
|
|
|
h4(class="alert-heading h5") #{coinConfig.name} Fun
|
|
|
|
p
|
|
span This looks like a miner payout address for
|
|
span(class="font-weight-bold") #{payoutAddressForMiner.name}
|
|
if (coinConfig.miningPoolsConfigUrls.length > 1)
|
|
span (see the configurations:
|
|
each item, index in coinConfig.miningPoolsConfigUrls
|
|
if (index > 0)
|
|
span ,
|
|
a(href=item) config ##{index + 1}
|
|
span )
|
|
else
|
|
span (see the configuration
|
|
a(href=coinConfig.miningPoolsConfigUrls[0]) here
|
|
span )
|
|
|
|
if (false)
|
|
pre
|
|
code #{JSON.stringify(addressObj, null, 4)}
|
|
|
|
ul(class='nav nav-tabs mb-3')
|
|
li(class="nav-item")
|
|
a(data-toggle="tab", href="#tab-details", class="nav-link active", role="tab") Details
|
|
li(class="nav-item")
|
|
a(data-toggle="tab", href="#tab-json", class="nav-link", role="tab") JSON
|
|
|
|
|
|
div(class="tab-content")
|
|
div(id="tab-details", class="tab-pane active", role="tabpanel")
|
|
|
|
div(class="card mb-3")
|
|
div(class="card-header")
|
|
span(class="h6") Summary
|
|
div(class="card-body")
|
|
div(class="row")
|
|
div(class="col-md-6")
|
|
|
|
if (addressObj.hash)
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Hash 160
|
|
div(class="summary-split-table-content monospace") #{addressObj.hash.toString("hex")}
|
|
|
|
if (result.validateaddress.scriptPubKey)
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Script Public Key
|
|
div(class="summary-split-table-content monospace") #{result.validateaddress.scriptPubKey}
|
|
|
|
if (addressObj.hasOwnProperty("version"))
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Version
|
|
div(class="summary-split-table-content monospace") #{addressObj.version}
|
|
|
|
if (result.validateaddress.hasOwnProperty("witness_version"))
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Witness Version
|
|
div(class="summary-split-table-content monospace") #{result.validateaddress.witness_version}
|
|
|
|
if (result.validateaddress.witness_program)
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Witness Program
|
|
div(class="summary-split-table-content monospace") #{result.validateaddress.witness_program}
|
|
|
|
if (balance)
|
|
if (balance.conflictedResults)
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Balance
|
|
div(class="summary-split-table-content monospace")
|
|
span(class="text-danger") Conflicted ElectrumX Results
|
|
include includes/electrum-trust-note.pug
|
|
|
|
each item in balance.conflictedResults
|
|
- var currencyValue = item.confirmed / 100000000;
|
|
include includes/value-display.pug
|
|
|
|
|
|
else
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Balance
|
|
div(class="summary-split-table-content monospace")
|
|
- var currencyValue = balance.confirmed / 100000000;
|
|
include includes/value-display.pug
|
|
include includes/electrum-trust-note.pug
|
|
|
|
if (balance.unconfirmed)
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Unconfirmed
|
|
div(class="summary-split-table-content monospace")
|
|
- var currencyValue = balance.unconfirmed / 100000000;
|
|
include includes/value-display.pug
|
|
include includes/electrum-trust-note.pug
|
|
|
|
if (electrumHistory)
|
|
div(class="row")
|
|
div(class="summary-split-table-label") Transactions
|
|
div(class="summary-split-table-content monospace") #{electrumHistory.length.toLocaleString()}
|
|
include includes/electrum-trust-note.pug
|
|
|
|
div(class="row")
|
|
div(class="summary-split-table-label") QR Code
|
|
div(class="summary-split-table-content monospace")
|
|
img(src=addressQrCodeUrl, alt=address, style="border: solid 1px #ccc;")
|
|
|
|
div(class="col-md-6")
|
|
- var x = result.validateaddress;
|
|
- var flagNames = ["Is Valid?", "Is Script?", "Is Witness?", "Is Mine?", "Is Watch-Only?"];
|
|
- var flags = [x.isvalid, x.isscript, x.iswitness, x.ismine, x.iswatchonly];
|
|
|
|
each flagName, index in flagNames
|
|
div(class="row")
|
|
div(class="summary-split-table-label") #{flagName}
|
|
div(class="summary-split-table-content monospace")
|
|
if (flags[index])
|
|
i(class="fas fa-check text-success")
|
|
else
|
|
i(class="fas fa-times text-danger")
|
|
|
|
if (false)
|
|
div(class="card mb-3")
|
|
div(class="card-header")
|
|
span(class="h6") Flags
|
|
div(class="card-body")
|
|
table(class="table table-responsive-sm text-center")
|
|
thead
|
|
tr
|
|
th Is Valid?
|
|
th Is Script?
|
|
th Is Witness?
|
|
th Is Mine?
|
|
th Is Watch-Only?
|
|
tbody
|
|
tr
|
|
- var x = result.validateaddress;
|
|
- var flags = [x.isvalid, x.isscript, x.iswitness, x.ismine, x.iswatchonly];
|
|
|
|
each flag in flags
|
|
td
|
|
if (flag)
|
|
i(class="fas fa-check text-success")
|
|
else
|
|
i(class="fas fa-times text-danger")
|
|
|
|
div(class="card")
|
|
div(class="card-header")
|
|
span(class="h6") Transactions
|
|
if (transactions)
|
|
include includes/electrum-trust-note.pug
|
|
div(class="card-body")
|
|
if (transactions)
|
|
each tx, txIndex in transactions
|
|
//pre
|
|
// code #{JSON.stringify(tx, null, 4)}
|
|
div(class="xcard mb-3")
|
|
div(class="card-header monospace clearfix")
|
|
div(class="float-left", style="margin-right: 10px;")
|
|
span ##{(offset + txIndex + 1).toLocaleString()}
|
|
span –
|
|
div(class="float-left")
|
|
if (tx && tx.txid)
|
|
if (tx.time)
|
|
span #{moment.utc(new Date(tx["time"] * 1000)).format("Y-MM-DD HH:mm:ss")} utc
|
|
- var timeAgoTime = tx.time;
|
|
include includes/time-ago.pug
|
|
|
|
else
|
|
span(class="text-danger") Unconfirmed
|
|
|
|
br
|
|
a(href=("/tx/" + tx.txid)) #{tx.txid}
|
|
br
|
|
|
|
if (addrGainsByTx[tx.txid])
|
|
- var currencyValue = addrGainsByTx[tx.txid];
|
|
span(class="text-success") +
|
|
include includes/value-display.pug
|
|
|
|
if (addrLossesByTx[tx.txid])
|
|
span /
|
|
|
|
if (addrLossesByTx[tx.txid])
|
|
- var currencyValue = addrLossesByTx[tx.txid];
|
|
span(class="text-danger") -
|
|
include includes/value-display.pug
|
|
|
|
if (global.specialTransactions && global.specialTransactions[tx.txid])
|
|
span
|
|
a(data-toggle="tooltip", title=(coinConfig.name + " Fun! See transaction for details"))
|
|
i(class="fas fa-certificate text-primary")
|
|
|
|
div(class="card-body")
|
|
if (true)
|
|
- var txInputs = txInputsByTransaction[tx.txid];
|
|
- var blockHeight = blockHeightsByTxid[tx.txid];
|
|
|
|
include includes/transaction-io-details.pug
|
|
else
|
|
p Since this explorer is database-free, it doesn't natively support address transaction history. However, you can configure it to communicate with one or more ElectrumX servers to build and display this data. In doing so, you should be aware that you'll be trusting those ElectrumX servers. If you configure multiple servers the results obtained from each will be cross-referenced against the others. Communicating with ElectrumX servers will also impact your privacy since the servers will know what addresses you're interested in. If these tradeoffs are acceptable, you can see a list of public ElectrumX servers here:
|
|
a(href="https://uasf.saltylemon.org/electrum") https://uasf.saltylemon.org/electrum
|
|
|
|
if (false)
|
|
pre
|
|
code #{JSON.stringify(transactions, null, 4)}
|
|
|
|
- var pageNumber = offset / limit + 1;
|
|
- var pageCount = Math.floor(txids.length / limit);
|
|
- if (pageCount * limit < txids.length) {
|
|
- pageCount++;
|
|
- }
|
|
- var paginationUrlFunction = function(x) {
|
|
- return paginationBaseUrl + "?limit=" + limit + "&offset=" + ((x - 1) * limit);
|
|
- }
|
|
|
|
hr
|
|
|
|
include includes/pagination.pug
|
|
|
|
|
|
|
|
|
|
div(id="tab-json", class="tab-pane", role="tabpanel")
|
|
div(class="highlight")
|
|
h4 Node.ValidateAddress
|
|
pre
|
|
code(class="language-json", data-lang="json") #{JSON.stringify(result.validateaddress, null, 4)}
|
|
|
|
h4 Electrum.Balance
|
|
pre
|
|
code(class="language-json", data-lang="json") #{JSON.stringify(electrumBalance, null, 4)}
|
|
|
|
h4 Electrum.History
|
|
pre
|
|
code(class="language-json", data-lang="json") #{JSON.stringify(electrumHistory, null, 4)}
|
|
|
|
|
|
|