From a9f282b4af067309ef70507436aac6f937bad4f8 Mon Sep 17 00:00:00 2001 From: Martin Florian Date: Tue, 18 Aug 2026 17:39:46 +0200 Subject: [PATCH 1/3] Double scan rate limits for `/registry/transfer-instruction/v1/transfer-factory` (#6830) Based on experience on MainNet, see DACH-NY/canton-network-internal#6543 This endpoint is cheap, some IP(s) are getting rate limited at 3-4 requests / second. [static] Signed-off-by: Martin Florian --- .../shared/rate-limits/token-registry.yaml | 8 ++++---- .../deployment/scratchneta/config.resolved.yaml | 8 ++++---- .../deployment/scratchnetb/config.resolved.yaml | 8 ++++---- .../deployment/scratchnetc/config.resolved.yaml | 8 ++++---- .../deployment/scratchnetd/config.resolved.yaml | 8 ++++---- .../deployment/scratchnete/config.resolved.yaml | 8 ++++---- cluster/expected/sv-runbook/expected.json | 16 ++++++++-------- 7 files changed, 32 insertions(+), 32 deletions(-) diff --git a/cluster/configs/shared/rate-limits/token-registry.yaml b/cluster/configs/shared/rate-limits/token-registry.yaml index 7997521b60..abda7327bd 100644 --- a/cluster/configs/shared/rate-limits/token-registry.yaml +++ b/cluster/configs/shared/rate-limits/token-registry.yaml @@ -52,12 +52,12 @@ rateLimits: /registry/transfer-instruction/v1/transfer-factory: name: registry-transfer-factory type: limited - maxTokens: 730 - tokensPerFill: 730 + maxTokens: 1440 + tokensPerFill: 1440 fillInterval: 60s perIpLimits: - maxTokens: 120 - tokensPerFill: 120 + maxTokens: 240 + tokensPerFill: 240 fillInterval: 60s /registry/allocation/v2/settlement-factory: name: registry-settlement-factory-v2 diff --git a/cluster/deployment/scratchneta/config.resolved.yaml b/cluster/deployment/scratchneta/config.resolved.yaml index 3734a99ebe..c894f3b765 100644 --- a/cluster/deployment/scratchneta/config.resolved.yaml +++ b/cluster/deployment/scratchneta/config.resolved.yaml @@ -460,13 +460,13 @@ sv: type: 'limited' /registry/transfer-instruction/v1/transfer-factory: fillInterval: '60s' - maxTokens: 730 + maxTokens: 1440 name: 'registry-transfer-factory' perIpLimits: fillInterval: '60s' - maxTokens: 120 - tokensPerFill: 120 - tokensPerFill: 730 + maxTokens: 240 + tokensPerFill: 240 + tokensPerFill: 1440 type: 'limited' /registry/transfer-instruction/v2: fillInterval: '60s' diff --git a/cluster/deployment/scratchnetb/config.resolved.yaml b/cluster/deployment/scratchnetb/config.resolved.yaml index 3734a99ebe..c894f3b765 100644 --- a/cluster/deployment/scratchnetb/config.resolved.yaml +++ b/cluster/deployment/scratchnetb/config.resolved.yaml @@ -460,13 +460,13 @@ sv: type: 'limited' /registry/transfer-instruction/v1/transfer-factory: fillInterval: '60s' - maxTokens: 730 + maxTokens: 1440 name: 'registry-transfer-factory' perIpLimits: fillInterval: '60s' - maxTokens: 120 - tokensPerFill: 120 - tokensPerFill: 730 + maxTokens: 240 + tokensPerFill: 240 + tokensPerFill: 1440 type: 'limited' /registry/transfer-instruction/v2: fillInterval: '60s' diff --git a/cluster/deployment/scratchnetc/config.resolved.yaml b/cluster/deployment/scratchnetc/config.resolved.yaml index 3734a99ebe..c894f3b765 100644 --- a/cluster/deployment/scratchnetc/config.resolved.yaml +++ b/cluster/deployment/scratchnetc/config.resolved.yaml @@ -460,13 +460,13 @@ sv: type: 'limited' /registry/transfer-instruction/v1/transfer-factory: fillInterval: '60s' - maxTokens: 730 + maxTokens: 1440 name: 'registry-transfer-factory' perIpLimits: fillInterval: '60s' - maxTokens: 120 - tokensPerFill: 120 - tokensPerFill: 730 + maxTokens: 240 + tokensPerFill: 240 + tokensPerFill: 1440 type: 'limited' /registry/transfer-instruction/v2: fillInterval: '60s' diff --git a/cluster/deployment/scratchnetd/config.resolved.yaml b/cluster/deployment/scratchnetd/config.resolved.yaml index 3734a99ebe..c894f3b765 100644 --- a/cluster/deployment/scratchnetd/config.resolved.yaml +++ b/cluster/deployment/scratchnetd/config.resolved.yaml @@ -460,13 +460,13 @@ sv: type: 'limited' /registry/transfer-instruction/v1/transfer-factory: fillInterval: '60s' - maxTokens: 730 + maxTokens: 1440 name: 'registry-transfer-factory' perIpLimits: fillInterval: '60s' - maxTokens: 120 - tokensPerFill: 120 - tokensPerFill: 730 + maxTokens: 240 + tokensPerFill: 240 + tokensPerFill: 1440 type: 'limited' /registry/transfer-instruction/v2: fillInterval: '60s' diff --git a/cluster/deployment/scratchnete/config.resolved.yaml b/cluster/deployment/scratchnete/config.resolved.yaml index 3734a99ebe..c894f3b765 100644 --- a/cluster/deployment/scratchnete/config.resolved.yaml +++ b/cluster/deployment/scratchnete/config.resolved.yaml @@ -460,13 +460,13 @@ sv: type: 'limited' /registry/transfer-instruction/v1/transfer-factory: fillInterval: '60s' - maxTokens: 730 + maxTokens: 1440 name: 'registry-transfer-factory' perIpLimits: fillInterval: '60s' - maxTokens: 120 - tokensPerFill: 120 - tokensPerFill: 730 + maxTokens: 240 + tokensPerFill: 240 + tokensPerFill: 1440 type: 'limited' /registry/transfer-instruction/v2: fillInterval: '60s' diff --git a/cluster/expected/sv-runbook/expected.json b/cluster/expected/sv-runbook/expected.json index b98f3a19cc..f88a018d19 100644 --- a/cluster/expected/sv-runbook/expected.json +++ b/cluster/expected/sv-runbook/expected.json @@ -1173,14 +1173,14 @@ }, "/registry/transfer-instruction/v1/transfer-factory": { "fillInterval": "60s", - "maxTokens": 730, + "maxTokens": 1440, "name": "registry-transfer-factory", "perIpLimits": { "fillInterval": "60s", - "maxTokens": 120, - "tokensPerFill": 120 + "maxTokens": 240, + "tokensPerFill": 240 }, - "tokensPerFill": 730, + "tokensPerFill": 1440, "type": "limited" }, "/registry/transfer-instruction/v2": { @@ -2452,8 +2452,8 @@ ], "token_bucket": { "fill_interval": "60s", - "max_tokens": 730, - "tokens_per_fill": 730 + "max_tokens": 1440, + "tokens_per_fill": 1440 } }, { @@ -2468,8 +2468,8 @@ ], "token_bucket": { "fill_interval": "60s", - "max_tokens": 120, - "tokens_per_fill": 120 + "max_tokens": 240, + "tokens_per_fill": 240 } }, { From ca846b2ceb01b8812e8bae01a580ed584a9da2c6 Mon Sep 17 00:00:00 2001 From: DA Automation Date: Tue, 18 Aug 2026 15:50:08 +0000 Subject: [PATCH 2/3] update expected Signed-off-by: DA Automation --- cluster/expected/canton-network/expected.json | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/cluster/expected/canton-network/expected.json b/cluster/expected/canton-network/expected.json index a41eab1ef3..4adc86dd0f 100644 --- a/cluster/expected/canton-network/expected.json +++ b/cluster/expected/canton-network/expected.json @@ -1948,14 +1948,14 @@ }, "/registry/transfer-instruction/v1/transfer-factory": { "fillInterval": "60s", - "maxTokens": 730, + "maxTokens": 1440, "name": "registry-transfer-factory", "perIpLimits": { "fillInterval": "60s", - "maxTokens": 120, - "tokensPerFill": 120 + "maxTokens": 240, + "tokensPerFill": 240 }, - "tokensPerFill": 730, + "tokensPerFill": 1440, "type": "limited" }, "/registry/transfer-instruction/v2": { @@ -2337,14 +2337,14 @@ }, "/registry/transfer-instruction/v1/transfer-factory": { "fillInterval": "60s", - "maxTokens": 730, + "maxTokens": 1440, "name": "registry-transfer-factory", "perIpLimits": { "fillInterval": "60s", - "maxTokens": 120, - "tokensPerFill": 120 + "maxTokens": 240, + "tokensPerFill": 240 }, - "tokensPerFill": 730, + "tokensPerFill": 1440, "type": "limited" }, "/registry/transfer-instruction/v2": { @@ -3664,8 +3664,8 @@ ], "token_bucket": { "fill_interval": "60s", - "max_tokens": 730, - "tokens_per_fill": 730 + "max_tokens": 1440, + "tokens_per_fill": 1440 } }, { @@ -3680,8 +3680,8 @@ ], "token_bucket": { "fill_interval": "60s", - "max_tokens": 120, - "tokens_per_fill": 120 + "max_tokens": 240, + "tokens_per_fill": 240 } }, { @@ -5821,8 +5821,8 @@ ], "token_bucket": { "fill_interval": "60s", - "max_tokens": 730, - "tokens_per_fill": 730 + "max_tokens": 1440, + "tokens_per_fill": 1440 } }, { @@ -5837,8 +5837,8 @@ ], "token_bucket": { "fill_interval": "60s", - "max_tokens": 120, - "tokens_per_fill": 120 + "max_tokens": 240, + "tokens_per_fill": 240 } }, { From 4b224e89e522b1741b056ef421e9737643f5287f Mon Sep 17 00:00:00 2001 From: DA Automation Date: Tue, 18 Aug 2026 15:50:08 +0000 Subject: [PATCH 3/3] [static] Signed-off-by: DA Automation