Skip to content

Fix Base ETH drips to delegated wallets - #49

Merged
ameya-deshmukh merged 1 commit into
seismicfrom
codex/base-delegated-wallet-gas
Sep 11, 2026
Merged

ameya-deshmukh merged 1 commit into
seismicfrom
codex/base-delegated-wallet-gas

Conversation

@ameya-deshmukh

Copy link
Copy Markdown
Collaborator

Summary

Base ETH drips used a fixed 21,000 gas limit, which is insufficient for delegated wallets. Estimate the transaction gas before signing and safely recover affected legacy requests.

Changes

  • Use eth_estimateGas with 25% headroom for Base native transfers; reject estimates whose padded limit exceeds 100,000 gas.
  • Keep transfer amounts and ERC20/Seismic transaction behavior unchanged.
  • Recover only matching, signed legacy 21,000-gas Base ETH transfers whose receipts confirm a revert at the configured confirmation depth.
  • Under the operator lease, atomically archive the old failure and requeue the original idempotency record without another value-budget reservation.
  • Preserve pending transaction bytes and successful-response replay; new estimated-gas failures do not qualify for legacy recovery.

Tests

  • Reproduced the original failure with a 21,220-gas RPC estimate and a signed 21,000-gas transaction; regression now signs with 26,525 gas.
  • RPC-level retry eligibility and confirmation checks, signature/input matching, and gas-budget boundaries.
  • Redis integration coverage for concurrent retries, restart recovery, retained failure history, stale-state rejection, and unchanged reservation limits.
  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets --locked -- -D warnings
  • cargo test --workspace --locked (also passed serially; an initial parallel run hit the existing lock-deadline timing assertion, and the final standard run passed)

No Linear issue linked.

@ameya-deshmukh
ameya-deshmukh merged commit da8257d into seismic Sep 11, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant