Official token directory: addresses, listings, DEX-only venues #2
Labels
No labels
agent:implement
agent:ready
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
ready
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
code/CL8Y-web#2
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?
Summary
Add an easy-to-find official directory of CL8Y token addresses, listings, and places to trade. CL8Y no longer works with centralized exchanges. All trade venues must be DEX / on-chain / aggregator pages. This is the anti-phishing surface of the marketing site: one canonical list, copyable addresses, no CEX.
Depends on the companion redesign issue for chrome/nav placement, but can land as a section + data-layer change if the redesign header is not ready.
Current codebase
Official URLs are centralized in
src/data/links.ts(links,linksByCategory). Categories today:trading,contracts,chart,social,listings,audit,comingSoon.Contracts (2):
terra16wtml2q66g82fdkx66tap0qjkahqwp4lwq3ngtygacg5q0kzycgqvhpax3(finder.terra.money)0x8F452a1fdd388A45e1080992eFF051b4dd9048d2(bscscan.com)Trading (includes a CEX we no longer use):
https://ascendex.com/en-us/cashtrade-spottrading/usdt/cl8yListings: CZodiac, Blockspot, BeInCrypto, Coinbase price page, CoinCarp, BscScan, LUNCScan, DropsTab, Coinranking, DexScreener, DexTools, CoinPaprika, CoinGecko.
Where this data is rendered today:
src/features/hero/Hero.tsx) — TidalDex + “More exchanges” (Uniswap, PancakeSwap, GDEX). AscendEX is in the data file but not in the hero filter; it still appears in Institutional partners.src/app/Home.tsx“Addresses & Locks”) — contract list, truncated, View only (no copy), TidalDex “Locked on TidalDex”, audits.Home.tsx— BSC + Terra Classic + Buy CL8Y (TidalDex).src/features/institutional/Institutional.tsx) — alltrading+listingslogos, including AscendEX and Coinbase.PROJECT_GUIDE.md“Key Links” still advertises AscendEX as live trading.UX gaps:
0x8F452a1f…) without a one-click copy of the full checksummed address.links.tspoints at a token path that may be wrong (/bsc/pools/0x8F452a1f…uses the token address as a pool id). DexScreener uses pool0xbe9f06b76e301b49dc345948a7a5e3418264886a.There is no automated test suite.
Why this is needed
Users (and support) need one obvious place to verify the real token and the real markets. The current site hides addresses, pushes TidalDex as “buy”, and still ships AscendEX + Coinbase in partner chrome. That is how people get sent to the wrong contract or a CEX we do not support.
After this work, a visitor should find addresses, listings, and DEX venues in one scan — from header, homepage section, and footer.
Constraints / guardrails
src/data/links.ts(or a replacementsrc/data/tokenDirectory.tsthatlinks.tsre-exports). UI must not hardcode TidalDex / AscendEX / contract strings (HeroImageCard currently hardcodes TidalDex).0x8F452a1fdd388A45e1080992eFF051b4dd9048d2. Terra address shown in full. Do not silently lowercase for display./, a dedicated section with its ownidfor#token/#marketsdeep link. Do not bury it only under Institutional logos.https://dex.cl8y.com) should be the first trade venue.dex.cl8y.com, that link is the primary trade CTA. Third-party DEXes are alternatives, clearly labeled by chain.Relevant files
src/data/links.ts,PROJECT_GUIDE.md(Key Links),src/lib/env.ts(VITE_CL8Y_ADDRESS, pair address)src/features/hero/Hero.tsx,src/app/Home.tsx,src/features/institutional/Institutional.tsx,src/components/visuals/HeroImageCard.tsxsrc/components/visuals/GeckoTerminalChart.tsx,src/data/embeds.tssrc/lib/env.ts— keep in sync with the BSC canonical addressRecommended direction
Replace ad-hoc lists with a typed directory module, e.g.
src/data/tokenDirectory.ts:Keep
links.tsas a thin adapter or migrate callers.New
TokenDirectoryfeature section (src/features/token/TokenDirectory.tsx):<code>), explorer link, Copy buttonWire findability:
/#token(or/#markets)id="token"Purge CEX:
ascendex-cexfrom data and remove/images/partners/ascendex.pngusagePROJECT_GUIDE.mdCanonical trade order (confirm before coding):
https://dex.cl8y.com(if CL8Y pair exists there)Copy helper: small
copyText(value: string)usingnavigator.clipboard.writeTextwithdocument.execCommand("copy")fallback. Never copy a different string than the one shown as canonical.Acceptance criteria
#tokenor#markets).PROJECT_GUIDE.md).yarn typecheck,yarn lint,yarn buildsucceed.Test plan — functional paths
Discovery
/. Header control for Token/Markets is visible on desktop and in the mobile menu (if any).https://<host>/#token.Addresses
0x8F452a1fdd388A45e1080992eFF051b4dd9048d2(checksum). Copy → clipboard matches exactly.terra16wtml2q66g82fdkx66tap0qjkahqwp4lwq3ngtygacg5q0kzycgqvhpax3. Copy matches exactly.Clipboard failure paths
Listings
noopener noreferrer.Trade venues
document.body.innerHTML/ builtdist).Institutional / hero / footer consumers
Responsive
Docs
PROJECT_GUIDE.mdKey Links matches the directory (no AscendEX).Build
yarn typecheck,yarn lint,yarn build. Searchdist/forascendex.com— zero hits.Test plan — attack, hack, and abuse vectors
The directory is a high-value phishing target. Review as if an attacker wants users to copy a wrong address or click a lookalike swap.
Address substitution
VITE_CL8Y_ADDRESSdefault insrc/lib/env.tsmatches the directory or is not shown as the official address if different.Homograph / lookalike links
dex.cl8y.com,tidaldex.com,pancakeswap.finance,app.uniswap.org,garuda-defi.org,geckoterminal.com, etc.).ascendex.com, punycode lookalikes, andcl8y.com.<attacker>redirectors.Clipboard hijacking (defense in our code)
event.target.innerTextfrom a mutable DOM node that an extension could alter after render. Prefer copying from the typed constant.XSS via copy / toast
Open redirect / query injection
new URLSearchParams(location.search)to pick a venue.Tabnabbing / reverse tabnabbing
target="_blank"+rel="noopener noreferrer"on every external directory link.SEO / share bait
Supply-chain widgets
Social engineering copy
Cache / stale CEX
distcontain noascendex/ CEX trade URLs. CDN/old JS chunk names should not keep the oldlinksarray if the module changed — verify the built chunk.Clickjacking on copy
Verification criteria
Done when a reviewer can:
ascendex.comand other CEX trade URLs are absent fromsrc/data/links.ts(or successor),PROJECT_GUIDE.md, rendered/, anddist/.yarn typecheck,yarn lint, andyarn buildsucceed.Out of scope
marked as related to #1
mentioned in merge request !8
mentioned in issue #1
mentioned in issue #3
mentioned in merge request !9
mentioned in merge request !10
Implemented on !10 (clean branch on current
main). !9 should be closed: it deletes the blog/prerender stack.mentioned in issue #4
mentioned in commit
b124356850Merge review (2026-08-26)
Merged !10 (
issue-2-official-token-directory) intomain. That branch satisfies the directory acceptance criteria:#token; addresses (BSC checksum, Terra Classic full, MegaETH), copy-from-constant, explorers, DEX-first trade group, separate listings.ascendex.com/ Coinbase / “Buy CL8Y” / “More exchanges” on current surfaces,src/data,PROJECT_GUIDE.md, anddist/.yarn test,yarn typecheck,yarn lint,yarn buildpassed. Playwright e2e (5 workers) passed.Closed !9 without merging.
detailed_merge_status: conflict. Rebasing it onto currentmainwould delete the blog/prerender stack and drop MegaETH / Kumbaya / SIR venues that are already official. Do not revive that branch.Leftovers (not blockers for this issue): unmounted
HeroImageCard/MarketingFooterstill contain “Buy CL8Y” + a hardcoded TidalDex href. They are inRETIRED_HOMEPAGE_MODULES/ unused; do not remount. Blog sidebar “About CL8Y” blurb is still old platform/GameFi wording (no CEX).Post-merge: production
curl -sI https://cl8y.comstill has no clickjacking headers (tracked on #3 / follow-up).mentioned in issue #5
mentioned in issue #6
mentioned in issue #7