Ethereum Threat Intelligence Dashboard — Real-time security monitoring for the Ethereum ecosystem.
- Aggregated smart contract audit data
- Severity breakdown (Critical, High, Medium, Low, Informational)
- Vulnerability category analysis
- Filter by year range, firm, and category
- Historical exploit and hack data
- Total losses tracking
- Year-over-year analysis
- Top vulnerability types
- Live gas prices across 8 EVM networks (Ethereum, Arbitrum, Optimism, Base, Polygon, zkSync, Scroll, Linea)
- Transactions per second (TPS)
- Base fees and utilization
- Real-time security alerts from:
- @PeckShieldAlert
- @zachxbt
- @SlowMist_Team
- @CertiKAlert
- @ScamSniffer
- Rekt News (RSS)
- No API keys required for RSS feeds
- Python 3.8+
- Twitter API Bearer Token (optional, for Twitter alerts)
- Linux server with systemd
# Clone or copy the project
cd eth-radar
# Install Python dependencies (usually none required - uses stdlib only)
# If running with venv:
python3 -m venv venv
source venv/bin/activate
# Copy and configure environment
cp .env.example .env
nano .env # Add your Twitter Bearer Token
# Test run
python3 dashboard-eth.pyThe dashboard will start on http://localhost:18793
Create /etc/systemd/system/eth-radar.service:
[Unit]
Description=ETH Radar - Ethereum Threat Intelligence Dashboard
After=network.target
[Service]
Type=simple
User=YOUR_USERNAME
WorkingDirectory=/path/to/eth-radar
ExecStart=/usr/bin/python3 /path/to/eth-radar/dashboard-eth.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.targetThen:
sudo systemctl daemon-reload
sudo systemctl enable eth-radar
sudo systemctl start eth-radar
sudo systemctl status eth-radar# Install Caddy
sudo apt install -y caddy
# Configure Caddyfile
sudo nano /etc/caddy/CaddyfileAdd this to your Caddyfile:
:80 {
reverse_proxy localhost:18793
encode gzip
header {
X-Content-Type-Options nosniff
X-Frame-Options DENY
Referrer-Policy strict-origin-when-cross-origin
}
}
# Or with custom domain and HTTPS:
# yourdomain.com {
# reverse_proxy localhost:18793
# encode gzip
# }
# Restart Caddy
sudo systemctl restart caddy
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:18793;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
gzip on;
}
}| Variable | Required | Description |
|---|---|---|
TWITTER_BEARER |
No | Twitter API Bearer Token for alert aggregation |
Without the Twitter token, RSS feeds (Rekt News) will still work.
The dashboard uses these JSON data files:
findings-merged-eth.json— Audit findings datarekt-incidents-eth.json— Historical incident datastats-eth.json— Pre-computed statistics
These are included in the repository. To update:
- Fetch fresh data from your sources
- Filter to Ethereum ecosystem (Solidity/EVM tech stack)
- Save as
findings-merged-eth.jsonandrekt-incidents-eth.json - Restart the service
dashboard-eth.py (Flask-like Python server)
├── / → Main HTML dashboard
├── /logo.jpg → Logo image
├── /banner.jpg → Banner image
├── /data → Aggregated stats JSON
├── /findings → Paginated audit findings (SQLite)
├── /incidents → Incident data JSON
├── /alerts → Security alerts (Twitter API + RSS)
└── /network → Network health (proxied from ethgastracker.com)
- Never commit
.envor API keys to version control - The Twitter Bearer Token is stored server-side only
- RSS feeds require no authentication
- Consider running behind a VPN or firewall for production
- Python 3 (stdlib only — no external dependencies)
- Vanilla JavaScript + Canvas for charts
- Caddy web server for production reverse proxy
- Twitter API v2 for alerts
- Rekt News for incident analysis
MIT License — See LICENSE for details.
Built by Oak Security
