-
Notifications
You must be signed in to change notification settings - Fork 0
Description
🎯 Objective
Create publication-ready visualizations comparing ECDSA, DILITHIUM3, and HYBRID cryptographic modes under different load profiles for blockchain workshop submission.
📈 Required Visualizations (Priority Order)
1️⃣ Latency vs Throughput Comparison ⭐ CRITICAL
Type: Scatter plot with error bars
Purpose: Show performance trade-offs across crypto modes
Specifications:
- X-axis: Throughput (transactions/sec)
- Y-axis: P95 Latency (ms)
- Series:
- 🔵 ECDSA (baseline)
- 🟢 DILITHIUM3 (PQC)
- 🟡 HYBRID (ECDSA + PQC)
- Error bars: 95% confidence intervals from 3+ runs
- Annotations: Mark sweet spots (optimal throughput/latency balance)
Key Insights to Highlight:
- Where each crypto mode starts degrading
- HYBRID positioning between ECDSA and PQC-only
- Acceptable operating ranges for production
2️⃣ Cryptographic Overhead Breakdown ⭐ CRITICAL
Type: Grouped bar chart
Purpose: Quantify signature generation/verification overhead
Specifications:
- Groups: sig_gen_time, sig_verify_time (microseconds)
- Bars per group: ECDSA, DILITHIUM3, HYBRID
- Include:
- Mean values with std deviation error bars
- Percentage increase labels (e.g., "DILITHIUM3: +285% verify time")
Color Scheme:
- 🟦 Generation time (lighter shade)
- 🟥 Verification time (darker shade)
Expected Result:
DILITHIUM3 verification ≈ 3-5x slower than ECDSA
DILITHIUM3 generation ≈ 2-3x slower than ECDSA
HYBRID overhead ≈ sum of both operations
3️⃣ Resource Utilization Under Load ⭐ CRITICAL
Type: Multi-line chart with dual Y-axes
Purpose: Demonstrate system stability and resource consumption
Specifications:
- X-axis: Time (seconds)
- Y-axis (left): CPU Utilization (%)
- Y-axis (right): Memory Utilization (%)
- Scenario: HIGHLOAD profile comparison
- Lines:
- ECDSA CPU/Memory
- DILITHIUM3 CPU/Memory
- HYBRID CPU/Memory
Optional Enhancement: Add shaded regions for load profile phases
4️⃣ Throughput Degradation Analysis 🔸 IMPORTANT
Type: Box plot
Purpose: Show variance and worst-case performance
Specifications:
- X-axis: Crypto modes (ECDSA, DILITHIUM3, HYBRID)
- Y-axis: Achieved throughput (TPS)
- Box grouping: By load profile (LOWLOAD, MEDIUMLOAD, HIGHLOAD)
- Show: Median, quartiles, outliers
Insight Focus:
- Consistency of throughput under load
- Variance between runs
- Failure modes (throughput collapse)
5️⃣ Block Commit Time Distribution 🔸 IMPORTANT
Type: CDF (Cumulative Distribution Function)
Purpose: Visualize blockchain finality latency
Specifications:
- X-axis: Block commit time (ms)
- Y-axis: Cumulative probability (0-1)
- Lines: One per crypto mode
- Annotations: Mark P50, P95, P99 percentiles
Use Case: SLA discussions - "99% of blocks committed within X ms"
6️⃣ Hybrid Mode Deep Dive 🔹 OPTIONAL
Type: Stacked bar or area chart
Purpose: Justify HYBRID complexity vs benefits
Specifications:
- X-axis: Load profiles
- Y-axis: Total transaction latency (ms)
- Stacks:
- Network overhead
- Signature generation
- Signature verification
- Consensus/commit time
Comparison: Side-by-side for ECDSA, DILITHIUM3, HYBRID
🛠️ Implementation Checklist
Data Preparation
- Load all CSV files from
data/fixtures/monte_carlo/reproducible/ - Parse with Papaparse, handle missing values
- Calculate statistics across 3 runs:
- Mean
- Standard deviation
- 95% confidence intervals
- Aggregate by crypto_mode and load_profile
Visualization Library
Recommended: Recharts (already available in React artifacts)
Alternative: Plotly for more complex charts (CDF, heatmaps)
Styling Guidelines
- Color palette:
- ECDSA:
#3b82f6(blue) - DILITHIUM3:
#10b981(green) - HYBRID:
#f59e0b(amber)
- ECDSA:
- Font: Sans-serif, 12pt for labels
- Grid: Light gray, dashed
- Legend: Top-right corner, clear labels
Export Requirements
- High-resolution PNG (300 DPI minimum)
- Vector format (SVG/PDF) for LaTeX papers
- Consistent dimensions: 6" width × 4" height (standard column width)
📊 Statistical Analysis Requirements
Before creating visualizations, compute:
-
Descriptive Statistics:
mean, std, median, Q1, Q3, min, max
-
Inferential Statistics:
- ANOVA test: Compare crypto modes under same load
- T-tests: Pairwise comparisons (ECDSA vs DILITHIUM3, etc.)
- Report p-values for significance claims
-
Effect Size:
- Calculate percentage differences
- Cohen's d for meaningful impact assessment
🎨 Example Code Structure
import pandas as pd
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
# Load and aggregate data
def load_experiment_data(crypto_mode, load_profile):
runs = []
for run_id in [1, 2, 3]:
df = pd.read_csv(f"data/fixtures/{crypto_mode}_{load_profile}_RUN{run_id}.csv")
runs.append(df)
return pd.concat(runs)
# Statistical comparison
def compare_crypto_modes(metric='latency_p95'):
ecdsa = load_experiment_data('ECDSA', 'HIGHLOAD')[metric]
dilithium = load_experiment_data('DILITHIUM3', 'HIGHLOAD')[metric]
t_stat, p_value = stats.ttest_ind(ecdsa, dilithium)
print(f"T-test: t={t_stat:.3f}, p={p_value:.4f}")
return p_value < 0.05 # Significant difference?
# Generate Plot 1: Latency vs Throughput
def plot_latency_throughput():
# Implementation here
pass📝 Deliverables
- Python script:
tools/analysis/generate_workshop_plots.py - Output directory:
results/workshop_figures/ - README: Document how to regenerate plots
- Statistics report:
results/statistical_analysis.md
⏱️ Timeline
- Week 1: Data aggregation + statistical analysis
- Week 2: Implement plots 1-3 (critical)
- Week 3: Implement plots 4-6 (important/optional)
- Week 4: Review, refinement, export for paper
🔗 Related Issues
- #XXX: Generate additional experimental data (MEDIUMLOAD, SUSTAINED)
- #XXX: Paper structure and content
- #XXX: Literature review for related work section
💡 Success Criteria
✅ All critical plots (1-3) publication-ready
✅ Statistical significance demonstrated
✅ Reproducible analysis pipeline
✅ Figures comply with workshop formatting guidelines
✅ Clear visual narrative supporting paper claims