Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ VITE_UNICHAIN_NODE_URL=https://mainnet.unichain.org
VITE_BOB_NODE_URL=https://rpc.gobob.xyz
VITE_MODE_NODE_URL=https://mainnet.mode.network
VITE_SONEIUM_NODE_URL=https://rpc.soneium.org/
VITE_SEI_NODE_URL=https://evm-rpc.sei-apis.com
VITE_THORCHAIN_NODE_URL=https://api.thorchain.shapeshift.com/lcd
VITE_MAYACHAIN_NODE_URL=https://api.mayachain.shapeshift.com/lcd
VITE_SOLANA_NODE_URL=https://api.solana.shapeshift.com/api/v1/jsonrpc
Expand Down Expand Up @@ -342,6 +343,7 @@ VITE_FEATURE_UNICHAIN=false
VITE_FEATURE_BOB=false
VITE_FEATURE_MODE=false
VITE_FEATURE_SONEIUM=false
VITE_FEATURE_SEI=false

# Yield.xyz Feature Flag
VITE_FEATURE_YIELD_XYZ=true
Expand All @@ -358,6 +360,10 @@ VITE_FEATURE_ACROSS_SWAP=false
VITE_ACROSS_API_URL=https://app.across.to/api
VITE_ACROSS_INTEGRATOR_ID=

# deBridge DLN
VITE_FEATURE_DEBRIDGE_SWAP=false
VITE_DEBRIDGE_API_URL=https://dln.debridge.finance/v1.0

