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