Repository navigation
feat(withdraw): withdraw soUSD on Base - #2675
Open
MayankMittal1 wants to merge 4 commits into
Open
MayankMittal1 wants to merge 4 commits into
MayankMittal1 wants to merge 4 commits into
Conversation
…WITHDRAWALS With the flag on, a withdrawal that starts on Fuse bridges its shares to Base and queues them on the Base queue for Base USDC. Shares already on Ethereum, and resumed withdrawals that older builds bridged there, still finish on Ethereum; cancel uses the request's own chain. Base soUSD now shows in the wallet and counts toward the savings balance. The savings deposit-fee notice asks the backend about soUSD on every chain, since only the backend knows whether soUSD deposits are on Ethereum or Base. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base has no withdraw subgraph, so a Base withdraw request showed as Processing forever. Read it from the Base queue instead: pending while its id is in the queue's outstanding set, then solved or cancelled from the event that removed it. Pending requests are re-read every minute; finished ones are never re-read. Unknown stays Processing rather than guessing. The request id is attached to the activity, so a queued Base withdraw can be cancelled from its activity screen, and a cancel re-reads the status at once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Read only the Base queue's outstanding set: a request still in it is Processing, and once it leaves it is Success - or Cancelled when the user cancelled it in the app. Drops the eth_getLogs lookup. A request the solver cancels after its deadline has no cancel activity, so it now shows as Success. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
soUSD on Base (shares between a withdrawal's bridge and its queue request) now links to the same soUSD coin as on Ethereum and Fuse: it takes the curated soUSD list entry, and the Base vault joins the production shares a dev wallet recognises. Tests: the activity freshness suite mocks the Base withdraw hook and covers the Base statuses; the status test names its mock client as jest requires. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
|
Code reviewNo issues found. Checked for bugs and CLAUDE.md compliance. |
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lets soUSD withdrawals run through Base instead of Ethereum, behind
EXPO_PUBLIC_SOUSD_BASE_WITHDRAWALS. It is off by default, so merging changes nothing until the flag is set.With the flag on
0x204b…21e2) for Base USDC. The copy reads "Bridge to Base" and "USDC on Base".Always on (production config)
ADDRESSES.base. QA has no Base contracts, so QA builds stay on Ethereum unless theEXPO_PUBLIC_BASE_SOUSD_*overrides are set.getRequestIds(), re-checked every minute.Rollout
Turn the flag on only after the backend's Base solver doc is in place and the Base vault holds a USDC buffer. Until then, Base requests would never be solved, or the solve would revert. The contracts side is live: the Fuse teller is peered with Base, the vault's transfer hook is set, and the roles are configured.
Testing
useWithdraw,soUsdWithdrawStatus(new),depositFeeuseActivity.freshness(adds four Base status cases)portfolio,vaultWalletBalance,AssetsOverview,savingsFundTokenGroupsalchemyTokenPrices,cardSpendable,withRefreshToken, three BuyFuse suitestsc --noEmitand eslint are clean on the changed files.🤖 Generated with Claude Code
Need help on this PR? Tag
@codesmith-botwith what you need. Autofix is disabled.