x/ibcratelimiterext adds an independent, governance-managed operator whitelist for IBC rate-limiter operations.
Packet enforcement remains the same as upstream ratelimiting middleware. The extension stores its own whitelist, lets governance update that whitelist through MsgUpdateParams, and lets whitelisted operators call rate-limiter mutation APIs.
Operation authorization
An address can operate the rate limiter if it can execute:MsgAddRateLimitMsgUpdateRateLimitMsgRemoveRateLimitMsgResetRateLimit
- The signer is the ratelimiting authority, normally governance authority.
- The signer is in the
ibcratelimiterextwhitelist.
Architecture
| Area | Behavior |
|---|---|
| Independent whitelist module | x/ibcratelimiterext owns Params.whitelist, MsgUpdateParams, and QueryWhitelist. |
| Ratelimiter service override | Keeps ratelimiting data plane, queries, and genesis, but overrides ratelimit.v1.Msg authorization. |
| Middleware stack v1 | transfer -> erc20 -> callbacks -> ratelimiting -> channel |
| Middleware stack v2 | transferv2 -> erc20v2 -> ratelimitingv2 |
Default genesis
params.whitelist contains bech32 account addresses allowed to execute rate-limiter write operations through this extension. Default is empty, so only ratelimiter authority can operate those commands until whitelist entries are added.
The upstream ratelimiting module has its own separate genesis in app_state.ratelimiting, including hour_epoch. ibcratelimiterext does not store or initialize those ratelimiting fields.