Bug: opBNB->Solana withdraw_execute fails -- RateLimitExceededPerTx (6035) #105

Closed
opened 2026-04-10 04:15:03 +00:00 by Brouie · 7 comments
Brouie commented 2026-04-10 04:15:03 +00:00 (Migrated from gitlab.com)

Mainnet v0.1.82 (7cb18b3 + operator hotfix 4/10)

opBNB->Solana 0.995 testa nonce 17 (hash 0x08dfd2dcd7163791...). Deposit OK, withdrawSubmit OK, operator approved, but withdraw_execute simulation fails:

AnchorError thrown in programs/cl8y-bridge/src/rate_limit.rs:67. Error Code: RateLimitExceededPerTx. Error Number: 6035.
Error Message: Withdraw amount exceeds configured maximum per transaction.
Program 4XX8ndYXupw4Sb4SsRgAPTmBJJjfZbg8rWjj87iKEhVt consumed 41809 of 200000 compute units

0.995 testa exceeds the per-tx rate limit configured on the Solana bridge program. BSC->Solana 0.995 testa worked fine, so the rate limit config differs per source chain or the opBNB token mapping has a tighter limit.

Similar pattern to #100 (EVM-side rate limit post-fee issue).

Acceptance criteria:

  • Per-tx rate limit for opBNB->Solana testa allows test amounts
  • withdraw_execute succeeds for opBNB-origin transfers
Mainnet v0.1.82 (7cb18b3 + operator hotfix 4/10) opBNB->Solana 0.995 testa nonce 17 (hash 0x08dfd2dcd7163791...). Deposit OK, withdrawSubmit OK, operator approved, but withdraw_execute simulation fails: ``` AnchorError thrown in programs/cl8y-bridge/src/rate_limit.rs:67. Error Code: RateLimitExceededPerTx. Error Number: 6035. Error Message: Withdraw amount exceeds configured maximum per transaction. Program 4XX8ndYXupw4Sb4SsRgAPTmBJJjfZbg8rWjj87iKEhVt consumed 41809 of 200000 compute units ``` 0.995 testa exceeds the per-tx rate limit configured on the Solana bridge program. BSC->Solana 0.995 testa worked fine, so the rate limit config differs per source chain or the opBNB token mapping has a tighter limit. Similar pattern to #100 (EVM-side rate limit post-fee issue). Acceptance criteria: - [ ] Per-tx rate limit for opBNB->Solana testa allows test amounts - [ ] withdraw_execute succeeds for opBNB-origin transfers
Brouie commented 2026-04-10 04:18:51 +00:00 (Migrated from gitlab.com)

Rate limit updated by dev (4/10). Same transfer now fails with the opposite error:

RateLimitBelowMin (6034) -- 0.995 testa below configured minimum per transaction (was RateLimitExceededPerTx 6035 before update).

rate_limit.rs:64 instead of :67. The update lowered the max but also raised the min above 0.995.

Rate limit updated by dev (4/10). Same transfer now fails with the opposite error: RateLimitBelowMin (6034) -- 0.995 testa below configured minimum per transaction (was RateLimitExceededPerTx 6035 before update). rate_limit.rs:64 instead of :67. The update lowered the max but also raised the min above 0.995.
Brouie commented 2026-04-10 05:56:04 +00:00 (Migrated from gitlab.com)

Fresh opBNB->Solana 9.95 testa nonce 19 (hash 0x044bc4fbf7443af61b3e70a4eb7d8bcbc41d996c53825e8d4c4e847f34a63656). Verify page shows hash never submitted to Solana. Auto-submit failed (403 RPC). "Submit Hash Now" button on verify page redirects back to bridge page instead of submitting. Transfer stuck at step 2.

The 1 testa attempt also stuck at same point -- both below min rate limit AND hash never submitted.

All Solana-destination frontend interactions are broken by the api.mainnet.solana.com 403 polling. Only BSC->Solana worked earlier because auto-submit happened to succeed before the RPC got rate-limited.

