Skip to main content

Risk Scoring

Risk Score is a composite metric designed to reflect the likelihood and impact of an operator experiencing slashing across their active AVS deployments.

Overview

The EigenWatch Risk Score ranges from 0–100, where:

  • 0–20 = Low risk (strong track record, minimal slashing likelihood)
  • 21–50 = Medium risk (acceptable but requires monitoring)
  • 51–80 = High risk (notable concerns, operators should be evaluated carefully)
  • 81–100 = Critical risk (recent slashing events or severe conditions)

Scores are updated in real-time as new events occur.

Methodology

Risk Score is computed as a weighted combination of four dimensions:

1. Slashing History (40% weight)

Reflects whether an operator has experienced slashing events and their frequency/recency.

Inputs:

  • Number of slashing events in the last 30/90/180 days
  • Severity of each event (partial vs. full stake loss)
  • Time decay (recent events weighted more heavily)

Example:

  • No slashing in 6 months → ~5 points
  • 1 minor slashing event in last 30 days → ~35 points
  • Multiple slashing events → ~70+ points

2. Operator Uptime (25% weight)

Reflects whether an operator's infrastructure is consistently available.

Inputs:

  • Percentage of blocks proposed/signed by the operator
  • Missed attestations or duties
  • Downtime incidents (detected from beacon chain)

Example:

  • Greater than 99.5% uptime → ~5 points
  • 95–99% uptime → ~25 points
  • Less than 95% uptime → ~60 points

3. AVS Concentration Risk (20% weight)

Reflects whether an operator is over-exposed to a single AVS or correlated services.

Inputs:

  • Percentage of stake deployed on any single AVS
  • Cross-AVS correlation (if multiple AVSs rely on similar validators)
  • Total capital deployed

Example:

  • Greater than or equal to 60% on single AVS → ~40 points

4. Operator Reputation (15% weight)

Reflects historical governance participation, slashing incidents, and community sentiment.

Inputs:

  • Governance participation score
  • Historical performance across multiple networks
  • Slashing events on other protocols (if available)

Example:

  • Strong multi-network track record → ~5 points
  • New operator with limited history → ~35 points
  • Previous slashing on other protocols → ~60 points

Calculation Example

Assume an operator:

  • Slashing History: 35 points × 0.40 = 14
  • Uptime: 25 points × 0.25 = 6.25
  • AVS Concentration: 40 points × 0.20 = 8
  • Reputation: 20 points × 0.15 = 3

Total Risk Score = 14 + 6.25 + 8 + 3 = 31.25 → Medium Risk

Real-Time Updates

Risk Scores update when:

  • New slashing event detected on-chain
  • Uptime metrics change significantly
  • Operator's AVS portfolio changes
  • Reputation signal updates

Updates propagate to:

  • APIs within 30 seconds
  • Oracle feeds within 1 block
  • Alert subscribers immediately

Using Risk Scores

For Restakers

Use Risk Score to filter operators before delegating:

# Pseudocode: Query operators below medium risk
operators = fetch_operators(risk_score_max=50)
for op in operators:
if op['risk_score'] < 50:
delegate_stake(op)

For AVSs

Monitor your operator set's average risk:

avg_risk = mean([op['risk_score'] for op in my_avs_operators])
if avg_risk > 60:
send_alert("Your AVS has high-risk operators, consider replacement")

For Insurance

Price premiums based on risk profile:

premium_multiplier = operator['risk_score'] / 50  # 2x premium at 100 risk
annual_premium = base_premium * premium_multiplier

Limitations & Assumptions

  • Risk Score is not a guarantee of safety; it reflects historical patterns and current state.
  • Score is based on available on-chain data; off-chain behavior and performance monitoring is not captured.
  • Methodology may change as EigenLayer matures and new risk dimensions emerge.
  • Scores reflect correlation, not causation—high score doesn't explain why an operator is risky.
  • Score computation latency means scores can lag behind real-time conditions.

API Integration

Query Risk Scores via REST or WebSocket:

curl https://api.eigenwatch.xyz/v1/operators/0x123abc/risk-score

# Response:
{
"operator_address": "0x123abc",
"risk_score": 31,
"risk_category": "MEDIUM",
"components": {
"slashing_history": 35,
"uptime": 25,
"avs_concentration": 40,
"reputation": 20
},
"last_updated": "2024-01-21T14:32:00Z",
"confidence": 0.92
}

See Risk Scoring API for full endpoint documentation.

See Also