SV Rate Limits
SV nodes protect their HTTP and gRPC endpoints against excessive load with two complementary layers:
Setting
- Application-level rate limits, enforced by the SV app, the Scan app and the sequencer. They are enabled by default and values are tuned based on observed traffic patterns. Temporary overrides can be applied by the operators to react to unexpected traffic spikes.
- Infrastructure-level rate limits, enforced by your network infrastructure. These are not shipped with Splice and must be configured by every SV operator.
Application-level rate limits
Splice apps
For each incoming request the SV app and the Scan app evaluate a per-operation per-client-IP limiter, a global per-client-IP limiter, a per-operation limiter and a global limiter. If any of them is exhausted, the request is rejected with429 Too Many Requests.
Each limiter enforces a peak rate that allows short bursts (1s window), combined with a lower rate that is enforced on average over a longer window (60s). Limits can be set globally for an app, per operation, and per client IP.
Client IP header configuration
The headers used to extract the client IP are configured through the ordered listrate-limiting.client-ip-headers: the first configured header that is present and parses as an IP literal is used, taking the first entry of comma-separated values such as X-Forwarded-For. IPv6 addresses are grouped by their /64 prefix.
client-ip-headers to an empty list disables per-client-IP rate limiting entirely and is not recommended.
Shared rate limiter configuration
Similar to the sequencer traffic caps configuration, a shared rate limiter configuration file will be maintained centrally for each network (DevNet, TestNet, MainNet). The file defines any overrides that must be applied to the defaults.Monitoring
splice_rate_limiting— metrics prefix that identifies the rate limiting metrics.
Infrastructure-level rate limits
Requirements
The following infrastructure level rate limits should be configured. These limits should apply individually to the Scan API and the sequencer gRPC API. These limits should be higher than the application level limits, and work as a last line of defense.- Global limits: a cap on the total request rate reaching a given service.
- Per-source-IP limits: a cap on the request rate of a single client IP, so a single client cannot consume the global budget.
Enforcement window
Both limits must be enforced over a fixed window of 60 seconds. A client is allowed at mostlimit requests per 60s window; once the budget for the current window is exhausted, all further requests from that client (or, for the global limit, to that service) are rejected with 429 Too Many Requests until the window rolls over.
For the sequencer, limits must be applied to gRPC(HTTP/2) traffic.