Skip to content

Arbitrum Gas Spikes Cause PPP to Exceed Limits and Drop Sessions #3744

@rickstaa

Description

@rickstaa

Summary

When Arbitrum gas briefly spikes, the orchestrator raises its price per pixel (PPP) to match the instantaneous gas price. If PPP exceeds the broadcaster’s configured ceiling (e.g. 1200 wei), all active sessions are dropped, even though gas usually normalizes within seconds.

Root Cause

In pm/recipient.go, faceValue() and txCost() derive PPP directly from the current gas price. The hard-coded fallback avgGasPrice = 3 gwei, tuned for legacy Arbitrum, is inaccurate for Nitro, leading to an incorrect gas estimate. As a result, the calculated PPP can briefly appear to overshoot broadcaster limits and trigger job cancellations even though it should not. If orchestrators have autoAdjustPrice=true enabled it will amplify the issue.

go-livepeer/pm/recipient.go

Lines 311 to 313 in 9cbad82

if faceValue.Cmp(txCost) < 0 && faceValue.Cmp(r.txCostWithGasPrice(avgGasPrice)) < 0 {
return nil, errInsufficientSenderReserve
}

Impact

  • Active streams are interrupted and must reconnect.
  • Orchestrators lose revenue during the outage.

Recommended Fix

Related to

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions