Satu tempat buat pantau biaya gas (Vision), temuan keamanan (SWC), dan hasil benchmark (Bench) Smart Contract Anda — cepat, ringan, dan terstruktur. Dibangun dengan Streamlit + DuckDB.
| Module | Link | Status | Badge |
|---|---|---|---|
| Analytics | stc-analytics.streamlit.app | ✅ Stable | |
| Converter | stc-converter.streamlit.app | ✅ Stable | |
| GasVision | stc-gasvision.streamlit.app | ✅ Stable | |
| Insight | stc-insight.streamlit.app | ✅ Stable | |
| Bench | stc-bench.streamlit.app | ✅ Stable |
flowchart TD
Core["🏛️ STC Core"]
subgraph Ecosystem ["STC Ecosystem"]
A["📊 Analytics"]
B["🔄 Converter"]
C["⛽ GasVision"]
D["🔍 Insight"]
E["⚡ Bench"]
end
Core --> A
Core --> B
Core --> C
Core --> D
Core --> E
%% Colors (use full hex & colon syntax)
style Core fill:#2d3748,stroke:#ffffff,color:#ffffff
style A fill:#2563eb,stroke:#ffffff,color:#ffffff
style B fill:#f97316,stroke:#ffffff,color:#ffffff
style C fill:#dc2626,stroke:#ffffff,color:#ffffff
style D fill:#7c3aed,stroke:#ffffff,color:#ffffff
style E fill:#16a34a,stroke:#ffffff,color:#ffffff
%% Clickable nodes (open module pages)
click A "https://stc-analytics.streamlit.app/" "Open STC Analytics"
click B "https://stc-converter.streamlit.app/" "Open STC Converter"
click C "https://stc-gasvision.streamlit.app/" "Open STC GasVision"
click D "https://stc-insight.streamlit.app/" "Open STC Insight"
click E "https://stc-bench.streamlit.app/" "Open STC Bench"
- Cost (Vision): unggah CSV/NDJSON dari STC GasVision, lihat metrik & tren biaya gas per fungsi.
- Security (SWC): unggah temuan SWC (CSV/NDJSON), filter per network/severity, heatmap SWC × Severity, dan SWC Knowledge (penjelasan/mitigasi dari
swc_kb.json). - Performance (Bench): unggah hasil benchmark (
bench_runs.csv& opsionalbench_tx.csv), grafik TPS vs concurrency dan latensi p50/p95. - Templates & contoh data: tombol unduh di setiap tab untuk memudahkan format.
- Export hasil filter: unduh CSV dari tabel yang sedang ditampilkan.
- Privasi: semua data lokal di DuckDB; tidak ada pengiriman data ke pihak ketiga.
# 1) Clone
git clone https://github.com/mrbrightsides/stc-analytics.git
cd stc-analytics
# 2) (Disarankan) Buat & aktifkan virtualenv
python -m venv .venv
# Windows PowerShell
. .venv\Scripts\Activate.ps1
# macOS/Linux
# source .venv/bin/activate
# 3) Install dependency
pip install -r requirements_stc.txt
# 4) Jalankan
streamlit run app_stc_analytics.pyCatatan Windows: Bila PowerShell memblokir eksekusi, jalankan PS sebagai Admin lalu:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned(setelah itu tutup PS, buka lagi).
stc-analytics/
├─ app_stc_analytics.py # Aplikasi Streamlit (UI + logic)
├─ requirements_stc.txt # Daftar dependency
├─ templates/ # Template & contoh data
│ ├─ vision_template.csv
│ ├─ vision_sample.ndjson
│ ├─ swc_findings_template.csv
│ ├─ swc_findings_sample.ndjson
│ ├─ bench_runs_template.csv
│ └─ bench_tx_template.csv
├─ swc_kb.json # (Opsional) Pengetahuan SWC (judul, deskripsi, mitigasi)
├─ README.md # Dokumen ini
└─ .gitignore
- CSV (dari GasVision): gunakan tombol Template CSV (Vision) atau Contoh NDJSON (Vision) di tab Cost.
- Kolom standar (contoh header CSV):
Network, Tx Hash, From, To, Block, Gas Used, Gas Price (Gwei), Estimated Fee (ETH), Estimated Fee (Rp), Contract, Function, Timestamp, Status
Sumber CSV: buka GasVision → pilih Network → (opsional) masukkan Tx Hash yang ingin dicek → Download CSV → unggah ke tab Cost.
- CSV/NDJSON dengan kolom:
finding_id (opsional), timestamp, network, contract, file, line_start, line_end, swc_id, title, severity, confidence, status, remediation, commit_hash - Jika
finding_idkosong, aplikasi akan mengisi otomatiscontract::swc_id::line_startdan de-dup per batch.
- bench_runs.csv:
run_id, timestamp, network, scenario, contract, function_name, concurrency, tx_per_user, tps_avg, tps_peak, p50_ms, p95_ms, success_rate - bench_tx.csv (opsional):
run_id, tx_hash, submitted_at, mined_at, latency_ms, status, gas_used, gas_price_wei, block_number, function_name
EDA_DB_PATH— path file DuckDB untuk penyimpanan lokal (default:stc_analytics.duckdb).SWC_KB_PATH— path ke file pengetahuan SWC (default:swc_kb.json).
- Upload data (CSV/NDJSON) di tab yang sesuai.
- (Opsional) aktifkan Load existing stored data untuk memuat data lokal yang sudah ada di DuckDB.
- Gunakan filter & date range untuk eksplorasi.
- Export hasil filter via tombol Download CSV.
- Untuk SWC Knowledge, pastikan
swc_kb.jsontersedia (format list atau dict berindeks SWC-ID).
- Data tidak tampil: pastikan format kolom sesuai template; periksa encoding UTF-8; cek log saat upload.
- PK/duplikasi: untuk SWC,
finding_idunik. Kosong? Aplikasi membuat fallbackcontract::swc_id::line_start. - DuckDB terkunci: tutup sesi Streamlit lain yang masih mengakses file DB, lalu jalankan ulang.
- Performa lambat: bagi file besar menjadi beberapa berkas; kurangi jumlah kolom non-esensial saat eksplorasi.
- Tambah date range picker untuk Vision (berbasis sumber data).
- Ringkasan otomatis temuan SWC per kontrak.
- Penyimpanan konfigurasi user (dark/light, default network).
MIT — silakan gunakan dan sesuaikan sesuai kebutuhan.
- Laporkan bug/fitur baru: Issues pada repo.
- Hubungi: https://github.com/mrbrightsides
