livepeer/go-livepeer

Arbitrum Gas Spikes Cause PPP to Exceed Limits and Drop Sessions

Open

#3,744 opened on Sep 22, 2025

 (6 comments) (0 reactions) (0 assignees)Go (223 forks)auto 404
help wantedpriority: mediumstatus: needs-owner

Repository metrics

Stars
 (583 stars)
PR merge metrics
 (PR metrics pending)

Description

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.

https://github.com/livepeer/go-livepeer/blob/9cbad8221f965a6ad7c71bb7e731ed680f5a70af/pm/recipient.go#L311-L313

Impact

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

Recommended Fix

  • Adjust the fallback: Raise the hard-coded avgGasPrice to a level appropriate for Arbitrum Nitro.
  • Make it dynamic: Replace the static fallback with a rolling average (e.g., from eth_feeHistory) to smooth transient spikes (see https://github.com/livepeer/go-livepeer/issues/2078).
  • Use maxGasPrice to avoid drops: Update the software so that when gas exceeds the configured maxGasPrice, the orchestrator continues transcoding at the fixed pixel price and redeems tickets later once gas falls, preventing session loss (see https://github.com/livepeer/go-livepeer/issues/1966#issuecomment-915561648).
  • Optional flag to relax sender-reserve checks: Add a startup flag such as --ignoreSenderReserveRequirements so orchestrators can choose to verify only that the broadcaster’s deposit covers the ticket face value, ignoring full sender-reserve requirements.

Related to

Contributor guide