solana-bankingstage-dashboard/templates/block_details.html

234 lines
13 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<title>Block Details</title>
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
<link rel="preconnect" href="https://api.fonts.coollabs.io" crossorigin>
<link href="https://api.fonts.coollabs.io/css2?family=Rubik&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='a72bf4ce55ad4320.css') }}">
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>
<body>
<div class="main-content pb-6">
{% include "_navbar.html" %}
<div class="container mt-n2">
<div class="header">
<div class="header-body"><h6 class="header-pretitle">Details</h6>
<h2 class="header-title">Block {{ block.slot | slotnumber }}</h2></div>
</div>
<div class="card">
<div class="card-header"><h3 class="card-header-title mb-0 d-flex align-items-center">Overview</h3>
</div>
<div class="table-responsive mb-0">
<table class="table table-sm table-nowrap card-table">
<tbody class="list">
<tr>
{% if block.slot %}
<td class="w-100">Slot</td>
<td class="text-lg-end font-monospace"><span class="font-monospace"><a href="https://explorer.solana.com//block/{{block.slot}}?cluster={{config.cluster}}">{{ block.slot | slotnumber }}</a></span></td>
{% else %}
<td class="w-100">Status</td>
<td class="text-lg-end font-monospace"><span>Block Not Found</span></td>
{% endif %}
</tr>
<tr>
<td class="w-100">Blockhash</td>
<td class="text-lg-end font-monospace">
<span>{{block.block_hash}}</span></td>
</tr>
<tr>
<td class="w-100">Leader Identity</td>
<td class="text-lg-end font-monospace"><span>{{ block.leader_identity }}</span></td>
</tr>
<tr>
<td class="w-100">Next Block</td>
<td class="text-lg-end font-monospace"><span class="font-monospace"><a href="/block/{{block.next_block}}">{{ block.next_block | slotnumber }}</a></span></td>
</tr>
<tr>
<td class="w-100">Previous Block</td>
<td class="text-lg-end font-monospace"><span class="font-monospace"><a href="/block/{{block.prev_block}}">{{ block.prev_block | slotnumber }}</a></span></td>
</tr>
{% if block.slot %}
<tr>
<td class="w-100">Processed Transactions</td>
<td class="text-lg-end font-monospace"><span>{{ block.processed_transactions | count }}</span></td>
</tr>
<tr>
<td class="w-100">Successful Transactions</td>
<td class="text-lg-end font-monospace"><span>{{ block.successful_transactions | count }}</span></td>
</tr>
<tr>
<td class="w-100">Banking Stage Errors</td>
<td class="text-lg-end font-monospace"><span>{{ block.banking_stage_errors | map_count or 'n/a'}}</span></td>
</tr>
<tr>
<td class="w-100">Prioritization Fees Min</td>
<td class="text-lg-end font-monospace"><span>{{ block.supp_infos.p_min | lamports }} micro-lamports/CU</span></td>
</tr>
<tr>
<td class="w-100">Prioritization Fees Median</td>
<td class="text-lg-end font-monospace"><span>{{ block.supp_infos.med_cu | lamports }} micro-lamports/CU</span></td>
</tr>
<tr>
<td class="w-100">Prioritization Fees p75</td>
<td class="text-lg-end font-monospace"><span>{{ block.supp_infos.p75_cu | lamports }} micro-lamports/CU</span></td>
</tr>
<tr>
<td class="w-100">Prioritization Fees p90</td>
<td class="text-lg-end font-monospace"><span>{{ block.supp_infos.p90_cu | lamports }} micro-lamports/CU</span></td>
</tr>
<tr>
<td class="w-100">Prioritization Fees p95</td>
<td class="text-lg-end font-monospace"><span>{{ block.supp_infos.p95_cu | lamports }} micro-lamports/CU</span></td>
</tr>
<tr>
<td class="w-100">Prioritization Fees Max</td>
<td class="text-lg-end font-monospace"><span>{{ block.supp_infos.p_max | lamports }} micro-lamports/CU</span></td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
<div class="container">
<div class="header">
<div class="header-body pt-0">
<ul class="nav nav-tabs nav-overflow header-tabs">
<!-- note: local anchors are not hx-boost'ed -->
<li class="nav-item"><a class="nav-link" href="#write-locked-accounts">Write locked accounts</a></li>
<li class="nav-item"><a class="nav-link" href="#read-locked-accounts">Read locked accounts</a></li>
</ul>
</div>
</div>
</div>
<div id="write-locked-accounts" class="card">
<div class="card-header align-items-center"><h3 class="card-header-title">Heavily Write-Locked Accounts</h3></div>
<div class="table-responsive mb-0">
<table class="table table-sm table-nowrap card-table">
<thead>
<tr>
<th class="text-muted table-cell-width-account">Account</th>
<th class="text-muted text-end table-cell-width-number">CU requested</th>
<th class="text-muted text-end table-cell-width-number">CU consumed</th>
<th class="text-muted text-end table-cell-width-number">Min prio fees</th>
<th class="text-muted text-end table-cell-width-number">Median prio fees</th>
<th class="text-muted text-end table-cell-width-number">Max prio fees</th>
</tr>
</thead>
<tbody>
{% for write_account in block.heavily_writelocked_accounts_parsed %}
<tr>
<td>
<a hx-boost="false" href="/account/{{ write_account.key }}">
<div class="d-none d-lg-flex align-items-center "><span class="font-size-tiny me-2"><span
class=""></span></span><span
class="font-monospace"><span class="">{{write_account.key}}</span></span>
</div>
</a></td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ write_account.cu_requested | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ write_account.cu_consumed | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ write_account.min_pf | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ write_account.median_pf | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ write_account.max_pf | lamports }}
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
<div id="read-locked-accounts" class="card">
<div class="card-header align-items-center"><h3 class="card-header-title">Heavily Read-Locked Accounts</h3></div>
<div class="table-responsive mb-0">
<table class="table table-sm table-nowrap card-table">
<thead>
<tr>
<th class="text-muted table-cell-width-account">Account</th>
<th class="text-muted text-end table-cell-width-number">CU requested</th>
<th class="text-muted text-end table-cell-width-number">CU consumed</th>
<th class="text-muted text-end table-cell-width-number">Min prio fees</th>
<th class="text-muted text-end table-cell-width-number">Median prio fees</th>
<th class="text-muted text-end table-cell-width-number">Max prio fees</th>
</tr>
</thead>
<tbody>
{% for read_account in block.heavily_readlocked_accounts_parsed %}
<tr>
<td>
<a hx-boost="false" href="/account/{{read_account.key}}">
<div class="d-none d-lg-flex align-items-center "><span class="font-size-tiny me-2"><span
class=""></span></span><span
class="font-monospace"><span class="">{{read_account.key}}</span></span>
</div>
</a></td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ read_account.cu_requested | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ read_account.cu_consumed | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ read_account.min_pf | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ read_account.median_pf | lamports }}
</div>
</td>
<td class="text-end font-monospace">
<div class="font-monospace">
{{ read_account.max_pf | lamports }}
</div>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
</div>
</body>
</html>