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). An in-app screenshot of the corrected label could not be captured: the slot's debug build crash-loops at startup with a native Swift SQLite SIGTRAP in TransactionSQLDAO / Connection.prepare, reproduced across two test accounts and unrelated to this JS-only change. A reviewer with a working build should confirm the Optimism Tarot stake list now shows "TAROT + USDC.e".

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.
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