This project is still in development. This repo represents the core txpool-viz logic
A tool to visualize and compare transaction pools across different Ethereum execution clients. This helps debug transaction propagation issues, analyze mempool behaviors during attacks, and understand differences in transaction acceptance policies between clients.
This is currently in development mode. Please open an issue in this repo to report any bugs
Install Kurtosis
This tool has been added as an additional service on the ethereum-package for Kurtosis
Using network_params.yaml from this repo, run our ethereum-package fork (for development)
kurtosis run --enclave my-testnet github.com/punkhazardlabs/ethereum-package@ndeto/feat/add-txpool-viz --args-file network_params.yamlYou will see an output similar to the one below. Visit the txpool-viz url
Find a complete spec of network_params.yaml config on the ethereum-package
FOCIL - Visualization
Use the focil_params.yaml config file and run with Kurtosis
kurtosis run --enclave my-testnet github.com/punkhazardlabs/ethereum-package@ndeto/feat/add-txpool-viz --args-file focil_params.yamlVisit the web UI to see the visualization.
Clone the repo
git clone https://github.com/punkhazardlabs/txpool-viz.git && cd txpool-vizSetup endpoint configs cfg/config.yaml from the provided template cfg/config.example.yaml
endpoints:
- name: reth-prysm
rpc_url: "http://127.0.0.1:55405"
socket: "ws://127.0.0.1:55401"
- name: geth-lodestar
rpc_url: "http://127.0.0.1:55398"
socket: "ws://127.0.0.1:55399"
- name: nethermind-teku
rpc_url: "http://127.0.0.1:55393"
socket: "ws://127.0.0.1:55394"
polling:
interval: 0.1s
timeout: 5s
filters:
min_gas_price: 1gwei
log_level: "info"
focil_enabled: "false" # Only use if your network is FOCIL enabled (https://eips.ethereum.org/EIPS/eip-7805)
beacon_urls: # Only used if focil_enabled = "true".
- name: reth-prysm
beacon_url: "http://127.0.0.1:55410"
- name: geth-lodestar
beacon_url: "http://127.0.0.1:55426"
- name: nethermind-teku
beacon_url: "http://127.0.0.1:55652"Setup storage instances by running the docker-compose file
docker compose -f 'docker-compose.yml' up -d --build Set up .env file from .env.example. This is for running this repo only, these variables will be setup automatically when in use with Kurtosis
POSTGRES_URL=postgres://postgres:password@localhost:5432/postgres?sslmode=disable
REDIS_URL=redis://localhost:6379/0
PORT=42069Run the tool
make runThe web ui will be served on port 42069
http://localhost:42069
Local Development Tools:
- Kurtosis Ethereum Package - Simulate a local testnet
- Spamoor - Send spam tx's to your local testnet mempool
docker-compose.ymlis provided to setup local dependencies
