601 lines
56 KiB
Go
601 lines
56 KiB
Go
// Copyright 2017-2021 DERO Project. All rights reserved.
|
|
// Use of this source code in any form is governed by RESEARCH license.
|
|
// license can be found in the LICENSE file.
|
|
// GPG: 0F39 E425 8C65 3947 702A 8234 08B2 0360 A03A 9DE8
|
|
//
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
|
|
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
|
// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
|
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
|
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
package main
|
|
|
|
// this files defines all the templates
|
|
|
|
var header_template string = `
|
|
{{define "header"}}
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
|
|
<title>{{ .title }}</title>
|
|
<!--<link rel="stylesheet" type="text/css" href="/css/style.css">-->
|
|
<style type="text/css">
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
color: green;
|
|
background-color: white;
|
|
}
|
|
|
|
h1, h2, h3, h4, h5, h6 {
|
|
text-align: center;
|
|
}
|
|
|
|
.center {
|
|
margin: auto;
|
|
width: 96%;
|
|
/*border: 1px solid #73AD21;
|
|
padding: 10px;*/
|
|
}
|
|
|
|
tr, li, #pages, .info {
|
|
font-family: "Lucida Console", Monaco, monospace;
|
|
font-size : 12px;
|
|
height: 22px;
|
|
}
|
|
|
|
#pages
|
|
{
|
|
margin-top: 15px;
|
|
}
|
|
|
|
td {
|
|
text-align: center;
|
|
}
|
|
|
|
a:link {
|
|
text-decoration: none;
|
|
color: blue;
|
|
}
|
|
|
|
a:visited {
|
|
text-decoration: none;
|
|
color: blue;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration: underline;
|
|
color: blue;
|
|
}
|
|
|
|
a:active {
|
|
text-decoration: none;
|
|
color: blue;
|
|
}
|
|
|
|
form {
|
|
display: inline-block;
|
|
text-align: center;
|
|
}
|
|
|
|
.style-1 input[type="text"] {
|
|
padding: 2px;
|
|
border: solid 1px #dcdcdc;
|
|
transition: box-shadow 0.3s, border 0.3s;
|
|
}
|
|
.style-1 input[type="text"]:focus,
|
|
.style-1 input[type="text"].focus {
|
|
border: solid 1px #707070;
|
|
box-shadow: 0 0 5px 1px #969696;
|
|
}
|
|
|
|
|
|
.tabs {
|
|
position: relative;
|
|
min-height: 220px; /* This part sucks */
|
|
clear: both;
|
|
margin: 25px 0;
|
|
}
|
|
|
|
.tab {
|
|
float: left;
|
|
}
|
|
|
|
.tab label {
|
|
background: white;
|
|
padding: 10px;
|
|
border: 1px solid #ccc;
|
|
margin-left: -1px;
|
|
position: relative;
|
|
left: 1px;
|
|
}
|
|
|
|
.tab [type=radio] {
|
|
display: none;
|
|
}
|
|
|
|
.content {
|
|
position: absolute;
|
|
top: 28px;
|
|
left: 0;
|
|
background: white;
|
|
right: 0;
|
|
bottom: 0;
|
|
padding: 20px;
|
|
border: 1px solid #ccc;
|
|
}
|
|
|
|
[type=radio]:checked ~ label {
|
|
background: #505050 ;
|
|
border-bottom: 1px solid green;
|
|
z-index: 2;
|
|
}
|
|
|
|
[type=radio]:checked ~ label ~ .content {
|
|
z-index: 1;
|
|
}
|
|
|
|
input#toggle-1[type=checkbox] {
|
|
position: absolute;
|
|
/*top: -9999px;*/
|
|
left: -9999px;
|
|
|
|
}
|
|
label#show-decoded-inputs {
|
|
/*-webkit-appearance: push-button;*/
|
|
/*-moz-appearance: button;*/
|
|
display: inline-block;
|
|
/*margin: 60px 0 10px 0;*/
|
|
cursor: pointer;
|
|
background-color: white;;
|
|
color: green;
|
|
width: 100%;
|
|
text-align: center;
|
|
}
|
|
|
|
div#decoded-inputs{
|
|
display: none;
|
|
}
|
|
|
|
/* Toggled State */
|
|
input#toggle-1[type=checkbox]:checked ~ div#decoded-inputs {
|
|
display: block;
|
|
}
|
|
</style>
|
|
|
|
</head>
|
|
<body>
|
|
<div>
|
|
|
|
<div class="center">
|
|
<h1 class="center">
|
|
<img alt="logo" style="vertical-align:middle" height="64" width="64" src="data:image/png;base64,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" />
|
|
|
|
|
|
<a href="/">{{ .title }} {{if .testnet}} TestNet {{end}}</a></h1>
|
|
<!-- <h4 style="font-size: 15px; margin: 0px">(no javascript - no cookies - no web analytics trackers - no images - open sourced)</h4> -->
|
|
</div>
|
|
|
|
|
|
<div class="center">
|
|
<form action="/search" method="get" style="width:100%; margin-top:15px" class="style-1">
|
|
<input type="text" name="value" size="120"
|
|
placeholder="block height, block hash, transaction hash">
|
|
<input type="submit" value="Search">
|
|
</form>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{{if .Network_Difficulty}}
|
|
<div class="center">
|
|
<h3 style="font-size: 12px; margin-top: 20px">
|
|
Server time: {{ .servertime }} | <a href="/txpool">Transaction pool</a>
|
|
</h3>
|
|
|
|
|
|
<h3 style="font-size: 12px; margin-top: 5px; margin-bottom: 3">
|
|
Network difficulty: {{ .Network_Difficulty }}
|
|
| Hash rate: {{ .hash_rate }} KH/s
|
|
| Average Block Time(50) {{.averageblocktime50}} sec
|
|
| Total supply : {{ .total_supply }}
|
|
| Mempool size : {{ .txpool_size }}
|
|
| Fee per kb: {{.fee_per_kb}}
|
|
| Median block size limit: {{.median_block_size}} kB
|
|
|
|
</h3>
|
|
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
`
|
|
|
|
var block_template string = `{{define "block"}}
|
|
{{ template "header" . }}
|
|
<div>
|
|
|
|
<H4>Block Topo height (unique): {{.block.TopoHeight}} Block height: ({{.block.Height}})</H4>
|
|
<H4>Block hash: {{.block.Hash}}</H4>
|
|
|
|
{{range $i, $a := .block.Tips}}
|
|
<H5>Previous blocks: <a href="/block/{{$a}}">{{$a}}</a></H5>
|
|
{{end}}
|
|
|
|
<!--
|
|
<H5>Next block: <a href="/block/a8ade20d5cad5e23105cfc25687beb2498844a984b1450330c67705b6c720596">a8ade20d5cad5e23105cfc25687beb2498844a984b1450330c67705b6c720596</a></H5>
|
|
-->
|
|
<table class="center">
|
|
<tr>
|
|
<td>Timestamp [UCT] (epoch):</td><td>{{.block.Block_time}} ({{.block.Epoch}})</td>
|
|
<td>Age [h:m:s]:</td><td>{{.block.Age}}</td>
|
|
<td>Δ [h:m:s]:</td><td></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Major.minor version:</td><td>{{.block.Major_Version}}.{{.block.Minor_Version}}</td>
|
|
<td>Block reward:</td><td>{{.block.Reward}}</td>
|
|
<td>Block size [kB]:</td><td>{{.block.Size}}</td>
|
|
</tr>
|
|
<tr>
|
|
<td>nonce:</td><td>{{.block.Nonce}}</td>
|
|
<td>Total fees:</td><td>{{.block.Fees}}</td>
|
|
<td>No of txs:</td><td>{{.block.Tx_Count}}</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<h3>Miner reward for this block</h3>
|
|
<table class="center">
|
|
<tr>
|
|
<td>Miner Address</td>
|
|
<td>outputs</td>
|
|
<td>size [kB]</td>
|
|
<td>version</td>
|
|
</tr>
|
|
<tr>
|
|
<td>{{index .block.Mtx.OutAddress 0}}</a>
|
|
<td>{{.block.Mtx.Amount}}</td>
|
|
<td>{{.block.Mtx.Size}}</td>
|
|
<td>{{.block.Mtx.Version}}</td>
|
|
</tr>
|
|
|
|
</table>
|
|
|
|
<h3>Transactions ({{.block.Tx_Count}})</h3>
|
|
<table class="center" style="width:80%">
|
|
<tr>
|
|
<td>hash</td>
|
|
<td>type</td>
|
|
<td>fee</td>
|
|
<td>ring size</td>
|
|
<td>version</td>
|
|
<td>size [kB]</td>
|
|
</tr>
|
|
{{range .block.Txs}}
|
|
<tr>
|
|
|
|
{{if .Skipped }}<td><a href="/tx/{{.Hash}}"><font color="indianred">{{.Hash}}</font> </a></td>
|
|
{{else}}
|
|
<td><a href="/tx/{{.Hash}}">{{.Hash}}</a></td>
|
|
{{end}}
|
|
<td>{{.TransactionType}}</td>
|
|
<td>{{.Fee}}</td>
|
|
<td>{{.Ring_size}}</td>
|
|
<td>{{.Version}}</td>
|
|
<td>{{.Size}}</td>
|
|
</tr>
|
|
{{end}}
|
|
</table>
|
|
|
|
</div>
|
|
|
|
{{ template "footer" . }}
|
|
{{end}}
|
|
`
|
|
|
|
var tx_template string = `{{define "tx"}}
|
|
{{ template "header" . }}
|
|
<div>
|
|
<H4 style="margin:5px">Tx hash: {{.info.Hash}} Type {{.info.TransactionType }}</H4>
|
|
<H5 style="margin:5px">Tx prefix hash: {{.info.PrefixHash}}</H5>
|
|
|
|
<H5>Block: <a href="/block/{{.info.ValidBlock}}">{{.info.ValidBlock}}</a> (VALID) </H5>
|
|
|
|
{{range $i, $e := .info.InvalidBlock}}
|
|
<H5>Block: <a href="/block/{{$e}}">{{$e}}</a></H5>
|
|
{{end}}
|
|
|
|
{{if eq .info.TransactionType "PREMINE"}}
|
|
<table class="center" style="width: 80%; margin-top:10px">
|
|
<tr>
|
|
<td>{{index .info.OutAddress 0}} Registered with funds {{.info.Amount}}</td>
|
|
</tr>
|
|
</table>
|
|
|
|
{{end}}
|
|
|
|
{{if eq .info.TransactionType "REGISTRATION"}}
|
|
<table class="center" style="width: 80%; margin-top:10px">
|
|
<tr>
|
|
<td>{{index .info.OutAddress 0}} Registered </td>
|
|
</tr>
|
|
</table>
|
|
|
|
{{end}}
|
|
|
|
{{if eq .info.TransactionType "NORMAL"}}
|
|
|
|
<H5 style="margin:5px">Tx RootHash: {{.info.RootHash}} built height : {{.info.HeightBuilt}} </H5>
|
|
|
|
{{if .info.PayID32}}
|
|
<H5 style="margin:5px">PaymentID: {{.info.PayID32}}</H5>
|
|
{{end}}
|
|
{{if .info.PayID8}}
|
|
<H5 style="margin:5px">Encrypted PaymentID: {{.info.PayID8}}</H5>
|
|
{{end}}
|
|
|
|
<table class="center" style="width: 80%; margin-top:10px">
|
|
<tr>
|
|
<td>Timestamp: {{.info.Timestamp}} </td>
|
|
<td>Timestamp [UTC]: {{.info.Block_time}}</td>
|
|
<td>Age [y:d:h:m:s]: {{.info.Age}} </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Block: <a href="/block/{{.info.Height}}">{{.info.Height}}</a></td>
|
|
<td>Fee: {{.info.Fee}}</td>
|
|
<td>Tx size: {{.info.Size}} kB</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Tx version: {{.info.Version}}</td>
|
|
<td>No of confirmations: {{.info.Depth}}</td>
|
|
<td>Signature type: {{.info.Type}}</td>
|
|
</tr>
|
|
<tr>
|
|
<td colspan="3">Extra: {{.info.Extra}}</td>
|
|
</tr>
|
|
</table>
|
|
<h3>{{len .info.OutAddress}} inputs/outputs (RING size)</h3>
|
|
<div class="center">
|
|
<table class="center">
|
|
<tr>
|
|
<td>address</td>
|
|
<td>amount</td>
|
|
</tr>
|
|
|
|
{{range $i, $e := .info.OutAddress}}
|
|
<tr>
|
|
<td>{{ $e }}</td>
|
|
<td>{{$.info.Amount}}</td>
|
|
</tr>
|
|
{{end}}
|
|
</table>
|
|
</div>
|
|
|
|
<!-- TODO currently we donot enable user to prove or decode something -->
|
|
<br/>
|
|
<br/>
|
|
<div class="center" style="border: 1px">
|
|
<table class="center" border="1">
|
|
<tr>
|
|
|
|
|
|
<td> <h3>Prove to someone that you have sent them DERO in this transaction</h3> </td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
proof can be obtained using <i>get_tx_key</i>
|
|
command in <i>dero-wallet-cli</i> or from the statement
|
|
<br>
|
|
Note: proof is sent to the server, as the calculations are done on the server side
|
|
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
|
|
|
|
|
|
<form method="post" style="width:100%;margin-top:2px" class="style-1">
|
|
<input name="txproof" size="120" placeholder="Tx Proof here" type="text"><br>
|
|
<input name="raw_tx_data" value="" type="hidden">
|
|
<!--above raw_tx_data field only used when checking raw tx data through tx pusher NOTE: comment should be be closed -->
|
|
<input value="Prove sending" style="margin-top:5px" type="submit">
|
|
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
|
|
{{if .info.Proof_amount }}
|
|
<tr>
|
|
<td><h2><font color="blue">{{.info.Proof_address}} Received {{.info.Proof_amount}} DERO
|
|
|
|
{{if .info.Proof_PayID8}}
|
|
<br/> Decrypted Payment ID {{ .info.Proof_PayID8}}
|
|
{{end}}
|
|
</font> </h2>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
|
|
{{if .info.Proof_error }}
|
|
<tr>
|
|
<td> <font color="red">{{.info.Proof_error}}</font>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
|
|
|
|
|
|
</table>
|
|
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if eq .info.CoinBase false}}
|
|
|
|
<!-- <h3>{{.info.In}} input(s) for total of ? dero</h3>
|
|
<div class="center">
|
|
<table class="center">
|
|
<tr>
|
|
<td>
|
|
|
|
</table>
|
|
</div>
|
|
-->
|
|
{{end}}
|
|
</div>
|
|
{{ template "footer" . }}
|
|
|
|
{{end}}`
|
|
|
|
var txpool_template string = `{{define "txpool"}}
|
|
<h2 style="margin-bottom: 0px">
|
|
Transaction pool
|
|
</h2>
|
|
<h4 style="font-size: 12px; margin-top: 0px">(no of txs: {{ .txpool_size }}, size: 0.00 kB, updated every 5 seconds)</h4>
|
|
<div class="center">
|
|
|
|
<table class="center" style="width:80%">
|
|
<tr>
|
|
<td>height built</td>
|
|
<td>transaction hash</td>
|
|
<td>fee</td>
|
|
<td>ring size</td>
|
|
<td>tx size [kB]</td>
|
|
</tr>
|
|
|
|
|
|
{{range .mempool}}
|
|
<tr>
|
|
<td>{{.HeightBuilt}}</td>
|
|
<td><a href="/tx/{{.Hash}}">{{.Hash}}</a></td>
|
|
<td>{{.Fee}}</td>
|
|
<td>{{.Ring_size}}</td>
|
|
<td>{{.Size}}</td>
|
|
|
|
</tr>
|
|
|
|
{{end}}
|
|
</table>
|
|
|
|
|
|
|
|
</div>
|
|
{{end}}`
|
|
|
|
// full page txpool_template
|
|
var txpool_page_template string = `{{define "txpool_page"}}
|
|
{{ template "header" . }}
|
|
{{ template "txpool" . }}
|
|
{{ template "footer" . }}
|
|
{{end}}`
|
|
|
|
// not found page txpool_template
|
|
var notfound_page_template string = `{{define "notfound_page"}}
|
|
{{ template "header" . }}
|
|
|
|
<h2 style="margin-bottom: 0px"><font color="red">No details found in database</font></h2>
|
|
{{ template "footer" . }}
|
|
{{end}}`
|
|
|
|
var main_template string = `
|
|
{{define "main"}}
|
|
{{ template "header" . }}
|
|
{{ template "txpool" . }}
|
|
|
|
<h2 style="margin-bottom: 0px">Transactions in the last 11 blocks</h2>
|
|
|
|
<h4 style="font-size: 14px; margin-top: 0px">(Median size of these blocks: 0.09 kB)</h4>
|
|
|
|
<div class="center">
|
|
|
|
<table class="center">
|
|
<tr>
|
|
<td>height</td>
|
|
<td>topo height</td>
|
|
<td>age [h:m:s]<!--(Δm)--></td>
|
|
<td>size [kB]<!--(Δm)--></td>
|
|
<td>tx hash</td>
|
|
<td>type</td>
|
|
<td>fees</td>
|
|
<td>ring size</td>
|
|
<td>tx size [kB]</td>
|
|
</tr>
|
|
|
|
|
|
{{range .block_array}}
|
|
<tr>
|
|
<td> {{if .SyncBlock }} <strong>{{.Height}}</strong> {{else}} <font color="purple">{{.Height}}</font> {{end}} </td>
|
|
<td><a href="/block/{{.TopoHeight}}">{{.TopoHeight}}</a></td>
|
|
|
|
<td>{{.Age}}</td>
|
|
<td>{{.Size}}</td>
|
|
<td>block <a href="/block/{{.Hash}}">{{.Hash}} </a></td>
|
|
<td>N/A</td>
|
|
<td>{{.Mtx.Amount}}</td>
|
|
|
|
<td>0</td>
|
|
<td>{{.Mtx.Size}}</td>
|
|
|
|
</tr>
|
|
|
|
{{range .Txs}}
|
|
<tr>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
<td></td>
|
|
|
|
{{if .Skipped }}<td><a href="/tx/{{.Hash}}"><font color="indianred">{{.Hash}}</font> </a></td>
|
|
{{else}}
|
|
<td><a href="/tx/{{.Hash}}">{{.Hash}}</a></td>
|
|
{{end}}
|
|
|
|
|
|
<td>{{.TransactionType}}</td>
|
|
<td>{{.Fee}}</td>
|
|
<td>{{.Ring_size}}</td>
|
|
<td>{{.Size}}</td>
|
|
|
|
</tr>
|
|
{{end}}
|
|
|
|
{{end}}
|
|
</table>
|
|
{{ template "paging" . }}
|
|
|
|
</div>
|
|
{{ template "footer" . }}
|
|
{{end}}`
|
|
|
|
var paging_template string = `{{ define "paging"}}
|
|
|
|
<div id="pages" class="center" style="text-align: center;">
|
|
<a href="/page/{{.previous_page}}">previous page</a> |
|
|
<a href="/page/1">first page</a> |
|
|
current page: {{.current_page}}/<a href="/page/{{.total_page}}">{{.total_page}}</a>
|
|
| <a href="/page/{{.next_page}}">next page</a> | <a href="/">last page</a>
|
|
</div>
|
|
|
|
{{end}}`
|
|
|
|
var footer_template string = ` {{define "footer"}}
|
|
<div class="center">
|
|
<h6 style="margin-top:10px">
|
|
<a href="https://github.com/deroproject/">DERO explorer source code</a>
|
|
| explorer version (api): under development (1.0)
|
|
| dero version: golang pre-alpha
|
|
| Copyright 2017-2021 Dero Project
|
|
</h6>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
{{end}}
|
|
`
|