Context
When multiple Venus positions become liquidatable in the same block (common after a large oracle update), submitting them as one batched tx amortizes the base cost and wins the race against competitors submitting one-off txs.
Scope
- Extend
CharonLiquidator.sol with a batchExecuteLiquidations(LiquidationParams[] calldata) entry point, or
- Add a sibling
CharonMulticall.sol contract for batching
- Rust side:
Batcher in charon-executor/ that groups opportunities per block per chain
- Gas cap per batch (configurable) so we don't overshoot block gas limit
- Fall back to individual txs if any batch member fails simulation
Acceptance criteria
References
- PRD section 6c (Multi-Liquidation Batching)
Context
When multiple Venus positions become liquidatable in the same block (common after a large oracle update), submitting them as one batched tx amortizes the base cost and wins the race against competitors submitting one-off txs.
Scope
CharonLiquidator.solwith abatchExecuteLiquidations(LiquidationParams[] calldata)entry point, orCharonMulticall.solcontract for batchingBatcherincharon-executor/that groups opportunities per block per chainAcceptance criteria
Batchergroups by chain correctly when multiple opportunities arrive in one blockReferences