Summary
This proposal updates the stateful order rate limit on dYdX Chain by removing the existing per-block cap and increasing the current limit per 100 blocks to 50 stateful orders. This aims to give users and market makers a more flexible submission window while maintaining predictable chain-level safety guardrails.
Abstract
dYdX Chain currently enforces a strict per-block rate limit on stateful orders. This proposal removes that per-block restriction entirely and increases the rolling 100-block window limit from 20 to 50 stateful orders per address.
This provides users with a more flexible order submission experience. Users are no longer forced to spread orders across individual blocks, while the protocol retains a sensible throughput ceiling over a longer time horizon.
Motivation & Rationale
The existing per-block stateful order limit was set conservatively at launch as a safety measure against state bloat and abuse. While prudent at the time, it has proven to be unnecessarily restrictive for sophisticated participants:
- Market makers refreshing quotes across multiple markets are blocked from doing so within a single block, introducing avoidable latency and degraded liquidity.
- Traders managing multi-leg positions cannot submit all the orders they need simultaneously, forcing them to sequence submissions across blocks.
- Automated strategies operating at speed are disproportionately constrained compared to what the chain can safely handle.
A per-block cap is also a blunt instrument. It penalizes bursty but legitimate activity while not meaningfully limiting a determined actor over a longer time window.
Moving to a 50 orders per 100 blocks model is a more nuanced approach:
- Allows short bursts of order activity (e.g., a market maker refreshing across 10 markets in one go)
- Caps sustained throughput at a reasonable rate
This aligns incentives better and improves the experience for active, professional participants without compromising chain safety.
Specification
This proposal modifies the BlockRateLimitConfiguration parameter in the CLOB module as follows:
| Parameter | Current Value | Proposed Value |
|---|---|---|
MaxStatefulOrdersPerNBlocks (N = 1 block) |
2 | Removed |
MaxStatefulOrdersPerNBlocks (N = 100 blocks) |
20 | 50 |
Next Steps
We plan to submit the on-chain vote shortly.