# Userback feedback widget
VITE_FEATURE_USERBACK=true
VITE_USERBACK_TOKEN=A-3gHopRTd55QqxXGsJd0XLVVG3
Expand Down
3 changes: 3 additions & 0 deletions .env.development
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ VITE_LINEA_NODE_URL=https://rpc.linea.build
VITE_BERACHAIN_NODE_URL=https://rpc.berachain.com
VITE_SCROLL_NODE_URL=https://rpc.scroll.io/
VITE_SONEIUM_NODE_URL=https://rpc.soneium.org/
VITE_SEI_NODE_URL=https://evm-rpc.sei-apis.com
# Swap me back to 9R as-needed
# VITE_THORCHAIN_NODE_URL=https://thornode.ninerealms.com
VITE_THORCHAIN_NODE_URL=https://dev-api.thorchain.shapeshift.com/lcd
Expand Down Expand Up @@ -137,6 +138,8 @@ VITE_FEATURE_SONEIUM=true
VITE_FEATURE_TON=true
VITE_FEATURE_STONFI_SWAP=true
VITE_FEATURE_ACROSS_SWAP=true
VITE_FEATURE_SEI=true
VITE_FEATURE_DEBRIDGE_SWAP=true
VITE_FEATURE_YIELDS_PAGE=true
VITE_FEATURE_EARN_TAB=true
VITE_FEATURE_YIELD_MULTI_ACCOUNT=true
Expand Down
10 changes: 10 additions & 0 deletions headers/csps/chains/sei.ts
Original file line number Diff line number Diff line change
@@ -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_SEI_NODE_URL],
}
13 changes: 13 additions & 0 deletions headers/csps/debridge.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
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_DEBRIDGE_API_URL ? `${env.VITE_DEBRIDGE_API_URL}/` : 'https://dln.debridge.finance/',
'https://stats-api.dln.trade/',
],
}
4 changes: 4 additions & 0 deletions headers/csps/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import { csp as plasma } from './chains/plasma'
import { csp as plume } from './chains/plume'
import { csp as polygon } from './chains/polygon'
import { csp as scroll } from './chains/scroll'
import { csp as sei } from './chains/sei'
import { csp as solana } from './chains/solana'
import { csp as soneium } from './chains/soneium'
import { csp as sonic } from './chains/sonic'
Expand All @@ -52,6 +53,7 @@ import { csp as zcash } from './chains/zcash'
import { csp as zksyncera } from './chains/zksyncera'
import { csp as chatwoot } from './chatwoot'
import { csp as customTokenImport } from './customTokenImport'
import { csp as debridge } from './debridge'
import { csp as foxy } from './defi/foxy'
import { csp as idle } from './defi/idle'
import { csp as mtpelerin } from './defi/mtpelerin'
Expand Down Expand Up @@ -169,6 +171,7 @@ export const csps = [
story,
worldchain,
sonic,
sei,
trustwallet,
coincap,
coingecko,
Expand Down Expand Up @@ -199,6 +202,7 @@ export const csps = [
walletConnect,
walletMigration,
relay,
debridge,
railway,
discord,
yieldxyz,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"eip155:1329/slip44:60":"sei-network","eip155:1329/erc20:0xa193d87b0d5e23ef45379f90066891cbd6013226":"archer-hunter","eip155:1329/erc20:0x93919784c523f39cacaa98ee0a9d96c3f32b593e":"bedrock-btc","eip155:1329/erc20:0x443ac9f358226f5f48f2cd10bc0121e7a6176323":"bitbat-token","eip155:1329/erc20:0x71052bae71c25c78e37fd12e5ff1101a71d9018f":"chainlink","eip155:1329/erc20:0xbd82f3bfe1df0c84faec88a22ebc34c9a86595dc":"chips-2","eip155:1329/erc20:0x0a526e425809aea71eb279d24ae22dee6c92a4fe":"dragonswap","eip155:1329/erc20:0x60c230c38af6d86b0277a98a1caeaa345a7b061f":"fiamma-btc","eip155:1329/erc20:0x805679729df385815c57c24b20f4161bd34b655f":"fishwar","eip155:1329/erc20:0xff7f8f301f7a706e3cfd3d2275f5dc0b9ee8009b":"folks","eip155:1329/erc20:0x80eede496655fb9047dd39d9f418d5483ed600df":"frax-usd","eip155:1329/erc20:0xf9bdbf259ece5ae17e29bf92eb7abd7b8b465db9":"froggy-2","eip155:1329/erc20:0x58e11d8ed38a2061361e90916540c5c32281a380":"grand-gangsta-city","eip155:1329/erc20:0x3894085ef7ff0f0aedf52e2a2704928d1ec074f1":"ibc-bridged-usdc","eip155:1329/erc20:0xb75d0b03c06a926e488e2659df1a861f860bd3d1":"ibc-bridged-usdt","eip155:1329/erc20:0xcc1b8207853662c5cfabfb028806ec06ea1f6ac6":"kindred-labs","eip155:1329/erc20:0x89aec21572f6637ccbd0d66861aaac46dd775ed1":"kryptonite","eip155:1329/erc20:0x9bfa177621119e64cecbeabe184ab9993e2ef727":"merlin-s-seal-btc","eip155:1329/erc20:0x4a1ea452c598363188bccc83fb4f69dc14b54acd":"metaarena","eip155:1329/erc20:0x95597eb8d227a7c4b4f5e807a815c5178ee6dbe1":"milli-coin","eip155:1329/erc20:0x54cd901491aef397084453f4372b93c33260e2a6":"ondo-us-dollar-yield","eip155:1329/erc20:0x8ee050f6af49a6b7fd8557d0e75219d66f5f6094":"oxium","eip155:1329/erc20:0x481fe356df88169f5f38203dd7f3c67b7559fda5":"raiinmaker","eip155:1329/erc20:0x09d4214c03d01f49544c0448dbe3a27f768f2b34":"reservoir-rusd","eip155:1329/erc20:0x9faaea2cdd810b21594e54309dc847842ae301ce":"seiyaneth","eip155:1329/erc20:0x541fd749419ca806a8bc7da8ac23d346f2df8b77":"solv-btc","eip155:1329/erc20:0xcc0966d8418d412c599a6421b760a847eb169a8c":"solv-protocol-solvbtc-bbn","eip155:1329/erc20:0xc257361320f4514d91c05f461006ce6a0300e2d2":"splashing-staked-sei","eip155:1329/erc20:0x5bff88ca1442c2496f7e475e9e7786383bc070c0":"staked-frax-usd","eip155:1329/erc20:0x80137510979822322193fc997d400d5a6c747bf7":"stakestone-ether","eip155:1329/erc20:0x160345fc359604fc6e70e3c5facbde5f7a9342d8":"stargate-bridged-weth","eip155:1329/erc20:0xa8a3a5013104e093245164ea56588dbe10a3eb48":"super-seyian-eth","eip155:1329/erc20:0x059a6b0ba116c63191182a0956cf697d0d2213ec":"syusd","eip155:1329/erc20:0xedf7732991b3de8f46fb97dcd4c5cdb28e6ad859":"tea-rex","eip155:1329/erc20:0x78e26e8b953c7c78a58d69d8b9a91745c2bbb258":"ubtc","eip155:1329/erc20:0xe15fc38f6d8c56af07bbcbe3baf5708a2bf42392":"usd-coin","eip155:1329/erc20:0x9151434b16b9763660705744891fa906f660ecc5":"usdt0","eip155:1329/erc20:0x5b8034f6346a81a1387ea21cdd36c48f6e05eb5f":"vertex-protocol","eip155:1329/erc20:0xc53ac24320e3a54c7211e4993c8095078a0cb3cf":"wild-goat-coin-2","eip155:1329/erc20:0x0555e30da8f98308edb960aa94c0db47230d2b9c":"wrapped-bitcoin","eip155:1329/erc20:0x64445f0aecc51e94ad52d8ac56b7190e764e561a":"wrapped-frax","eip155:1329/erc20:0x4809010926aec940b550d34a46a52739f996d75d":"wrapped-savings-rusd","eip155:1329/erc20:0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7":"wrapped-sei","eip155:1329/erc20:0x51121bcae92e302f19d06c193c95e1f7b81a444b":"yaka","eip155:1329/erc20:0x81d3a238b02827f62b9f390f947d36d4a5bf89d2":"yei-finance","eip155:1329/erc20:0x83c82f0f959ad3eff528ee513b43808aa53f4b37":"zenrock"}
2 changes: 2 additions & 0 deletions packages/caip/src/adapters/coingecko/generated/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import unichain from "./eip155_130/adapter.json";
import soneium from "./eip155_1868/adapter.json";
import flowevm from "./eip155_747/adapter.json";
import celo from "./eip155_42220/adapter.json";
import sei from "./eip155_1329/adapter.json";
import cosmos from "./cosmos_cosmoshub-4/adapter.json";
import thorchain from "./cosmos_thorchain-1/adapter.json";
import mayachain from "./cosmos_mayachain-mainnet-v1/adapter.json";
Expand Down Expand Up @@ -82,6 +83,7 @@ export {
soneium,
flowevm,
celo,
sei,
cosmos,
thorchain,
mayachain,
Expand Down
7 changes: 7 additions & 0 deletions packages/caip/src/adapters/coingecko/index.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,12 @@ describe('adapters:coingecko', () => {
assetNamespace: 'token',
assetReference: '0x33068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb',
})
const usdcOnSei = toAssetId({
chainNamespace: CHAIN_NAMESPACE.Evm,
chainReference: CHAIN_REFERENCE.SeiMainnet,
assetNamespace: 'erc20',
assetReference: '0xe15fc38f6d8c56af07bbcbe3baf5708a2bf42392',
})
const usdcOnInk = toAssetId({
chainNamespace: CHAIN_NAMESPACE.Evm,
chainReference: CHAIN_REFERENCE.InkMainnet,
Expand Down Expand Up @@ -336,6 +342,7 @@ describe('adapters:coingecko', () => {
usdcOnInk,
usdcOnSonic,
usdcOnUnichain,
usdcOnSei,
usdcOnSolana,
usdcOnStarknet,
usdcOnSui,
Expand Down
6 changes: 6 additions & 0 deletions packages/caip/src/adapters/coingecko/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import {
plumeChainId,
polygonChainId,
scrollChainId,
seiChainId,
solanaChainId,
soneiumChainId,
sonicChainId,
Expand Down Expand Up @@ -90,6 +91,7 @@ export enum CoingeckoAssetPlatform {
Scroll = 'scroll',
Cronos = 'cronos',
Soneium = 'soneium',
Sei = 'sei-v2',
Solana = 'solana',
Starknet = 'starknet',
Tron = 'tron',
Expand Down Expand Up @@ -190,6 +192,8 @@ export const chainIdToCoingeckoAssetPlatform = (chainId: ChainId): string => {
return CoingeckoAssetPlatform.Cronos
case CHAIN_REFERENCE.SoneiumMainnet:
return CoingeckoAssetPlatform.Soneium
case CHAIN_REFERENCE.SeiMainnet:
return CoingeckoAssetPlatform.Sei
default:
throw new Error(
`chainNamespace ${chainNamespace}, chainReference ${chainReference} not supported.`,
Expand Down Expand Up @@ -337,6 +341,8 @@ export const coingeckoAssetPlatformToChainId = (
return cronosChainId
case CoingeckoAssetPlatform.Soneium:
return soneiumChainId
case CoingeckoAssetPlatform.Sei:
return seiChainId
case CoingeckoAssetPlatform.Cosmos:
return cosmosChainId
case CoingeckoAssetPlatform.Thorchain:
Expand Down
7 changes: 7 additions & 0 deletions packages/caip/src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ export const unichainAssetId: AssetId = 'eip155:130/slip44:60'
export const bobAssetId: AssetId = 'eip155:60808/slip44:60'
export const modeAssetId: AssetId = 'eip155:34443/slip44:60'
export const soneiumAssetId: AssetId = 'eip155:1868/slip44:60'
export const seiAssetId: AssetId = 'eip155:1329/slip44:60'
export const solAssetId: AssetId = 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/slip44:501'
export const wrappedSolAssetId: AssetId =
'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp/token:So11111111111111111111111111111111111111112'
Expand Down Expand Up @@ -119,6 +120,7 @@ export const unichainChainId: ChainId = 'eip155:130'
export const bobChainId: ChainId = 'eip155:60808'
export const modeChainId: ChainId = 'eip155:34443'
export const soneiumChainId: ChainId = 'eip155:1868'
export const seiChainId: ChainId = 'eip155:1329'

export const cosmosChainId: ChainId = 'cosmos:cosmoshub-4'
export const thorchainChainId: ChainId = 'cosmos:thorchain-1'
Expand Down Expand Up @@ -190,6 +192,7 @@ export const CHAIN_REFERENCE = {
BobMainnet: '60808', // https://docs.gobob.xyz
ModeMainnet: '34443', // https://docs.mode.network
SoneiumMainnet: '1868', // https://soneium.org
SeiMainnet: '1329',
SolanaMainnet: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', // https://namespaces.chainagnostic.org/solana/caip2
TronMainnet: '0x2b6653dc', // https://developers.tron.network/docs/networks
SuiMainnet: '35834a8a', // First 8 chars of SUI mainnet genesis hash
Expand Down Expand Up @@ -254,6 +257,7 @@ export const ASSET_REFERENCE = {
Bob: '60', // evm chain which uses ethereum derivation path as common practice
Mode: '60', // evm chain which uses ethereum derivation path as common practice
Soneium: '60', // evm chain which uses ethereum derivation path as common practice
Sei: '60', // evm chain which uses ethereum derivation path as common practice
Solana: '501',
Tron: '195',
Sui: '784',
Expand Down Expand Up @@ -302,6 +306,8 @@ export const VALID_CHAIN_IDS: ValidChainMap = Object.freeze({
CHAIN_REFERENCE.BobMainnet,
CHAIN_REFERENCE.ModeMainnet,
CHAIN_REFERENCE.SoneiumMainnet,
CHAIN_REFERENCE.SeiMainnet,
CHAIN_REFERENCE.CeloMainnet,
],
[CHAIN_NAMESPACE.CosmosSdk]: [
CHAIN_REFERENCE.CosmosHubMainnet,
Expand Down Expand Up @@ -372,6 +378,7 @@ export const FEE_ASSET_IDS = [
sonicAssetId,
unichainAssetId,
soneiumAssetId,
seiAssetId,
solAssetId,
tronAssetId,
suiAssetId,
Expand Down
9 changes: 9 additions & 0 deletions packages/chain-adapters/src/evm/EvmBaseAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import {
supportsPlume,
supportsPolygon,
supportsScroll,
supportsSei,
supportsSoneium,
supportsSonic,
supportsStory,
Expand Down Expand Up @@ -126,6 +127,7 @@ export const evmChainIds = [
KnownChainIds.BobMainnet,
KnownChainIds.ModeMainnet,
KnownChainIds.SoneiumMainnet,
KnownChainIds.SeiMainnet,
] as const

export type EvmChainAdapter = EvmBaseAdapter<EvmChainId>
Expand Down Expand Up @@ -268,6 +270,8 @@ export abstract class EvmBaseAdapter<T extends EvmChainId> implements IChainAdap
return supportsMode(wallet)
case Number(fromChainId(KnownChainIds.SoneiumMainnet).chainReference):
return supportsSoneium(wallet)
case Number(fromChainId(KnownChainIds.SeiMainnet).chainReference):
return supportsSei(wallet)
default:
return false
}
Expand Down Expand Up @@ -460,6 +464,11 @@ export abstract class EvmBaseAdapter<T extends EvmChainId> implements IChainAdap
symbol: 'ETH',
explorer: 'https://soneium.blockscout.com',
},
[KnownChainIds.SeiMainnet]: {
name: 'SEI',
symbol: 'SEI',
explorer: 'https://seitrace.com',
},
}[this.chainId]

try {
Expand Down
41 changes: 40 additions & 1 deletion packages/chain-adapters/src/evm/SecondClassEvmAdapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
hyperEvmChainId,
mantleChainId,
modeChainId,
seiChainId,
soneiumChainId,
sonicChainId,
storyChainId,
Expand Down Expand Up @@ -70,6 +71,7 @@ const WRAPPED_NATIVE_CONTRACT_BY_CHAIN_ID: Partial<Record<ChainId, string>> = {
[blastChainId]: '0x4300000000000000000000000000000000000004',
[zkSyncEraChainId]: '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',
[storyChainId]: '0x1514000000000000000000000000000000000000',
[seiChainId]: '0xE30feDd158A2e3b13e9badaeABaFc5516e95e8C7',
}
const BATCH_SIZE = 500

Expand Down Expand Up @@ -414,7 +416,8 @@ export abstract class SecondClassEvmAdapter<T extends EvmChainId> extends EvmBas
if (
this.chainId === hyperEvmChainId ||
this.chainId === blastChainId ||
this.chainId === zkSyncEraChainId
this.chainId === zkSyncEraChainId ||
this.chainId === seiChainId
) {
return []
}
Expand Down Expand Up @@ -472,6 +475,17 @@ export abstract class SecondClassEvmAdapter<T extends EvmChainId> extends EvmBas
}

const wrappedNativeContract = WRAPPED_NATIVE_CONTRACT_BY_CHAIN_ID[this.chainId]
console.log(
'[SecondClassEvmAdapter parseTx]',
JSON.stringify({
chainId: this.chainId,
hash,
pubkey,
wrappedNativeContract,
internalTxsCount: internalTxs.length,
logsCount: receipt.logs.length,
}),
)
if (wrappedNativeContract && internalTxs.length === 0) {
const wrappedNativeBurnLogs = parseEventLogs({
abi: erc20Abi,
Expand All @@ -482,6 +496,17 @@ export abstract class SecondClassEvmAdapter<T extends EvmChainId> extends EvmBas
isAddressEqual(getAddress(log.address), getAddress(wrappedNativeContract)) &&
isAddressEqual(log.args.to, zeroAddress),
)
console.log(
'[SecondClassEvmAdapter parseTx] wrappedNativeBurnLogs',
JSON.stringify({
wrappedNativeBurnLogs: wrappedNativeBurnLogs.map(l => ({
address: l.address,
from: l.args.from,
to: l.args.to,
value: l.args.value.toString(),
})),
}),
)

for (const log of wrappedNativeBurnLogs) {
internalTxs.push({
Expand All @@ -501,6 +526,16 @@ export abstract class SecondClassEvmAdapter<T extends EvmChainId> extends EvmBas
isAddressEqual(getAddress(log.address), getAddress(wrappedNativeContract)) &&
log.topics[0] === WITHDRAWAL_TOPIC,
)
console.log(
'[SecondClassEvmAdapter parseTx] withdrawalLogs',
JSON.stringify({
withdrawalLogs: withdrawalLogs.map(l => ({
address: l.address,
topics: l.topics,
data: l.data,
})),
}),
)

for (const log of withdrawalLogs) {
internalTxs.push({
Expand All @@ -511,6 +546,10 @@ export abstract class SecondClassEvmAdapter<T extends EvmChainId> extends EvmBas
}
}
}
console.log(
'[SecondClassEvmAdapter parseTx] final internalTxs',
JSON.stringify({ internalTxs, tokenTransferAddresses: receipt.logs.map(l => l.address) }),
)

const block = receipt.blockHash
? await viemClient.getBlock({ blockHash: receipt.blockHash }).catch(() => null)
Expand Down
1 change: 1 addition & 0 deletions packages/chain-adapters/src/evm/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@ export * as unichain from './unichain'
export * as bob from './bob'
export * as mode from './mode'
export * as soneium from './soneium'
export * as sei from './sei'
Loading
Loading