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

     1  {{define "txdetail"}}{{$cs := .CoinShortcut}}{{$addr := .AddrStr}}{{$tx := .Tx}}{{$data := .}}
     2  <div class="tx-detail">
     3      <div class="row head">
     4          <div class="col-xs-7 col-md-8{{if eq $tx.EthereumSpecific.Status 0}} txerror{{end}}">
     5              <a href="/tx/{{$tx.Txid}}" class="ellipsis copyable txid">{{$tx.Txid}}</a>
     6              {{if $tx.Rbf}}<span class="ps-1" tt="Replace-by-Fee (RBF) transaction, could be overridden"> RBF</span>{{end}}
     7          </div>
     8          {{if $tx.Blocktime}}<div class="col-xs-5 col-md-4 text-end">{{if $tx.Confirmations}}mined{{else}}first seen{{end}} <span class="txvalue ms-1">{{unixTimeSpan $tx.Blocktime}}</span></div>{{end}}
     9          {{if eq $tx.EthereumSpecific.Status 0}}<div class="col-12 txerror pb-1"><span class="badge bg-danger">Failed</span>{{if $tx.EthereumSpecific.Error}}<span class="small ms-1">{{$tx.EthereumSpecific.Error}}</span>{{end}}</div>{{end}}
    10          {{if $tx.EthereumSpecific.ParsedData}}
    11              {{if $tx.EthereumSpecific.ParsedData.Name}}<div class="col-12 small"><span class="txvalue">{{$tx.EthereumSpecific.ParsedData.Name}}</span>{{if $tx.EthereumSpecific.ParsedData.MethodId}}<span class="ms-1" tt="4-byte signature"> ({{$tx.EthereumSpecific.ParsedData.MethodId}})</span>{{end}}</div>{{else}}
    12              {{if $tx.EthereumSpecific.ParsedData.MethodId}}<div class="col-12 small txvalue"><span tt="4-byte signature">{{$tx.EthereumSpecific.ParsedData.MethodId}}</span></div>{{end}}
    13              {{end}}
    14          {{end}}
    15      </div>
    16      <div class="row body">
    17          <div class="col-md-4">
    18              <div class="row tx-in">
    19                  {{range $vin := $tx.Vin}}
    20                  <div class="col-12{{if $vin.IsOwn}} tx-own{{end}}">
    21                      {{range $a := $vin.Addresses}}
    22                      <span class="ellipsis">
    23                          {{if and (ne $a $addr) $vin.IsAddress}}<a href="/address/{{$a}}">{{addressAliasSpan $a $data}}</a>{{else}}{{addressAliasSpan $a $data}}{{end}}
    24                      </span>
    25                      {{else}}
    26                      Unparsed address
    27                      {{end}}
    28                  </div>
    29                  {{else}}
    30                  <div class="col-12">No Inputs</div>
    31                  {{end}}
    32              </div>
    33          </div>
    34          <div class="col-md-1 col-xs-12 text-center">&nbsp;<span class="octicon"></span></div>
    35          <div class="col-md-4">
    36              <div class="row tx-out">
    37                  {{range $vout := $tx.Vout}}
    38                  <div class="col-12{{if $vout.IsOwn}} tx-own{{end}}">
    39                      {{range $a := $vout.Addresses}}
    40                      <span class="ellipsis">
    41                          {{if and (ne $a $addr) $vout.IsAddress}}<a href="/address/{{$a}}">{{addressAliasSpan $a $data}}</a>{{else}}{{addressAliasSpan $a $data}}{{end}}
    42                      </span>
    43                      {{else}}
    44                      Unparsed address
    45                      {{end}}
    46                  </div>
    47                  {{else}}
    48                  <div class="col-12">No Outputs</div>
    49                  {{end}}
    50              </div>
    51          </div>
    52          <div class="col-md-3 amt-out">{{amountSpan $tx.ValueOutSat $data "tx-out copyable"}}</div>
    53      </div>
    54  
    55      {{if eq $tx.EthereumSpecific.Type 1}}
    56      <div class="row subhead">
    57          Contract creation
    58      </div>
    59      <div class="row body">
    60          <div class="col-md-4">
    61              <div class="row tx-in">
    62                  <div class="col-12 ellipsis{{if isOwnAddress $data $tx.EthereumSpecific.CreatedContract}} tx-own{{end}}">
    63                      {{if ne $tx.EthereumSpecific.CreatedContract $addr}}<a href="/address/{{$tx.EthereumSpecific.CreatedContract}}">{{addressAliasSpan $tx.EthereumSpecific.CreatedContract $data}}</a>{{else}}{{addressAliasSpan $tx.EthereumSpecific.CreatedContract $data}}{{end}}
    64                  </div>
    65              </div>
    66          </div>
    67      </div>
    68      {{end}}
    69  
    70      {{if $tx.EthereumSpecific.InternalTransfers}}
    71      <div class="row subhead">
    72          Internal Transactions
    73      </div>
    74      {{range $tt := $tx.EthereumSpecific.InternalTransfers}}
    75      {{if eq $tt.Type 1}}<div class="row subhead-2">Contract creation</div>{{end}}
    76      {{if eq $tt.Type 2}}<div class="row subhead-2">Contract destruction</div>{{end}}
    77      <div class="row body">
    78          <div class="col-md-4">
    79              <div class="row tx-addr">
    80                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.From}} tx-own{{end}}">
    81                      {{if ne $tt.From $addr}}<a href="/address/{{$tt.From}}">{{addressAliasSpan $tt.From $data}}</a>{{else}}{{addressAliasSpan $tt.From $data}}{{end}}
    82                  </div>
    83              </div>
    84          </div>
    85          <div class="col-md-1 col-xs-12 text-center">&nbsp;<span class="octicon"></span></div>
    86          <div class="col-md-4">
    87              <div class="row tx-addr">
    88                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.To}} tx-own{{end}}">
    89                      {{if ne $tt.To $addr}}<a href="/address/{{$tt.To}}">{{addressAliasSpan $tt.To $data}}</a>{{else}}{{addressAliasSpan $tt.To $data}}{{end}}
    90                  </div>
    91              </div>
    92          </div>
    93          <div class="col-md-3 amt-out">{{amountSpan $tt.Value $data "tx-out copyable"}}</div>
    94      </div>
    95      {{end}}
    96      {{end}}
    97  
    98      {{if tokenTransfersCount $tx .FungibleTokenName}}
    99      <div class="row subhead">
   100          {{.FungibleTokenName}} Token Transfers
   101      </div>
   102      {{range $tt := $tx.TokenTransfers}}
   103      {{if eq $tt.Type $.FungibleTokenName}}
   104      <div class="row body">
   105          <div class="col-md-4">
   106              <div class="row tx-addr">
   107                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.From}} tx-own{{end}}">
   108                      {{if ne $tt.From $addr}}<a href="/address/{{$tt.From}}">{{addressAliasSpan $tt.From $data}}</a>{{else}}{{addressAliasSpan $tt.From $data}}{{end}}
   109                  </div>
   110              </div>
   111          </div>
   112          <div class="col-md-1 col-xs-12 text-center">&nbsp;<span class="octicon"></span></div>
   113          <div class="col-md-4">
   114              <div class="row tx-addr">
   115                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.To}} tx-own{{end}}">
   116                      {{if ne $tt.To $addr}}<a href="/address/{{$tt.To}}">{{addressAliasSpan $tt.To $data}}</a>{{else}}{{addressAliasSpan $tt.To $data}}{{end}}
   117                  </div>
   118              </div>
   119          </div>
   120          <div class="col-md-3 amt-out">{{tokenAmountSpan $tt $data "tx-out copyable"}}</div>
   121      </div>
   122      {{end}}
   123      {{end}}
   124      {{end}}
   125  
   126      {{if tokenTransfersCount $tx .NonFungibleTokenName}}
   127      <div class="row subhead">
   128          {{.NonFungibleTokenName}} Token Transfers
   129      </div>
   130      {{range $tt := $tx.TokenTransfers}}
   131      {{if eq $tt.Type $.NonFungibleTokenName}}
   132      <div class="row body">
   133          <div class="col-md-4">
   134              <div class="row tx-addr">
   135                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.From}} tx-own{{end}}">
   136                      {{if ne $tt.From $addr}}<a href="/address/{{$tt.From}}">{{addressAliasSpan $tt.From $data}}</a>{{else}}{{addressAliasSpan $tt.From $data}}{{end}}
   137                  </div>
   138              </div>
   139          </div>
   140          <div class="col-md-1 col-xs-12 text-center">&nbsp;<span class="octicon"></span></div>
   141          <div class="col-md-4">
   142              <div class="row tx-addr">
   143                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.To}} tx-own{{end}}">
   144                      {{if ne $tt.To $addr}}<a href="/address/{{$tt.To}}">{{addressAliasSpan $tt.To $data}}</a>{{else}}{{addressAliasSpan $tt.To $data}}{{end}}
   145                  </div>
   146              </div>
   147          </div>
   148          <div class="col-md-3 amt-out">ID <a href="/nft/{{$tt.Contract}}/{{$tt.Value}}">{{$tt.Value}}</a> {{$tt.Symbol}}</div>
   149      </div>
   150      {{end}}
   151      {{end}}
   152      {{end}}
   153  
   154      {{if tokenTransfersCount $tx .MultiTokenName}}
   155      <div class="row subhead">
   156          {{.MultiTokenName}} Token Transfers
   157      </div>
   158      {{range $tt := $tx.TokenTransfers}}
   159      {{if eq $tt.Type $.MultiTokenName}}
   160      <div class="row body">
   161          <div class="col-md-4">
   162              <div class="row tx-addr">
   163                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.From}} tx-own{{end}}">
   164                      {{if ne $tt.From $addr}}<a href="/address/{{$tt.From}}">{{addressAliasSpan $tt.From $data}}</a>{{else}}{{addressAliasSpan $tt.From $data}}{{end}}
   165                  </div>
   166              </div>
   167          </div>
   168          <div class="col-md-1 col-xs-12 text-center">&nbsp;<span class="octicon"></span></div>
   169          <div class="col-md-4">
   170              <div class="row tx-addr">
   171                  <div class="col-12 ellipsis{{if isOwnAddress $data $tt.To}} tx-own{{end}}">
   172                      {{if ne $tt.To $addr}}<a href="/address/{{$tt.To}}">{{addressAliasSpan $tt.To $data}}</a>{{else}}{{addressAliasSpan $tt.To $data}}{{end}}
   173                  </div>
   174              </div>
   175          </div>
   176          <div class="col-md-3 amt-out">
   177              {{range $i, $iv := $tt.MultiTokenValues}}
   178                  {{if $i}}, {{end}}{{formattedAmountSpan $iv.Value 0 $tt.Symbol $data ""}} of ID <a href="/nft/{{$tt.Contract}}/{{$iv.Id}}">{{$iv.Id}}</a>
   179              {{end}}
   180          </div>
   181      </div>
   182      {{end}}
   183      {{end}}
   184      {{end}}
   185  
   186      <div class="row footer">
   187          <div class="col-sm-12 col-md-6">
   188              {{if $tx.FeesSat}}
   189              Fee {{amountSpan $tx.FeesSat $data "txvalue copyable ms-3"}} <span class="fw-normal small">({{amountSatsSpan $tx.EthereumSpecific.GasPrice $data ""}} Gwei/gas)</span>
   190              {{end}}
   191          </div>
   192          <div class="col-sm-12 col-md-6 text-end">
   193              <span class="me-4">
   194              {{if $tx.Confirmations}}
   195              <span class="txvalue">{{formatUint32 $tx.Confirmations}}</span> confirmations
   196              {{else}}
   197              <span class="txvalue unconfirmed">Unconfirmed Transaction!</span>
   198              {{end}}
   199              </span>
   200              {{amountSpan $tx.ValueOutSat $data "txvalue copyable"}}
   201          </div>
   202      </div>
   203  </div>
   204  {{end}}