Bug: Operator does not execute withdrawals on Solana (no Solana watcher) #103
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#103
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 (
3803318)Current behavior: All 3 Solana-destination transfers stuck at Approved. Deposit succeeds on source chain, withdrawSubmit succeeds on Solana, operator approves, but operator never calls withdraw_execute on Solana. Transfers remain stuck at step 3/4 indefinitely.
Affected transfers:
Expected behavior: Operator should watch Solana bridge program for approved withdrawals and execute them after cancel window, same as it does for EVM and Terra destinations.
Context: Same pattern observed on devnet -- operator watches EVM + Terra only. No Solana watcher or withdraw_execute implementation for Solana destination.
Wallets tested: Backpack (Solana), MetaMask (BSC/opBNB), Terra Station (Terra)
Acceptance criteria:
mentioned in issue #102
@brouie
I've confrimed these have not been submitted to verification eg
https://bridge.cl8y.com/verify?hash=0x12b359b812c0e805f11db39d4e421268134d7e9bc31aefc9ff5b481c245ff7a7
https://bridge.cl8y.com/verify?hash=0x0e2dd145bdff038bbb62abad831ea0f30f2bdf38eb39f19bf7746774cb9e20c9
https://bridge.cl8y.com/verify?hash=0x4a5d02bf805b91915c14535df9bab12bfd683d6d1c4d3f5cf197cae4570671e7
All show "Hash not submnitted to destination" and "submit hash now" button
@brouie Could you verify the Solana withdrawal flow and help align the Solana QA checklist?
Solana withdraws are different from EVM/Terra: the recipient must call
withdraw_execute(it is not the model where the operator runswithdrawExecuteafter approve on behalf of the user).Expected flow
withdraw_submiton Solana (destination) — submit the withdrawal hash.withdraw_approveon Solana.withdraw_execute(SPL) orwithdraw_execute_native(native SOL) using the same Solana wallet that was set as the recipient /destAccountin the original transfer (step 1 / hash).Please confirm this matches what you see on-chain and in operator tooling.
Request: update or extend the Solana QA checklist for withdrawals so QA explicitly checks that, after operator approval and once the withdraw delay / cancel window has passed, the user completes the leg by calling
withdraw_executefrom the recipient wallet — not only “operator executed.”Thanks!
Retested on build
7cb18b3(4/10). 3 fresh Solana-destination transfers all stuck at Pending -- operator not approving.Fresh transfers (4/10):
All 3: deposit OK, withdrawSubmit OK (auto-submit worked), hash matches on verify page, but State remains Pending. 10+ min elapsed, no operator approval.
Same pattern as the 3 stuck transfers from 4/9 (nonces 52, old BSC, old opBNB). Operator Solana watcher still not picking up submitted withdrawals.
Also noted: Submitted timestamp shows 1/1/1970, 8:00:01 AM on all Solana-destination verify pages (epoch zero).
Additional frontend finding: SolanaRecipientExecutePanel polls api.mainnet.solana.com via setInterval and gets repeated 403s. The bridge Connection RPC works for tx submission but read/polling calls still hit the wallet default RPC. Related to #102.
@brouie Triage (repo
main): Solana destination payouts are recipient-signedwithdraw_execute(see UI copy inSolanaRecipientExecutePanel), not operator-broadcast execute like EVM/Terra. The operator does runwithdraw_approveviaSolanaWriter(on-chainPendingWithdrawdiscovery + source verification).SolanaWatcherindexes Solana-as-source deposits only. So the acceptance criterion “operator calls withdraw_execute on Solana” does not match protocol design; the missing approve automation from the report is whatSolanaWritercovers. Please confirm approve + recipient execute on your environment and close or narrow the issue if satisfied.mentioned in issue #105
Confirmed fixed on 4/13. Tested all 3 inbound Solana paths (BSC, opBNB, Terra). Operator auto-discovers and approves all withdrawals. Nonces 42 (BSC), 20 (opBNB), 54 (Terra) all reached Approved state. Commits
4b62f97,63784df,e89b7eafixed the on-chain state polling and Base64 memcmp.mentioned in commit
05d37aaebementioned in issue #126