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"> <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"> <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"> <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"> <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"> <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}}