Fresh opBNB->Solana 9.95 testa nonce 19 (hash 0x044bc4fbf7443af61b3e70a4eb7d8bcbc41d996c53825e8d4c4e847f34a63656). Verify page shows hash never submitted to Solana. Auto-submit failed (403 RPC). "Submit Hash Now" button on verify page redirects back to bridge page instead of submitting. Transfer stuck at step 2. The 1 testa attempt also stuck at same point -- both below min rate limit AND hash never submitted. All Solana-destination frontend interactions are broken by the api.mainnet.solana.com 403 polling. Only BSC->Solana worked earlier because auto-submit happened to succeed before the RPC got rate-limited.
PlasticDigits commented 2026-04-13 03:58:07 +00:00 (Migrated from gitlab.com)

@brouie Triage (repo main): RateLimitExceededPerTx is enforced on normalized payout vs WithdrawRateLimit (per SPL mint). Admin tooling: packages/contracts-solana/scripts/set-mainnet-withdraw-rate-limits.ts sets generous explicit caps for the known test SPL mints. If opBNB→Solana still fails after limits are set on-chain, compare normalized payout vs BSC for the same nominal amount (decimals / mapping). Please run or confirm the admin set_rate_limit path on mainnet and re-test; close if withdrawals succeed.

@brouie Triage (repo `main`): `RateLimitExceededPerTx` is enforced on normalized payout vs `WithdrawRateLimit` (per SPL mint). Admin tooling: `packages/contracts-solana/scripts/set-mainnet-withdraw-rate-limits.ts` sets generous explicit caps for the known test SPL mints. If opBNB→Solana still fails after limits are set on-chain, compare normalized payout vs BSC for the same nominal amount (decimals / mapping). Please run or confirm the admin `set_rate_limit` path on mainnet and re-test; close if withdrawals succeed.
Brouie commented 2026-04-13 04:05:31 +00:00 (Migrated from gitlab.com)

@PlasticDigits Retested all 3 inbound Solana paths today (4/13). Operator approval now works on all paths -- #103 fix confirmed live.

But withdraw_execute fails on ALL Solana-destination paths with RateLimitBelowMin (6034), not just opBNB:

  • BSC->Solana 0.995 testa nonce 42: Custom:6034
  • opBNB->Solana 0.995 testa nonce 20: Custom:6034
  • Terra->Solana 0.997 testa nonce 54: Custom:3012 (separate issue, #104 token_mapping PDA)

The set-mainnet-withdraw-rate-limits.ts script exists in repo but appears not yet run on mainnet. This blocks all Solana execute steps.

@PlasticDigits Retested all 3 inbound Solana paths today (4/13). Operator approval now works on all paths -- #103 fix confirmed live. But withdraw_execute fails on ALL Solana-destination paths with RateLimitBelowMin (6034), not just opBNB: - BSC->Solana 0.995 testa nonce 42: Custom:6034 - opBNB->Solana 0.995 testa nonce 20: Custom:6034 - Terra->Solana 0.997 testa nonce 54: Custom:3012 (separate issue, #104 token_mapping PDA) The set-mainnet-withdraw-rate-limits.ts script exists in repo but appears not yet run on mainnet. This blocks all Solana execute steps.
PlasticDigits commented 2026-04-13 04:13:07 +00:00 (Migrated from gitlab.com)

@Brouie This is expected behavior because the minimum is 0.1 for testa, so this can be closed as success. However, we need to open a seperate issue to make sure that when user selects min in frontend, the frontend sends the ACTUAL min, which is min+fees

@Brouie This is expected behavior because the minimum is 0.1 for testa, so this can be closed as success. However, we need to open a seperate issue to make sure that when user selects min in frontend, the frontend sends the ACTUAL min, which is min+fees
Brouie commented 2026-04-13 04:16:24 +00:00 (Migrated from gitlab.com)

Closing -- rate limit behavior is expected (amounts below configured minimum). The underlying RateLimitExceededPerTx from original filing is resolved. Frontend UX issue refiled separately -- frontend should show minimum amount or block execute if below threshold instead of letting simulation fail.

Closing -- rate limit behavior is expected (amounts below configured minimum). The underlying RateLimitExceededPerTx from original filing is resolved. Frontend UX issue refiled separately -- frontend should show minimum amount or block execute if below threshold instead of letting simulation fail.
Brouie (Migrated from gitlab.com) closed this issue 2026-04-13 04:16:39 +00:00
Brouie commented 2026-04-13 04:47:17 +00:00 (Migrated from gitlab.com)

mentioned in issue #108

mentioned in issue #108
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
code/cl8y-bridge-monorepo#105
No description provided.