Go to file
GroovieGermanikus ef548ed7d7
change INNER to LEFT JOIN banking_stage_results_2.transaction_slot
2024-02-22 12:03:26 +01:00
.github/workflows Force deployment 2023-11-28 03:02:55 +00:00
docs update README 2023-12-04 10:54:14 +01:00
static add fallback font 2023-12-15 17:26:09 +01:00
templates change INNER to LEFT JOIN banking_stage_results_2.transaction_slot 2024-02-22 12:03:26 +01:00
.dockerignore Procfile etc 2023-11-22 17:03:16 +01:00
.gitignore Initial commit 2023-06-12 18:04:52 +02:00
Dockerfile reduce gunicorn threads to 1 2023-12-04 19:22:19 +01:00
QUERIES.md tx detail -> account relation 2023-12-13 09:51:04 +01:00
README.md rework transaction details query 2024-01-10 10:42:02 +01:00
account_details_database.py allow navigation to account details page 2024-01-02 21:03:49 +01:00
app.py cleanup 2024-01-09 23:02:07 +01:00
block_details_database.py Populating page even if block is not found 2023-12-15 12:01:06 +01:00
config.py clarify names + fix config 2023-10-20 13:08:23 +02:00
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 fix percentage 2023-10-18 12:00:10 +02:00
postgres_connection.py fix logging (query times) 2023-12-18 16:19:30 +01:00
recent_blocks_database.py add row limit for blocks; rename search functions 2023-12-15 11:36:02 +01:00
requirements.txt remove flask turbo+sock 2023-12-01 07:22:42 +01:00
transaction_database.py change INNER to LEFT JOIN banking_stage_results_2.transaction_slot 2024-02-22 12:03:26 +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 rate / 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