Skip to content

feat: integrate Sonic (eip155:146) as second-class EVM chain#11923

Merged
gomesalexandre merged 43 commits intodevelopfrom
feat/integrate-sonic-relay
Feb 21, 2026
Merged

feat: integrate Sonic (eip155:146) as second-class EVM chain#11923
gomesalexandre merged 43 commits intodevelopfrom
feat/integrate-sonic-relay

Conversation

@NeOMakinG
Copy link
Collaborator

@NeOMakinG NeOMakinG commented Feb 17, 2026

Description

Integrates Sonic (eip155:146) as a second-class EVM chain with Relay swapper support. Follows the established pattern from MegaETH/Katana/Monad chains.

This is PR 3 of 17 in a sequential chain integration series. These PRs must be reviewed and merged in order, as each builds on the previous one (stacked branches).

PR merge order:

  1. Mantle (feat: integrate Mantle (chainId 5000) as second-class EVM chain #11905)
  2. Cronos (feat: integrate Cronos (chainId 25) as second-class EVM chain #11910)
  3. Sonic (feat: integrate Sonic (eip155:146) as second-class EVM chain #11923) ← this PR
  4. Unichain (feat: integrate Unichain (eip155:130) as second-class citizen via Relay #11924)
  5. BOB (feat: integrate BOB (eip155:60808) as second-class citizen #11925)
  6. Mode (feat: integrate Mode (eip155:34443) as second-class citizen #11926)
  7. Soneium (feat: integrate Soneium (chainId: 1868) via Relay #11930)
  8. Hemi (feat: integrate Hemi (chainId: 43111) via Relay #11931)
  9. World Chain (feat: integrate World Chain (480) as second-class Relay chain #11932)
  10. Blast (feat: integrate Blast (81457) as second-class Relay chain #11933)
  11. zkSync Era (feat: integrate zkSync Era (324) as second-class Relay chain #11934)
  12. Story (feat: integrate Story (1514) as second-class Relay chain #11936)
  13. Plume (feat: integrate Plume (98866) as second-class Relay chain #11937)
  14. Flow EVM (feat: integrate Flow EVM (747) as second-class Relay chain #11938)
  15. Celo (feat: integrate Celo (42220) as second-class Relay chain #11939)
  16. Ethereal (feat: integrate Ethereal (5064014) as second-class Relay chain #11940)

Note: Linea (#11922) is already in develop.

Changes include:

  • HDWallet: Added _supportsSonic across all 12 wallet packages (native, metamask, ledger, trezor, walletconnectv2 = true; coinbase, gridplus, keepkey, phantom, vultisig = false)
  • CAIP: sonicChainId, sonicAssetId, CHAIN_REFERENCE.SonicMainnet, ASSET_REFERENCE.Sonic
  • Types: KnownChainIds.SonicMainnet = 'eip155:146', EvmChainId union
  • Chain Adapters: SonicChainAdapter (EVM-based, chain ID 146, native token S, 18 decimals)
  • Contracts: viem client + ethers provider for Sonic
  • Utils: Base asset (sonicAsset), fee asset mapping, namespace mapping, chain short name, native fee reference
  • Swapper: Relay swapper support with sonic viem chain mapping
  • Zerion: sonic chain mapping
  • CoinGecko: Platform sonic-3, adapter loading, asset parsing, chain ID mapping
  • Web App: Feature flag VITE_FEATURE_SONIC, plugin, CSP headers, wallet support checks, portfolio utils, markets filter, popular assets, asset service filter, action center tx status
  • Asset Generation: Script + empty adapter.json for eip155:146

Key details:

  • Chain ID: 146 (eip155:146)
  • Native Token: S (Sonic), 18 decimals, SLIP44 coin type 60
  • RPC: https://rpc.soniclabs.com
  • Explorer: https://sonicscan.org
  • CoinGecko Platform: sonic-3
  • NOT ETH-native (relatedAssetKey: null)
  • Feature flagged behind VITE_FEATURE_SONIC (enabled in dev, disabled in prod)

Issue (if applicable)

Risk

Low risk — all changes are behind the VITE_FEATURE_SONIC feature flag (disabled in production). Follows the exact same pattern as existing second-class EVM chains (MegaETH, Katana, Monad, Plasma, HyperEVM).

No existing protocols, transaction types, wallets, or contract interactions are affected. Sonic is additive only.

Testing

Engineering

  1. Set VITE_FEATURE_SONIC=true in .env or .env.development
  2. Run yarn dev
  3. Verify Sonic appears in the chain list and markets
  4. Connect a wallet (MetaMask, native, Ledger, Trezor, or WalletConnect)
  5. Verify Sonic accounts are discovered
  6. Verify Sonic assets load from CoinGecko
  7. Verify Relay swapper quotes work for Sonic assets

Operations

  • 🏁 My feature is behind a flag and doesn't require operations testing (yet)

Screenshots (if applicable)

N/A - behind feature flag

Summary by CodeRabbit

Release Notes

  • New Features

    • Added support for Cronos and Sonic blockchains with full transaction and asset integration.
    • Enabled compatibility with multiple wallet providers (Ledger, MetaMask, Trezor, WalletConnect, Native, and others).
    • Introduced feature flags to selectively activate Cronos and Sonic networks.
  • Chores

    • Added environment variables for Cronos and Sonic node endpoints.
    • Updated developer documentation for chain integration workflows.

…Relay bridge support

Add support for Mantle (MNT native gas) including CAIP constants, chain adapter,
plugin, feature flag, Relay swapper mapping, HDWallet support flags, CSP headers,
asset generation script, and all required shared-file entries.

Part of #11902
…lay bridge support

Add support for Cronos (CRO native gas) including CAIP constants, chain adapter,
plugin, feature flag, Relay swapper mapping, HDWallet support flags, CSP headers,
asset generation script, and all required shared-file entries.

Part of #11902
Add src/lib/utils/mantle.ts with getMantleTransactionStatus using
eth_getTransactionReceipt via the Mantle RPC.

Add KnownChainIds.MantleMainnet case to useSendActionSubscriber.tsx
so Mantle transactions resolve in the action center.
Add src/lib/utils/cronos.ts with getCronosTransactionStatus using
eth_getTransactionReceipt via the Cronos RPC.

Add KnownChainIds.CronosMainnet case to useSendActionSubscriber.tsx
so Cronos transactions resolve in the action center.

Add CHAIN_REFERENCE.CronosMainnet case to relayTokenToAssetId.ts
to prevent runtime crash on Relay swaps involving Cronos.
Address PR review feedback:
- Add mantleChainId to getCoingeckoSupportedChainIds (feature-flagged)
- Add mantle to ZERION_CHAINS array and ZERION_CHAINS_MAP
- Across does not support Mantle, skipped
Address PR review feedback:
- Add cronosChainId to getCoingeckoSupportedChainIds (feature-flagged)
- Add cronos to ZERION_CHAINS array and ZERION_CHAINS_MAP
- Across does not support Cronos, skipped
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 17, 2026

Warning

Rate limit exceeded

@gomesalexandre has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 6 minutes and 25 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📝 Walkthrough

Walkthrough

This PR implements support for two new EVM-compatible second-class chains: Cronos (eip155:25) and Sonic (eip155:146). Changes span CAIP constants, chain adapters, environment variables, wallet capabilities, asset data generation, viem clients, plugins, and transaction status utilities, following established patterns for second-class EVM chain integration.

Changes

Cohort / File(s) Summary
Environment Configuration
.env, .env.development, src/config.ts, src/vite-env.d.ts
Added VITE_CRONOS_NODE_URL, VITE_SONIC_NODE_URL environment variables and corresponding feature flags (VITE_FEATURE_CRONOS, VITE_FEATURE_SONIC) with validators and defaults.
CAIP Constants & Adapters
packages/types/src/base.ts, packages/caip/src/constants.ts, packages/caip/src/adapters/coingecko/index.ts, packages/caip/src/adapters/coingecko/utils.ts, packages/caip/src/adapters/coingecko/utils.test.ts
Added CronosMainnet and SonicMainnet chain IDs, asset references, and CoingeckoAssetPlatform enum members; extended CoinGecko token parsing logic to handle both chains.
EVM Chain Adapters
packages/chain-adapters/src/evm/EvmBaseAdapter.ts, packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts, packages/chain-adapters/src/evm/cronos/CronosChainAdapter.ts, packages/chain-adapters/src/evm/cronos/index.ts, packages/chain-adapters/src/evm/sonic/SonicChainAdapter.ts, packages/chain-adapters/src/evm/sonic/index.ts, packages/chain-adapters/src/evm/index.ts
Created new Cronos and Sonic chain adapters extending SecondClassEvmAdapter; added wrapped-native contract mappings; updated base EVM adapter to recognize both chains in capability and switch-network logic.
Type System Extensions
packages/chain-adapters/src/types.ts
Extended ChainSpecificAccount, ChainSpecificFeeData, ChainSignTx, ChainSpecificBuildTxData, and ChainAdapterDisplayName to support CronosMainnet and SonicMainnet with EVM-appropriate type mappings.
Wallet Capability Flags
packages/hdwallet-core/src/ethereum.ts, packages/hdwallet-core/src/wallet.ts, packages/hdwallet-coinbase/src/coinbase.ts, packages/hdwallet-keepkey/src/keepkey.ts, packages/hdwallet-ledger/src/ledger.ts, packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts, packages/hdwallet-native/src/ethereum.ts, packages/hdwallet-phantom/src/phantom.ts, packages/hdwallet-gridplus/src/gridplus.ts, packages/hdwallet-trezor/src/trezor.ts, packages/hdwallet-vultisig/src/vultisig.ts, packages/hdwallet-walletconnectv2/src/walletconnectV2.ts
Added _supportsCronos and _supportsSonic boolean properties across all HDWallet implementations with chain-specific values (true for Ledger/MetaMask/Native/Trezor/WalletConnectV2, false or mixed for others); added supportsCronos and supportsSonic type guard functions.
Viem & Ethers Clients
packages/contracts/src/ethersProviderSingleton.ts, packages/contracts/src/viemClient.ts
Added RPC URL mappings for CronosMainnet and SonicMainnet; created viemCronosClient and viemSonicClient instances and extended viemClientByChainId, viemNetworkIdByChainId, and viemClientByNetworkId mappings.
Asset Data Generation
packages/utils/src/assetData/baseAssets.ts, packages/utils/src/assetData/getBaseAsset.ts, packages/utils/src/chainIdToFeeAssetId.ts, packages/utils/src/getAssetNamespaceFromChainId.ts, packages/utils/src/getChainShortName.ts, packages/utils/src/getNativeFeeAssetReference.ts, scripts/generateAssetData/coingecko.ts, scripts/generateAssetData/cronos/index.ts, scripts/generateAssetData/sonic/index.ts, scripts/generateAssetData/generateAssetData.ts
Added cronos and sonic asset objects with metadata; extended getBaseAsset, chainIdToFeeAssetId, getAssetNamespaceFromChainId, and getChainShortName to handle both chains; wired asset generation scripts to fetch and merge Cronos/Sonic-specific assets.
Related Asset Index
scripts/generateAssetData/generateRelatedAssetIndex/generateRelatedAssetIndex.ts, scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts
Added manual related-asset mappings for canonical stablecoins (USDC, USDT, DAI) between Ethereum and Cronos; added native FTM mapping between Ethereum and Sonic; introduced recovery logic for orphaned asset groups.
Relay Swapper
packages/swapper/src/swappers/RelaySwapper/constant.ts, packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts, packages/types/src/zerion.ts
Extended chainIdToRelayChainId mapping and relayTokenToAssetId logic to handle CronosMainnet and SonicMainnet; added cronos and sonic to Zerion chain support.
Feature Flags & State
src/state/slices/preferencesSlice/preferencesSlice.ts, src/state/slices/migrations/index.ts, src/test/mocks/store.ts, src/constants/chains.ts
Added Cronos and Sonic feature flags to FeatureFlags type and initial preferences state; added migration indices 295/296; added both chains to SECOND_CLASS_CHAINS with conditional gating; extended mock store state.
Plugin System
src/plugins/cronos/index.tsx, src/plugins/sonic/index.tsx, src/plugins/activePlugins.ts
Created new cronos and sonic plugin registration files defining chain adapter providers with RPC URL and getKnownTokens configuration; registered both plugins in activePlugins export.
CSP & Headers
headers/csps/chains/cronos.ts, headers/csps/chains/sonic.ts, headers/csps/index.ts
Added Content Security Policy configurations for Cronos and Sonic chains with connect-src directives pointing to respective RPC URLs.
Component & Hook Updates
src/context/PluginProvider/PluginProvider.tsx, src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts, src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx, src/lib/account/evm.ts, src/lib/asset-service/service/AssetService.ts, src/lib/coingecko/utils.ts, src/state/slices/portfolioSlice/utils/index.ts, src/pages/Markets/components/MarketsRow.tsx, src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx
Extended feature flag checks, wallet support logic, transaction status polling, account derivation gating, asset filtering, and chain visibility across UI components; added Cronos/Sonic transaction status resolution helpers.
Utility Functions
src/lib/utils/cronos.ts, src/lib/utils/sonic.ts
Added isCronosChainAdapter and getSonicTransactionStatus type guards and transaction status utilities using JSON-RPC eth_getTransactionReceipt; included error handling and status mapping (Confirmed/Failed/Pending/Unknown).
Documentation
.beads/pr-context.jsonl, .beads/ss-dx5.4.json, .beads/ss-dx5.7.json, .claude/contracts/second-class-evm-chain.md, .claude/skills/chain-integration/SKILL.md, .gitignore, AGENTS.md
Updated PR tracking JSONL entries, added task definitions for Cronos and Sonic integration, enhanced second-class EVM chain integration guide with platform ID validation and related asset mapping instructions, expanded chain-integration skill documentation, ignored Claude ephemeral plans, added agent onboarding and session completion workflow.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • #11910 — Introduces parallel Cronos support at the code level with identical file-level changes (CAIP, adapters, env, viem, wallet capabilities, plugins).
  • #11905 — Adds second-class EVM chain integration across the same core modules (EvmBaseAdapter, CSP/headers, SecondClassEvmAdapter, asset generation, plugin registration).
  • #11918 — Implements Berachain support using the same pattern as this PR across CAIP, chain-adapters, wallet capabilities, plugins, viem clients, and asset generation.

Suggested labels

high risk

Suggested reviewers

  • NeOMakinG

Poem

🐰 Two chains join the warren today,
Cronos and Sonic come out to play!
With adapters, plugins, and flags all set right,
The second-class EVM chains shine so bright! ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: integrate Sonic (eip155:146) as second-class EVM chain' directly and clearly summarizes the main objective of the PR: adding Sonic blockchain support as a second-class EVM chain with specific chain ID eip155:146.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/integrate-sonic-relay

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

NeOMakinG and others added 18 commits February 17, 2026 21:47
The Sonic adapter.json (eip155_146) was created but not imported/exported
from the generated index.ts, preventing CoinGecko mapping for Sonic tokens.
…tle-relay

# Conflicts:
#	.env
#	.env.development
#	packages/caip/src/adapters/coingecko/generated/index.ts
#	packages/caip/src/adapters/coingecko/index.ts
#	packages/caip/src/adapters/coingecko/utils.test.ts
#	packages/caip/src/adapters/coingecko/utils.ts
#	packages/caip/src/constants.ts
#	packages/chain-adapters/src/evm/EvmBaseAdapter.ts
#	packages/chain-adapters/src/types.ts
#	packages/contracts/src/ethersProviderSingleton.ts
#	packages/contracts/src/viemClient.ts
#	packages/hdwallet-coinbase/src/coinbase.ts
#	packages/hdwallet-core/src/ethereum.ts
#	packages/hdwallet-core/src/wallet.ts
#	packages/hdwallet-gridplus/src/gridplus.ts
#	packages/hdwallet-keepkey/src/keepkey.ts
#	packages/hdwallet-ledger/src/ledger.ts
#	packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts
#	packages/hdwallet-native/src/ethereum.ts
#	packages/hdwallet-phantom/src/phantom.ts
#	packages/hdwallet-trezor/src/trezor.ts
#	packages/hdwallet-vultisig/src/vultisig.ts
#	packages/hdwallet-walletconnectv2/src/walletconnectV2.ts
#	packages/swapper/src/swappers/RelaySwapper/constant.ts
#	packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts
#	packages/types/src/base.ts
#	packages/types/src/zerion.ts
#	packages/utils/src/assetData/baseAssets.ts
#	packages/utils/src/assetData/getBaseAsset.ts
#	packages/utils/src/chainIdToFeeAssetId.ts
#	packages/utils/src/getAssetNamespaceFromChainId.ts
#	packages/utils/src/getChainShortName.ts
#	packages/utils/src/getNativeFeeAssetReference.ts
#	scripts/generateAssetData/coingecko.ts
#	scripts/generateAssetData/generateAssetData.ts
#	src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx
#	src/config.ts
#	src/constants/chains.ts
#	src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
#	src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts
#	src/lib/account/evm.ts
#	src/lib/asset-service/service/AssetService.ts
#	src/lib/coingecko/utils.ts
#	src/pages/Markets/components/MarketsRow.tsx
#	src/state/slices/portfolioSlice/utils/index.ts
#	src/state/slices/preferencesSlice/preferencesSlice.ts
#	src/test/mocks/store.ts
#	src/vite-env.d.ts
Missing closing braces in 7 files where auto-resolve stripped
them at mantle/next-entry boundaries.

Also made generateChainRelatedAssetIndex self-contained (no
import from generateRelatedAssetIndex to avoid module-scope
ZERION_API_KEY check).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
77 Mantle assets added with relatedAssetKey cross-chain linking.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…nos-relay

# Conflicts:
#	.env
#	.env.development
#	headers/csps/index.ts
#	packages/caip/src/adapters/coingecko/generated/index.ts
#	packages/caip/src/adapters/coingecko/index.ts
#	packages/caip/src/adapters/coingecko/utils.test.ts
#	packages/caip/src/adapters/coingecko/utils.ts
#	packages/caip/src/constants.ts
#	packages/chain-adapters/src/evm/EvmBaseAdapter.ts
#	packages/chain-adapters/src/evm/index.ts
#	packages/chain-adapters/src/types.ts
#	packages/contracts/src/ethersProviderSingleton.ts
#	packages/contracts/src/viemClient.ts
#	packages/hdwallet-coinbase/src/coinbase.ts
#	packages/hdwallet-core/src/ethereum.ts
#	packages/hdwallet-core/src/wallet.ts
#	packages/hdwallet-gridplus/src/gridplus.ts
#	packages/hdwallet-keepkey/src/keepkey.ts
#	packages/hdwallet-ledger/src/ledger.ts
#	packages/hdwallet-metamask-multichain/src/shapeshift-multichain.ts
#	packages/hdwallet-native/src/ethereum.ts
#	packages/hdwallet-phantom/src/phantom.ts
#	packages/hdwallet-trezor/src/trezor.ts
#	packages/hdwallet-vultisig/src/vultisig.ts
#	packages/hdwallet-walletconnectv2/src/walletconnectV2.ts
#	packages/swapper/src/swappers/RelaySwapper/constant.ts
#	packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts
#	packages/types/src/base.ts
#	packages/types/src/zerion.ts
#	packages/utils/src/assetData/baseAssets.ts
#	packages/utils/src/assetData/getBaseAsset.ts
#	packages/utils/src/chainIdToFeeAssetId.ts
#	packages/utils/src/getAssetNamespaceFromChainId.ts
#	packages/utils/src/getChainShortName.ts
#	packages/utils/src/getNativeFeeAssetReference.ts
#	scripts/generateAssetData/coingecko.ts
#	scripts/generateAssetData/generateAssetData.ts
#	src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx
#	src/config.ts
#	src/constants/chains.ts
#	src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
#	src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts
#	src/lib/account/evm.ts
#	src/lib/asset-service/service/AssetService.ts
#	src/lib/coingecko/utils.ts
#	src/pages/Markets/components/MarketsRow.tsx
#	src/state/slices/opportunitiesSlice/mappings.ts
#	src/state/slices/portfolioSlice/utils/index.ts
#	src/state/slices/preferencesSlice/preferencesSlice.ts
#	src/test/mocks/store.ts
#	src/vite-env.d.ts
…-relay

# Conflicts:
#	src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ic-relay

# Conflicts:
#	.env.development
#	packages/caip/src/adapters/coingecko/generated/index.ts
#	packages/caip/src/adapters/coingecko/index.ts
#	packages/caip/src/adapters/coingecko/utils.test.ts
#	packages/caip/src/adapters/coingecko/utils.ts
#	packages/caip/src/constants.ts
#	packages/chain-adapters/src/evm/EvmBaseAdapter.ts
#	packages/chain-adapters/src/evm/index.ts
#	packages/chain-adapters/src/types.ts
#	packages/contracts/src/ethersProviderSingleton.ts
#	packages/contracts/src/viemClient.ts
#	packages/swapper/src/swappers/RelaySwapper/constant.ts
#	packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts
#	packages/types/src/base.ts
#	packages/types/src/zerion.ts
#	packages/utils/src/assetData/baseAssets.ts
#	packages/utils/src/assetData/getBaseAsset.ts
#	packages/utils/src/chainIdToFeeAssetId.ts
#	packages/utils/src/getAssetNamespaceFromChainId.ts
#	packages/utils/src/getChainShortName.ts
#	packages/utils/src/getNativeFeeAssetReference.ts
#	scripts/generateAssetData/coingecko.ts
#	src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx
#	src/config.ts
#	src/constants/chains.ts
#	src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
#	src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts
#	src/lib/account/evm.ts
#	src/lib/asset-service/service/AssetService.ts
#	src/lib/coingecko/utils.ts
#	src/pages/Markets/components/MarketsRow.tsx
#	src/state/slices/portfolioSlice/utils/index.ts
#	src/state/slices/preferencesSlice/preferencesSlice.ts
#	src/test/mocks/store.ts
…relay

# Conflicts:
#	packages/caip/src/adapters/coingecko/generated/index.ts
#	packages/caip/src/adapters/coingecko/index.ts
#	packages/caip/src/adapters/coingecko/utils.test.ts
#	packages/caip/src/constants.ts
#	packages/swapper/src/swappers/RelaySwapper/constant.ts
#	packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts
#	packages/types/src/zerion.ts
#	src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx
#	src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts
#	src/pages/Markets/components/MarketsRow.tsx
#	src/state/slices/portfolioSlice/utils/index.ts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ract

- Replace Berachain-only WBERA burn detection with generalized
  WRAPPED_NATIVE_CONTRACT_BY_CHAIN_ID mapping in SecondClassEvmAdapter
- Add WMNT address for Mantle cross-chain swap native receives
- Fix Linea networkIcon URL (CoinGecko 403 -> relay.link CDN)
- Update second-class-evm-chain contract with wrapped native,
  icon validation, and append-only convention sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gomesalexandre and others added 6 commits February 20, 2026 20:34
Emulates squash merge of #11910 into develop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ic-relay

# Conflicts:
#	packages/caip/src/adapters/coingecko/index.ts
#	packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts
#	public/generated/asset-manifest.json
#	public/generated/asset-manifest.json.br
#	public/generated/asset-manifest.json.gz
#	public/generated/generatedAssetData.json.br
#	public/generated/generatedAssetData.json.gz
#	public/generated/relatedAssetIndex.json
#	public/generated/relatedAssetIndex.json.br
#	public/generated/relatedAssetIndex.json.gz
#	scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts
#	src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@gomesalexandre gomesalexandre marked this pull request as ready for review February 20, 2026 20:05
@gomesalexandre gomesalexandre requested a review from a team as a code owner February 20, 2026 20:05
CoingeckoAssetPlatform.Sonic was 'sonic-3' (the coin ID) instead of
'sonic' (the platform ID), resulting in zero ERC20 tokens discovered.
Also fix dead icon URL (38051 -> 38108). Update contract with platform
ID verification step.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
gomesalexandre and others added 2 commits February 21, 2026 10:58
- resolve merge conflicts (keep both cronos + sonic entries)
- add FTM ERC20 → Sonic S native mapping in related asset index
- add Sonic native USDC + bridged USDT to manual stablecoin mappings
- add state migration 296 for sonic
- regenerate chain data with updated mappings

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ic-relay

# Conflicts:
#	.claude/contracts/second-class-evm-chain.md
#	packages/caip/src/adapters/coingecko/generated/index.ts
#	packages/caip/src/adapters/coingecko/utils.test.ts
#	packages/caip/src/constants.ts
#	packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts
#	packages/swapper/src/swappers/RelaySwapper/constant.ts
#	packages/swapper/src/swappers/RelaySwapper/utils/relayTokenToAssetId.ts
#	packages/types/src/zerion.ts
#	public/generated/asset-manifest.json
#	public/generated/asset-manifest.json.br
#	public/generated/asset-manifest.json.gz
#	public/generated/generatedAssetData.json
#	public/generated/generatedAssetData.json.br
#	public/generated/generatedAssetData.json.gz
#	public/generated/relatedAssetIndex.json
#	public/generated/relatedAssetIndex.json.br
#	public/generated/relatedAssetIndex.json.gz
#	scripts/generateAssetData/generateRelatedAssetIndex/generateChainRelatedAssetIndex.ts
#	src/components/TradeAssetSearch/hooks/useGetPopularAssetsQuery.tsx
#	src/config.ts
#	src/hooks/useWalletSupportsChain/useWalletSupportsChain.ts
#	src/pages/Markets/components/MarketsRow.tsx
#	src/state/migrations/index.ts
#	src/state/slices/portfolioSlice/utils/index.ts
Copy link
Contributor

@gomesalexandre gomesalexandre left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Already tested Sonic chain integration in previous sessions (native S balance, ERC-20 tokens, Relay swaps). Will retest Sonic + Unichain + BOB + Mode together in the Soneium PR.

CI green, no review comments. All integration points verified against the second-class EVM contract.

@gomesalexandre gomesalexandre merged commit ab9dc06 into develop Feb 21, 2026
6 checks passed
@gomesalexandre gomesalexandre deleted the feat/integrate-sonic-relay branch February 21, 2026 10:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants