Go to file
GroovieGermanikus 4cf506b452
link dashboard page to recent-blocks
2024-04-06 14:11:35 +02:00
.github/workflows
docs
static add fallback font 2023-12-15 17:26:09 +01:00
templates fill rate -> ratio 2024-03-15 17:02:05 +01:00
.dockerignore
.gitignore
Dockerfile reduce gunicorn threads to 1 2023-12-04 19:22:19 +01:00
QUERIES.md add some example queries 2024-02-26 10:04:00 +01:00
README.md fill rate -> ratio 2024-03-15 17:02:05 +01:00
account_details_database.py allow navigation to account details page 2024-01-02 21:03:49 +01:00
app.py link dashboard page to recent-blocks 2024-04-06 14:11:35 +02:00
block_details_database.py Populating page even if block is not found 2023-12-15 12:01:06 +01:00
config.py
fly.toml Add kill timeout, move to fra, increase client pool size, fix health/concurrency 2023-12-05 12:26:27 +00:00
log_scale.py
postgres_connection.py log exception cause 2024-02-23 10:24:48 +01:00
recent_blocks_database.py add block fill per cu 2024-03-15 14:32:49 +01:00
requirements.txt update pg8000 to 1.30.5 2024-02-23 10:12:18 +01:00
transaction_database.py clarify inclusion if tx_slot vs tx_info 2024-02-23 10:56:47 +01:00
transaction_details_database.py change INNER to LEFT JOIN banking_stage_results_2.transaction_slot 2024-02-22 12:03:26 +01:00

README.md

Solana Banking Stage Inspection Dashboard

Status

Production - contact us for Link

Screenshots

List of Transaction errors

Transaction Errors

Transaction details with heavily write-locked accounts

Transaction Details

List of Blocks with fill ratio / errors / total tx

Recent Blocks

Block details

Block Details

Block details with heavily write-locked accounts

Block Details Heavy Locked Accounts

Search for a Block/Transaction by Slot Number/Signature

Search Block

Recent Blocks - stop refreshing

The auto-refresh can be stopped by appending parameter to_slot to the URL: /recent-blocks?to_slot=232135000

Tx Errors List - show more rows

The number of rows requested from Database can be changed by appending parameter limit to the URL: /tx-errors?limit=300. A value for limit restricted to 1-10000. Default is 50.

Local Development

Caution: Port 5000 cannot be used on MacOS.

# Unix/macOS
python3 -m venv .venv
source .venv/bin/activate
SOLANA_CLUSTER=testnet POOLED_DB_MAX_SIZE=4 PGDATABASE=da11copy PGUSER=query_user PGPASSWORD=secret TEMPLATES_AUTO_RELOAD=True flask run --port 5050 --debug --reload

Use this to test with gunicorn:

  • CAUTION: did not figure out how to enable template reloading
SOLANA_CLUSTER=testnet POOLED_DB_MAX_SIZE=4 PGDATABASE=da11copy PGPORT=5432 PGUSER=query_user PGPASSWORD=secret gunicorn app:webapp --workers 1 --threads 30 --bind :5050 --reload

Open Firefox Browser and navigate to ...

Deployment

Limits

Description System Variable Config
Max number of PostgreSQL connections Application POOLED_DB_MAX_SIZE fly.toml
Limit of HTTP Requests fly.io soft_limit fly.toml
Hard Limit of HTTP Requests fly.io hard_limit fly.toml
Python HTTP Server gunicorn --workers, --threads Dockerfile

Data Model

  • transaction data (irrespective of block inclusion):
    • transaction_slot: (banking stage only!), transaction from banking stage plugin; reflecting errors trying to include transaction in block (block is designated by slot)
    • accounts_map_transaction: mapping of accounts to transactions irrespective of block inclusion
  • related to a produced block (happens after transaction data):
    • transaction_infos: transaction in blocks
    • accounts_map_blocks: accounts mentioned in block

Conventions:

Table Name Alias
transaction_slot tx_slot
accounts_map_blocks amb
transaction_infos txi
blocks blocks
accounts_map_transaction amt
transaction_slot tx_slot