diff --git a/.beads/pr-context.jsonl b/.beads/pr-context.jsonl index ec4cf00c824..b46eb353c9f 100644 --- a/.beads/pr-context.jsonl +++ b/.beads/pr-context.jsonl @@ -1,4 +1,7 @@ -{"id":"shapeshiftWeb-2f09","title":"Sanity check Ink + Scroll regen data","description":"Verify generatedAssetData.json has entries for both eip155:534352 (Scroll) and eip155:57073 (Ink). Verify relatedAssetIndex.json has inkAssetId in ETH related array. Verify no regressions. Run review-second-class-evm skill.","status":"closed","priority":1,"issue_type":"task","owner":"contact@0xgom.es","created_at":"2026-02-19T13:51:24.013329+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T17:01:37.198079+01:00","closed_at":"2026-02-19T17:01:37.198079+01:00","close_reason":"Popular assets + market data verified working after cache clear. All ink fixes merged, PR #11960 opened.","dependencies":[{"issue_id":"shapeshiftWeb-2f09","depends_on_id":"shapeshiftWeb-cgtg","type":"blocks","created_at":"2026-02-19T13:51:48.716437+01:00","created_by":"gomes-bot"}]} -{"id":"shapeshiftWeb-4uq9","title":"Checkout + merge-fix Ink PR #11904","description":"Checkout Ink PR, extract regen data before merge, merge origin/develop with -X theirs to resolve all conflicts in favor of develop. Result: branch has Ink code changes but develop's generated files.","status":"closed","priority":1,"issue_type":"task","owner":"contact@0xgom.es","created_at":"2026-02-19T13:50:52.705351+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T13:53:13.843624+01:00","closed_at":"2026-02-19T13:53:13.843624+01:00","close_reason":"Merged origin/develop with -X theirs, all conflicts resolved"} -{"id":"shapeshiftWeb-cgtg","title":"Cherry-pick Ink regen data into develop generated files","description":"Extract Ink (eip155:57073) entries from saved PR generated files. Merge into develop's generatedAssetData.json, relatedAssetIndex.json. Create coingecko adapter. Bump clearAssets migration. Regenerate manifest hashes + brotli/gzip compression.","status":"closed","priority":1,"issue_type":"task","owner":"contact@0xgom.es","created_at":"2026-02-19T13:51:03.136273+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T13:56:30.878339+01:00","closed_at":"2026-02-19T13:56:30.878339+01:00","close_reason":"Added coingecko adapter, index.ts import/export, migration bump 293. User will run yarn generate:asset-data for actual regen.","dependencies":[{"issue_id":"shapeshiftWeb-cgtg","depends_on_id":"shapeshiftWeb-4uq9","type":"blocks","created_at":"2026-02-19T13:51:38.351227+01:00","created_by":"gomes-bot"}]} -{"id":"shapeshiftWeb-l6zn","title":"Add Ink native to ETH related asset index + recompress","status":"closed","priority":1,"issue_type":"bug","owner":"contact@0xgom.es","created_at":"2026-02-19T16:09:45.315585+01:00","created_by":"gomes-bot","updated_at":"2026-02-19T16:12:14.214097+01:00","closed_at":"2026-02-19T16:12:14.214097+01:00","close_reason":"Closed"} +{"id":"shapeshiftweb-33d","title":"bugfix pass: wrapped assets, popular assets, chain icons for second-class EVM chains","description":"Sequential bugfix pass from Mantle to Mode. For each PR: checkout, fix issues, merge previous, build/regen/lint/typecheck, commit and push. NEVER force push. NEVER merge PRs. gh api read-only (PR body + comments only). Key fixes: (1) Generalize wrapped native asset detection from Berachain to all chains via chainId-\u003ewrappedNativeAddress mapping, (2) Fix popular assets availability (Cronos only has 2, Linea too), (3) Fix Linea perma-loading asset icon, (4) Sanity check brand chain icons for each chain, (5) Update second-class-evm-chain contract with learnings, (6) Create append-only check skill to prevent closing brace issues in future PRs.","status":"open","priority":2,"issue_type":"epic","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:00Z","created_by":"gomes","updated_at":"2026-02-20T15:05:00Z"} +{"id":"shapeshiftweb-33d.1","title":"Mantle (#11905): generalize wrapped native detection, fix popular assets, fix Linea icon, update contract, create append-only skill","description":"gh pr checkout 11905. (1) Generalize Berachain's WBERA burn detection to all second-class chains via WRAPPED_NATIVE_BY_CHAIN_ID mapping in SecondClassEvmAdapter.ts - add WMNT address for Mantle. (2) Investigate + fix popular assets issue (compare against happy chains like Scroll/Ink). (3) Fix Linea perma-loading asset icon. (4) Update .claude/contracts/second-class-evm-chain.md with wrapped native + popular assets learnings. (5) Create append-only check skill to prevent closing brace issues. (6) Sanity check Mantle chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"in-progress","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:20Z","created_by":"gomes","updated_at":"2026-02-20T15:05:51Z","dependencies":[{"issue_id":"shapeshiftweb-33d.1","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} +{"id":"shapeshiftweb-33d.2","title":"Cronos (#11910): ensure wrapped asset fix for WCRO, fix popular assets","description":"gh pr checkout 11910. Merge Mantle branch. Ensure WCRO address in WRAPPED_NATIVE_BY_CHAIN_ID. Fix popular assets (only 2 currently). Sanity check chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:20Z","created_by":"gomes","updated_at":"2026-02-20T15:05:20Z","dependencies":[{"issue_id":"shapeshiftweb-33d.2","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.2","depends_on_id":"shapeshiftweb-33d.1","type":"blocks","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} +{"id":"shapeshiftweb-33d.3","title":"Sonic (#11923): merge Cronos, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11923. Merge Cronos branch. Check if Sonic has wrapped native pattern (likely WSONIC). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.3","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.3","depends_on_id":"shapeshiftweb-33d.2","type":"blocks","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} +{"id":"shapeshiftweb-33d.4","title":"Unichain (#11924): merge Sonic, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11924. Merge Sonic branch. Check wrapped native pattern (WETH on Unichain). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.4","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.4","depends_on_id":"shapeshiftweb-33d.3","type":"blocks","created_at":"2026-02-20T16:05:20Z","created_by":"gomes","metadata":"{}"}]} +{"id":"shapeshiftweb-33d.5","title":"BOB (#11925): merge Unichain, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11925. Merge Unichain branch. Check wrapped native pattern (WETH on BOB). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.5","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.5","depends_on_id":"shapeshiftweb-33d.4","type":"blocks","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"}]} +{"id":"shapeshiftweb-33d.6","title":"Mode (#11926): merge BOB, ensure no wrapped/popular bugs, sanity check icon","description":"gh pr checkout 11926. Merge BOB branch. Check wrapped native pattern (WETH on Mode). Sanity check popular assets + chain icon. Build/regen/lint/typecheck/commit/push. NEVER force push. NEVER merge PR.","status":"open","priority":2,"issue_type":"task","owner":"17035424+gomesalexandre@users.noreply.github.com","created_at":"2026-02-20T15:05:21Z","created_by":"gomes","updated_at":"2026-02-20T15:05:21Z","dependencies":[{"issue_id":"shapeshiftweb-33d.6","depends_on_id":"shapeshiftweb-33d","type":"parent-child","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"},{"issue_id":"shapeshiftweb-33d.6","depends_on_id":"shapeshiftweb-33d.5","type":"blocks","created_at":"2026-02-20T16:05:21Z","created_by":"gomes","metadata":"{}"}]} diff --git a/.beads/ss-dx5.3.json b/.beads/ss-dx5.3.json new file mode 100644 index 00000000000..c961d35b88f --- /dev/null +++ b/.beads/ss-dx5.3.json @@ -0,0 +1,39 @@ +[ + { + "id": "ss-dx5.3", + "title": "Integrate Mantle (chainId: 5000, MNT, Optimistic L2)", + "description": "TVL: $433.3M | RPC: https://rpc.mantle.xyz | Explorer: https://mantlescan.xyz | Token Support: All | Pattern B (RPC-only) | Non-ETH native token (MNT)", + "notes": "Logo: https://assets.relay.link/icons/5000/light.png (dark: dark.png)\nCoinGecko: mantle\nArch: Optimistic L2\nViem key: mantle\n⚠️ NON-ETH GAS: MNT - must configure in chainIdToFeeAssetId.ts\nChecklist: [ ] chain-adapters [ ] caip [ ] asset-service [ ] feature-flag [ ] plugin [ ] env-config [ ] icon/logo [ ] fee-asset-config\n\n--- RELAY ACTIVATION ---\n[ ] Add to chainIdToRelayChainId in packages/swapper/src/swappers/RelaySwapper/constant.ts\n[ ] Add native asset case in packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts\n--- ASSET DATA REGEN ---\n[ ] Create scripts/generateAssetData/\u003cchainname\u003e/index.ts\n[ ] Add case to scripts/generateAssetData/coingecko.ts\n[ ] Add import + getAssets call to scripts/generateAssetData/generateAssetData.ts\n[ ] Run: yarn generate:asset-data\n--- DRAFT PR ---\n[ ] Branch: feat/integrate-\u003cchainname\u003e-relay (off develop)\n[ ] gh pr create --draft using .github/PULL_REQUEST_TEMPLATE.md\n[ ] Fill: Description, Issue (Part of #11902), Risk (Low - behind feature flag), Testing (enable flag + verify chain + relay bridge quote), Operations (behind flag checkbox)\n[ ] yarn lint --fix \u0026\u0026 yarn type-check must pass before PR", + "status": "open", + "priority": 1, + "issue_type": "task", + "owner": "14963751+NeOMakinG@users.noreply.github.com", + "created_at": "2026-02-17T10:55:24Z", + "created_by": "NeOMakinG", + "updated_at": "2026-02-17T11:21:35Z", + "labels": [ + "evm", + "non-eth-gas", + "relay", + "tier-1" + ], + "dependencies": [ + { + "id": "ss-dx5", + "title": "Add support for missing Relay.link EVM chains", + "description": "Master epic tracking integration of ALL chains supported by Relay.link that ShapeShift web doesn't currently support. Enables cross-chain bridging capabilities via Relay infrastructure. See https://github.com/shapeshift/web/issues/11902 for full details. All new EVM chains will use Pattern B (RPC-only + getKnownTokens) since no ShapeShift unchained indexer infrastructure exists for these chains.", + "notes": "=== FROM ISSUE COMMENTS ===\n\nLOGO PATTERN: https://assets.relay.link/icons/{chainId}/light.png (dark: dark.png)\n\nARCHITECTURE GROUPS:\n- OP Stack (standard): Ink, Unichain, BOB, Mode, Hemi, World Chain, Soneium, Zircuit, Lisk, Cyber, Blast, Zora, Redstone, Shape, Superseed, Manta Pacific\n- zkEVM (special handling): Scroll, zkSync Era, Linea, Polygon zkEVM, Taiko, Abstract\n- Arbitrum Orbit: ApeChain, Xai, Sanko\n- Non-ETH gas (10 chains): Mantle(MNT), Metis(METIS), Cronos(CRO), Ronin(RON), Sonic(S), Flow(FLOW), Berachain(BERA), Plume(PLUME), Story(IP), Stable(gUSDT)\n\nCRITICAL CHAINS:\n1. Celo (42220): Native token is BOTH native AND ERC20. Relay uses wrapped CELO. Check relayTransactionMetadata.assetRequiringApproval\n2. Blast (81457): Rebasing ETH from L1 staking yield. USDB also rebases. Handle in balance displays.\n3. Ethereal (5064014): NOT in viem. Needs custom chain definition.\n4. zkSync Era (324) + Abstract (2741): Type 113 (EIP-712) transactions. Use viem zksync chainConfig.\n5. Linea (59144): Custom linea_estimateGas RPC method.\n6. Sei (1329): Parallelized EVM + CosmWasm interop. CoinGecko uses sei-v2 NOT sei.\n\nCOINGECKO GOTCHAS: sei-\u003esei-v2, plume-\u003eplume-network, zksync-\u003ezksync, metis-\u003emetis-andromeda, morph-\u003emorph-l2, gravity-\u003egravity-alpha, boba-\u003eboba, zora-\u003ezora-network, funkichain-\u003efunki, Superposition (capital S). BOB/Zero Network have null chain_identifier. 11 chains not on CoinGecko at all.\n\nPER-CHAIN CHECKLIST: [ ] chain-adapters [ ] caip [ ] asset-service [ ] feature-flag [ ] plugin [ ] env-config [ ] icon/logo\n\n=== RELAY SWAPPER INTEGRATION (per chain) ===\n\nFILE 1: packages/swapper/src/swappers/RelaySwapper/constant.ts\n - Add to chainIdToRelayChainId map: [newChainChainId]: \u003cviem_chain\u003e.id (or numeric chain ID)\n - Import the caip chainId (e.g., scrollChainId) from @shapeshiftoss/caip\n - Import viem chain from viem/chains (or use raw numeric ID if not in viem)\n - The reverse map relayChainIdToChainId auto-generates via invert()\n\nFILE 2: packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts\n - Add case CHAIN_REFERENCE.NewChainMainnet: with ASSET_REFERENCE.NewChain + ASSET_NAMESPACE.slip44\n\nNO CHANGES NEEDED (for EVM chains):\n - getRelayAssetAddress.ts (uses generic isNativeEvmAsset + DEFAULT_RELAY_EVM_TOKEN_ADDRESS)\n - getRelayDefaultUserAddress.ts (falls through to DEFAULT_RELAY_EVM_USER_ADDRESS default)\n\nUPSTREAM DEPS REQUIRED (in @shapeshiftoss packages):\n - @shapeshiftoss/caip: export newChainChainId, CHAIN_REFERENCE.NewChainMainnet, ASSET_REFERENCE.NewChain\n - @shapeshiftoss/types: KnownChainIds.NewChainMainnet\n - @shapeshiftoss/chain-adapters: NewChain chain adapter class\n - viem/chains: chain config (or custom if not in viem)\n\nRELAY API: https://api.relay.link (env: VITE_RELAY_API_URL) - no per-chain config needed\n\n=== ASSET DATA REGENERATION (per chain) ===\n\nAfter integrating each chain, run a partial assets data regen to populate the token list.\n\nFILE 1 (CREATE): scripts/generateAssetData/\u003cchainname\u003e/index.ts\n Pattern (identical for all EVM chains):\n import { \u003cchainname\u003eChainId } from '@shapeshiftoss/caip'\n import type { Asset } from '@shapeshiftoss/types'\n import { \u003cchainname\u003e, unfreeze } from '@shapeshiftoss/utils'\n import * as coingecko from '../coingecko'\n export const getAssets = async (): Promise\u003cAsset[]\u003e =\u003e {\n const assets = await coingecko.getAssets(\u003cchainname\u003eChainId)\n return [...assets, unfreeze(\u003cchainname\u003e)]\n }\n\nFILE 2 (MODIFY): scripts/generateAssetData/coingecko.ts\n - Import \u003cchainname\u003eChainId from @shapeshiftoss/caip\n - Import \u003cchainname\u003e native asset from @shapeshiftoss/utils\n - Add case in the switch: case \u003cchainname\u003eChainId: return { assetNamespace: ASSET_NAMESPACE.erc20, category: adapters.chainIdToCoingeckoAssetPlatform(chainId), explorer/explorerAddressLink/explorerTxLink from \u003cchainname\u003e utils }\n - NOTE: chains not on CoinGecko will only have the native asset (no ERC20 token list)\n\nFILE 3 (MODIFY): scripts/generateAssetData/generateAssetData.ts\n - Import: import * as \u003cchainname\u003e from './\u003cchainname\u003e'\n - Call: const \u003cchainname\u003eAssets = await \u003cchainname\u003e.getAssets()\n - Spread into unfilteredAssetData: ...\u003cchainname\u003eAssets\n\nCOMMAND: yarn generate:asset-data\n This regenerates: src/generated/asset-data.json + related-asset-index + manifest + compressed assets\n\n=== DRAFT PR CREATION (final step per chain) ===\n\nAfter all code changes are complete for a chain, open a draft PR using the repo template.\n\nBRANCH NAMING: feat/integrate-\u003cchainname\u003e-relay (e.g. feat/integrate-scroll-relay)\n\nCOMMAND:\n gh pr create --draft --title 'feat: integrate \u003cChainName\u003e (chainId: \u003cid\u003e) via Relay' --body \"$(cat \u003c\u003c'PREOF'\n ## Description\n\n Add \u003cChainName\u003e (chainId: \u003cid\u003e) as a second-class EVM chain in ShapeShift Web with Relay bridge support.\n\n **Changes:**\n - Plugin registration in src/plugins/\u003cchainname\u003e/\n - Feature flag `\u003cChainName\u003e` in preferencesSlice\n - Relay swapper chain mapping in RelaySwapper/constant.ts\n - Asset data generation via CoinGecko (`\u003ccoingecko_platform_id\u003e`)\n - Environment config for RPC URL\n\n **Chain details:**\n - TVL: \u003ctvl\u003e\n - Native token: \u003ctoken\u003e (18 decimals)\n - Architecture: \u003carch_type\u003e\n - RPC: \u003crpc_url\u003e\n - Explorer: \u003cexplorer_url\u003e\n\n ## Issue (if applicable)\n\n Part of #11902\n\n ## Risk\n\n Low risk — new chain behind feature flag (`\u003cChainName\u003e`), no existing functionality affected.\n\n \u003e New chain plugin + Relay bridge mapping. No modifications to existing chain logic.\n\n ## Testing\n\n ### Engineering\n\n 1. Enable feature flag: set `VITE_FEATURE_\u003cCHAINNAME\u003e=true` in .env\n 2. Verify chain appears in supported chains list\n 3. Verify native token balance loads (connect wallet with \u003ctoken\u003e on \u003cChainName\u003e)\n 4. Verify Relay bridge quote works: bridge ETH from Ethereum → \u003cChainName\u003e\n 5. Run `yarn lint --fix \u0026\u0026 yarn type-check` — must pass\n\n ### Operations\n\n - [x] :checkered_flag: My feature is behind a flag and doesn't require operations testing (yet)\n\n ## Screenshots (if applicable)\n\n N/A — chain integration, no UI changes.\n PREOF\n )\"\n\nNOTE: Replace all \u003cplaceholders\u003e with actual chain values from the bead description/notes.\nNOTE: Use --draft flag to create as draft PR.\nNOTE: Branch off develop (main branch is develop, not main).", + "status": "open", + "priority": 0, + "issue_type": "epic", + "owner": "14963751+NeOMakinG@users.noreply.github.com", + "created_at": "2026-02-17T10:55:02Z", + "created_by": "NeOMakinG", + "updated_at": "2026-02-17T11:21:27Z", + "external_ref": "gh-11902", + "dependency_type": "parent-child" + } + ], + "parent": "ss-dx5" + } +] diff --git a/.claude/contracts/second-class-evm-chain.md b/.claude/contracts/second-class-evm-chain.md index 5396cd3c0d0..7607bbf793f 100644 --- a/.claude/contracts/second-class-evm-chain.md +++ b/.claude/contracts/second-class-evm-chain.md @@ -164,12 +164,35 @@ For each of these, RESEARCH whether the service actually supports the new chain 34. **Treasury** - `packages/utils/src/treasury.ts` - Add if DAO treasury exists on the chain +## Phase 3.5: Wrapped Native Asset Detection + +For cross-chain swaps where the destination is native (e.g., ETH→MNT via Relay), the receiving Tx often involves an unwrap of the wrapped native token (e.g., WMNT→MNT). Since second-class chains lack `debug_traceTransaction` support, this unwrap is invisible to the Tx parser and causes missing execution prices / incomplete Tx history. + +42. **Wrapped Native Contract** - `packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts` + - Add the chain's wrapped native token address to `WRAPPED_NATIVE_CONTRACT_BY_CHAIN_ID` mapping + - Common addresses: WBERA `0x6969...`, WMNT `0x78c1b0C9...`, WETH varies by chain + - The detection logic is already generalized: it parses `Transfer` burn events (to zero address) on the wrapped contract to synthesize internal Txs + - To find the wrapped native address: search `W` on the chain's block explorer or check the Relay Tx from the user's review comment + +## Phase 3.6: Native Token ERC20 Duplicate Blacklisting + +Some chains have an ERC20 contract that represents the native token (e.g., Mantle's `0xDeaD...0000` for MNT, Polygon's `0x...1010` for MATIC). CoinGecko returns these as separate tokens, which causes: +- **Duplicate assets in "My Assets"** - native and ERC20 wrapper both appear with different icons +- **Relay swap failures** - the swap picker may select the ERC20 wrapper, which Relay doesn't recognize as native (expects `0x0000...0000`) +- **Incorrect balance display** - double-counting the same balance + +44. **Blacklist native ERC20 wrapper** - `scripts/generateAssetData/blacklist.json` + - If the chain has a special ERC20 contract representing the native token, add it to the blacklist + - Known patterns: Mantle `eip155:5000/erc20:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000`, Polygon `eip155:137/erc20:0x0000000000000000000000000000000000001010` + - To detect: after `yarn generate:chain`, check if there are two entries with the same symbol as the native asset (one `slip44:60`, one `erc20:0x...`) + - After adding to blacklist, re-run `yarn generate:chain` to apply + ## Phase 4: Consistency Checks 35. **Trailing slashes** on RPC URLs - all `*_NODE_URL` entries should be consistent (no trailing slash) 36. **Chain ID correctness** - verify against the chain's official docs 37. **Explorer URLs** - verify they're the official block explorer -38. **Asset icon URLs** - verify they resolve +38. **Asset icon URLs** - verify they resolve (HTTP 200, not 403/404). Prefer `assets.relay.link/icons//light.png` for networkIcon over CoinGecko URLs which often return 403. **After changing `networkIcon` in `baseAssets.ts`, you MUST re-run `yarn generate:chain` for that chain** - the generated JSON caches the old URL and won't pick up the fix until regenerated. 39. **Generated data** - verify asset-manifest.json, generatedAssetData.json, relatedAssetIndex.json are regenerated 40. **Related Asset Index** - `public/generated/relatedAssetIndex.json` + `scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts` @@ -177,11 +200,24 @@ For each of these, RESEARCH whether the service actually supports the new chain - Verify `relatedAssetIndex.json` has been regenerated and contains entries for the new chain's tokens - Check `generatedAssetData.json` - the chain's ERC20 tokens should have `relatedAssetKey` values linking them to mainnet counterparts - Without this, tokens won't appear in the trade modal "Popular Assets" section + - **Manual stablecoin mappings**: Look up the chain's native USDC, USDT, and DAI contract addresses (NOT bridged variants - CoinGecko auto-discovers those). Add them to `manualRelatedAssetIndex` in BOTH `generateRelatedAssetIndex.ts` AND `generateChainRelatedAssetIndex.ts`, keyed by the Ethereum canonical token's AssetId. Without this, popular stablecoins won't show for the chain in the trade modal. 41. **Trade modal "Popular Assets" verification** - after enabling the feature flag, open the trade modal "To" asset selector and filter by the new chain - Popular tokens (USDC, USDT, LINK, etc.) should appear WITHOUT needing to search - If only the native asset and a handful show, the related asset index likely wasn't regenerated +## Phase 4.5: Append-Only Convention + +When adding a new chain to lists, switch/case blocks, arrays, or object entries, the new chain's entry MUST go LAST (append-only). This prevents merge conflict resolution from breaking closing syntax (missing `}`, `},`, `})`, `break`, etc.) between entries. + +43. **All additions are append-only** - new chain entries go at the END of: + - Switch/case blocks (e.g., `EvmBaseAdapter.ts`, `coingecko.ts`, `useSendActionSubscriber.tsx`) + - Object literals (e.g., `baseAssets.ts`, `utils.test.ts`) + - Arrays (e.g., `SECOND_CLASS_CHAINS`, `VALID_CHAIN_IDS`) + - Import lists + - `.env` / `.env.development` variable groups + - This prevents a class of merge conflict resolution bugs where auto-resolvers lose closing syntax between adjacent entries + ## Phase 5: Runtime Testing - Enable feature flag in `.env.development` @@ -194,3 +230,7 @@ For each of these, RESEARCH whether the service actually supports the new chain - Verify markets page shows chain's assets - Verify trade modal "Popular Assets" section shows popular tokens for the chain without searching - Verify ETH on the chain appears as a related asset of mainnet ETH (if applicable) +- Verify cross-chain swap TO native asset shows execution price (wrapped native detection) +- Verify chain icon and network icon load without perma-loading spinner +- Verify brand chain icon in chain selector is correct and displays properly +- Verify native asset does NOT appear twice in "My Assets" (once as slip44, once as ERC20 wrapper) - if it does, blacklist the ERC20 wrapper in `scripts/generateAssetData/blacklist.json` and regen diff --git a/.claude/worktrees/ai-release-summary b/.claude/worktrees/ai-release-summary new file mode 160000 index 00000000000..e07df2a10ce --- /dev/null +++ b/.claude/worktrees/ai-release-summary @@ -0,0 +1 @@ +Subproject commit e07df2a10ce74c04f6766c9b710050b181f8d1ad diff --git a/.env b/.env index 255ec89f4d0..cd7a72b4e14 100644 --- a/.env +++ b/.env @@ -155,6 +155,7 @@ VITE_ARBITRUM_NODE_URL=https://api.arbitrum.shapeshift.com/api/v1/jsonrpc VITE_BASE_NODE_URL=https://api.base.shapeshift.com/api/v1/jsonrpc VITE_MONAD_NODE_URL=https://rpc.monad.xyz VITE_PLASMA_NODE_URL=https://rpc.plasma.to +VITE_MANTLE_NODE_URL=https://rpc.mantle.xyz VITE_INK_NODE_URL=https://ink.drpc.org VITE_MEGAETH_NODE_URL=https://mainnet.megaeth.com/rpc VITE_LINEA_NODE_URL=https://rpc.linea.build @@ -304,6 +305,7 @@ VITE_FEATURE_MONAD=true VITE_FEATURE_PLASMA=true VITE_HYPEREVM_NODE_URL=https://rpc.hyperliquid.xyz/evm VITE_FEATURE_HYPEREVM=true +VITE_FEATURE_MANTLE=false VITE_FEATURE_INK=false VITE_FEATURE_MEGAETH=false VITE_FEATURE_LINEA=false diff --git a/.env.development b/.env.development index fac76f72cc5..d0f7a0b44cf 100644 --- a/.env.development +++ b/.env.development @@ -62,6 +62,7 @@ VITE_MONAD_NODE_URL=https://rpc.monad.xyz VITE_PLASMA_NODE_URL=https://rpc.plasma.to VITE_KATANA_NODE_URL=https://rpc.katana.network VITE_HYPEREVM_NODE_URL=https://rpc.hyperliquid.xyz/evm +VITE_MANTLE_NODE_URL=https://rpc.mantle.xyz VITE_INK_NODE_URL=https://ink.drpc.org VITE_MEGAETH_NODE_URL=https://mainnet.megaeth.com/rpc VITE_LINEA_NODE_URL=https://rpc.linea.build @@ -98,6 +99,7 @@ VITE_NOTIFICATIONS_SERVER_URL=https://dev-api.notifications-service.shapeshift.c VITE_FEATURE_WC_DIRECT_CONNECTION=true VITE_FEATURE_CETUS_SWAP=true +VITE_FEATURE_MANTLE=true VITE_FEATURE_INK=true VITE_FEATURE_MEGAETH=true VITE_FEATURE_LINEA=true diff --git a/headers/csps/chains/mantle.ts b/headers/csps/chains/mantle.ts new file mode 100644 index 00000000000..bc02a6803e8 --- /dev/null +++ b/headers/csps/chains/mantle.ts @@ -0,0 +1,10 @@ +import { loadEnv } from 'vite' + +import type { Csp } from '../../types' + +const mode = process.env.MODE ?? process.env.NODE_ENV ?? 'development' +const env = loadEnv(mode, process.cwd(), '') + +export const csp: Csp = { + 'connect-src': [env.VITE_MANTLE_NODE_URL], +} diff --git a/headers/csps/index.ts b/headers/csps/index.ts index 96705e34ddf..2c9c35931ce 100644 --- a/headers/csps/index.ts +++ b/headers/csps/index.ts @@ -20,6 +20,7 @@ import { csp as ink } from './chains/ink' import { csp as katana } from './chains/katana' import { csp as linea } from './chains/linea' import { csp as litecoin } from './chains/litecoin' +import { csp as mantle } from './chains/mantle' import { csp as mayachain } from './chains/mayachain' import { csp as megaeth } from './chains/megaeth' import { csp as monad } from './chains/monad' @@ -124,6 +125,7 @@ export const csps = [ katana, linea, litecoin, + mantle, megaeth, optimism, polygon, diff --git a/packages/caip/src/adapters/coingecko/generated/eip155_5000/adapter.json b/packages/caip/src/adapters/coingecko/generated/eip155_5000/adapter.json new file mode 100644 index 00000000000..51d2565d48d --- /dev/null +++ b/packages/caip/src/adapters/coingecko/generated/eip155_5000/adapter.json @@ -0,0 +1 @@ +{"eip155:5000/slip44:60":"mantle"} \ No newline at end of file diff --git a/packages/caip/src/adapters/coingecko/generated/index.ts b/packages/caip/src/adapters/coingecko/generated/index.ts index 38d01e28b89..32687bfa908 100644 --- a/packages/caip/src/adapters/coingecko/generated/index.ts +++ b/packages/caip/src/adapters/coingecko/generated/index.ts @@ -16,6 +16,7 @@ import plasma from "./eip155_9745/adapter.json"; import katana from "./eip155_747474/adapter.json"; import linea from "./eip155_59144/adapter.json"; import megaeth from "./eip155_4326/adapter.json"; +import mantle from "./eip155_5000/adapter.json"; import berachain from "./eip155_80094/adapter.json"; import ink from "./eip155_57073/adapter.json"; import scroll from "./eip155_534352/adapter.json"; @@ -49,6 +50,7 @@ export { katana, linea, megaeth, + mantle, berachain, ink, scroll, diff --git a/packages/caip/src/adapters/coingecko/index.ts b/packages/caip/src/adapters/coingecko/index.ts index c4b8965e182..8d762847025 100644 --- a/packages/caip/src/adapters/coingecko/index.ts +++ b/packages/caip/src/adapters/coingecko/index.ts @@ -19,6 +19,7 @@ import { inkChainId, katanaChainId, lineaChainId, + mantleChainId, mayachainChainId, megaethChainId, monadChainId, @@ -56,6 +57,7 @@ export enum CoingeckoAssetPlatform { Plasma = 'plasma', Ink = 'ink', Katana = 'katana', + Mantle = 'mantle', Linea = 'linea', MegaEth = 'megaeth', Berachain = 'berachain', @@ -120,6 +122,8 @@ export const chainIdToCoingeckoAssetPlatform = (chainId: ChainId): string => { return CoingeckoAssetPlatform.Plasma case CHAIN_REFERENCE.KatanaMainnet: return CoingeckoAssetPlatform.Katana + case CHAIN_REFERENCE.MantleMainnet: + return CoingeckoAssetPlatform.Mantle case CHAIN_REFERENCE.MegaEthMainnet: return CoingeckoAssetPlatform.MegaEth case CHAIN_REFERENCE.LineaMainnet: @@ -237,6 +241,8 @@ export const coingeckoAssetPlatformToChainId = ( return plasmaChainId case CoingeckoAssetPlatform.Katana: return katanaChainId + case CoingeckoAssetPlatform.Mantle: + return mantleChainId case CoingeckoAssetPlatform.MegaEth: return megaethChainId case CoingeckoAssetPlatform.Linea: diff --git a/packages/caip/src/adapters/coingecko/utils.test.ts b/packages/caip/src/adapters/coingecko/utils.test.ts index db2425c5116..110d4801d37 100644 --- a/packages/caip/src/adapters/coingecko/utils.test.ts +++ b/packages/caip/src/adapters/coingecko/utils.test.ts @@ -188,6 +188,9 @@ describe('adapters:coingecko:utils', () => { 'eip155:747474': { 'eip155:747474/slip44:60': 'katana', }, + 'eip155:5000': { + 'eip155:5000/slip44:60': 'mantle', + }, 'eip155:80094': { 'eip155:80094/slip44:60': 'berachain-bera', }, diff --git a/packages/caip/src/adapters/coingecko/utils.ts b/packages/caip/src/adapters/coingecko/utils.ts index 294d16697d7..eb8cc788b0e 100644 --- a/packages/caip/src/adapters/coingecko/utils.ts +++ b/packages/caip/src/adapters/coingecko/utils.ts @@ -35,6 +35,8 @@ import { lineaAssetId, lineaChainId, ltcChainId, + mantleAssetId, + mantleChainId, mayachainChainId, megaethAssetId, megaethChainId, @@ -283,6 +285,20 @@ export const parseData = (coins: CoingeckoCoin[]): AssetMap => { } } + if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Mantle)) { + try { + const assetId = toAssetId({ + chainNamespace: CHAIN_NAMESPACE.Evm, + chainReference: CHAIN_REFERENCE.MantleMainnet, + assetNamespace: 'erc20', + assetReference: platforms[CoingeckoAssetPlatform.Mantle], + }) + prev[mantleChainId][assetId] = id + } catch { + // unable to create assetId, skip token + } + } + if (Object.keys(platforms).includes(CoingeckoAssetPlatform.Ink)) { try { const assetId = toAssetId({ @@ -423,6 +439,7 @@ export const parseData = (coins: CoingeckoCoin[]): AssetMap => { [hyperEvmChainId]: { [hyperEvmAssetId]: 'hyperliquid' }, [monadChainId]: { [monadAssetId]: 'monad' }, [plasmaChainId]: { [plasmaAssetId]: 'plasma' }, + [mantleChainId]: { [mantleAssetId]: 'mantle' }, [inkChainId]: { [inkAssetId]: 'ethereum' }, [megaethChainId]: { [megaethAssetId]: 'ethereum' }, [lineaChainId]: { [lineaAssetId]: 'ethereum' }, diff --git a/packages/caip/src/constants.ts b/packages/caip/src/constants.ts index c644f26adf3..8c0a3f1c1c2 100644 --- a/packages/caip/src/constants.ts +++ b/packages/caip/src/constants.ts @@ -18,6 +18,7 @@ export const baseAssetId: AssetId = 'eip155:8453/slip44:60' export const monadAssetId: AssetId = 'eip155:143/slip44:60' export const hyperEvmAssetId: AssetId = 'eip155:999/slip44:60' export const plasmaAssetId: AssetId = 'eip155:9745/slip44:60' +export const mantleAssetId: AssetId = 'eip155:5000/slip44:60' export const inkAssetId: AssetId = 'eip155:57073/slip44:60' export const megaethAssetId: AssetId = 'eip155:4326/slip44:60' export const berachainAssetId: AssetId = 'eip155:80094/slip44:60' @@ -83,6 +84,7 @@ export const baseChainId: ChainId = 'eip155:8453' export const monadChainId: ChainId = 'eip155:143' export const hyperEvmChainId: ChainId = 'eip155:999' export const plasmaChainId: ChainId = 'eip155:9745' +export const mantleChainId: ChainId = 'eip155:5000' export const inkChainId: ChainId = 'eip155:57073' export const megaethChainId: ChainId = 'eip155:4326' export const berachainChainId: ChainId = 'eip155:80094' @@ -139,6 +141,7 @@ export const CHAIN_REFERENCE = { MonadMainnet: '143', // https://docs.monad.xyz/developer-essentials/network-information HyperEvmMainnet: '999', // https://chainlist.org/chain/999 PlasmaMainnet: '9745', // https://chainlist.org/chain/9745 + MantleMainnet: '5000', // https://chainlist.org/chain/5000 InkMainnet: '57073', MegaEthMainnet: '4326', BerachainMainnet: '80094', @@ -188,6 +191,7 @@ export const ASSET_REFERENCE = { Monad: '60', // evm chain which uses ethereum derivation path as common practice HyperEvm: '60', // evm chain which uses ethereum derivation path as common practice Plasma: '60', // evm chain which uses ethereum derivation path as common practice + Mantle: '60', // evm chain which uses ethereum derivation path as common practice Ink: '60', // evm chain which uses ethereum derivation path as common practice MegaEth: '60', // evm chain which uses ethereum derivation path as common practice Berachain: '60', // evm chain which uses ethereum derivation path as common practice @@ -222,6 +226,7 @@ export const VALID_CHAIN_IDS: ValidChainMap = Object.freeze({ CHAIN_REFERENCE.MonadMainnet, CHAIN_REFERENCE.HyperEvmMainnet, CHAIN_REFERENCE.PlasmaMainnet, + CHAIN_REFERENCE.MantleMainnet, CHAIN_REFERENCE.InkMainnet, CHAIN_REFERENCE.MegaEthMainnet, CHAIN_REFERENCE.BerachainMainnet, @@ -282,6 +287,7 @@ export const FEE_ASSET_IDS = [ arbitrumAssetId, baseAssetId, monadAssetId, + mantleAssetId, inkAssetId, megaethAssetId, lineaAssetId, diff --git a/packages/chain-adapters/src/evm/EvmBaseAdapter.ts b/packages/chain-adapters/src/evm/EvmBaseAdapter.ts index 31a31ebba40..01f2371ac40 100644 --- a/packages/chain-adapters/src/evm/EvmBaseAdapter.ts +++ b/packages/chain-adapters/src/evm/EvmBaseAdapter.ts @@ -19,6 +19,7 @@ import { supportsInk, supportsKatana, supportsLinea, + supportsMantle, supportsMegaEth, supportsMonad, supportsOptimism, @@ -90,6 +91,7 @@ export const evmChainIds = [ KnownChainIds.MonadMainnet, KnownChainIds.HyperEvmMainnet, KnownChainIds.PlasmaMainnet, + KnownChainIds.MantleMainnet, KnownChainIds.InkMainnet, KnownChainIds.MegaEthMainnet, KnownChainIds.BerachainMainnet, @@ -196,6 +198,8 @@ export abstract class EvmBaseAdapter implements IChainAdap return supportsHyperEvm(wallet) case Number(fromChainId(KnownChainIds.PlasmaMainnet).chainReference): return supportsPlasma(wallet) + case Number(fromChainId(KnownChainIds.MantleMainnet).chainReference): + return supportsMantle(wallet) case Number(fromChainId(KnownChainIds.InkMainnet).chainReference): return supportsInk(wallet) case Number(fromChainId(KnownChainIds.MegaEthMainnet).chainReference): @@ -295,6 +299,11 @@ export abstract class EvmBaseAdapter implements IChainAdap symbol: 'XPL', explorer: 'https://plasmascan.to', }, + [KnownChainIds.MantleMainnet]: { + name: 'Mantle', + symbol: 'MNT', + explorer: 'https://mantlescan.xyz', + }, [KnownChainIds.InkMainnet]: { name: 'Ether', symbol: 'ETH', diff --git a/packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts b/packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts index 7bd94387811..f7a5db8285a 100644 --- a/packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts +++ b/packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts @@ -1,5 +1,11 @@ import type { AssetId, ChainId } from '@shapeshiftoss/caip' -import { ASSET_NAMESPACE, berachainChainId, hyperEvmChainId, toAssetId } from '@shapeshiftoss/caip' +import { + ASSET_NAMESPACE, + berachainChainId, + hyperEvmChainId, + mantleChainId, + toAssetId, +} from '@shapeshiftoss/caip' import type { evm } from '@shapeshiftoss/common-api' import { MULTICALL3_CONTRACT, viemClientByChainId } from '@shapeshiftoss/contracts' import type { EvmChainId, RootBip44Params } from '@shapeshiftoss/types' @@ -35,7 +41,10 @@ import { EvmBaseAdapter } from './EvmBaseAdapter' import type { GasFeeDataEstimate } from './types' const ERC20_ABI = ['function balanceOf(address) view returns (uint256)'] -const WBERA_CONTRACT = '0x6969696969696969696969696969696969696969' +const WRAPPED_NATIVE_CONTRACT_BY_CHAIN_ID: Partial> = { + [berachainChainId]: '0x6969696969696969696969696969696969696969', + [mantleChainId]: '0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8', +} const BATCH_SIZE = 500 export type TokenInfo = { @@ -408,24 +417,21 @@ export abstract class SecondClassEvmAdapter extends EvmBas throw new Error(`Transaction not found: ${hash}`) } - // Berachain: when debug_traceTransaction is unavailable (public RPC), detect native BERA - // receives by parsing WBERA burn events as a fallback for internal tx tracing. - // WBERA burns (Transfer to zero address) represent unwraps where native BERA is delivered - // via internal calls — e.g. cross-chain fills from Relay. - if (this.chainId === berachainChainId && internalTxs.length === 0) { - const wberaBurnLogs = parseEventLogs({ + const wrappedNativeContract = WRAPPED_NATIVE_CONTRACT_BY_CHAIN_ID[this.chainId] + if (wrappedNativeContract && internalTxs.length === 0) { + const wrappedNativeBurnLogs = parseEventLogs({ abi: erc20Abi, logs: receipt.logs, eventName: 'Transfer', }).filter( log => - isAddressEqual(getAddress(log.address), getAddress(WBERA_CONTRACT)) && + isAddressEqual(getAddress(log.address), getAddress(wrappedNativeContract)) && isAddressEqual(log.args.to, zeroAddress), ) - for (const log of wberaBurnLogs) { + for (const log of wrappedNativeBurnLogs) { internalTxs.push({ - from: WBERA_CONTRACT, + from: wrappedNativeContract, to: getAddress(pubkey), value: log.args.value.toString(), }) diff --git a/packages/chain-adapters/src/evm/index.ts b/packages/chain-adapters/src/evm/index.ts index dddec790f49..33bb793ef15 100644 --- a/packages/chain-adapters/src/evm/index.ts +++ b/packages/chain-adapters/src/evm/index.ts @@ -17,6 +17,7 @@ export * as monad from './monad' export * as hyperevm from './hyperevm' export * as ink from './ink' export * as plasma from './plasma' +export * as mantle from './mantle' export * as megaeth from './megaeth' export * as berachain from './berachain' export * as katana from './katana' diff --git a/packages/chain-adapters/src/evm/mantle/MantleChainAdapter.ts b/packages/chain-adapters/src/evm/mantle/MantleChainAdapter.ts new file mode 100644 index 00000000000..27f5fa14c6d --- /dev/null +++ b/packages/chain-adapters/src/evm/mantle/MantleChainAdapter.ts @@ -0,0 +1,53 @@ +import type { AssetId } from '@shapeshiftoss/caip' +import { ASSET_REFERENCE, mantleAssetId } from '@shapeshiftoss/caip' +import type { RootBip44Params } from '@shapeshiftoss/types' +import { KnownChainIds } from '@shapeshiftoss/types' + +import { ChainAdapterDisplayName } from '../../types' +import type { TokenInfo } from '../SecondClassEvmAdapter' +import { SecondClassEvmAdapter } from '../SecondClassEvmAdapter' + +const SUPPORTED_CHAIN_IDS = [KnownChainIds.MantleMainnet] +const DEFAULT_CHAIN_ID = KnownChainIds.MantleMainnet + +export type ChainAdapterArgs = { + rpcUrl: string + getKnownTokens: () => TokenInfo[] +} + +export class ChainAdapter extends SecondClassEvmAdapter { + public static readonly rootBip44Params: RootBip44Params = { + purpose: 44, + coinType: Number(ASSET_REFERENCE.Mantle), + accountNumber: 0, + } + + constructor(args: ChainAdapterArgs) { + super({ + assetId: mantleAssetId, + chainId: DEFAULT_CHAIN_ID, + rootBip44Params: ChainAdapter.rootBip44Params, + supportedChainIds: SUPPORTED_CHAIN_IDS, + rpcUrl: args.rpcUrl, + getKnownTokens: args.getKnownTokens, + }) + } + + getDisplayName() { + return ChainAdapterDisplayName.Mantle + } + + getName() { + return 'Mantle' + } + + getType(): KnownChainIds.MantleMainnet { + return KnownChainIds.MantleMainnet + } + + getFeeAssetId(): AssetId { + return this.assetId + } +} + +export type { TokenInfo } diff --git a/packages/chain-adapters/src/evm/mantle/index.ts b/packages/chain-adapters/src/evm/mantle/index.ts new file mode 100644 index 00000000000..77a1a07383b --- /dev/null +++ b/packages/chain-adapters/src/evm/mantle/index.ts @@ -0,0 +1 @@ +export * from './MantleChainAdapter' diff --git a/packages/chain-adapters/src/types.ts b/packages/chain-adapters/src/types.ts index a16c45b0fcf..61d2345da9b 100644 --- a/packages/chain-adapters/src/types.ts +++ b/packages/chain-adapters/src/types.ts @@ -47,6 +47,7 @@ type ChainSpecificAccount = ChainSpecific< [KnownChainIds.MonadMainnet]: evm.Account [KnownChainIds.HyperEvmMainnet]: evm.Account [KnownChainIds.PlasmaMainnet]: evm.Account + [KnownChainIds.MantleMainnet]: evm.Account [KnownChainIds.InkMainnet]: evm.Account [KnownChainIds.MegaEthMainnet]: evm.Account [KnownChainIds.BerachainMainnet]: evm.Account @@ -103,6 +104,7 @@ type ChainSpecificFeeData = ChainSpecific< [KnownChainIds.MonadMainnet]: evm.FeeData [KnownChainIds.HyperEvmMainnet]: evm.FeeData [KnownChainIds.PlasmaMainnet]: evm.FeeData + [KnownChainIds.MantleMainnet]: evm.FeeData [KnownChainIds.InkMainnet]: evm.FeeData [KnownChainIds.MegaEthMainnet]: evm.FeeData [KnownChainIds.BerachainMainnet]: evm.FeeData @@ -192,6 +194,7 @@ export type ChainSignTx = { [KnownChainIds.BaseMainnet]: ETHSignTx [KnownChainIds.MonadMainnet]: ETHSignTx [KnownChainIds.PlasmaMainnet]: ETHSignTx + [KnownChainIds.MantleMainnet]: ETHSignTx [KnownChainIds.InkMainnet]: ETHSignTx [KnownChainIds.MegaEthMainnet]: ETHSignTx [KnownChainIds.BerachainMainnet]: ETHSignTx @@ -253,6 +256,7 @@ export type ChainSpecificBuildTxData = ChainSpecific< [KnownChainIds.MonadMainnet]: evm.BuildTxInput [KnownChainIds.HyperEvmMainnet]: evm.BuildTxInput [KnownChainIds.PlasmaMainnet]: evm.BuildTxInput + [KnownChainIds.MantleMainnet]: evm.BuildTxInput [KnownChainIds.InkMainnet]: evm.BuildTxInput [KnownChainIds.MegaEthMainnet]: evm.BuildTxInput [KnownChainIds.BerachainMainnet]: evm.BuildTxInput @@ -364,6 +368,7 @@ type ChainSpecificGetFeeDataInput = ChainSpecific< [KnownChainIds.MonadMainnet]: evm.GetFeeDataInput [KnownChainIds.HyperEvmMainnet]: evm.GetFeeDataInput [KnownChainIds.PlasmaMainnet]: evm.GetFeeDataInput + [KnownChainIds.MantleMainnet]: evm.GetFeeDataInput [KnownChainIds.InkMainnet]: evm.GetFeeDataInput [KnownChainIds.MegaEthMainnet]: evm.GetFeeDataInput [KnownChainIds.BerachainMainnet]: evm.GetFeeDataInput @@ -440,6 +445,7 @@ export enum ChainAdapterDisplayName { Monad = 'Monad', HyperEvm = 'HyperEVM', Plasma = 'Plasma', + Mantle = 'Mantle', Ink = 'Ink', MegaEth = 'MegaETH', Berachain = 'Berachain', diff --git a/packages/contracts/src/ethersProviderSingleton.ts b/packages/contracts/src/ethersProviderSingleton.ts index 2c9a2c6dd36..2208751e502 100644 --- a/packages/contracts/src/ethersProviderSingleton.ts +++ b/packages/contracts/src/ethersProviderSingleton.ts @@ -30,6 +30,8 @@ export const rpcUrlByChainId = (chainId: EvmChainId): string => { return process.env.VITE_HYPEREVM_NODE_URL case KnownChainIds.PlasmaMainnet: return process.env.VITE_PLASMA_NODE_URL + case KnownChainIds.MantleMainnet: + return process.env.VITE_MANTLE_NODE_URL case KnownChainIds.InkMainnet: return process.env.VITE_INK_NODE_URL case KnownChainIds.MegaEthMainnet: diff --git a/packages/contracts/src/viemClient.ts b/packages/contracts/src/viemClient.ts index 4dcb1ba701c..c0deebd1b02 100644 --- a/packages/contracts/src/viemClient.ts +++ b/packages/contracts/src/viemClient.ts @@ -15,6 +15,7 @@ import { katana, linea, mainnet, + mantle, monad, optimism, plasma, @@ -111,6 +112,11 @@ export const viemPlasmaClient = createPublicClient({ transport: fallback([process.env.VITE_PLASMA_NODE_URL].filter(Boolean).map(url => http(url))), }) as PublicClient +export const viemMantleClient = createPublicClient({ + chain: mantle, + transport: fallback([process.env.VITE_MANTLE_NODE_URL].filter(Boolean).map(url => http(url))), +}) as PublicClient + export const viemInkClient = createPublicClient({ chain: ink, transport: fallback([process.env.VITE_INK_NODE_URL].filter(Boolean).map(url => http(url))), @@ -153,6 +159,7 @@ export const viemClientByChainId: Record = { [KnownChainIds.MonadMainnet]: viemMonadClient, [KnownChainIds.HyperEvmMainnet]: viemHyperEvmClient, [KnownChainIds.PlasmaMainnet]: viemPlasmaClient, + [KnownChainIds.MantleMainnet]: viemMantleClient, [KnownChainIds.InkMainnet]: viemInkClient, [KnownChainIds.MegaEthMainnet]: viemMegaEthClient, [KnownChainIds.BerachainMainnet]: viemBerachainClient, @@ -173,6 +180,7 @@ export const viemNetworkIdByChainId: Record = { [KnownChainIds.MonadMainnet]: monad.id, [KnownChainIds.HyperEvmMainnet]: hyperEvm.id, [KnownChainIds.PlasmaMainnet]: plasma.id, + [KnownChainIds.MantleMainnet]: mantle.id, [KnownChainIds.InkMainnet]: ink.id, [KnownChainIds.MegaEthMainnet]: megaeth.id, [KnownChainIds.BerachainMainnet]: berachain.id, @@ -193,6 +201,7 @@ export const viemClientByNetworkId: Record = { [monad.id]: viemMonadClient, [hyperEvm.id]: viemHyperEvmClient, [plasma.id]: viemPlasmaClient, + [mantle.id]: viemMantleClient, [ink.id]: viemInkClient, [megaeth.id]: viemMegaEthClient, [berachain.id]: viemBerachainClient, diff --git a/packages/hdwallet-coinbase/src/coinbase.ts b/packages/hdwallet-coinbase/src/coinbase.ts index e482ea4de5b..ad93d2f4dcc 100644 --- a/packages/hdwallet-coinbase/src/coinbase.ts +++ b/packages/hdwallet-coinbase/src/coinbase.ts @@ -111,6 +111,7 @@ export class CoinbaseHDWallet implements core.HDWallet, core.ETHWallet { readonly _supportsPlasma = false readonly _supportsKatana = false readonly _supportsHyperEvm = false + readonly _supportsMantle = false readonly _supportsInk = false readonly _supportsMegaEth = false readonly _supportsBerachain = false diff --git a/packages/hdwallet-core/src/ethereum.ts b/packages/hdwallet-core/src/ethereum.ts index bada7d14aec..33823e209a2 100644 --- a/packages/hdwallet-core/src/ethereum.ts +++ b/packages/hdwallet-core/src/ethereum.ts @@ -209,6 +209,7 @@ export interface ETHWallet extends ETHWalletInfo, HDWallet { readonly _supportsPlasma: boolean readonly _supportsKatana: boolean readonly _supportsHyperEvm: boolean + readonly _supportsMantle: boolean readonly _supportsInk: boolean readonly _supportsMegaEth: boolean readonly _supportsBerachain: boolean diff --git a/packages/hdwallet-core/src/wallet.ts b/packages/hdwallet-core/src/wallet.ts index 3decaa247fd..f5571980415 100644 --- a/packages/hdwallet-core/src/wallet.ts +++ b/packages/hdwallet-core/src/wallet.ts @@ -185,6 +185,10 @@ export function supportsHyperEvm(wallet: HDWallet): wallet is ETHWallet { return isObject(wallet) && (wallet as any)._supportsHyperEvm } +export function supportsMantle(wallet: HDWallet): wallet is ETHWallet { + return isObject(wallet) && (wallet as any)._supportsMantle +} + export function supportsInk(wallet: HDWallet): wallet is ETHWallet { return isObject(wallet) && (wallet as any)._supportsInk } diff --git a/packages/hdwallet-gridplus/src/gridplus.ts b/packages/hdwallet-gridplus/src/gridplus.ts index 9b436c9f2df..7ae43afb015 100644 --- a/packages/hdwallet-gridplus/src/gridplus.ts +++ b/packages/hdwallet-gridplus/src/gridplus.ts @@ -364,6 +364,7 @@ export class GridPlusHDWallet readonly _supportsPlasma = true readonly _supportsKatana = false readonly _supportsHyperEvm = true + readonly _supportsMantle = true readonly _supportsInk = true readonly _supportsMegaEth = true readonly _supportsBerachain = true diff --git a/packages/hdwallet-keepkey/src/keepkey.ts b/packages/hdwallet-keepkey/src/keepkey.ts index ff87bbd88ac..46df5b0cb7f 100644 --- a/packages/hdwallet-keepkey/src/keepkey.ts +++ b/packages/hdwallet-keepkey/src/keepkey.ts @@ -553,6 +553,7 @@ export class KeepKeyHDWallet readonly _supportsPlasma = false readonly _supportsKatana = false readonly _supportsHyperEvm = false + readonly _supportsMantle = false readonly _supportsInk = false readonly _supportsMegaEth = false readonly _supportsBerachain = false diff --git a/packages/hdwallet-ledger/src/ledger.ts b/packages/hdwallet-ledger/src/ledger.ts index 7566d47f09a..0c7577fee83 100644 --- a/packages/hdwallet-ledger/src/ledger.ts +++ b/packages/hdwallet-ledger/src/ledger.ts @@ -430,6 +430,7 @@ export class LedgerHDWallet readonly _supportsPlasma = true readonly _supportsKatana = true readonly _supportsHyperEvm = true + readonly _supportsMantle = true readonly _supportsInk = true readonly _supportsMegaEth = true readonly _supportsBerachain = true diff --git a/packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts b/packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts index a3693299015..69063226cd4 100644 --- a/packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts +++ b/packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts @@ -280,6 +280,7 @@ export class MetaMaskMultiChainHDWallet readonly _supportsPlasma = true readonly _supportsKatana = true readonly _supportsHyperEvm = true + readonly _supportsMantle = true readonly _supportsInk = true readonly _supportsMegaEth = true readonly _supportsBerachain = true diff --git a/packages/hdwallet-native/src/ethereum.ts b/packages/hdwallet-native/src/ethereum.ts index 0def285457c..1aa625ea188 100644 --- a/packages/hdwallet-native/src/ethereum.ts +++ b/packages/hdwallet-native/src/ethereum.ts @@ -69,6 +69,7 @@ export function MixinNativeETHWallet { assetReference: ASSET_REFERENCE.Plasma, assetNamespace: ASSET_NAMESPACE.slip44, } + case CHAIN_REFERENCE.MantleMainnet: + return { + assetReference: ASSET_REFERENCE.Mantle, + assetNamespace: ASSET_NAMESPACE.slip44, + } case CHAIN_REFERENCE.InkMainnet: return { assetReference: ASSET_REFERENCE.Ink, diff --git a/packages/types/src/base.ts b/packages/types/src/base.ts index d78a2b092ca..b73d466f603 100644 --- a/packages/types/src/base.ts +++ b/packages/types/src/base.ts @@ -25,6 +25,7 @@ export enum KnownChainIds { MonadMainnet = 'eip155:143', HyperEvmMainnet = 'eip155:999', PlasmaMainnet = 'eip155:9745', + MantleMainnet = 'eip155:5000', InkMainnet = 'eip155:57073', MegaEthMainnet = 'eip155:4326', BerachainMainnet = 'eip155:80094', @@ -59,6 +60,7 @@ export type EvmChainId = | KnownChainIds.MonadMainnet | KnownChainIds.HyperEvmMainnet | KnownChainIds.PlasmaMainnet + | KnownChainIds.MantleMainnet | KnownChainIds.InkMainnet | KnownChainIds.MegaEthMainnet | KnownChainIds.BerachainMainnet diff --git a/packages/types/src/zerion.ts b/packages/types/src/zerion.ts index 9cd808e7018..5bc6d5ad65b 100644 --- a/packages/types/src/zerion.ts +++ b/packages/types/src/zerion.ts @@ -10,6 +10,7 @@ import { inkChainId, katanaChainId, lineaChainId, + mantleChainId, monadChainId, optimismChainId, plasmaChainId, @@ -35,6 +36,7 @@ export const ZERION_CHAINS = [ 'sui', 'plasma', 'katana', + 'mantle', 'linea', 'berachain', 'ink', @@ -60,6 +62,7 @@ export const ZERION_CHAINS_MAP: Record = { sui: suiChainId, plasma: plasmaChainId, katana: katanaChainId, + mantle: mantleChainId, linea: lineaChainId, berachain: berachainChainId, ink: inkChainId, diff --git a/packages/utils/src/assetData/baseAssets.ts b/packages/utils/src/assetData/baseAssets.ts index 5a134be3daa..1be75d9dea4 100644 --- a/packages/utils/src/assetData/baseAssets.ts +++ b/packages/utils/src/assetData/baseAssets.ts @@ -354,6 +354,21 @@ export const plasma: Readonly = Object.freeze({ relatedAssetKey: null, }) +export const mantle: Readonly = Object.freeze({ + assetId: caip.mantleAssetId, + chainId: caip.mantleChainId, + symbol: 'MNT', + name: 'Mantle', + networkName: 'Mantle', + precision: 18, + color: '#000000', + icon: 'https://assets.relay.link/icons/5000/light.png', + explorer: 'https://mantlescan.xyz', + explorerAddressLink: 'https://mantlescan.xyz/address/', + explorerTxLink: 'https://mantlescan.xyz/tx/', + relatedAssetKey: null, +}) + export const ink: Readonly = Object.freeze({ assetId: caip.inkAssetId, chainId: caip.inkChainId, @@ -433,7 +448,7 @@ export const linea: Readonly = Object.freeze({ color: '#5C6BC0', networkColor: '#121212', icon: 'https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png', - networkIcon: 'https://assets.coingecko.com/coins/images/32428/small/Linea.jpg', + networkIcon: 'https://assets.relay.link/icons/59144/light.png', explorer: 'https://lineascan.build', explorerAddressLink: 'https://lineascan.build/address/', explorerTxLink: 'https://lineascan.build/tx/', diff --git a/packages/utils/src/assetData/getBaseAsset.ts b/packages/utils/src/assetData/getBaseAsset.ts index 8b25d915d55..22e88ce6896 100644 --- a/packages/utils/src/assetData/getBaseAsset.ts +++ b/packages/utils/src/assetData/getBaseAsset.ts @@ -20,6 +20,7 @@ import { katana, linea, litecoin, + mantle, mayachain, megaeth, monad, @@ -84,6 +85,8 @@ export const getBaseAsset = (chainId: ChainId): Readonly => { return hyperevm case KnownChainIds.PlasmaMainnet: return plasma + case KnownChainIds.MantleMainnet: + return mantle case KnownChainIds.InkMainnet: return ink case KnownChainIds.MegaEthMainnet: diff --git a/packages/utils/src/chainIdToFeeAssetId.ts b/packages/utils/src/chainIdToFeeAssetId.ts index 8598b6b9381..7d27d2ec656 100644 --- a/packages/utils/src/chainIdToFeeAssetId.ts +++ b/packages/utils/src/chainIdToFeeAssetId.ts @@ -16,6 +16,7 @@ import { katanaAssetId, lineaAssetId, ltcAssetId, + mantleAssetId, mayachainAssetId, megaethAssetId, monadAssetId, @@ -83,6 +84,8 @@ export const chainIdToFeeAssetId = (_chainId: ChainId): AssetId => { return hyperEvmAssetId case KnownChainIds.PlasmaMainnet: return plasmaAssetId + case KnownChainIds.MantleMainnet: + return mantleAssetId case KnownChainIds.InkMainnet: return inkAssetId case KnownChainIds.MegaEthMainnet: diff --git a/packages/utils/src/getAssetNamespaceFromChainId.ts b/packages/utils/src/getAssetNamespaceFromChainId.ts index 40d54398968..41e2bd5a87f 100644 --- a/packages/utils/src/getAssetNamespaceFromChainId.ts +++ b/packages/utils/src/getAssetNamespaceFromChainId.ts @@ -25,6 +25,7 @@ export const getAssetNamespaceFromChainId = (chainId: KnownChainIds): AssetNames case KnownChainIds.MonadMainnet: case KnownChainIds.HyperEvmMainnet: case KnownChainIds.PlasmaMainnet: + case KnownChainIds.MantleMainnet: case KnownChainIds.InkMainnet: case KnownChainIds.MegaEthMainnet: case KnownChainIds.BerachainMainnet: diff --git a/packages/utils/src/getChainShortName.ts b/packages/utils/src/getChainShortName.ts index 49473dd7b10..89a6d3edd48 100644 --- a/packages/utils/src/getChainShortName.ts +++ b/packages/utils/src/getChainShortName.ts @@ -48,6 +48,8 @@ export const getChainShortName = (chainId: KnownChainIds) => { return 'HYPE' case KnownChainIds.PlasmaMainnet: return 'XPL' + case KnownChainIds.MantleMainnet: + return 'MNT' case KnownChainIds.InkMainnet: return 'INK' case KnownChainIds.MegaEthMainnet: diff --git a/packages/utils/src/getNativeFeeAssetReference.ts b/packages/utils/src/getNativeFeeAssetReference.ts index 094b65023ec..f41a7d06fd3 100644 --- a/packages/utils/src/getNativeFeeAssetReference.ts +++ b/packages/utils/src/getNativeFeeAssetReference.ts @@ -46,6 +46,8 @@ export const getNativeFeeAssetReference = ( return ASSET_REFERENCE.HyperEvm case CHAIN_REFERENCE.PlasmaMainnet: return ASSET_REFERENCE.Plasma + case CHAIN_REFERENCE.MantleMainnet: + return ASSET_REFERENCE.Mantle case CHAIN_REFERENCE.InkMainnet: return ASSET_REFERENCE.Ink case CHAIN_REFERENCE.MegaEthMainnet: diff --git a/public/generated/asset-manifest.json b/public/generated/asset-manifest.json index 9ed904d2055..33e9d27c8a0 100644 --- a/public/generated/asset-manifest.json +++ b/public/generated/asset-manifest.json @@ -1,4 +1,4 @@ { - "assetData": "061e4e8d", - "relatedAssetIndex": "a0bce6f8" + "assetData": "006cfa3b", + "relatedAssetIndex": "af42ced7" } \ No newline at end of file diff --git a/public/generated/asset-manifest.json.br b/public/generated/asset-manifest.json.br index 2615f791661..fd46c77eb26 100644 Binary files a/public/generated/asset-manifest.json.br and b/public/generated/asset-manifest.json.br differ diff --git a/public/generated/asset-manifest.json.gz b/public/generated/asset-manifest.json.gz index ad5070cab15..a98736eb443 100644 Binary files a/public/generated/asset-manifest.json.gz and b/public/generated/asset-manifest.json.gz differ diff --git a/public/generated/generatedAssetData.json b/public/generated/generatedAssetData.json index 69605751938..8e9755c413b 100644 --- a/public/generated/generatedAssetData.json +++ b/public/generated/generatedAssetData.json @@ -20244,7 +20244,7 @@ "explorer": "https://etherscan.io", "explorerAddressLink": "https://etherscan.io/address/", "explorerTxLink": "https://etherscan.io/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140" }, "eip155:1/erc20:0x31bc2baa782e5180e9efa32261d2bb33ce8918bc": { "assetId": "eip155:1/erc20:0x31bc2baa782e5180e9efa32261d2bb33ce8918bc", @@ -301750,7 +301750,7 @@ "explorer": "https://berascan.com", "explorerAddressLink": "https://berascan.com/address/", "explorerTxLink": "https://berascan.com/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:42161/erc20:0x6b2a01a5f79deb4c2f3c0eda7b01df456fbd726a" }, "eip155:80094/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf": { "assetId": "eip155:80094/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf", @@ -301854,7 +301854,7 @@ "explorer": "https://berascan.com", "explorerAddressLink": "https://berascan.com/address/", "explorerTxLink": "https://berascan.com/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:42161/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61" }, "eip155:80094/erc20:0xeb9b5f4eb023ae754ff59a04c9c038d58606dac6": { "assetId": "eip155:80094/erc20:0xeb9b5f4eb023ae754ff59a04c9c038d58606dac6", @@ -426218,7 +426218,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" }, "eip155:59144/erc20:0x1789e0043623282d5dcc7f213d703c6d8bafbb04": { "assetId": "eip155:59144/erc20:0x1789e0043623282d5dcc7f213d703c6d8bafbb04", @@ -426387,7 +426387,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" }, "eip155:59144/erc20:0x3b2f62d42db19b30588648bf1c184865d4c3b1d6": { "assetId": "eip155:59144/erc20:0x3b2f62d42db19b30588648bf1c184865d4c3b1d6", @@ -426491,7 +426491,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f" }, "eip155:59144/erc20:0x5217ab28ece654aab2c68efedb6a22739df6c3d5": { "assetId": "eip155:59144/erc20:0x5217ab28ece654aab2c68efedb6a22739df6c3d5", @@ -426816,7 +426816,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:59144/erc20:0x8cf881799e3b5ab24271a9b66b6ca2b0e575b1ef" }, "eip155:59144/erc20:0x9201f3b9dfab7c13cd659ac5695d12d605b5f1e6": { "assetId": "eip155:59144/erc20:0x9201f3b9dfab7c13cd659ac5695d12d605b5f1e6", @@ -426894,7 +426894,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7" }, "eip155:59144/erc20:0xa334884bf6b0a066d553d19e507315e839409e62": { "assetId": "eip155:59144/erc20:0xa334884bf6b0a066d553d19e507315e839409e62", @@ -427011,7 +427011,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0" }, "eip155:59144/erc20:0xba2f9e7ae9f5f03fce7d560f986743659e768bbf": { "assetId": "eip155:59144/erc20:0xba2f9e7ae9f5f03fce7d560f986743659e768bbf", @@ -427180,7 +427180,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" }, "eip155:59144/erc20:0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f": { "assetId": "eip155:59144/erc20:0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f", @@ -427193,7 +427193,7 @@ "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", - "relatedAssetKey": null + "relatedAssetKey": "eip155:1/erc20:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" }, "eip155:59144/erc20:0xeb1fd1dbb8adda4fa2b5a5c4bce34f6f20d125d2": { "assetId": "eip155:59144/erc20:0xeb1fd1dbb8adda4fa2b5a5c4bce34f6f20d125d2", @@ -427296,11 +427296,1000 @@ "color": "#5C6BC0", "networkColor": "#121212", "icon": "https://rawcdn.githack.com/trustwallet/assets/32e51d582a890b3dd3135fe3ee7c20c2fd699a6d/blockchains/ethereum/info/logo.png", - "networkIcon": "https://assets.coingecko.com/coins/images/32428/small/Linea.jpg", + "networkIcon": "https://assets.relay.link/icons/59144/light.png", "explorer": "https://lineascan.build", "explorerAddressLink": "https://lineascan.build/address/", "explorerTxLink": "https://lineascan.build/tx/", "relatedAssetKey": "eip155:1/slip44:60" + }, + "eip155:5000/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a": { + "assetId": "eip155:5000/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a", + "chainId": "eip155:5000", + "name": "AUSD", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/39284/large/AUSD_1024px.png?1764684132", + "symbol": "AUSD", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a" + }, + "eip155:5000/erc20:0x075df695b8e7f4361fa7f8c1426c63f11b06e326": { + "assetId": "eip155:5000/erc20:0x075df695b8e7f4361fa7f8c1426c63f11b06e326", + "chainId": "eip155:5000", + "name": "USDa", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/51599/large/SUSDA.png?1731604761", + "symbol": "USDA", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:56/erc20:0x9356086146be5158e98ad827e21b5cf944699894" + }, + "eip155:5000/erc20:0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9": { + "assetId": "eip155:5000/erc20:0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9", + "chainId": "eip155:5000", + "name": "Mantle Bridged USDC (Mantle)", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/35296/large/USDC_Icon.png?1708082083", + "symbol": "USDC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + }, + "eip155:5000/erc20:0x111111d2bf19e43c34263401e0cad979ed1cdb61": { + "assetId": "eip155:5000/erc20:0x111111d2bf19e43c34263401e0cad979ed1cdb61", + "chainId": "eip155:5000", + "name": "USD1", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/54977/large/USD1_1000x1000_transparent.png?1749297002", + "symbol": "USD1", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:56/erc20:0x8d0d000ee44948fc98c9b98a4fa4921476f08b0d" + }, + "eip155:5000/erc20:0x12992613fdd35abe95dec5a4964331b1ee23b50d": { + "assetId": "eip155:5000/erc20:0x12992613fdd35abe95dec5a4964331b1ee23b50d", + "chainId": "eip155:5000", + "name": "Berkshire Hathaway xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55599/large/Ticker_BRK.B__Company_Name_berkshire-hathaway__size_200x200_2x.png?1746857982", + "symbol": "BRK.BX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x167a6375da1efc4a5be0f470e73ecefd66245048": { + "assetId": "eip155:5000/erc20:0x167a6375da1efc4a5be0f470e73ecefd66245048", + "chainId": "eip155:5000", + "name": "UnitedHealth xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55640/large/Ticker_UNH__Company_Name_United_Health__size_200x200_2x.png?1746863336", + "symbol": "UNHX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x17d8186ed8f68059124190d147174d0f6697dc40": { + "assetId": "eip155:5000/erc20:0x17d8186ed8f68059124190d147174d0f6697dc40", + "chainId": "eip155:5000", + "name": "Merck xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55629/large/Ticker_MRK__Company_Name_Merck__size_200x200_2x.png?1746862482", + "symbol": "MRKX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x19c41ea77b34bbdee61c3a87a75d1abda2ed0be4": { + "assetId": "eip155:5000/erc20:0x19c41ea77b34bbdee61c3a87a75d1abda2ed0be4", + "chainId": "eip155:5000", + "name": "Eli Lilly xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55623/large/Ticker_LLY__Company_Name_Lilly__size_200x200_2x.png?1746862036", + "symbol": "LLYX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x1ac765b5bea23184802c7d2d497f7c33f1444a9e": { + "assetId": "eip155:5000/erc20:0x1ac765b5bea23184802c7d2d497f7c33f1444a9e", + "chainId": "eip155:5000", + "name": "Pfizer xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55635/large/Ticker_PFE__Company_Name_pfizer__size_200x200_2x.png?1746863254", + "symbol": "PFEX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x1d40bafc49c37cda49f2a5427e2fb95e1e3fcf20": { + "assetId": "eip155:5000/erc20:0x1d40bafc49c37cda49f2a5427e2fb95e1e3fcf20", + "chainId": "eip155:5000", + "name": "Solv Protocol Staked BTC", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/39384/large/xSolvBTC.png?1744170824", + "symbol": "XSOLVBTC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x346c574c56e1a4aaa8dc88cda8f7eb12b39947ab" + }, + "eip155:5000/erc20:0x201eba5cc46d216ce6dc03f6a759e8e766e956ae": { + "assetId": "eip155:5000/erc20:0x201eba5cc46d216ce6dc03f6a759e8e766e956ae", + "chainId": "eip155:5000", + "name": "Stargate Bridged USDT", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/70631/large/usdt.jpg?1762857609", + "symbol": "USDT", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7" + }, + "eip155:5000/erc20:0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2": { + "assetId": "eip155:5000/erc20:0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2", + "chainId": "eip155:5000", + "name": "Ethena Staked USDe", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33669/large/sUSDe-Symbol-Color.png?1716307680", + "symbol": "SUSDE", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x2363fd1235c1b6d3a5088ddf8df3a0b3a30c5293": { + "assetId": "eip155:5000/erc20:0x2363fd1235c1b6d3a5088ddf8df3a0b3a30c5293", + "chainId": "eip155:5000", + "name": "Visa xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55642/large/Ticker_V__Company_Name_Visa__size_200x200_2x.png?1746863879", + "symbol": "VX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x25356aeca4210ef7553140edb9b8026089e49396": { + "assetId": "eip155:5000/erc20:0x25356aeca4210ef7553140edb9b8026089e49396", + "chainId": "eip155:5000", + "name": "Lendle", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/31588/large/lendle_logo_200_200_cg.png?1696530405", + "symbol": "LEND", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140": { + "assetId": "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140", + "chainId": "eip155:5000", + "name": "Puff The Dragon", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/35950/large/photo_2024-03-11_10.18.27.jpeg?1710240090", + "symbol": "PUFF", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140" + }, + "eip155:5000/erc20:0x29cc30f9d113b356ce408667aa6433589cecbdca": { + "assetId": "eip155:5000/erc20:0x29cc30f9d113b356ce408667aa6433589cecbdca", + "chainId": "eip155:5000", + "name": "Elsa", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/71623/large/Red_circle_white_logo_512x512_%281%29.png?1768570174", + "symbol": "ELSA", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x2fde62942759d7c0aaf25952da4098423bc1264c": { + "assetId": "eip155:5000/erc20:0x2fde62942759d7c0aaf25952da4098423bc1264c", + "chainId": "eip155:5000", + "name": "StakeStone ETH", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33103/large/200_200.png?1702602672", + "symbol": "STONE", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x80137510979822322193fc997d400d5a6c747bf7" + }, + "eip155:5000/erc20:0x3557ba345b01efa20a1bddc61f573bfd87195081": { + "assetId": "eip155:5000/erc20:0x3557ba345b01efa20a1bddc61f573bfd87195081", + "chainId": "eip155:5000", + "name": "Amazon xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55590/large/Ticker_AMZN__Company_Name_Amazon.com_Inc.__size_200x200_2x.png?1746809003", + "symbol": "AMZNX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x36c424a6ec0e264b1616102ad63ed2ad7857413e": { + "assetId": "eip155:5000/erc20:0x36c424a6ec0e264b1616102ad63ed2ad7857413e", + "chainId": "eip155:5000", + "name": "PepsiCo xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55634/large/Ticker_PEP__Company_Name_Pepsico__size_200x200_2x.png?1746862740", + "symbol": "PEPX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07": { + "assetId": "eip155:5000/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07", + "chainId": "eip155:5000", + "name": "JOE", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/17569/large/LFJ_JOE_Logo.png?1727200941", + "symbol": "JOE", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07" + }, + "eip155:5000/erc20:0x38bac69cbbd28156796e4163b2b6dcb81e336565": { + "assetId": "eip155:5000/erc20:0x38bac69cbbd28156796e4163b2b6dcb81e336565", + "chainId": "eip155:5000", + "name": "Broadcom xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55592/large/Ticker_AVGO__Company_Name_Broadcom_Inc.__size_200x200_2x.png?1746809042", + "symbol": "AVGOX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x3d142cdb27b537af57a55ee8f54ada953b4b9ecd": { + "assetId": "eip155:5000/erc20:0x3d142cdb27b537af57a55ee8f54ada953b4b9ecd", + "chainId": "eip155:5000", + "name": "DeBox", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/50224/large/v6TSd2dN_400x400.jpg?1726521525", + "symbol": "BOX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:8453/erc20:0x37d2adc008118d04f259fc0c16ff66bf5a637d20" + }, + "eip155:5000/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f": { + "assetId": "eip155:5000/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f", + "chainId": "eip155:5000", + "name": "Kelp DAO Restaked ETH", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33800/large/Icon___Dark.png?1702991855", + "symbol": "RSETH", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f" + }, + "eip155:5000/erc20:0x4515a45337f461a11ff0fe8abf3c606ae5dc00c9": { + "assetId": "eip155:5000/erc20:0x4515a45337f461a11ff0fe8abf3c606ae5dc00c9", + "chainId": "eip155:5000", + "name": "MOE", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/34422/large/MOE.png?1704821927", + "symbol": "MOE", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x51cfe5b1e764dc253f4c8c1f19a081ff4c3517ed": { + "assetId": "eip155:5000/erc20:0x51cfe5b1e764dc253f4c8c1f19a081ff4c3517ed", + "chainId": "eip155:5000", + "name": "Mantle Inu", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/31014/large/mantle-inu.jpeg?1696529851", + "symbol": "MINU", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x5621737f42dae558b81269fcb9e9e70c19aa6b35": { + "assetId": "eip155:5000/erc20:0x5621737f42dae558b81269fcb9e9e70c19aa6b35", + "chainId": "eip155:5000", + "name": "Microsoft xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55630/large/Ticker_MSFT__Company_Name_Microsoft_Inc.__size_200x200_2x.png?1746862508", + "symbol": "MSFTX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x58538e6a46e07434d7e7375bc268d3cb839c0133": { + "assetId": "eip155:5000/erc20:0x58538e6a46e07434d7e7375bc268d3cb839c0133", + "chainId": "eip155:5000", + "name": "Ethena", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/36530/large/ethena.png?1711701436", + "symbol": "ENA", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x5a61b1d8272b250729ea3f5ed3ef843f4d66bc6e": { + "assetId": "eip155:5000/erc20:0x5a61b1d8272b250729ea3f5ed3ef843f4d66bc6e", + "chainId": "eip155:5000", + "name": "sUSDa", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/51821/large/USDA.png?1732035172", + "symbol": "SUSDA", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:8453/erc20:0xd329f9a8589723357c36727a2d5e15974c835ccf" + }, + "eip155:5000/erc20:0x5be26527e817998a7206475496fde1e68957c5a6": { + "assetId": "eip155:5000/erc20:0x5be26527e817998a7206475496fde1e68957c5a6", + "chainId": "eip155:5000", + "name": "Ondo US Dollar Yield", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/31700/large/usdy_%281%29.png?1696530524", + "symbol": "USDY", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x35e050d3c0ec2d29d269a8ecea763a183bdf9a9d" + }, + "eip155:5000/erc20:0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34": { + "assetId": "eip155:5000/erc20:0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34", + "chainId": "eip155:5000", + "name": "Ethena USDe", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33613/large/usde.png?1733810059", + "symbol": "USDE", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x5ecdb76feda945dc71f7d9ce62dfe7eafefffab4": { + "assetId": "eip155:5000/erc20:0x5ecdb76feda945dc71f7d9ce62dfe7eafefffab4", + "chainId": "eip155:5000", + "name": "Minterest", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/29455/large/MINTY.png?1706817774", + "symbol": "MINTY", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747": { + "assetId": "eip155:5000/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", + "chainId": "eip155:5000", + "name": "iZUMi Finance", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/21791/large/izumi-logo-symbol.png?1696521144", + "symbol": "IZI", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747" + }, + "eip155:5000/erc20:0x62a509ba95c75cabc7190469025e5abee4eddb2a": { + "assetId": "eip155:5000/erc20:0x62a509ba95c75cabc7190469025e5abee4eddb2a", + "chainId": "eip155:5000", + "name": "Davos.xyz USD", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/28775/large/dusd_logo_200x200.png?1696527754", + "symbol": "DUSD", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:137/erc20:0xec38621e72d86775a89c7422746de1f52bba5320" + }, + "eip155:5000/erc20:0x671642ac281c760e34251d51bc9eef27026f3b7a": { + "assetId": "eip155:5000/erc20:0x671642ac281c760e34251d51bc9eef27026f3b7a", + "chainId": "eip155:5000", + "name": "Mantle Index Four Fund", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/66570/large/mi4.png?1749795929", + "symbol": "MI4", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979": { + "assetId": "eip155:5000/erc20:0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979", + "chainId": "eip155:5000", + "name": "Fantom Bomb", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/24109/large/fBomb_Brandmark_BlackBlue_%282%29.png?1751872081", + "symbol": "FBOMB", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:59144/erc20:0x8cf881799e3b5ab24271a9b66b6ca2b0e575b1ef" + }, + "eip155:5000/erc20:0x766b0cd6ed6d90b5d49d2c36a3761e9728501ba9": { + "assetId": "eip155:5000/erc20:0x766b0cd6ed6d90b5d49d2c36a3761e9728501ba9", + "chainId": "eip155:5000", + "name": "Home Depot xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55612/large/Ticker_HD__Company_Name_Home_Depot__size_200x200_2x.png?1746858853", + "symbol": "HDX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x779ded0c9e1022225f8e0630b35a9b54be713736": { + "assetId": "eip155:5000/erc20:0x779ded0c9e1022225f8e0630b35a9b54be713736", + "chainId": "eip155:5000", + "name": "USDT0", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/53705/large/usdt0.jpg?1737086183", + "symbol": "USDT0", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7" + }, + "eip155:5000/erc20:0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8": { + "assetId": "eip155:5000/erc20:0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8", + "chainId": "eip155:5000", + "name": "Wrapped Mantle", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/30983/large/mantle.jpeg?1696529822", + "symbol": "WMNT", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696": { + "assetId": "eip155:5000/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696", + "chainId": "eip155:5000", + "name": "Yield Yak", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/17654/large/yieldyak.png?1696517185", + "symbol": "YAK", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696" + }, + "eip155:5000/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26": { + "assetId": "eip155:5000/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26", + "chainId": "eip155:5000", + "name": "Reddex", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33627/large/reddex.jpg?1725950677", + "symbol": "LQDX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:43114/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26" + }, + "eip155:5000/erc20:0x8731d54e9d02c286767d56ac03e8037c07e01e98": { + "assetId": "eip155:5000/erc20:0x8731d54e9d02c286767d56ac03e8037c07e01e98", + "chainId": "eip155:5000", + "name": "Stargate Finance", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/24413/large/STG_LOGO.png?1696523595", + "symbol": "STG", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x6694340fc020c5e6b96567843da2df01b2ce1eb6" + }, + "eip155:5000/erc20:0x8ad3c73f833d3f9a523ab01476625f269aeb7cf0": { + "assetId": "eip155:5000/erc20:0x8ad3c73f833d3f9a523ab01476625f269aeb7cf0", + "chainId": "eip155:5000", + "name": "Tesla xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55638/large/Ticker_TSLA__Company_Name_Tesla_Inc.__size_200x200_2x.png?1746863299", + "symbol": "TSLAX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x8ddb986b11c039a6cc1dbcabd62bae911b348f33": { + "assetId": "eip155:5000/erc20:0x8ddb986b11c039a6cc1dbcabd62bae911b348f33", + "chainId": "eip155:5000", + "name": "Scor", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/71138/large/Scor_logo.jpg?1765957578", + "symbol": "SCOR", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x8fe7176f0bf63358ad9490fd24ac0bdb4dac33a8": { + "assetId": "eip155:5000/erc20:0x8fe7176f0bf63358ad9490fd24ac0bdb4dac33a8", + "chainId": "eip155:5000", + "name": "Stable USDLR", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33115/large/0x68592c5c98c4f4a8a4bc6da2121e65da3d1c0917.png?1700731571", + "symbol": "USDLR", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x7e40b3e0fd0473e0240288d2b7618ac6f0c17e1b" + }, + "eip155:5000/erc20:0x93919784c523f39cacaa98ee0a9d96c3f32b593e": { + "assetId": "eip155:5000/erc20:0x93919784c523f39cacaa98ee0a9d96c3f32b593e", + "chainId": "eip155:5000", + "name": "Universal BTC", + "precision": 8, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/39599/large/uniBTC_200px.png?1723064455", + "symbol": "UNIBTC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x6b2a01a5f79deb4c2f3c0eda7b01df456fbd726a" + }, + "eip155:5000/erc20:0x96702be57cd9777f835117a809c7124fe4ec989a": { + "assetId": "eip155:5000/erc20:0x96702be57cd9777f835117a809c7124fe4ec989a", + "chainId": "eip155:5000", + "name": "Meta xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55628/large/Ticker_META__Company_Name_Meta_Platforms_Inc.__size_200x200_2x.png?1746862467", + "symbol": "METAX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x981bd9f77c8aafc14ebc86769503f86a3cc29af5": { + "assetId": "eip155:5000/erc20:0x981bd9f77c8aafc14ebc86769503f86a3cc29af5", + "chainId": "eip155:5000", + "name": "Tarot", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/31800/large/TAROT.jpg?1696530615", + "symbol": "TAROT", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x9d275685dc284c8eb1c79f6aba7a63dc75ec890a": { + "assetId": "eip155:5000/erc20:0x9d275685dc284c8eb1c79f6aba7a63dc75ec890a", + "chainId": "eip155:5000", + "name": "Apple xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55586/large/Ticker_AAPL__Company_Name_Apple_Inc.__size_200x200_2x.png?1746807196", + "symbol": "AAPLX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0x9f0c013016e8656bc256f948cd4b79ab25c7b94d": { + "assetId": "eip155:5000/erc20:0x9f0c013016e8656bc256f948cd4b79ab25c7b94d", + "chainId": "eip155:5000", + "name": "mETH Protocol", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/50969/large/Logomark-Gradient_Official.png?1729620221", + "symbol": "COOK", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xa68d25fc2af7278db4bcdcaabce31814252642a9": { + "assetId": "eip155:5000/erc20:0xa68d25fc2af7278db4bcdcaabce31814252642a9", + "chainId": "eip155:5000", + "name": "Solv Protocol BTC", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/36800/large/solvBTC.png?1719810684", + "symbol": "SOLVBTC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x3647c54c4c2c65bc7a2d63c0da2809b399dbbdc0" + }, + "eip155:5000/erc20:0xa90424d5d3e770e8644103ab503ed775dd1318fd": { + "assetId": "eip155:5000/erc20:0xa90424d5d3e770e8644103ab503ed775dd1318fd", + "chainId": "eip155:5000", + "name": "Procter & Gamble xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55636/large/Ticker_PG__Company_Name_Proctor___Gamble__size_200x200_2x.png?1746863267", + "symbol": "PGX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xabbeed1d173541e0546b38b1c0394975be200000": { + "assetId": "eip155:5000/erc20:0xabbeed1d173541e0546b38b1c0394975be200000", + "chainId": "eip155:5000", + "name": "Slash Vision Labs", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/37444/large/svl.jpeg?1714443652", + "symbol": "SVL", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xad5cdc3340904285b8159089974a99a1a09eb4c0": { + "assetId": "eip155:5000/erc20:0xad5cdc3340904285b8159089974a99a1a09eb4c0", + "chainId": "eip155:5000", + "name": "Chevron xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55606/large/Ticker_CVX__Company_Name_chevron__size_200x200_2x.png?1746858451", + "symbol": "CVXX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xb365cd2588065f522d379ad19e903304f6b622c6": { + "assetId": "eip155:5000/erc20:0xb365cd2588065f522d379ad19e903304f6b622c6", + "chainId": "eip155:5000", + "name": "Mastercard xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55624/large/Ticker_MA__Company_Name_Mastercard__size_200x200_2x.png?1746862053", + "symbol": "MAX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf": { + "assetId": "eip155:5000/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf", + "chainId": "eip155:5000", + "name": "Wild Goat Coin", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/37966/large/wgcCoin-256px.png?1768798052", + "symbol": "WGC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:8453/erc20:0x3d63825b0d8669307366e6c8202f656b9e91d368" + }, + "eip155:5000/erc20:0xc845b2894dbddd03858fd2d643b4ef725fe0849d": { + "assetId": "eip155:5000/erc20:0xc845b2894dbddd03858fd2d643b4ef725fe0849d", + "chainId": "eip155:5000", + "name": "NVIDIA xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55633/large/Ticker_NVDA__Company_Name_NVIDIA_Corp__size_200x200_2x.png?1746862704", + "symbol": "NVDAX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364": { + "assetId": "eip155:5000/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364", + "chainId": "eip155:5000", + "name": "Function FBTC", + "precision": 8, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/39182/large/Function_Token_%282%29.png?1760254065", + "symbol": "FBTC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364" + }, + "eip155:5000/erc20:0xcda86a272531e8640cd7f1a92c01839911b90bb0": { + "assetId": "eip155:5000/erc20:0xcda86a272531e8640cd7f1a92c01839911b90bb0", + "chainId": "eip155:5000", + "name": "Mantle Staked Ether", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/33345/large/symbol_transparent_bg.png?1701697066", + "symbol": "METH", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xd0728f5b1f53a834f8dcd1b86f62ceb8726eb0a0": { + "assetId": "eip155:5000/erc20:0xd0728f5b1f53a834f8dcd1b86f62ceb8726eb0a0", + "chainId": "eip155:5000", + "name": "Vertex", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/27927/large/vrtx.png?1696526947", + "symbol": "VRTX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0x95146881b86b3ee99e63705ec87afe29fcc044d9" + }, + "eip155:5000/erc20:0xd81a4adea9932a6bdba0bdbc8c5fd4c78e5a09f1": { + "assetId": "eip155:5000/erc20:0xd81a4adea9932a6bdba0bdbc8c5fd4c78e5a09f1", + "chainId": "eip155:5000", + "name": "VOOI", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/70365/large/VOOI_Token_Logo.png?1764177739", + "symbol": "VOOI", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:56/erc20:0x876cecb73c9ed1b1526f8e35c6a5a51a31bcf341" + }, + "eip155:5000/erc20:0xd9fc3e075d45254a1d834fea18af8041207dea0a": { + "assetId": "eip155:5000/erc20:0xd9fc3e075d45254a1d834fea18af8041207dea0a", + "chainId": "eip155:5000", + "name": "JPMorgan Chase xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55621/large/Ticker_JPM__Company_Name_JPMorganChase__size_200x200_2x.png?1746861978", + "symbol": "JPMX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xdb0482cfad4789798623e64b15eeba01b16e917c": { + "assetId": "eip155:5000/erc20:0xdb0482cfad4789798623e64b15eeba01b16e917c", + "chainId": "eip155:5000", + "name": "Johnson & Johnson xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55620/large/Ticker_JNJ__Company_Name_johnson-johnson__size_200x200_2x.png?1746861691", + "symbol": "JNJX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xdcc1a2699441079da889b1f49e12b69cc791129b": { + "assetId": "eip155:5000/erc20:0xdcc1a2699441079da889b1f49e12b69cc791129b", + "chainId": "eip155:5000", + "name": "Coca-Cola xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55622/large/Ticker_KO__Company_Name_CokeCola__size_200x200_2x.png?1746861996", + "symbol": "KOX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111": { + "assetId": "eip155:5000/erc20:0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", + "chainId": "eip155:5000", + "name": "Mantle Bridged WETH (Mantle)", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/31013/large/weth_2.jpg?1758795984", + "symbol": "WETH", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + }, + "eip155:5000/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3": { + "assetId": "eip155:5000/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3", + "chainId": "eip155:5000", + "name": "Almanak", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/68466/large/almanak.png?1755828664", + "symbol": "ALMANAK", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3" + }, + "eip155:5000/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61": { + "assetId": "eip155:5000/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61", + "chainId": "eip155:5000", + "name": "ynETH MAX", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/51623/large/ynETHx.png?1731659494", + "symbol": "YNETHX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61" + }, + "eip155:5000/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa": { + "assetId": "eip155:5000/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa", + "chainId": "eip155:5000", + "name": "Mantle Restaked ETH", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/51114/large/symbol.png?1730117724", + "symbol": "CMETH", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa" + }, + "eip155:5000/erc20:0xe8b201be5357c07f0aa58693f98fb048323777f9": { + "assetId": "eip155:5000/erc20:0xe8b201be5357c07f0aa58693f98fb048323777f9", + "chainId": "eip155:5000", + "name": "Blade", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/52991/large/Token_Logo.png?1734944384", + "symbol": "BLADE", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xe92f673ca36c5e2efd2de7628f815f84807e803f": { + "assetId": "eip155:5000/erc20:0xe92f673ca36c5e2efd2de7628f815f84807e803f", + "chainId": "eip155:5000", + "name": "Alphabet xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55610/large/Ticker_GOOG__Company_Name_Alphabet_Inc.__size_200x200_2x.png?1746858803", + "symbol": "GOOGLX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xeb466342c4d449bc9f53a865d5cb90586f405215": { + "assetId": "eip155:5000/erc20:0xeb466342c4d449bc9f53a865d5cb90586f405215", + "chainId": "eip155:5000", + "name": "Axelar Bridged USDC", + "precision": 6, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/26476/large/uausdc_D_3x.png?1696525548", + "symbol": "AXLUSDC", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + }, + "eip155:5000/erc20:0xeedb0273c5af792745180e9ff568cd01550ffa13": { + "assetId": "eip155:5000/erc20:0xeedb0273c5af792745180e9ff568cd01550ffa13", + "chainId": "eip155:5000", + "name": "Exxon Mobil xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55644/large/Ticker_XOM__Company_Name_ExxonMobil__size_200x200_2x.png?1746863917", + "symbol": "XOMX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6": { + "assetId": "eip155:5000/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6", + "chainId": "eip155:5000", + "name": "WOO", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/12921/large/WOO_Logos_2023_Profile_Pic_WOO.png?1696512709", + "symbol": "WOO", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b" + }, + "eip155:5000/erc20:0xf793ac038e7688aa3220005852836108cddb065c": { + "assetId": "eip155:5000/erc20:0xf793ac038e7688aa3220005852836108cddb065c", + "chainId": "eip155:5000", + "name": "Chasm", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/39473/large/IMG_2A1EB0FC7749-1.jpeg?1724512678", + "symbol": "CAI", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xfbf2398df672cee4afcc2a4a733222331c742a6a": { + "assetId": "eip155:5000/erc20:0xfbf2398df672cee4afcc2a4a733222331c742a6a", + "chainId": "eip155:5000", + "name": "AbbVie xStock", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/55646/large/Ticker_ABBV__Company_Name_SP500__size_200x200_2x.png?1746864179", + "symbol": "ABBVX", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null + }, + "eip155:5000/erc20:0xfe36cf0b43aae49fbc5cfc5c0af22a623114e043": { + "assetId": "eip155:5000/erc20:0xfe36cf0b43aae49fbc5cfc5c0af22a623114e043", + "chainId": "eip155:5000", + "name": "Chainlink", + "precision": 18, + "color": "#FFFFFF", + "icon": "https://assets.coingecko.com/coins/images/877/large/Chainlink_Logo_500.png?1760023405", + "symbol": "LINK", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": "eip155:42161/erc20:0xf97f4df75117a78c1a5a0dbb814af92458539fb4" + }, + "eip155:5000/slip44:60": { + "assetId": "eip155:5000/slip44:60", + "chainId": "eip155:5000", + "symbol": "MNT", + "name": "Mantle", + "networkName": "Mantle", + "precision": 18, + "color": "#000000", + "icon": "https://assets.relay.link/icons/5000/light.png", + "explorer": "https://mantlescan.xyz", + "explorerAddressLink": "https://mantlescan.xyz/address/", + "explorerTxLink": "https://mantlescan.xyz/tx/", + "relatedAssetKey": null } }, "ids": [ @@ -457710,6 +458699,82 @@ "eip155:59144/erc20:0xf3b001d64c656e30a62fbaaca003b1336b4ce12a", "eip155:59144/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6", "eip155:59144/erc20:0xf5c6825015280cdfd0b56903f9f8b5a2233476f5", - "eip155:59144/slip44:60" + "eip155:59144/slip44:60", + "eip155:5000/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a", + "eip155:5000/erc20:0x075df695b8e7f4361fa7f8c1426c63f11b06e326", + "eip155:5000/erc20:0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9", + "eip155:5000/erc20:0x111111d2bf19e43c34263401e0cad979ed1cdb61", + "eip155:5000/erc20:0x12992613fdd35abe95dec5a4964331b1ee23b50d", + "eip155:5000/erc20:0x167a6375da1efc4a5be0f470e73ecefd66245048", + "eip155:5000/erc20:0x17d8186ed8f68059124190d147174d0f6697dc40", + "eip155:5000/erc20:0x19c41ea77b34bbdee61c3a87a75d1abda2ed0be4", + "eip155:5000/erc20:0x1ac765b5bea23184802c7d2d497f7c33f1444a9e", + "eip155:5000/erc20:0x1d40bafc49c37cda49f2a5427e2fb95e1e3fcf20", + "eip155:5000/erc20:0x201eba5cc46d216ce6dc03f6a759e8e766e956ae", + "eip155:5000/erc20:0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2", + "eip155:5000/erc20:0x2363fd1235c1b6d3a5088ddf8df3a0b3a30c5293", + "eip155:5000/erc20:0x25356aeca4210ef7553140edb9b8026089e49396", + "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140", + "eip155:5000/erc20:0x29cc30f9d113b356ce408667aa6433589cecbdca", + "eip155:5000/erc20:0x2fde62942759d7c0aaf25952da4098423bc1264c", + "eip155:5000/erc20:0x3557ba345b01efa20a1bddc61f573bfd87195081", + "eip155:5000/erc20:0x36c424a6ec0e264b1616102ad63ed2ad7857413e", + "eip155:5000/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07", + "eip155:5000/erc20:0x38bac69cbbd28156796e4163b2b6dcb81e336565", + "eip155:5000/erc20:0x3d142cdb27b537af57a55ee8f54ada953b4b9ecd", + "eip155:5000/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f", + "eip155:5000/erc20:0x4515a45337f461a11ff0fe8abf3c606ae5dc00c9", + "eip155:5000/erc20:0x51cfe5b1e764dc253f4c8c1f19a081ff4c3517ed", + "eip155:5000/erc20:0x5621737f42dae558b81269fcb9e9e70c19aa6b35", + "eip155:5000/erc20:0x58538e6a46e07434d7e7375bc268d3cb839c0133", + "eip155:5000/erc20:0x5a61b1d8272b250729ea3f5ed3ef843f4d66bc6e", + "eip155:5000/erc20:0x5be26527e817998a7206475496fde1e68957c5a6", + "eip155:5000/erc20:0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34", + "eip155:5000/erc20:0x5ecdb76feda945dc71f7d9ce62dfe7eafefffab4", + "eip155:5000/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", + "eip155:5000/erc20:0x62a509ba95c75cabc7190469025e5abee4eddb2a", + "eip155:5000/erc20:0x671642ac281c760e34251d51bc9eef27026f3b7a", + "eip155:5000/erc20:0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979", + "eip155:5000/erc20:0x766b0cd6ed6d90b5d49d2c36a3761e9728501ba9", + "eip155:5000/erc20:0x779ded0c9e1022225f8e0630b35a9b54be713736", + "eip155:5000/erc20:0x78c1b0c915c4faa5fffa6cabf0219da63d7f4cb8", + "eip155:5000/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696", + "eip155:5000/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26", + "eip155:5000/erc20:0x8731d54e9d02c286767d56ac03e8037c07e01e98", + "eip155:5000/erc20:0x8ad3c73f833d3f9a523ab01476625f269aeb7cf0", + "eip155:5000/erc20:0x8ddb986b11c039a6cc1dbcabd62bae911b348f33", + "eip155:5000/erc20:0x8fe7176f0bf63358ad9490fd24ac0bdb4dac33a8", + "eip155:5000/erc20:0x93919784c523f39cacaa98ee0a9d96c3f32b593e", + "eip155:5000/erc20:0x96702be57cd9777f835117a809c7124fe4ec989a", + "eip155:5000/erc20:0x981bd9f77c8aafc14ebc86769503f86a3cc29af5", + "eip155:5000/erc20:0x9d275685dc284c8eb1c79f6aba7a63dc75ec890a", + "eip155:5000/erc20:0x9f0c013016e8656bc256f948cd4b79ab25c7b94d", + "eip155:5000/erc20:0xa68d25fc2af7278db4bcdcaabce31814252642a9", + "eip155:5000/erc20:0xa90424d5d3e770e8644103ab503ed775dd1318fd", + "eip155:5000/erc20:0xabbeed1d173541e0546b38b1c0394975be200000", + "eip155:5000/erc20:0xad5cdc3340904285b8159089974a99a1a09eb4c0", + "eip155:5000/erc20:0xb365cd2588065f522d379ad19e903304f6b622c6", + "eip155:5000/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf", + "eip155:5000/erc20:0xc845b2894dbddd03858fd2d643b4ef725fe0849d", + "eip155:5000/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364", + "eip155:5000/erc20:0xcda86a272531e8640cd7f1a92c01839911b90bb0", + "eip155:5000/erc20:0xd0728f5b1f53a834f8dcd1b86f62ceb8726eb0a0", + "eip155:5000/erc20:0xd81a4adea9932a6bdba0bdbc8c5fd4c78e5a09f1", + "eip155:5000/erc20:0xd9fc3e075d45254a1d834fea18af8041207dea0a", + "eip155:5000/erc20:0xdb0482cfad4789798623e64b15eeba01b16e917c", + "eip155:5000/erc20:0xdcc1a2699441079da889b1f49e12b69cc791129b", + "eip155:5000/erc20:0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111", + "eip155:5000/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3", + "eip155:5000/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61", + "eip155:5000/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa", + "eip155:5000/erc20:0xe8b201be5357c07f0aa58693f98fb048323777f9", + "eip155:5000/erc20:0xe92f673ca36c5e2efd2de7628f815f84807e803f", + "eip155:5000/erc20:0xeb466342c4d449bc9f53a865d5cb90586f405215", + "eip155:5000/erc20:0xeedb0273c5af792745180e9ff568cd01550ffa13", + "eip155:5000/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6", + "eip155:5000/erc20:0xf793ac038e7688aa3220005852836108cddb065c", + "eip155:5000/erc20:0xfbf2398df672cee4afcc2a4a733222331c742a6a", + "eip155:5000/erc20:0xfe36cf0b43aae49fbc5cfc5c0af22a623114e043", + "eip155:5000/slip44:60" ] } \ No newline at end of file diff --git a/public/generated/generatedAssetData.json.br b/public/generated/generatedAssetData.json.br index cf5be4ff579..9c5c38b56ed 100644 Binary files a/public/generated/generatedAssetData.json.br and b/public/generated/generatedAssetData.json.br differ diff --git a/public/generated/generatedAssetData.json.gz b/public/generated/generatedAssetData.json.gz index ea57eea54d2..d227679ad45 100644 Binary files a/public/generated/generatedAssetData.json.gz and b/public/generated/generatedAssetData.json.gz differ diff --git a/public/generated/relatedAssetIndex.json b/public/generated/relatedAssetIndex.json index b33d970864a..16962bc146f 100644 --- a/public/generated/relatedAssetIndex.json +++ b/public/generated/relatedAssetIndex.json @@ -21,7 +21,8 @@ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:AUSD1jCcCyPLybk1YnvPWsHQSrZ46dxwoMniN4N2UEB9", "eip155:42161/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a", "eip155:747474/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a", - "sui:35834a8a/coin:0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD" + "sui:35834a8a/coin:0x2053d08c1e2bd02791056171aab0fd12bd7cd7efad2ab8f6b9c8902f14df2ff2::ausd::AUSD", + "eip155:5000/erc20:0x00000000efe302beaa2b3e6e1b18d08d69a9012a" ], "eip155:42161/erc20:0x079504b86d38119f859c4194765029f692b7b7aa": [ "eip155:1/erc20:0x01ba67aac7f75f647d94220cc98fb30fcc5105bf", @@ -85,7 +86,9 @@ "eip155:999/erc20:0xf9775085d726e782e83585033b58606f7731ab18", "eip155:42161/erc20:0x6b2a01a5f79deb4c2f3c0eda7b01df456fbd726a", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:uniBKsEV37qLRFZD7v3Z9drX6voyiCM8WcaePqeSSLc", - "eip155:57073/erc20:0xd3c8da379d71a33bfee8875f87ac2748beb1d58d" + "eip155:57073/erc20:0xd3c8da379d71a33bfee8875f87ac2748beb1d58d", + "eip155:80094/erc20:0xc3827a4bc8224ee2d116637023b124ced6db6e90", + "eip155:5000/erc20:0x93919784c523f39cacaa98ee0a9d96c3f32b593e" ], "eip155:42161/erc20:0x064f8b858c2a603e1b106a2039f5446d32dc81c1": [ "eip155:8453/erc20:0x54330d28ca3357f294334bdc454a032e7f353416", @@ -1397,7 +1400,9 @@ "eip155:747474/erc20:0x0913da6da4b42f538b445599b46bb4622342cf52", "sui:35834a8a/coin:0x0041f9f9344cac094454cd574e333c4fdb132d7bcc9379bcd4aab485b2a63942::wbtc::WBTC", "sui:35834a8a/coin:0xaafb102dd0902f5055cadecd687fb5b71ca82ef0e0285d90afde828ec58ca96b::btc::BTC", - "eip155:80094/erc20:0x0555e30da8f98308edb960aa94c0db47230d2b9c" + "eip155:80094/erc20:0x0555e30da8f98308edb960aa94c0db47230d2b9c", + "eip155:59144/erc20:0x3aab2285ddcddad8edf438c1bab47e1a9d05a9b4", + "eip155:59144/erc20:0xe516a5cff996cc399efbb48355fd5ab83438e7a9" ], "eip155:8453/erc20:0xc5fed7c8ccc75d8a72b601a66dffd7a489073f0b": [ "eip155:56/erc20:0x6ef2ffb38d64afe18ce782da280b300e358cfeaf", @@ -1651,7 +1656,8 @@ "eip155:8453/erc20:0xd329f9a8589723357c36727a2d5e15974c835ccf": [ "eip155:56/erc20:0x73a325103935b0b5e7aa3aca6dba74ad22f82b03", "eip155:1/erc20:0x2b66aade1e9c062ff411bd47c44e0ad696d43bd9", - "eip155:8453/erc20:0xd329f9a8589723357c36727a2d5e15974c835ccf" + "eip155:8453/erc20:0xd329f9a8589723357c36727a2d5e15974c835ccf", + "eip155:5000/erc20:0x5a61b1d8272b250729ea3f5ed3ef843f4d66bc6e" ], "eip155:56/erc20:0x3c1b057cb7aceb4f2c4d889a29febec30a6a3146": [ "eip155:1/erc20:0x298d492e8c1d909d3f63bc4a36c66c64acb3d695", @@ -1966,7 +1972,8 @@ "eip155:8453/erc20:0x37d2adc008118d04f259fc0c16ff66bf5a637d20": [ "eip155:56/erc20:0x6386adc4bc9c21984e34fd916bb349dd861742af", "eip155:1/erc20:0x32b77729cd87f1ef2bea4c650c16f89f08472c69", - "eip155:8453/erc20:0x37d2adc008118d04f259fc0c16ff66bf5a637d20" + "eip155:8453/erc20:0x37d2adc008118d04f259fc0c16ff66bf5a637d20", + "eip155:5000/erc20:0x3d142cdb27b537af57a55ee8f54ada953b4b9ecd" ], "eip155:56/erc20:0x8519ea49c997f50ceffa444d240fb655e89248aa": [ "eip155:1/erc20:0x33d0568941c0c64ff7e0fb4fba0b11bd37deed9f", @@ -2685,7 +2692,8 @@ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:Dz8VutERqbHR2aFL5A3s1Ky4dG1unJT1jUFXXPaY9ytX", "eip155:42161/erc20:0xcafcd85d8ca7ad1e1c6f82f651fa15e33aefd07b", "near:mainnet/nep141:4691937a7508860f876c9c0a2a617e7d9e945d4b.factory.bridge.near", - "eip155:59144/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6" + "eip155:59144/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6", + "eip155:5000/erc20:0xf3df0a31ec5ea438150987805e841f960b9471b6" ], "eip155:42161/erc20:0x808167ea744e02c6fec3f56636d19f3448b72981": [ "eip155:8453/erc20:0x0400373ea12d84f578b8ab2c21556645333cc312", @@ -3096,7 +3104,8 @@ "eip155:534352/erc20:0x548c6944cba02b9d1c0570102c89de64d258d3ac", "eip155:57073/erc20:0x71052bae71c25c78e37fd12e5ff1101a71d9018f", "eip155:80094/erc20:0x71052bae71c25c78e37fd12e5ff1101a71d9018f", - "eip155:59144/erc20:0xa18152629128738a5c081eb226335fed4b9c95e9" + "eip155:59144/erc20:0xa18152629128738a5c081eb226335fed4b9c95e9", + "eip155:5000/erc20:0xfe36cf0b43aae49fbc5cfc5c0af22a623114e043" ], "eip155:42161/erc20:0x315a2dca4b1b633d3a707c71d96243534c02f7c4": [ "eip155:8453/erc20:0x78bb8ff6baa486c31ce0ef1a157798f7a606565c", @@ -3791,7 +3800,9 @@ "eip155:10/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61", "eip155:42161/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61", "eip155:100/erc20:0x657d9aba1dbb59e53f9f3ecaa878447dcfc96dcb", - "eip155:534352/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61" + "eip155:534352/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61", + "eip155:80094/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61", + "eip155:5000/erc20:0xe231db5f348d709239ef1741ea30961b3b635a61" ], "eip155:56/erc20:0x6418c0dd099a9fda397c766304cdd918233e8847": [ "eip155:1/erc20:0x6418c0dd099a9fda397c766304cdd918233e8847", @@ -3894,7 +3905,8 @@ "eip155:42161/erc20:0x7e40b3e0fd0473e0240288d2b7618ac6f0c17e1b": [ "eip155:1/erc20:0x68592c5c98c4f4a8a4bc6da2121e65da3d1c0917", "eip155:42161/erc20:0x7e40b3e0fd0473e0240288d2b7618ac6f0c17e1b", - "eip155:59144/erc20:0x68592c5c98c4f4a8a4bc6da2121e65da3d1c0917" + "eip155:59144/erc20:0x68592c5c98c4f4a8a4bc6da2121e65da3d1c0917", + "eip155:5000/erc20:0x8fe7176f0bf63358ad9490fd24ac0bdb4dac33a8" ], "eip155:56/erc20:0xc5326b32e8baef125acd68f8bc646fd646104f1c": [ "eip155:1/erc20:0x6781a0f84c7e9e846dcb84a9a5bd49333067b104", @@ -4124,7 +4136,8 @@ "eip155:100/erc20:0x44fa8e6f47987339850636f88629646662444217", "eip155:42161/erc20:0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", "starknet:SN_MAIN/token:0x5574eb6b8789a91466f902c380d978e472db68170ff82a5b650b95a58ddf4ad", - "starknet:SN_MAIN/token:0xda114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3" + "starknet:SN_MAIN/token:0xda114221cb83fa859dbdb4c44beeaa0bb37c7537ad5ae66fe5e0efd20e6eb3", + "eip155:59144/erc20:0x4af15ec2a0bd43db75dd04e62faa3b8ef36b00d5" ], "eip155:1/erc20:0x6c28aef8977c9b773996d0e8376d2ee379446f2f": [ "eip155:137/erc20:0x831753dd7087cac61ab5644b308642cc1c33dc13", @@ -4433,7 +4446,8 @@ "eip155:42161/erc20:0x80137510979822322193fc997d400d5a6c747bf7", "eip155:534352/erc20:0x80137510979822322193fc997d400d5a6c747bf7", "eip155:59144/erc20:0x93f4d0ab6a8b4271f4a28db399b5e30612d21116", - "eip155:80094/erc20:0xec901da9c68e90798bbbb74c11406a32a70652c3" + "eip155:80094/erc20:0xec901da9c68e90798bbbb74c11406a32a70652c3", + "eip155:5000/erc20:0x2fde62942759d7c0aaf25952da4098423bc1264c" ], "eip155:56/erc20:0x405f38b90bebf1259062cf29da299f3398662bcb": [ "eip155:1/erc20:0x74a03d741226f738098c35da8188e57aca50d146", @@ -4709,7 +4723,8 @@ "eip155:42161/erc20:0x3647c54c4c2c65bc7a2d63c0da2809b399dbbdc0", "eip155:143/erc20:0xae4efbc7736f963982aacb17efa37fcbab924cb3", "eip155:57073/erc20:0xae4efbc7736f963982aacb17efa37fcbab924cb3", - "eip155:80094/erc20:0x541fd749419ca806a8bc7da8ac23d346f2df8b77" + "eip155:80094/erc20:0x541fd749419ca806a8bc7da8ac23d346f2df8b77", + "eip155:5000/erc20:0xa68d25fc2af7278db4bcdcaabce31814252642a9" ], "eip155:42161/erc20:0x7bbcf1b600565ae023a1806ef637af4739de3255": [ "eip155:8453/erc20:0x7bbcf1b600565ae023a1806ef637af4739de3255", @@ -4771,7 +4786,8 @@ "eip155:10/erc20:0x1f32b1c2345538c0c6f582fcb022739c4a194ebb", "eip155:137/erc20:0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd", "eip155:100/erc20:0x6c76971f98945ae98dd7d4dfca8711ebea946ea6", - "eip155:42161/erc20:0x5979d7b546e38e414f7e9822514be443a4800529" + "eip155:42161/erc20:0x5979d7b546e38e414f7e9822514be443a4800529", + "eip155:59144/erc20:0xb5bedd42000b71fdde22d3ee8a79bd49a568fc8f" ], "eip155:42161/erc20:0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8": [ "eip155:8453/erc20:0xa99f6e6785da0f5d6fb42495fe424bce029eeb3e", @@ -4988,7 +5004,8 @@ "eip155:43114/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26": [ "eip155:56/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26", "eip155:1/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26", - "eip155:43114/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26" + "eip155:43114/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26", + "eip155:5000/erc20:0x872952d3c1caf944852c5adda65633f1ef218a26" ], "eip155:8453/erc20:0x868fced65edbf0056c4163515dd840e9f287a4c3": [ "eip155:56/erc20:0x868fced65edbf0056c4163515dd840e9f287a4c3", @@ -5257,7 +5274,8 @@ "eip155:143/erc20:0x111111d2bf19e43c34263401e0cad979ed1cdb61", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB", "tron:0x2b6653dc/trc20:TPFqcBAaaUMCSVRCqPaQ9QnzKhmuoLR6Rc", - "eip155:56/erc20:0x8d0d000ee44948fc98c9b98a4fa4921476f08b0d" + "eip155:56/erc20:0x8d0d000ee44948fc98c9b98a4fa4921476f08b0d", + "eip155:5000/erc20:0x111111d2bf19e43c34263401e0cad979ed1cdb61" ], "eip155:8453/erc20:0x85cb098bdcd3ca929d2cd18fc7a2669ff0362242": [ "eip155:56/erc20:0x85cb098bdcd3ca929d2cd18fc7a2669ff0362242", @@ -5279,7 +5297,8 @@ ], "eip155:56/erc20:0x9356086146be5158e98ad827e21b5cf944699894": [ "eip155:1/erc20:0x8a60e489004ca22d775c5f2c657598278d17d9c2", - "eip155:56/erc20:0x9356086146be5158e98ad827e21b5cf944699894" + "eip155:56/erc20:0x9356086146be5158e98ad827e21b5cf944699894", + "eip155:5000/erc20:0x075df695b8e7f4361fa7f8c1426c63f11b06e326" ], "eip155:56/erc20:0x8db1d28ee0d822367af8d220c0dc7cb6fe9dc442": [ "eip155:1/erc20:0x8db1d28ee0d822367af8d220c0dc7cb6fe9dc442", @@ -5693,7 +5712,8 @@ "eip155:1/erc20:0x96f6ef951840721adbf46ac996b59e0235cb985c", "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:A1KLoBrKBde8Ty9qtNQUtq3C2ortoC3u7twggz7sEto6", "eip155:42161/erc20:0x35e050d3c0ec2d29d269a8ecea763a183bdf9a9d", - "sui:35834a8a/coin:0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY" + "sui:35834a8a/coin:0x960b531667636f39e85867775f52f6b1f220a058c4de786905bdf761e06a56bb::usdy::USDY", + "eip155:5000/erc20:0x5be26527e817998a7206475496fde1e68957c5a6" ], "eip155:1/erc20:0x9695e0114e12c0d3a3636fab5a18e6b737529023": [ "eip155:137/erc20:0xc168e40227e4ebd8c1cae80f7a55a4f0e6d66c97", @@ -5812,7 +5832,8 @@ "eip155:137/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", "eip155:42161/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", "eip155:534352/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", - "eip155:59144/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747" + "eip155:59144/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747", + "eip155:5000/erc20:0x60d01ec2d5e98ac51c8b4cf84dfcce98d527c747" ], "eip155:8453/erc20:0x717d31a60a9e811469673429c9f8ea24358990f1": [ "eip155:1/erc20:0x9afa9999e45484adf5d8eed8d9dfe0693bacd838", @@ -6045,7 +6066,10 @@ "eip155:57073/erc20:0x2d270e6886d130d724215a266106e6832161eaed", "eip155:80094/erc20:0x549943e04f40284185054145c6e4e9568c1d3241", "eip155:57073/erc20:0xf1815bd50389c46847f0bda824ec8da914045d14", - "eip155:59144/erc20:0xeb466342c4d449bc9f53a865d5cb90586f405215" + "eip155:59144/erc20:0xeb466342c4d449bc9f53a865d5cb90586f405215", + "eip155:5000/erc20:0xeb466342c4d449bc9f53a865d5cb90586f405215", + "eip155:59144/erc20:0x176211869ca2b568f2a7d4ee941e073a821ee1ff", + "eip155:5000/erc20:0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9" ], "eip155:8453/erc20:0x9c632e6aaa3ea73f91554f8a3cb2ed2f29605e0c": [ "eip155:56/erc20:0x7324c7c0d95cebc73eea7e85cbaac0dbdf88a05b", @@ -6208,7 +6232,8 @@ "eip155:42161/erc20:0x8ec1877698acf262fe8ad8a295ad94d6ea258988", "eip155:10/erc20:0xb396b31599333739a97951b74652c117be86ee1d", "eip155:137/erc20:0xec38621e72d86775a89c7422746de1f52bba5320", - "eip155:59144/erc20:0xa88b54e6b76fb97cdb8ecae868f1458e18a953f4" + "eip155:59144/erc20:0xa88b54e6b76fb97cdb8ecae868f1458e18a953f4", + "eip155:5000/erc20:0x62a509ba95c75cabc7190469025e5abee4eddb2a" ], "eip155:56/erc20:0xa0cb0ce7c6d93a7ebd72952feb4407dddee8a194": [ "eip155:1/erc20:0xa4cf2afd3b165975afffbf7e487cdd40c894ab6b", @@ -6656,7 +6681,8 @@ "eip155:42161/erc20:0x6694340fc020c5e6b96567843da2df01b2ce1eb6", "eip155:534352/erc20:0x8731d54e9d02c286767d56ac03e8037c07e01e98", "eip155:80094/erc20:0x9895d81bb462a195b4922ed7de0e3acd007c32cb", - "eip155:59144/erc20:0x808d7c71ad2ba3fa531b068a2417c63106bc0949" + "eip155:59144/erc20:0x808d7c71ad2ba3fa531b068a2417c63106bc0949", + "eip155:5000/erc20:0x8731d54e9d02c286767d56ac03e8037c07e01e98" ], "eip155:1/erc20:0xb23767492d0ca6dc7221cbea45689a0410f388c4": [ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:XstYR6KGqZFchAuhHoEe4mL8W2kL9aqGW1EDBKRrmGB", @@ -6731,7 +6757,8 @@ ], "eip155:56/erc20:0x876cecb73c9ed1b1526f8e35c6a5a51a31bcf341": [ "eip155:1/erc20:0xb31561f0e2aac72406103b1926356d756f07a481", - "eip155:56/erc20:0x876cecb73c9ed1b1526f8e35c6a5a51a31bcf341" + "eip155:56/erc20:0x876cecb73c9ed1b1526f8e35c6a5a51a31bcf341", + "eip155:5000/erc20:0xd81a4adea9932a6bdba0bdbc8c5fd4c78e5a09f1" ], "eip155:56/erc20:0x44ec807ce2f4a6f2737a92e985f318d035883e47": [ "eip155:1/erc20:0xb3999f658c0391d94a37f7ff328f3fec942bcadc", @@ -7280,7 +7307,9 @@ "eip155:9745/erc20:0x9895d81bb462a195b4922ed7de0e3acd007c32cb", "eip155:747474/erc20:0xee7d8bcfb72bc1880d0cf19822eb0a2e6577ab62", "eip155:747474/erc20:0x9893989433e7a383cb313953e4c2365107dc19a7", - "eip155:80094/erc20:0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590" + "eip155:80094/erc20:0x2f6f07cdcf3588944bf4c42ac74ff24bf56e7590", + "eip155:59144/erc20:0xe5d7c2a44ffddf6b295a15c148167daaaf5cf34f", + "eip155:5000/erc20:0xdeaddeaddeaddeaddeaddeaddeaddeaddead1111" ], "eip155:42161/erc20:0xea986d33ef8a20a96120ecc44dbdd49830192043": [ "eip155:56/erc20:0x3028b4395f98777123c7da327010c40f3c7cc4ef", @@ -7648,7 +7677,8 @@ "eip155:8453/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364", "eip155:56/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364", "eip155:42161/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364", - "eip155:1/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364" + "eip155:1/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364", + "eip155:5000/erc20:0xc96de26018a54d51c097160568752c4e3bd6c364" ], "eip155:1/erc20:0xcafe001067cdef266afb7eb5a286dcfd277f3de5": [ "eip155:56/erc20:0xcafe001067cdef266afb7eb5a286dcfd277f3de5", @@ -8278,7 +8308,8 @@ "eip155:143/erc20:0xc99f5c922dae05b6e2ff83463ce705ef7c91f077", "eip155:57073/erc20:0xc99f5c922dae05b6e2ff83463ce705ef7c91f077", "eip155:80094/erc20:0xcc0966d8418d412c599a6421b760a847eb169a8c", - "eip155:59144/erc20:0xcc0966d8418d412c599a6421b760a847eb169a8c" + "eip155:59144/erc20:0xcc0966d8418d412c599a6421b760a847eb169a8c", + "eip155:5000/erc20:0x1d40bafc49c37cda49f2a5427e2fb95e1e3fcf20" ], "eip155:42161/erc20:0x462cd9e0247b2e63831c3189ae738e5e9a5a4b64": [ "eip155:43114/erc20:0x9ceed3a7f753608372eeab300486cc7c2f38ac68", @@ -8320,7 +8351,10 @@ "eip155:57073/erc20:0x0200c29006150606b650577bbe7b6248f58470c1", "eip155:4326/erc20:0xb8ce59fc3717ada4c02eadf9682a9e934f625ebb", "eip155:57073/erc20:0x1217bfe6c773eec6cc4a38b5dc45b92292b6e189", - "eip155:80094/erc20:0x779ded0c9e1022225f8e0630b35a9b54be713736" + "eip155:80094/erc20:0x779ded0c9e1022225f8e0630b35a9b54be713736", + "eip155:5000/erc20:0x779ded0c9e1022225f8e0630b35a9b54be713736", + "eip155:59144/erc20:0xa219439258ca9da29e9cc4ce5596924745e12b93", + "eip155:5000/erc20:0x201eba5cc46d216ce6dc03f6a759e8e766e956ae" ], "eip155:1/erc20:0xdb9783ca04bbd64fe2c6d7b9503a979b3de30729": [ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:XsAsZLF4MmsvS1sDxRMrUz7REjHfwbC9UAMXSRBqgEB", @@ -8503,7 +8537,8 @@ "eip155:8453/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3", "eip155:56/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3", "eip155:1/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3", - "eip155:42161/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3" + "eip155:42161/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3", + "eip155:5000/erc20:0xdefa1d21c5f1cbeac00eeb54b44c7d86467cc3a3" ], "eip155:42161/erc20:0x0534d7272a8e4f24d269b56605f2bf6cf3271891": [], "eip155:43114/erc20:0x3d8f74620857dd8ed6d0da02ceb13fd0ed8ba678": [ @@ -8710,7 +8745,8 @@ ], "eip155:1/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa": [ "eip155:999/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa", - "eip155:1/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa" + "eip155:1/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa", + "eip155:5000/erc20:0xe6829d9a7ee3040e1276fa75293bde931859e8fa" ], "eip155:56/erc20:0xe7f72bc0252ca7b16dbb72eeee1afcdb2429f2dd": [ "eip155:1/erc20:0xe7f72bc0252ca7b16dbb72eeee1afcdb2429f2dd", @@ -9512,7 +9548,8 @@ "eip155:747474/slip44:60", "eip155:4326/slip44:60", "eip155:57073/slip44:60", - "eip155:534352/slip44:60" + "eip155:534352/slip44:60", + "eip155:59144/slip44:60" ], "eip155:8453/erc20:0x22a2488fe295047ba13bd8cccdbc8361dbd8cf7c": [ "eip155:10/erc20:0x1db2466d9f5e10d7090e7152b68d62703a2245f0", @@ -9946,7 +9983,8 @@ "eip155:42161/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07": [ "eip155:43114/erc20:0x6e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd", "eip155:56/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07", - "eip155:42161/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07" + "eip155:42161/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07", + "eip155:5000/erc20:0x371c7ec6d8039ff7933a2aa28eb827ffe1f52f07" ], "eip155:42161/erc20:0x3de81ce90f5a27c5e6a5adb04b54aba488a6d14e": [ "eip155:43114/erc20:0x33c8036e99082b0c395374832fecf70c42c7f298", @@ -10001,7 +10039,8 @@ "eip155:42161/erc20:0x7f850b0ab1988dd17b69ac564c1e2857949e4dee": [], "eip155:42161/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696": [ "eip155:43114/erc20:0x59414b3089ce2af0010e7523dea7e2b35d776ec7", - "eip155:42161/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696" + "eip155:42161/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696", + "eip155:5000/erc20:0x7f4db37d7beb31f445307782bc3da0f18df13696" ], "eip155:42161/erc20:0x8888888888f004100c0353d657be6300587a6ccd": [ "eip155:43114/erc20:0x8888888888f004100c0353d657be6300587a6ccd", @@ -10033,7 +10072,8 @@ "eip155:42161/erc20:0x95146881b86b3ee99e63705ec87afe29fcc044d9": [ "eip155:43114/erc20:0xfd91ed44fc13f7faff758fe6d339d5790c4a85ec", "eip155:8453/erc20:0xfb0c734fc3008683c5eff45bcf8128836c4d97d0", - "eip155:42161/erc20:0x95146881b86b3ee99e63705ec87afe29fcc044d9" + "eip155:42161/erc20:0x95146881b86b3ee99e63705ec87afe29fcc044d9", + "eip155:5000/erc20:0xd0728f5b1f53a834f8dcd1b86f62ceb8726eb0a0" ], "eip155:42161/erc20:0x9cf7eebb75b751dc8fdd2268ae8c9b570b4c97b9": [ "eip155:43114/erc20:0xab236ed82a0184ab754534f3952b48408468c09b", @@ -11003,7 +11043,8 @@ "eip155:57073/erc20:0x3d63825b0d8669307366e6c8202f656b9e91d368", "eip155:534352/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf", "eip155:80094/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf", - "eip155:59144/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf" + "eip155:59144/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf", + "eip155:5000/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf" ], "eip155:8453/erc20:0x38029c62dfa30d9fd3cadf4c64e9b2ab21dbda17": [ "eip155:137/erc20:0x38029c62dfa30d9fd3cadf4c64e9b2ab21dbda17", @@ -12131,7 +12172,8 @@ "eip155:534352/erc20:0x65421ba909200b81640d98b979d07487c9781b66", "eip155:57073/erc20:0xc3eacf0612346366db554c991d7858716db09f58", "eip155:80094/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f", - "eip155:59144/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f" + "eip155:59144/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f", + "eip155:5000/erc20:0x4186bfc76e2e237523cbc30fd220fe055156b41f" ], "eip155:1/erc20:0x491b67a94ec0a59b81b784f4719d0387c4510c36": [ "eip155:1/erc20:0x491b67a94ec0a59b81b784f4719d0387c4510c36" @@ -12284,5 +12326,13 @@ "eip155:59144/erc20:0xd2671165570f41bbb3b0097893300b6eb6101e6c": [ "eip155:534352/erc20:0xa25b25548b4c98b0c7d3d27dca5d5ca743d68b7f", "eip155:59144/erc20:0xd2671165570f41bbb3b0097893300b6eb6101e6c" + ], + "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140": [ + "eip155:1/erc20:0x31b6100f5f4466e6daeb1edb2f2ce6e548cf8938", + "eip155:5000/erc20:0x26a6b0dcdcfb981362afa56d581e4a7dba3be140" + ], + "eip155:59144/erc20:0x8cf881799e3b5ab24271a9b66b6ca2b0e575b1ef": [ + "eip155:5000/erc20:0x74ccbe53f77b08632ce0cb91d3a545bf6b8e0979", + "eip155:59144/erc20:0x8cf881799e3b5ab24271a9b66b6ca2b0e575b1ef" ] } \ No newline at end of file diff --git a/public/generated/relatedAssetIndex.json.br b/public/generated/relatedAssetIndex.json.br index 94be3bbcbd7..992b5719cb8 100644 Binary files a/public/generated/relatedAssetIndex.json.br and b/public/generated/relatedAssetIndex.json.br differ diff --git a/public/generated/relatedAssetIndex.json.gz b/public/generated/relatedAssetIndex.json.gz index 38ab7b90b01..bcbc921f24d 100644 Binary files a/public/generated/relatedAssetIndex.json.gz and b/public/generated/relatedAssetIndex.json.gz differ diff --git a/scripts/generateAssetData/blacklist.json b/scripts/generateAssetData/blacklist.json index 29292cefdd4..2daae010a45 100644 --- a/scripts/generateAssetData/blacklist.json +++ b/scripts/generateAssetData/blacklist.json @@ -14,5 +14,6 @@ "eip155:1/erc20:0xde60adfddaabaaac3dafa57b26acc91cb63728c4", "eip155:1/erc20:0x1cdd2eab61112697626f7b4bb0e23da4febf7b7c", "eip155:137/erc20:0x0000000000000000000000000000000000001010", - "eip155:9745/erc20:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" + "eip155:9745/erc20:0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", + "eip155:5000/erc20:0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000" ] diff --git a/scripts/generateAssetData/coingecko.ts b/scripts/generateAssetData/coingecko.ts index 212d0acf73b..88f4a6f62f0 100644 --- a/scripts/generateAssetData/coingecko.ts +++ b/scripts/generateAssetData/coingecko.ts @@ -13,6 +13,7 @@ import { inkChainId, katanaChainId, lineaChainId, + mantleChainId, megaethChainId, monadChainId, nearChainId, @@ -40,6 +41,7 @@ import { ink, katana, linea, + mantle, megaeth, monad, near, @@ -165,6 +167,14 @@ export async function getAssets(chainId: ChainId): Promise { explorerAddressLink: plasma.explorerAddressLink, explorerTxLink: plasma.explorerTxLink, } + case mantleChainId: + return { + assetNamespace: ASSET_NAMESPACE.erc20, + category: adapters.chainIdToCoingeckoAssetPlatform(chainId), + explorer: mantle.explorer, + explorerAddressLink: mantle.explorerAddressLink, + explorerTxLink: mantle.explorerTxLink, + } case inkChainId: return { assetNamespace: ASSET_NAMESPACE.erc20, diff --git a/scripts/generateAssetData/generateAssetData.ts b/scripts/generateAssetData/generateAssetData.ts index cf7d4dc8f59..93adbc864ff 100644 --- a/scripts/generateAssetData/generateAssetData.ts +++ b/scripts/generateAssetData/generateAssetData.ts @@ -37,6 +37,7 @@ import * as hyperevm from './hyperevm' import * as ink from './ink' import * as katana from './katana' import * as linea from './linea' +import * as mantle from './mantle' import * as megaeth from './megaeth' import * as monad from './monad' import * as near from './near' @@ -75,6 +76,7 @@ const generateAssetData = async () => { const monadAssets = await monad.getAssets() const hyperevmAssets = await hyperevm.getAssets() const katanaAssets = await katana.getAssets() + const mantleAssets = await mantle.getAssets() const inkAssets = await ink.getAssets() const lineaAssets = await linea.getAssets() const megaethAssets = await megaeth.getAssets() @@ -112,6 +114,7 @@ const generateAssetData = async () => { ...monadAssets, ...hyperevmAssets, ...katanaAssets, + ...mantleAssets, ...inkAssets, ...lineaAssets, ...megaethAssets, diff --git a/scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts b/scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts index 1fb1ff7c82a..8553f2aed85 100644 --- a/scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts +++ b/scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts @@ -1,5 +1,21 @@ import type { AssetId, ChainId } from '@shapeshiftoss/caip' -import { adapters, FEE_ASSET_IDS, fromAssetId } from '@shapeshiftoss/caip' +import { + adapters, + arbitrumAssetId, + baseAssetId, + ethAssetId, + FEE_ASSET_IDS, + foxAssetId, + foxOnArbitrumOneAssetId, + fromAssetId, + inkAssetId, + katanaAssetId, + lineaAssetId, + megaethAssetId, + optimismAssetId, + scrollAssetId, + starknetAssetId, +} from '@shapeshiftoss/caip' import type { Asset } from '@shapeshiftoss/types' import { createThrottle, isToken } from '@shapeshiftoss/utils' import axios from 'axios' @@ -9,7 +25,6 @@ import { isNull } from 'lodash' import isUndefined from 'lodash/isUndefined' import { ASSET_DATA_PATH, RELATED_ASSET_INDEX_PATH } from '../constants' -import { getManualRelatedAssetIds } from './generateRelatedAssetIndex' import { coingeckoPlatformDetailsToMaybeAssetId, zerionImplementationToMaybeAssetId, @@ -35,6 +50,58 @@ const BRIDGED_CATEGORY_MAPPINGS: Record = { 'bridged-wsteth': 'eip155:1/erc20:0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0', } +const manualRelatedAssetIndex: Record = { + [ethAssetId]: [ + optimismAssetId, + arbitrumAssetId, + baseAssetId, + inkAssetId, + katanaAssetId, + lineaAssetId, + megaethAssetId, + scrollAssetId, + ], + [foxAssetId]: [foxOnArbitrumOneAssetId], + [starknetAssetId]: [ + 'eip155:1/erc20:0xca14007eff0db1f8135f4c25b34de49ab0d42766', + 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:HsRpHQn6VbyMs5b5j5SV6xQ2VvpvvCCzu19GjytVSCoz', + ], + // Native stablecoins on Linea + Mantle - CoinGecko doesn't tag these as bridged categories + 'eip155:1/erc20:0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48': [ + 'eip155:59144/erc20:0x176211869ca2b568f2a7d4ee941e073a821ee1ff', + 'eip155:5000/erc20:0x09bc4e0d864854c6afb6eb9a9cdf58ac190d0df9', + ], + 'eip155:1/erc20:0xdac17f958d2ee523a2206206994597c13d831ec7': [ + 'eip155:59144/erc20:0xa219439258ca9da29e9cc4ce5596924745e12b93', + 'eip155:5000/erc20:0x201eba5cc46d216ce6dc03f6a759e8e766e956ae', + ], + 'eip155:1/erc20:0x6b175474e89094c44da98b954eedeac495271d0f': [ + 'eip155:59144/erc20:0x4af15ec2a0bd43db75dd04e62faa3b8ef36b00d5', + ], +} + +const getManualRelatedAssetIds = ( + assetId: AssetId, +): { relatedAssetIds: AssetId[]; relatedAssetKey: AssetId } | undefined => { + if (manualRelatedAssetIndex[assetId]) { + return { + relatedAssetIds: manualRelatedAssetIndex[assetId], + relatedAssetKey: assetId, + } + } + + for (const [relatedAssetKey, relatedAssetIds] of Object.entries(manualRelatedAssetIndex)) { + if (relatedAssetIds.includes(assetId)) { + return { + relatedAssetIds, + relatedAssetKey, + } + } + } + + return undefined +} + const isSome = (option: T | null | undefined): option is T => !isUndefined(option) && !isNull(option) @@ -191,6 +258,19 @@ const processRelatedAssetIds = async ( const existingRelatedAssetKey = assetData[assetId].relatedAssetKey if (existingRelatedAssetKey) { + const group = relatedAssetIndex[existingRelatedAssetKey] + if (group && group.includes(assetId)) { + return + } + + if (group && !group.includes(assetId)) { + console.log( + `Adding ${assetId} to existing group ${existingRelatedAssetKey} (had key but wasn't in array)`, + ) + relatedAssetIndex[existingRelatedAssetKey] = Array.from(new Set([...group, assetId])) + return + } + return } @@ -287,13 +367,13 @@ const processRelatedAssetIds = async ( }) const hasRelatedAssets = cleanedRelatedAssetIds.length > 1 + const existingGroupForKey = relatedAssetIndex[relatedAssetKey] - if (hasRelatedAssets) { - const existingGroup = relatedAssetIndex[relatedAssetKey] - const isAlreadyGrouped = existingGroup && existingGroup.includes(assetId) + if (hasRelatedAssets || existingGroupForKey) { + const isAlreadyGrouped = existingGroupForKey && existingGroupForKey.includes(assetId) if (!isAlreadyGrouped) { - const currentGroup = relatedAssetIndex[relatedAssetKey] || [] + const currentGroup = existingGroupForKey || [] relatedAssetIndex[relatedAssetKey] = Array.from( new Set([...currentGroup, ...cleanedRelatedAssetIds]), ) diff --git a/scripts/generateAssetData/mantle/index.ts b/scripts/generateAssetData/mantle/index.ts new file mode 100644 index 00000000000..71e1c0f4c15 --- /dev/null +++ b/scripts/generateAssetData/mantle/index.ts @@ -0,0 +1,11 @@ +import { mantleChainId } from '@shapeshiftoss/caip' +import type { Asset } from '@shapeshiftoss/types' +import { mantle, unfreeze } from '@shapeshiftoss/utils' + +import * as coingecko from '../coingecko' + +export const getAssets = async (): Promise => { + const assets = await coingecko.getAssets(mantleChainId) + + return [...assets, unfreeze(mantle)] +} diff --git a/src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx b/src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx index a493249967b..70ff0bdd393 100644 --- a/src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx +++ b/src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx @@ -5,6 +5,7 @@ import { inkAssetId, katanaAssetId, lineaAssetId, + mantleAssetId, mayachainAssetId, megaethAssetId, monadAssetId, @@ -46,6 +47,7 @@ export const queryFn = async () => { if (enabledFlags.Monad) assetIds.push(monadAssetId) if (enabledFlags.Near) assetIds.push(nearAssetId) if (enabledFlags.Plasma) assetIds.push(plasmaAssetId) + if (enabledFlags.Mantle) assetIds.push(mantleAssetId) if (enabledFlags.MegaEth) assetIds.push(megaethAssetId) if (enabledFlags.Ink) assetIds.push(inkAssetId) if (enabledFlags.Scroll) assetIds.push(scrollAssetId) diff --git a/src/config.ts b/src/config.ts index 599c8915dac..a5415191c30 100644 --- a/src/config.ts +++ b/src/config.ts @@ -62,6 +62,7 @@ const validators = { VITE_MONAD_NODE_URL: url(), VITE_HYPEREVM_NODE_URL: url(), VITE_PLASMA_NODE_URL: url(), + VITE_MANTLE_NODE_URL: url(), VITE_INK_NODE_URL: url(), VITE_MEGAETH_NODE_URL: url(), VITE_BERACHAIN_NODE_URL: url(), @@ -108,6 +109,7 @@ const validators = { VITE_FEATURE_MONAD: bool({ default: false }), VITE_FEATURE_HYPEREVM: bool({ default: false }), VITE_FEATURE_PLASMA: bool({ default: false }), + VITE_FEATURE_MANTLE: bool({ default: false }), VITE_FEATURE_INK: bool({ default: false }), VITE_FEATURE_MEGAETH: bool({ default: false }), VITE_FEATURE_BERACHAIN: bool({ default: false }), diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 4cfcb22b9fb..1f2d5e1342b 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -13,6 +13,7 @@ export const SECOND_CLASS_CHAINS: readonly KnownChainIds[] = [ KnownChainIds.HyperEvmMainnet, KnownChainIds.PlasmaMainnet, KnownChainIds.KatanaMainnet, + KnownChainIds.MantleMainnet, KnownChainIds.InkMainnet, KnownChainIds.LineaMainnet, KnownChainIds.MegaEthMainnet, @@ -37,6 +38,7 @@ export const knownChainIds = Object.values(KnownChainIds).filter(chainId => { if (chainId === KnownChainIds.HyperEvmMainnet && !enabledFlags.HyperEvm) return false if (chainId === KnownChainIds.PlasmaMainnet && !enabledFlags.Plasma) return false if (chainId === KnownChainIds.KatanaMainnet && !enabledFlags.Katana) return false + if (chainId === KnownChainIds.MantleMainnet && !enabledFlags.Mantle) return false if (chainId === KnownChainIds.InkMainnet && !enabledFlags.Ink) return false if (chainId === KnownChainIds.LineaMainnet && !enabledFlags.Linea) return false if (chainId === KnownChainIds.MegaEthMainnet && !enabledFlags.MegaEth) return false diff --git a/src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx b/src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx index 655738078ab..bcb61af09bb 100644 --- a/src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx +++ b/src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx @@ -16,6 +16,7 @@ import { getHyperEvmTransactionStatus } from '@/lib/utils/hyperevm' import { getInkTransactionStatus } from '@/lib/utils/ink' import { getKatanaTransactionStatus } from '@/lib/utils/katana' import { getLineaTransactionStatus } from '@/lib/utils/linea' +import { getMantleTransactionStatus } from '@/lib/utils/mantle' import { getMegaEthTransactionStatus } from '@/lib/utils/megaeth' import { getMonadTransactionStatus } from '@/lib/utils/monad' import { getNearTransactionStatus } from '@/lib/utils/near' @@ -206,6 +207,12 @@ export const useSendActionSubscriber = () => { hyperEvmTxStatus === TxStatus.Confirmed || hyperEvmTxStatus === TxStatus.Failed break } + case KnownChainIds.MantleMainnet: { + const mantleTxStatus = await getMantleTransactionStatus(txHash) + isConfirmed = + mantleTxStatus === TxStatus.Confirmed || mantleTxStatus === TxStatus.Failed + break + } case KnownChainIds.MegaEthMainnet: { const megaEthTxStatus = await getMegaEthTransactionStatus(txHash) isConfirmed = diff --git a/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts b/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts index 44f2b7101d8..6bc6d0584a0 100644 --- a/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts +++ b/src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts @@ -16,6 +16,7 @@ import { katanaChainId, lineaChainId, ltcChainId, + mantleChainId, mayachainChainId, megaethChainId, monadChainId, @@ -52,6 +53,7 @@ import { supportsInk, supportsKatana, supportsLinea, + supportsMantle, supportsMayachain, supportsMegaEth, supportsMonad, @@ -158,6 +160,7 @@ export const walletSupportsChain = ({ const isHyperEvmEnabled = selectFeatureFlag(store.getState(), 'HyperEvm') const isInkEnabled = selectFeatureFlag(store.getState(), 'Ink') const isKatanaEnabled = selectFeatureFlag(store.getState(), 'Katana') + const isMantleEnabled = selectFeatureFlag(store.getState(), 'Mantle') const isLineaEnabled = selectFeatureFlag(store.getState(), 'Linea') const isMegaEthEnabled = selectFeatureFlag(store.getState(), 'MegaEth') const isBerachainEnabled = selectFeatureFlag(store.getState(), 'Berachain') @@ -202,6 +205,8 @@ export const walletSupportsChain = ({ return isMonadEnabled && supportsMonad(wallet) case hyperEvmChainId: return isHyperEvmEnabled && supportsHyperEvm(wallet) + case mantleChainId: + return isMantleEnabled && supportsMantle(wallet) case inkChainId: return isInkEnabled && supportsInk(wallet) case megaethChainId: diff --git a/src/lib/account/evm.ts b/src/lib/account/evm.ts index d501218e924..4a19498b1e6 100644 --- a/src/lib/account/evm.ts +++ b/src/lib/account/evm.ts @@ -12,6 +12,7 @@ import { inkChainId, katanaChainId, lineaChainId, + mantleChainId, megaethChainId, monadChainId, optimismChainId, @@ -34,6 +35,7 @@ import { supportsInk, supportsKatana, supportsLinea, + supportsMantle, supportsMegaEth, supportsMonad, supportsOptimism, @@ -133,6 +135,7 @@ export const deriveEvmAccountIdsAndMetadata: DeriveAccountIdsAndMetadata = async if (chainId === hyperEvmChainId && !supportsHyperEvm(wallet)) continue if (chainId === monadChainId && !supportsMonad(wallet)) continue if (chainId === plasmaChainId && !supportsPlasma(wallet)) continue + if (chainId === mantleChainId && !supportsMantle(wallet)) continue if (chainId === inkChainId && !supportsInk(wallet)) continue if (chainId === megaethChainId && !supportsMegaEth(wallet)) continue if (chainId === berachainChainId && !supportsBerachain(wallet)) continue diff --git a/src/lib/asset-service/service/AssetService.ts b/src/lib/asset-service/service/AssetService.ts index b26daf910b4..ada5ff009ed 100644 --- a/src/lib/asset-service/service/AssetService.ts +++ b/src/lib/asset-service/service/AssetService.ts @@ -10,6 +10,7 @@ import { inkChainId, katanaChainId, lineaChainId, + mantleChainId, mayachainChainId, megaethChainId, monadChainId, @@ -126,6 +127,7 @@ class _AssetService { if (!config.VITE_FEATURE_MONAD && asset.chainId === monadChainId) return false if (!config.VITE_FEATURE_HYPEREVM && asset.chainId === hyperEvmChainId) return false if (!config.VITE_FEATURE_KATANA && asset.chainId === katanaChainId) return false + if (!config.VITE_FEATURE_MANTLE && asset.chainId === mantleChainId) return false if (!config.VITE_FEATURE_INK && asset.chainId === inkChainId) return false if (!config.VITE_FEATURE_MEGAETH && asset.chainId === megaethChainId) return false if (!config.VITE_FEATURE_LINEA && asset.chainId === lineaChainId) return false diff --git a/src/lib/coingecko/utils.ts b/src/lib/coingecko/utils.ts index 7f850796c53..be14ef615e0 100644 --- a/src/lib/coingecko/utils.ts +++ b/src/lib/coingecko/utils.ts @@ -15,6 +15,7 @@ import { katanaChainId, lineaChainId, ltcChainId, + mantleChainId, mayachainChainId, optimismChainId, polygonChainId, @@ -218,6 +219,7 @@ export const getCoingeckoSupportedChainIds = () => { ...(getConfig().VITE_FEATURE_BERACHAIN ? [berachainChainId] : []), ...(getConfig().VITE_FEATURE_INK ? [inkChainId] : []), ...(getConfig().VITE_FEATURE_KATANA ? [katanaChainId] : []), + ...(getConfig().VITE_FEATURE_MANTLE ? [mantleChainId] : []), ...(getConfig().VITE_FEATURE_LINEA ? [lineaChainId] : []), ...(getConfig().VITE_FEATURE_TON ? [tonChainId] : []), ] diff --git a/src/lib/utils/mantle.ts b/src/lib/utils/mantle.ts new file mode 100644 index 00000000000..59c14272c37 --- /dev/null +++ b/src/lib/utils/mantle.ts @@ -0,0 +1,46 @@ +import { mantleChainId } from '@shapeshiftoss/caip' +import type { EvmChainAdapter } from '@shapeshiftoss/chain-adapters' +import { TxStatus } from '@shapeshiftoss/unchained-client' + +import { getConfig } from '@/config' + +export const isMantleChainAdapter = (adapter: unknown): adapter is EvmChainAdapter => { + if (!adapter) return false + + const maybeAdapter = adapter as EvmChainAdapter + if (typeof maybeAdapter.getChainId !== 'function') return false + + return maybeAdapter.getChainId() === mantleChainId +} + +export const getMantleTransactionStatus = async (txHash: string): Promise => { + const rpcUrl = getConfig().VITE_MANTLE_NODE_URL + + try { + const response = await fetch(rpcUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + jsonrpc: '2.0', + method: 'eth_getTransactionReceipt', + params: [txHash], + id: 1, + }), + }) + + if (!response.ok) return TxStatus.Unknown + + const data = await response.json() + const receipt = data?.result + + if (!receipt) return TxStatus.Pending + + if (receipt.status === '0x1') return TxStatus.Confirmed + if (receipt.status === '0x0') return TxStatus.Failed + + return TxStatus.Unknown + } catch (error) { + console.error('Error fetching Mantle transaction status:', error) + return TxStatus.Unknown + } +} diff --git a/src/pages/Markets/components/MarketsRow.tsx b/src/pages/Markets/components/MarketsRow.tsx index c17809ddd6b..fb3e8aafb6a 100644 --- a/src/pages/Markets/components/MarketsRow.tsx +++ b/src/pages/Markets/components/MarketsRow.tsx @@ -82,6 +82,7 @@ export const MarketsRow: React.FC = ({ const isSuiEnabled = useAppSelector(state => selectFeatureFlag(state, 'Sui')) const isPlasmaEnabled = useAppSelector(state => selectFeatureFlag(state, 'Plasma')) const isHyperEvmEnabled = useAppSelector(state => selectFeatureFlag(state, 'HyperEvm')) + const isMantleEnabled = useAppSelector(state => selectFeatureFlag(state, 'Mantle')) const isInkEnabled = useAppSelector(state => selectFeatureFlag(state, 'Ink')) const isMegaEthEnabled = useAppSelector(state => selectFeatureFlag(state, 'MegaEth')) const isBerachainEnabled = useAppSelector(state => selectFeatureFlag(state, 'Berachain')) @@ -97,6 +98,7 @@ export const MarketsRow: React.FC = ({ if (!isSuiEnabled && chainId === KnownChainIds.SuiMainnet) return false if (!isPlasmaEnabled && chainId === KnownChainIds.PlasmaMainnet) return false if (!isHyperEvmEnabled && chainId === KnownChainIds.HyperEvmMainnet) return false + if (!isMantleEnabled && chainId === KnownChainIds.MantleMainnet) return false if (!isInkEnabled && chainId === KnownChainIds.InkMainnet) return false if (!isMegaEthEnabled && chainId === KnownChainIds.MegaEthMainnet) return false if (!isLineaEnabled && chainId === KnownChainIds.LineaMainnet) return false @@ -110,6 +112,7 @@ export const MarketsRow: React.FC = ({ isSuiEnabled, isPlasmaEnabled, isHyperEvmEnabled, + isMantleEnabled, isInkEnabled, isMegaEthEnabled, isBerachainEnabled, diff --git a/src/plugins/activePlugins.ts b/src/plugins/activePlugins.ts index 141f5aef975..ba15fce8c4e 100644 --- a/src/plugins/activePlugins.ts +++ b/src/plugins/activePlugins.ts @@ -14,6 +14,7 @@ import ink from '@/plugins/ink' import katana from '@/plugins/katana' import linea from '@/plugins/linea' import litecoin from '@/plugins/litecoin' +import mantle from '@/plugins/mantle' import mayachain from '@/plugins/mayachain' import megaeth from '@/plugins/megaeth' import mobile from '@/plugins/mobile' @@ -49,6 +50,7 @@ export const activePlugins = [ katana, linea, litecoin, + mantle, mayachain, megaeth, mobile, diff --git a/src/plugins/mantle/index.tsx b/src/plugins/mantle/index.tsx new file mode 100644 index 00000000000..0b38e62ccb2 --- /dev/null +++ b/src/plugins/mantle/index.tsx @@ -0,0 +1,49 @@ +import { fromAssetId, mantleChainId } from '@shapeshiftoss/caip' +import { mantle } from '@shapeshiftoss/chain-adapters' +import { KnownChainIds } from '@shapeshiftoss/types' + +import { getConfig } from '@/config' +import { getAssetService } from '@/lib/asset-service' +import type { Plugins } from '@/plugins/types' + +// eslint-disable-next-line import/no-default-export +export default function register(): Plugins { + return [ + [ + 'mantleChainAdapter', + { + name: 'mantleChainAdapter', + featureFlag: ['Mantle'], + providers: { + chainAdapters: [ + [ + KnownChainIds.MantleMainnet, + () => { + const getKnownTokens = () => { + const assetService = getAssetService() + return assetService.assets + .filter(asset => { + const { chainId, assetNamespace } = fromAssetId(asset.assetId) + return chainId === mantleChainId && assetNamespace === 'erc20' + }) + .map(asset => ({ + assetId: asset.assetId, + contractAddress: fromAssetId(asset.assetId).assetReference, + symbol: asset.symbol, + name: asset.name, + precision: asset.precision, + })) + } + + return new mantle.ChainAdapter({ + rpcUrl: getConfig().VITE_MANTLE_NODE_URL, + getKnownTokens, + }) + }, + ], + ], + }, + }, + ], + ] +} diff --git a/src/state/slices/opportunitiesSlice/mappings.ts b/src/state/slices/opportunitiesSlice/mappings.ts index 4bc535f20f7..8678dd481fe 100644 --- a/src/state/slices/opportunitiesSlice/mappings.ts +++ b/src/state/slices/opportunitiesSlice/mappings.ts @@ -190,6 +190,7 @@ export const CHAIN_ID_TO_SUPPORTED_DEFI_OPPORTUNITIES: Record< [KnownChainIds.MonadMainnet]: [], [KnownChainIds.HyperEvmMainnet]: [], [KnownChainIds.PlasmaMainnet]: [], + [KnownChainIds.MantleMainnet]: [], [KnownChainIds.MegaEthMainnet]: [], [KnownChainIds.BerachainMainnet]: [], [KnownChainIds.InkMainnet]: [], diff --git a/src/state/slices/portfolioSlice/utils/index.ts b/src/state/slices/portfolioSlice/utils/index.ts index 515f6805730..8ecddde85b7 100644 --- a/src/state/slices/portfolioSlice/utils/index.ts +++ b/src/state/slices/portfolioSlice/utils/index.ts @@ -22,6 +22,7 @@ import { katanaChainId, lineaChainId, ltcChainId, + mantleChainId, mayachainChainId, megaethChainId, monadChainId, @@ -59,6 +60,7 @@ import { supportsInk, supportsKatana, supportsLinea, + supportsMantle, supportsMayachain, supportsMegaEth, supportsMonad, @@ -109,6 +111,7 @@ export const accountIdToLabel = (accountId: AccountId): string => { case arbitrumChainId: case baseChainId: case hyperEvmChainId: + case mantleChainId: case inkChainId: case megaethChainId: case berachainChainId: @@ -518,6 +521,8 @@ export const isAssetSupportedByWallet = (assetId: AssetId, wallet: HDWallet): bo return supportsMonad(wallet) case hyperEvmChainId: return supportsHyperEvm(wallet) + case mantleChainId: + return supportsMantle(wallet) case inkChainId: return supportsInk(wallet) case megaethChainId: diff --git a/src/state/slices/preferencesSlice/preferencesSlice.ts b/src/state/slices/preferencesSlice/preferencesSlice.ts index 87369cdcdf1..4830a16d74b 100644 --- a/src/state/slices/preferencesSlice/preferencesSlice.ts +++ b/src/state/slices/preferencesSlice/preferencesSlice.ts @@ -36,6 +36,7 @@ export type FeatureFlags = { Monad: boolean HyperEvm: boolean Plasma: boolean + Mantle: boolean Ink: boolean MegaEth: boolean Berachain: boolean @@ -189,6 +190,7 @@ const initialState: Preferences = { Monad: getConfig().VITE_FEATURE_MONAD, HyperEvm: getConfig().VITE_FEATURE_HYPEREVM, Plasma: getConfig().VITE_FEATURE_PLASMA, + Mantle: getConfig().VITE_FEATURE_MANTLE, Ink: getConfig().VITE_FEATURE_INK, MegaEth: getConfig().VITE_FEATURE_MEGAETH, Berachain: getConfig().VITE_FEATURE_BERACHAIN, diff --git a/src/test/mocks/store.ts b/src/test/mocks/store.ts index 899eb900a5a..9f2df0fce94 100644 --- a/src/test/mocks/store.ts +++ b/src/test/mocks/store.ts @@ -109,6 +109,7 @@ export const mockStore: ReduxState = { Monad: false, HyperEvm: false, Plasma: false, + Mantle: false, Ink: false, MegaEth: false, Berachain: false, diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index ac43a70d62b..73915f52521 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -62,6 +62,8 @@ interface ImportMetaEnv { readonly VITE_FEATURE_BUTTERSWAP: string readonly VITE_FEATURE_LINEA: string readonly VITE_FEATURE_SWAPPER_FIAT_RAMPS: string + readonly VITE_FEATURE_MANTLE: string + readonly VITE_MANTLE_NODE_URL: string readonly VITE_FEATURE_INK: string readonly VITE_INK_NODE_URL: string