github.com/trezor/blockbook@v0.4.1-0.20240328132726-e9a08582ee2c/static/templates/tx.html (about)

     1  {{define "specific"}}{{$tx := .Tx}}{{$data := .}}
     2  <div class="row">
     3      <h1 class="col-12">Transaction</h1>
     4  </div>
     5  <div class="row pt-3">
     6      <h5 class="col-12 d-flex h-data"><span class="ellipsis copyable">{{$tx.Txid}}</span></h5>
     7  </div>
     8  <table class="table data-table info-table">
     9      <tbody>
    10          {{if $tx.Confirmations}}
    11          <tr>
    12              <td>Mined Time</td>
    13              <td>{{unixTimeSpan $tx.Blocktime}}</td>
    14          </tr>
    15          {{end}}
    16          <tr>
    17              <td>In Block</td>
    18              <td class="ellipsis" style="max-width: 280px">{{if $tx.Confirmations}}{{$tx.Blockhash}}{{else}}<span class="badge bg-danger">Unconfirmed</span>{{end}}</td>
    19          </tr>
    20          {{if $tx.Confirmations}}
    21          <tr>
    22              <td>In Block Height</td>
    23              <td><a href="/block/{{$tx.Blockheight}}">{{formatInt $tx.Blockheight}}</a></td>
    24          </tr>{{end}}
    25          {{if $tx.EthereumSpecific}}
    26          <tr>
    27              <td>Status</td>
    28              {{if $tx.EthereumSpecific.Status}}
    29              {{if eq $tx.EthereumSpecific.Status 1}}
    30              <td><span class="badge bg-success">Success</span></td>
    31              {{else}}
    32              {{if eq $tx.EthereumSpecific.Status -1}}
    33              <td>Pending</td>
    34              {{else}}
    35              <td>Unknown</td>
    36              {{end}}
    37              {{end}}
    38              {{else}}
    39              <td><span class="badge bg-danger">Failed</span>{{if $tx.EthereumSpecific.Error}}<span class="text-danger small fw-normal ms-1"> {{$tx.EthereumSpecific.Error}}{{end}}</td>
    40              {{end}}
    41          </tr>
    42          <tr>
    43              <td>Value</td>
    44              <td>{{amountSpan $tx.ValueOutSat $data "copyable"}}</td>
    45          </tr>
    46          <tr>
    47              <td>Gas Used / Limit</td>
    48              <td>{{if $tx.EthereumSpecific.GasUsed}}{{formatBigInt $tx.EthereumSpecific.GasUsed}}{{else}}pending{{end}} / {{formatBigInt $tx.EthereumSpecific.GasLimit}}</td>
    49          </tr>
    50          <tr>
    51              <td>Gas Price</td>
    52              <td>{{amountSpan $tx.EthereumSpecific.GasPrice $data "copyable"}} <span class="fw-normal ps-3">({{amountSatsSpan $tx.EthereumSpecific.GasPrice $data "copyable"}} Gwei)</span></td>
    53          </tr>
    54          {{else}}
    55          <tr>
    56              <td>Total Input</td>
    57              <td>{{amountSpan $tx.ValueInSat $data "copyable"}}</td>
    58          </tr>
    59          <tr>
    60              <td>Total Output</td>
    61              <td>{{amountSpan $tx.ValueOutSat $data "copyable"}}</td>
    62          </tr>
    63          {{if $tx.VSize}}
    64          <tr>
    65              <td>Size / vSize</td>
    66              <td>{{formatInt $tx.Size}} / {{formatInt $tx.VSize}}</td>
    67          </tr>
    68          {{else}}
    69          {{if $tx.Size}}
    70          <tr>
    71              <td>Size</td>
    72              <td>{{formatInt $tx.Size}}</td>
    73          </tr>
    74          {{end}}
    75          {{end}}
    76          {{end}}
    77          {{if $tx.FeesSat}}
    78          <tr>
    79              <td>Fees</td>
    80              <td>{{amountSpan $tx.FeesSat $data "copyable"}}{{if $tx.Size}} ({{feePerByte $tx}}){{end}}</td>
    81          </tr>{{end}}
    82          {{if not $tx.Confirmations}}
    83          {{if $tx.ConfirmationETABlocks}}
    84          <tr>
    85              <td>Confirmation ETA</td>
    86              <td>
    87                  <span tt="Estimated first potential confirmation of this transaction.">in approx. {{relativeTime $tx.ConfirmationETASeconds}} <span class="fw-normal ps-1">({{$tx.ConfirmationETABlocks}} blocks)</span></span>
    88              </td>
    89          </tr>
    90          {{end}}
    91          <tr>
    92              <td><span tt="Replace by fee">RBF</span></td>
    93              <td>
    94                  {{if $tx.Rbf}}
    95                  <span tt="Replace-by-Fee transaction, could be overridden by a new transaction">ON</span>
    96                  {{else}}
    97                  <span tt="Final transaction that can not be replaced unless it is dropped from the mempool.">OFF️</span>
    98                  {{end}}
    99              </td>
   100          </tr>
   101          {{end}}
   102      </tbody>
   103  </table>
   104  <div class="pt-1">
   105      {{template "txdetail" .}}
   106  </div>
   107  {{if eq .ChainType 1}}
   108  {{if $tx.EthereumSpecific.ParsedData}}
   109  {{if $tx.EthereumSpecific.ParsedData.Function }}
   110  <div class="pt-2">
   111      <h5>Input Data</h5>
   112      <div class="accordion" id="inputData">
   113          <div class="accordion-item">
   114            <h2 class="accordion-header" id="inputDataHeading">
   115              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#inputDataBody" aria-expanded="false" aria-controls="inputDataBody">
   116                  <h5 class="mb-0">{{if $tx.EthereumSpecific.ParsedData.Name}}{{$tx.EthereumSpecific.ParsedData.Name}} {{end}}{{if $tx.EthereumSpecific.ParsedData.MethodId}} <span class="fw-normal small" tt="4-byte signature">{{$tx.EthereumSpecific.ParsedData.MethodId}}</span>{{end}}</h5>
   117              </button>
   118            </h2>
   119            <div id="inputDataBody" class="accordion-collapse collapse" aria-labelledby="inputDataHeading" data-bs-parent="#inputData">
   120              <div class="accordion-body">
   121                  <div class="row">
   122                      <div class="col-12 mx-1 mx-md-0"><span class="copyable" style="overflow-wrap: break-word;">{{$tx.EthereumSpecific.Data}}</span></div>
   123                      <div class="col-12 mx-1 mx-md-0 pt-2"><span class="copyable">{{$tx.EthereumSpecific.ParsedData.Function}}</span></div>
   124                      {{if $tx.EthereumSpecific.ParsedData.Params}}
   125                      <div class="col-12">
   126                      <table class="table data-table mt-2 mb-0">
   127                      <thead>
   128                          <tr>
   129                              <th style="width: 5%;">#</th>
   130                              <th style="width: 20%;">Type</th>
   131                              <th>Data</th>
   132                          </tr>
   133                      </thead>
   134                      <tbody>
   135                          {{range $i,$p := $tx.EthereumSpecific.ParsedData.Params}}
   136                          <tr>
   137                              <td>{{$i}}</td>
   138                              <td>{{$p.Type}}</td>
   139                              <td>
   140                                  {{range $j,$v := $p.Values}}
   141                                  {{if $j}}<br>{{end}}
   142                                  {{if hasPrefix $p.Type "address"}}<a href="/address/{{$v}}">{{addressAliasSpan $v $data}}</a>{{else}}<span class="copyable">{{$v}}</span>{{end}}
   143                                  {{end}}
   144                              </td>
   145                          </tr>
   146                          {{end}}
   147                      </tbody>
   148                      </table>
   149                      </div>
   150                      {{end}}
   151                  </div>
   152              </div>
   153            </div>
   154          </div>
   155      </div>
   156  </div>
   157  {{end}}
   158  {{end}}
   159  {{end}}
   160  <div class="pt-4">
   161      <h5>Raw Transaction</h5>
   162      <div class="json">
   163          <pre id="raw"></pre>
   164      </div>
   165      <script type="text/javascript">
   166          var raw = {{$tx.CoinSpecificData}};
   167          document.getElementById('raw').innerHTML = syntaxHighlight(raw);
   168      </script>
   169  </div>
   170  {{end}}