# Bundled settlement loop revert DoS

Settlement loops pushing transfers or shares where one failing item reverts the whole batch

_Area: DeFi accounting and math bugs. Seen in 3 disclosed reports; latest 2025-07-08. Updated 2026-10-23._

## How it works
A settlement or payout function processes several items in one transaction: multiple ERC20 transfers, or one withdrawal spanning several tokens. The code assumes every item can succeed. If any single item reverts — a blocklisted recipient, a revert-on-zero token, a zero-address payee, insufficient balance, or a per-item precondition that fails in the chosen branch — the whole call reverts. Nothing settles, and funds or collateral stay locked. The broken assumption is that all items are independently processable; in reality each item carries its own revert conditions, and the batch inherits the union of them.

## Where it shows up
- Loops or sequences of external token transfers (payout, refund, collateral return) in one function [E1](https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md)[E2](https://bugbountylibrary.com/r/c4%3A2023-04-frankencoin%3AM-07.md)
- Payment pushed to an owner-controlled or caller-supplied address [E1](https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md)
- One mode flag applied across heterogeneous assets in a batch [E3](https://bugbountylibrary.com/r/cantina%3Aeigenlayer_mar2025%3A3.2.3.md)
- Tokens with blocklists, revert-on-zero, or zero-address rejection in the transfer set [E1](https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md)[E2](https://bugbountylibrary.com/r/c4%3A2023-04-frankencoin%3AM-07.md)
- Per-item preconditions (e.g. slashing factor) checked only in one branch [E3](https://bugbountylibrary.com/r/cantina%3Aeigenlayer_mar2025%3A3.2.3.md)

## How to review
Enumerate every external transfer and every per-item branch in the batch. For each, ask: can this item fail on its own while others are valid? The invariant: no single item's failure may block settlement of the others. Check recipients are not attacker-pointable to reverting addresses [E1](https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md), that zero-amount and zero-address cases are handled [E2](https://bugbountylibrary.com/r/c4%3A2023-04-frankencoin%3AM-07.md), and that each asset's preconditions are validated against the branch actually taken [E3](https://bugbountylibrary.com/r/cantina%3Aeigenlayer_mar2025%3A3.2.3.md).

## Variants seen
- Payee set to a blocklisted address, bricking repayments and auction bids [E1](https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md)
- Multi-transfer settlement reverting on one bad token transfer [E2](https://bugbountylibrary.com/r/c4%3A2023-04-frankencoin%3AM-07.md)
- Mixed-asset withdrawal where one mode reverts for some items [E3](https://bugbountylibrary.com/r/cantina%3Aeigenlayer_mar2025%3A3.2.3.md)

## Impact and severity
Locked collateral and bidder funds [E2](https://bugbountylibrary.com/r/c4%3A2023-04-frankencoin%3AM-07.md), blocked auctions enabling collateral seizure via collusion [E1](https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md), permanently lost withdrawal funds [E3](https://bugbountylibrary.com/r/cantina%3Aeigenlayer_mar2025%3A3.2.3.md). Severity rises when the reverting item is attacker-controlled and when locked value has no alternate exit path.

## Evidence
- E1: https://bugbountylibrary.com/r/c4%3A2023-01-astaria%3AH-01.md
- E2: https://bugbountylibrary.com/r/c4%3A2023-04-frankencoin%3AM-07.md
- E3: https://bugbountylibrary.com/r/cantina%3Aeigenlayer_mar2025%3A3.2.3.md
