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

     1  {{define "specific"}}{{$addr := .Address}}{{$data := .}}
     2  <div class="row g-0 ms-2 ms-lg-0">
     3      <div class="col-md-10 order-2 order-md-1">
     4          <h1>{{if $addr.ContractInfo}}Contract {{$addr.ContractInfo.Name}}{{if $addr.ContractInfo.Symbol}} ({{$addr.ContractInfo.Symbol}}){{end}}{{else}}Address {{addressAlias $addr.AddrStr $data}}{{end}}</h1>
     5          <h5 class="col-12 d-flex h-data pb-2"><span class="ellipsis copyable">{{$addr.AddrStr}}</span></h5>
     6          <h4 class="row">
     7              <div class="col-lg-6">{{formattedAmountSpan $addr.BalanceSat 0 $data.CoinShortcut $data "copyable"}}</div>
     8              {{if $addr.SecondaryValue}}<div class="col-lg-6">{{summaryValuesSpan 0 $addr.SecondaryValue $data}}</div>{{end}}
     9          </h4>
    10          {{if gt $addr.TotalSecondaryValue $addr.SecondaryValue}}
    11          <div class="row g-0 small text-muted">Including Tokens</div>
    12          <h4 class="row">
    13              <div class="col-lg-6">{{summaryValuesSpan $addr.TotalBaseValue 0 $data}}</div>
    14              <div class="col-lg-6">{{summaryValuesSpan 0 $addr.TotalSecondaryValue $data}}</div>
    15          </h4>
    16          {{end}}
    17      </div>
    18      <div class="col-md-2 order-1 order-md-2 d-flex justify-content-center justify-content-md-end mb-3 mb-md-0">
    19          <div id="qrcode"></div>
    20          <script type="text/javascript" src="/static/js/qrcode.min.js"></script>
    21          <script type="text/javascript">
    22              new QRCode(document.getElementById("qrcode"), { text: "{{$addr.AddrStr}}", width: 120, height: 120 });
    23          </script>
    24      </div>
    25  </div>
    26  <table class="table data-table info-table">
    27      <tbody>
    28          <tr>
    29              <td style="white-space: nowrap;"><h5>Confirmed</h5></td>
    30              <td></td>
    31          </tr>
    32          {{if eq .ChainType 1}}
    33          <tr>
    34              <td style="width: 25%;">Balance</td>
    35              <td>{{amountSpan $addr.BalanceSat $data "copyable"}}</td>
    36          </tr>
    37          <tr>
    38              <td>Transactions</td>
    39              <td>{{formatInt $addr.Txs}}</td>
    40          </tr>
    41          <tr>
    42              <td>Non-contract Transactions</td>
    43              <td>{{formatInt $addr.NonTokenTxs}}</td>
    44          </tr>
    45          <tr>
    46              <td>Internal Transactions</td>
    47              <td>{{formatInt $addr.InternalTxs}}</td>
    48          </tr>
    49          <tr>
    50              <td>Nonce</td>
    51              <td>{{$addr.Nonce}}</td>
    52          </tr>
    53          {{if $addr.ContractInfo}}
    54          {{if $addr.ContractInfo.Type}}
    55          <tr>
    56              <td style="width: 25%;">Contract type</td>
    57              <td>{{$addr.ContractInfo.Type}}</td>
    58          </tr>
    59          {{end}}
    60          {{if $addr.ContractInfo.CreatedInBlock}}
    61          <tr>
    62              <td style="width: 25%;">Created in Block</td>
    63              <td><a href="/block/{{$addr.ContractInfo.CreatedInBlock}}">{{formatUint32 $addr.ContractInfo.CreatedInBlock}}</a></td>
    64          </tr>
    65          {{end}}
    66          {{if $addr.ContractInfo.DestructedInBlock}}
    67          <tr>
    68              <td style="width: 25%;">Destructed in Block</td>
    69              <td><a href="/block/{{$addr.ContractInfo.DestructedInBlock}}">{{formatUint32 $addr.ContractInfo.DestructedInBlock}}</a></td>
    70          </tr>
    71          {{end}}
    72          {{end}}
    73          {{else}}
    74          <tr>
    75              <td style="width: 25%;">Total Received</td>
    76              <td>{{amountSpan $addr.TotalReceivedSat $data "copyable"}}</td>
    77          </tr>
    78          <tr>
    79              <td>Total Sent</td>
    80              <td>{{amountSpan $addr.TotalSentSat $data "copyable"}}</td>
    81          </tr>
    82          <tr>
    83              <td>Final Balance</td>
    84              <td>{{amountSpan $addr.BalanceSat $data "copyable"}}</td>
    85          </tr>
    86          <tr>
    87              <td>No. Transactions</td>
    88              <td>{{formatInt $addr.Txs}}</td>
    89          </tr>
    90          {{end}}
    91      </tbody>
    92  </table>
    93  {{if $addr.UnconfirmedTxs}}
    94  <table class="table data-table info-table">
    95      <tbody>
    96          <tr>
    97              <td style="white-space: nowrap;"><h5>Unconfirmed</h5></td>
    98              <td></td>
    99          </tr>
   100          <tr>
   101              <td style="width: 25%;">Unconfirmed Balance</td>
   102              <td>{{amountSpan $addr.UnconfirmedBalanceSat $data "copyable"}}</td>
   103          </tr>
   104          <tr>
   105              <td>No. Transactions</td>
   106              <td>{{formatInt $addr.UnconfirmedTxs}}</td>
   107          </tr>
   108      </tbody>
   109  </table>
   110  {{end}}
   111  {{if eq .ChainType 1}}
   112  {{if tokenCount $addr.Tokens .FungibleTokenName}}
   113  <div class="accordion mt-2 mb-2" id="erc20">
   114      <div class="accordion-item">
   115          <div class="accordion-header" id="erc20Heading">
   116              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#erc20Body" aria-expanded="false" aria-controls="erc20Body">
   117                  <div class="row g-0 w-100">
   118                      <h5 class="col-md-4 mb-md-0">{{.FungibleTokenName}} Tokens <span class="badge bg-secondary">{{tokenCount $addr.Tokens .FungibleTokenName}}</span></h5>
   119                      <h5 class="col-md-8 mb-md-0"><span tt="Total value of tokens">{{summaryValuesSpan $addr.TokensBaseValue $addr.TokensSecondaryValue $data}}</span></h5>
   120                  </div>
   121              </button>
   122          </div>
   123          <div id="erc20Body" class="accordion-collapse collapse" aria-labelledby="erc20Heading" data-bs-parent="#erc20">
   124              <div class="accordion-body">
   125                  <table class="table data-table mt-0 mb-0">
   126                      <tbody>
   127                          <tr>
   128                              <th style="width: 25%;">Contract</th>
   129                              <th style="width: 30%;">Quantity</th>
   130                              <th style="width: 35%;">Value</th>
   131                              <th class="text-end" style="width: 10%;"><span class="d-none d-md-block">Transfers</span><span class="d-block d-md-none">#</span></th>
   132                          </tr>
   133                          {{range $t := $addr.Tokens}}
   134                          {{if eq $t.Type $.FungibleTokenName}}
   135                          <tr>
   136                              <td class="ellipsis"><a href="/address/{{$t.Contract}}">{{if $t.Name}}<span class="copyable" cc="{{$t.Contract}}" alias-type="Contract">{{$t.Name}}</span>{{else}}<span class="copyable">{{$t.Contract}}</span>{{end}}</a></td>
   137                              <td>{{formattedAmountSpan $t.BalanceSat $t.Decimals $t.Symbol $data "copyable"}}</td>
   138                              <td>{{summaryValuesSpan $t.BaseValue $t.SecondaryValue $data}}</span></td>
   139                              <td class="text-end">{{formatInt $t.Transfers}}</td>
   140                          </tr>
   141                          {{end}}
   142                          {{end}}
   143                      </tbody>
   144                  </table>
   145              </div>
   146          </div>
   147      </div>
   148  </div>
   149  {{end}}
   150  {{if tokenCount $addr.Tokens .NonFungibleTokenName}}
   151  <div class="accordion mt-2 mb-2" id="erc721">
   152      <div class="accordion-item">
   153          <div class="accordion-header" id="erc721Heading">
   154              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#erc721Body" aria-expanded="false" aria-controls="erc721Body">
   155                  <div class="row g-0 w-100">
   156                      <h5 class="col-12 mb-md-0">{{.NonFungibleTokenName}} Tokens <span class="badge bg-secondary">{{tokenCount $addr.Tokens .NonFungibleTokenName}}</span></h5>
   157                  </div>
   158              </button>
   159          </div>
   160          <div id="erc721Body" class="accordion-collapse collapse" aria-labelledby="erc721Heading" data-bs-parent="#erc721">
   161              <div class="accordion-body">
   162                  <table class="table data-table mt-0 mb-0">
   163                      <tbody>
   164                          <tr>
   165                              <th style="width: 25%;">Contract</th>
   166                              <th style="width: 65%;">Tokens</th>
   167                              <th class="text-end" style="width: 10%;"><span class="d-none d-md-block">Transfers</span><span class="d-block d-md-none">#</span></th>
   168                          </tr>
   169                          {{range $t := $addr.Tokens}}
   170                          {{if eq $t.Type $.NonFungibleTokenName}}
   171                          <tr>
   172                              <td class="ellipsis"><a href="/address/{{$t.Contract}}">{{if $t.Name}}<span class="copyable" cc="{{$t.Contract}}" alias-type="Contract">{{$t.Name}}</span>{{else}}<span class="copyable">{{$t.Contract}}</span>{{end}}</a></td>
   173                              <td>
   174                                  {{range $i, $iv := $t.Ids}}{{if $i}}, {{end}}<a href="/nft/{{$t.Contract}}/{{formatAmountWithDecimals $iv 0}}">{{formatAmountWithDecimals $iv 0}}</a>{{end}}
   175                              </td>
   176                              <td class="text-end">{{$t.Transfers}}</td>
   177                          </tr>
   178                          {{end}}
   179                          {{end}}
   180                      </tbody>
   181                  </table>
   182              </div>
   183          </div>
   184      </div>
   185  </div>
   186  {{end}}
   187  {{if tokenCount $addr.Tokens .MultiTokenName}}
   188  <div class="accordion mt-2 mb-2" id="erc1155">
   189      <div class="accordion-item">
   190          <div class="accordion-header" id="erc1155Heading">
   191              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#erc1155Body" aria-expanded="false" aria-controls="erc1155Body">
   192                  <div class="row g-0 w-100">
   193                      <h5 class="col-12 mb-md-0">{{.MultiTokenName}} Tokens <span class="badge bg-secondary">{{tokenCount $addr.Tokens .MultiTokenName}}</span></h5>
   194                  </div>
   195              </button>
   196          </div>
   197          <div id="erc1155Body" class="accordion-collapse collapse" aria-labelledby="erc1155Heading" data-bs-parent="#erc1155">
   198              <div class="accordion-body">
   199                  <table class="table data-table mt-0 mb-0">
   200                      <tbody>
   201                          <tr>
   202                              <th style="width: 25%;">Contract</th>
   203                              <th style="width: 65%;">Tokens</th>
   204                              <th class="text-end" style="width: 10%;"><span class="d-none d-md-block">Transfers</span><span class="d-block d-md-none">#</span></th>
   205                          </tr>
   206                          {{range $t := $addr.Tokens}}
   207                          {{if eq $t.Type $.MultiTokenName}}
   208                          <tr>
   209                              <td class="ellipsis"><a href="/address/{{$t.Contract}}">{{if $t.Name}}<span class="copyable" cc="{{$t.Contract}}" alias-type="Contract">{{$t.Name}}</span>{{else}}<span class="copyable">{{$t.Contract}}</span>{{end}}</a></td>
   210                              <td>
   211                                  {{range $i, $iv := $t.MultiTokenValues}}{{if $i}}, {{end}}{{formattedAmountSpan $iv.Value 0 $t.Symbol $data ""}} of ID <a href="/nft/{{$t.Contract}}/{{$iv.Id}}">{{$iv.Id}}</a>{{end}}
   212                              </td>
   213                              <td class="text-end">{{formatInt $t.Transfers}}</td>
   214                          </tr>
   215                          {{end}}
   216                          {{end}}
   217                      </tbody>
   218                  </table>
   219              </div>
   220          </div>
   221      </div>
   222  </div>
   223  {{end}}
   224  {{if $addr.StakingPools }}
   225  <div class="accordion mt-2 mb-2" id="stakingPools">
   226      <div class="accordion-item">
   227          <div class="accordion-header" id="stakingPoolsHeading">
   228              <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#stakingPoolsBody" aria-expanded="false" aria-controls="stakingPoolsBody">
   229                  <div class="row g-0 w-100">
   230                      <h5 class="col-12 mb-md-0">Staking Pools <span class="badge bg-secondary">{{len $addr.StakingPools}}</span></span></h5>
   231                  </div>
   232              </button>
   233          </div>
   234          <div id="stakingPoolsBody" class="accordion-collapse collapse" aria-labelledby="stakingPoolsHeading" data-bs-parent="#stakingPools">
   235              <div class="accordion-body">
   236                  {{range $sp := $addr.StakingPools}}
   237                  <table class="table data-table info-table mt-0 mb-2 ml-0">
   238                      <tbody>
   239                          <tr>
   240                              <td colspan="2" style="white-space: nowrap;"><span class="h5" style="color: var(--bs-body-color);">{{$sp.Name}}</span> {{$sp.Contract}}</td>
   241                          </tr>
   242                          <tr>
   243                              <td style="width: 25%;">Pending Balance</td>
   244                              <td>{{amountSpan $sp.PendingBalance $data "copyable"}}</td>
   245                          </tr>
   246                          <tr>
   247                              <td>Pending Deposited Balance</td>
   248                              <td>{{amountSpan $sp.PendingDepositedBalance $data "copyable"}}</td>
   249                          </tr>
   250                          <tr>
   251                              <td style="width: 25%;">Deposited Balance</td>
   252                              <td>{{amountSpan $sp.DepositedBalance $data "copyable"}}</td>
   253                          </tr>
   254                          <tr>
   255                              <td>Withdrawal Total Amount</td>
   256                              <td>{{amountSpan $sp.WithdrawTotalAmount $data "copyable"}}</td>
   257                          </tr>
   258                          <tr>
   259                              <td style="width: 25%;">Claimable Amount</td>
   260                              <td>{{amountSpan $sp.ClaimableAmount $data "copyable"}}</td>
   261                          </tr>
   262                          <tr>
   263                              <td>Restaked Reward</td>
   264                              <td>{{amountSpan $sp.RestakedReward $data "copyable"}}</td>
   265                          </tr>
   266                          <tr>
   267                              <td>Autocompound Balance</td>
   268                              <td>{{amountSpan $sp.AutocompoundBalance $data "copyable"}}</td>
   269                          </tr>
   270                      </tbody>
   271                  </table>
   272                  {{end}}
   273              </div>
   274          </div>
   275      </div>
   276  </div>
   277  {{end}}
   278  {{end}}
   279  {{if or $addr.Transactions $addr.Filter}}
   280  <div class="row pt-3 pb-1">
   281      <h3 class="col-sm-6 col-lg-3 m-0 align-self-center">Transactions</h3>
   282      <div class="col-sm-6 col-lg-3 my-2 my-lg-0 align-self-center">
   283          <select  class="w-100" onchange="self.location='?filter='+options[selectedIndex].value">
   284              <option>All</option>
   285              <option {{if eq $addr.Filter "inputs"}}selected{{end}} value="inputs">Address on input side</option>
   286              <option {{if eq $addr.Filter "outputs"}}selected{{end}} value="outputs">Address on output side</option>
   287              {{if $addr.Tokens}}
   288              <option {{if eq $addr.Filter "0"}}selected{{end}} value="0">Non-contract</option>
   289              <option {{if eq $addr.Filter "1"}}selected{{end}} value="1">Internal</option>
   290              {{range $t := $addr.Tokens}}
   291              {{if eq $t.Type $.FungibleTokenName}}
   292              <option {{if eq $addr.Filter $t.ContractIndex}}selected{{end}} value="{{$t.ContractIndex}}">{{if $t.Name}}{{$t.Name}}{{else}}{{$t.Contract}}{{end}} ({{$.FungibleTokenName}})</option>
   293              {{end}}
   294              {{end}}
   295              {{range $t := $addr.Tokens}}
   296              {{if eq $t.Type $.NonFungibleTokenName}}
   297              <option {{if eq $addr.Filter $t.ContractIndex}}selected{{end}} value="{{$t.ContractIndex}}">{{if $t.Name}}{{$t.Name}}{{else}}{{$t.Contract}}{{end}} ({{$.NonFungibleTokenName}})</option>
   298              {{end}}
   299              {{end}}
   300              {{range $t := $addr.Tokens}}
   301              {{if eq $t.Type $.MultiTokenName}}
   302              <option {{if eq $addr.Filter $t.ContractIndex}}selected{{end}} value="{{$t.ContractIndex}}">{{if $t.Name}}{{$t.Name}}{{else}}{{$t.Contract}}{{end}} ({{$.MultiTokenName}})</option>
   303              {{end}}
   304              {{end}}
   305              {{end}}
   306          </select>
   307      </div>
   308      <div class="col-lg-6">
   309          {{template "paging" $data}}
   310      </div>
   311  </div>
   312  <div>
   313      {{range $tx := $addr.Transactions}}{{$data := setTxToTemplateData $data $tx}}{{template "txdetail" $data}}{{end}}
   314  </div>
   315  {{template "paging" $data }}
   316  {{end}}{{end}}