Skip to content

Label USDC.e Tarot/Velodrome pools correctly on Optimism#6025

Open
j0ntz wants to merge 1 commit into
developfrom
jon/velodrome-usdce-label
Open

Label USDC.e Tarot/Velodrome pools correctly on Optimism#6025
j0ntz wants to merge 1 commit into
developfrom
jon/velodrome-usdce-label

Conversation

@j0ntz

@j0ntz j0ntz commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

CHANGELOG

Does this branch warrant an entry to the CHANGELOG?

  • Yes
  • No

Dependencies

none

Description

Fixes the Velodrome/Tarot staking pools on Optimism that displayed USDC.e as USDC.

Two Tarot pools use the USDC.e contract (0x7F5c764cBc14f9669B88837ca1490cCa17c31607) but their token symbol was set to USDC:

  • TAROT/USDC pool 0x3CD9F7912B6b04b702232FBb3f12F94145B8A0E4 (the reported case)
  • USDC/VELO pool 0x5B0dce514B4AEd993751D2CF7379B75df9860312 (same mislabel)

Per edge-currency-accountbased/.../optimismInfo.ts, that contract is USDC.e, while native USDC is 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85. Because both pools showed "USDC", a user holding native USDC (but no USDC.e) believed they could stake in both but could only stake in one. The staking logic correctly requires USDC.e (keyed by tokenId); only the label was wrong.

This relabels the two USDC.e token entries in optimismTarotPool.ts from USDC to USDC.e. Only the display symbol changes; tokenId, contract addresses, and the derived stakePolicyId are untouched, so on-chain behavior and existing staking positions are unaffected. The native-USDC pool keeps its USDC label. Also added the previously-missing return type on makePolicyConfig (flagged by lint on the touched file).

Verification: tsc --noEmit clean, full jest suite (511 tests) passes, and the value flow was traced end-to-end (symbol flows to stakeAssets[].currencyCode and the TarotPoolAdaptor token match, both staying consistent). In-app verification on iOS sim (this follow-up run): the Optimism Earn scene now renders both pools with the corrected label, "Stake: TAROT + USDC.e" and "Stake: USDC.e + VELO" (previously "USDC"). Tapping the corrected TAROT + USDC.e pool opens the Optimism wallet selector as expected. Proof screenshots attached in a comment below. The deeper StakeOptions detail was not reached: edge-funds' Optimism wallets are unfunded and the slot's Optimism RPC returns "could not detect network", so no live position renders; a native SIGSEGV in the debug build also interrupts the wallet-modal drill-down. Neither affects the label, which comes from static plugin config.

Asana: https://app.asana.com/0/1215088146871429/1210469020492774

Requirements

If you have made any visual changes to the GUI. Make sure you have:

  • Tested on iOS device
  • Tested on Android device
  • Tested on small-screen device (iPod Touch)
  • Tested on large-screen device (tablet)

Note

Low Risk
Display-only symbol changes in stake plugin config; token matching still uses unchanged tokenIds and contract addresses.

Overview
Corrects Optimism Tarot/Velodrome stake labels for two pools whose on-chain asset is bridged USDC (0x7F5c764c…): TAROT/USDC and USDC/VELO now show USDC.e instead of USDC, matching wallet/token naming so users see they need USDC.e, not native Optimism USDC.

tokenId, contract addresses, and stakePolicyId are unchanged—staking behavior and existing positions are unaffected. Also adds an explicit return type on makePolicyConfig and drops optimismTarotPool.ts from the ESLint ignore list; CHANGELOG updated.

Reviewed by Cursor Bugbot for commit e59ae8d. Bugbot is set up for automated code reviews on this repo. Configure here.

The TAROT/USDC and USDC/VELO Tarot pools on Optimism use the USDC.e
contract (0x7F5c764cBc14f9669B88837ca1490cCa17c31607) but were labeled
USDC. Users with native USDC could not stake in those pools and had no
indication the pools require USDC.e. Relabel the token symbol to USDC.e
so the staking UI shows the correct required asset. Only the display
symbol changes; tokenId, contract addresses, and stakePolicyId are
unchanged, so on-chain behavior and existing positions are unaffected.
@j0ntz

j0ntz commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

📸 In-app test evidence (Optimism Earn scene, sim verification)

agent proof 1210469020492774 01 earn usdce pools

agent proof 1210469020492774 01 earn usdce pools

agent proof 1210469020492774 02 usdce pool wallet select

agent proof 1210469020492774 02 usdce pool wallet select

Captured by the agent's in-app test run (build-and-test).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant