Bug: Solana withdrawSubmit fails -- wallet extension uses rate-limited RPC (api.mainnet.solana.com 403) #102
Labels
No labels
agent:implement
agent:ready
backend
bug
cannot-reproduce
confirmed
desktop
docs
documentation
duplicate
enhancement
feature
frontend
good first issue
help wanted
high-risk
in-review
invalid
mobile
needs-triage
P0-critical
P1-high
P2-medium
P3-low
qa
QA
question
ready
report
responsive
security
security-escalate
smart-contract
solana
tablet
test-pass
ux
wallet-issue
wallet:keplr
wallet:metamask
wallet:station
wallet:walletconnect
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/cl8y-bridge-monorepo#102
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Mainnet v0.1.82 (
b9c6d54)Current behavior: All Solana-destination transfers (Terra->Solana, BSC->Solana, opBNB->Solana) deposit successfully on source chain but withdrawSubmit on Solana crashes with 'Cannot destructure property err of r as undefined'. The wallet extension (Phantom/Backpack) broadcasts via its own RPC (api.mainnet.solana.com) which returns HTTP 403.
Affected transfers:
Error chain:
Root cause: The bridge frontend configures 8 Solana RPC endpoints but the wallet extension uses its own RPC (api.mainnet.solana.com) for broadcasting and confirming transactions. The bridge config does not override the wallet RPC.
Possible fixes:
Note: The Solana 403 errors from injected.js in console are from the wallet extension, not the bridge frontend.
Acceptance criteria:
Wallets tested: Backpack (Solana), MetaMask (BSC/opBNB), Terra Station (Terra Classic). The Solana 403 errors come from the Backpack wallet extension using api.mainnet.solana.com as its default RPC.
QA review request (@Brouie)
A fix landed on
main(commit3803318) for the Solana withdraw / public-RPC 403 class of failures: merged backup RPC lists for all in-app Solana JSON-RPC usage, default tx path uses the bridgeConnection(sign +sendRawTransaction) instead of the wallet’s defaultsignAndSendtoapi.mainnet.solana.com, and HTTP 403-style failures surface a clearer in-UI message about switching to a wallet that supports custom RPC.Please verify manually (mainnet-beta or the environment you use for production-like QA):
injected.js/ extension code.Paste findings here so we can tune messaging or env defaults if a wallet still bypasses our RPC path. Leaving this issue open until QA signs off.
Solana RPC fix confirmed working (build
3803318). withdrawSubmit now succeeds. Remaining issue is operator not executing on Solana -- moved to #103. Closing.mentioned in issue #103
mentioned in issue #106
mentioned in issue #107
@brouie Triage (repo
main): #102 is largely addressed in code — Solana txs default to bridge RPC (pickSolanaTxConnection/sendSolanaTransactionon appConnection), mainnet URL merge deprioritizesapi.mainnet*.solana.com, and we added an explicit user message when wallets throwCannot destructure…on bad RPC JSON (formatSolanaUserFacingError+SOLANA_WALLET_RPC_BAD_RESPONSE_USER_MESSAGE). Please re-test withdrawSubmit on mainnet with a current build; avoid legacy envVITE_SOLANA_TX_USE_WALLET_RPC=trueunless intentional. If everything passes, please close this issue.mentioned in commit
5fc9eb4b50Retested on new deploy (main-CHZ1ahQz, 4/13). Verify page now reads Solana destination data correctly for active transfers -- nonce 42 shows all fields, hash match, State: Approved, Execute button visible. RPC fallback working. This issue is fixed for active transfers. Note: completed transfers (nonce 41, PDA already closed) show no dest data -- tracked separately in #106.