Repository navigation
Conversation
An asset was shown as verified when any asset list entry shared its issuer, without checking the asset code. So every code an issuer minted was verified when the list named only one of them (for example USDe from the issuer of the listed USDE). Classic assets now match a list entry only when both code and issuer match. Contract tokens still match by contract ID. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014B2zysccigTczhF1iiZNuu
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.
What
The "Verified" check for classic tokens now uses the token code and the issuer together. Before this change, it used only the issuer.
src/helpers/verifiedTokenIds.tswith two functions:buildVerifiedTokenIdsmakes the set of IDs from the verified token lists: the contract ID of each entry, and theCODE:issuerpair of each entry.isTokenInVerifiedIdsreturns true if the token's issuer is a listed contract ID, or if the token'sCODE:issuerpair is in the set.splitVerifiedTokens(Add Token search and Swap search) uses these functions.computeTrendingIntersection(Swap popular tokens) uses these functions.USDEandUSDeare different tokens. The address comparison is still case-insensitive, as before.Why
When you search for "usde", both
USDEandUSDefrom the issuerGDJ5BNU5NN6NQ54D7OX6NQTUYNBZ42CAT33QGM5BIQ2QIYADAC5ICH47show as verified. The Soroswap list containsUSDE,SUSDEandENAfrom this issuer. It does not containUSDe.USDeshowed as verified only because its issuer is on the list.With the old rule, any token code from an issuer on a list shows as verified. For example, a listed issuer can issue a new token with the code
USDC, and the app shows it as verified. The extension has the same problem and gets the same fix in stellar/freighter#3041.Known limitations
A verified token list entry must have a
codefor its classic token to match. An entry with an issuer and no code does not verify any token now. Entries in the current lists all have a code.Screenshots / video
No screenshots. Expected result for the search "usde":
USDE,USDeUSDE.USDemoves to the unverified section.Checklist
PR structure
Testing
Release
Tests: new and updated tests in
splitVerifiedTokens.test.tsandcomputeTrendingIntersection.test.ts. The full Jest suite passes. ESLint, Prettier andtsc --noEmitpass. The change was not tested on a device.Generated by Claude Code