From e9bcb0b89a6d85493e01892742ecb99b2f6fbfb3 Mon Sep 17 00:00:00 2001 From: perfogic Date: Mon, 17 Feb 2025 17:50:41 +0700 Subject: [PATCH 1/6] hot_fix: fix flow from orai to sol --- src/helper/constants.ts | 5 +- src/initCommon.ts | 55 ++++++++- .../Balance/TransferConvertToken/index.tsx | 6 + src/pages/Balance/index.tsx | 111 +++++++++++++++--- 4 files changed, 158 insertions(+), 19 deletions(-) diff --git a/src/helper/constants.ts b/src/helper/constants.ts index 0ef0aa5e0..33dfb4858 100644 --- a/src/helper/constants.ts +++ b/src/helper/constants.ts @@ -1,4 +1,3 @@ -import { defaultOraiToken } from '@oraichain/orai-token-inspector'; import { ChainIdEnum } from '@oraichain/oraidex-common'; export const leapSnapId = 'npm:@leapwallet/metamask-cosmos-snap'; @@ -24,3 +23,7 @@ export const RELAYER_DECIMAL = 6; export const DAY_IN_MILIS = 86400000; export const DEFAULT_TOKEN_ICON_URL = 'https://raw.githubusercontent.com/cosmos/chain-registry/master/oraichain/images/orai-token.png'; + +export const SOLANA_POOLS_MIDDLEWARE = { + ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v']: '' +}; diff --git a/src/initCommon.ts b/src/initCommon.ts index 276328955..79621fb7c 100644 --- a/src/initCommon.ts +++ b/src/initCommon.ts @@ -15,14 +15,61 @@ while (!oraidexCommonOg) { } export const oraidexCommon = oraidexCommonOg; +export const usdcSolToken = { + name: 'USDC', + org: 'sol', + denom: 's20_usdc', + contractAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', + coinGeckoId: 'usd-coin', + decimals: 6, + description: 'USD Coin on Solana', + rpc: 'https://swr.xnftdata.com/rpc-proxy/', + chainId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', + cosmosBased: false, + gasPriceStep: { + low: 1, + average: 1.25, + high: 1.5 + }, + coinType: 501, + feeCurrencies: [ + { + coinDenom: 'SOL', + coinMinimalDenom: 'sol', + coinDecimals: 9, + coinGeckoId: 'solana', + coinImageUrl: 'https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756', + gasPriceStep: { + low: 1, + average: 1.25, + high: 1.5 + } + } + ], + icon: 'https://statics.solscan.io/cdn/imgs/s60?ref=68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f736f6c616e612d6c6162732f746f6b656e2d6c6973742f6d61696e2f6173736574732f6d61696e6e65742f45506a465764643541756671535371654d32714e31787a7962617043384734774547476b5a777954447431762f6c6f676f2e706e67', + iconLight: + 'https://statics.solscan.io/cdn/imgs/s60?ref=68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f736f6c616e612d6c6162732f746f6b656e2d6c6973742f6d61696e2f6173736574732f6d61696e6e65742f45506a465764643541756671535371654d32714e31787a7962617043384734774547476b5a777954447431762f6c6f676f2e706e67', + bridgeTo: ['Oraichain'] +}; + export const initializeOraidexCommon = async ( dispatch: Dispatch, allOraichainTokens: TokenItemType[], addedTokens: TokenItemType[] ) => { - const oraichainTokens = oraidexCommonOg.oraichainTokens; + let oraichainTokens = oraidexCommonOg.oraichainTokens; const otherChainTokens = oraidexCommonOg.otherChainTokens; - + // Start Dev + otherChainTokens.push(usdcSolToken as any); + let usdcToken = oraichainTokens.find((token) => token.name === 'USDC'); + usdcToken.bridgeTo.push('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'); + oraichainTokens = oraichainTokens.map((token) => { + if (token.name !== 'USDC') { + return token; + } + return usdcToken; + }); + // End Dev const allVerifiedOraichainTokens = allOraichainTokens.filter((token) => token.isVerified); if (arraysAreDifferent(oraichainTokens, allVerifiedOraichainTokens)) { dispatch(updateAllOraichainTokens([...oraichainTokens, ...addedTokens])); @@ -63,6 +110,10 @@ export const { tonTokens } = oraidexCommon; +// Start Dev +otherChainTokens.push(usdcSolToken); +// End Dev + // FIXME: need remove when update chainInfo in oraichain-common sdk const IGNORE_CHAIN_IDS = new Set(['kawaii_6886-1', '0x1ae6']); const getFilteredChainInfos = (chainInfo) => chainInfo.filter((chain) => !IGNORE_CHAIN_IDS.has(chain.chainId)); diff --git a/src/pages/Balance/TransferConvertToken/index.tsx b/src/pages/Balance/TransferConvertToken/index.tsx index 85ef151b3..4b182af12 100644 --- a/src/pages/Balance/TransferConvertToken/index.tsx +++ b/src/pages/Balance/TransferConvertToken/index.tsx @@ -159,6 +159,11 @@ const TransferConvertToken: FC = ({ toToken, isMemeBridge }); + console.log({ + solFee, + isOraichainToSol, + isSolToOraichain + }); const { deductNativeAmount, checkBalanceBridgeByNetwork } = useTonBridgeHandler({ token, @@ -171,6 +176,7 @@ const TransferConvertToken: FC = ({ const isFromOraichainToBitcoin = token.chainId === 'Oraichain' && toNetworkChainId === ('bitcoin' as any); const isFromBitcoinToOraichain = token.chainId === ('bitcoin' as string) && toNetworkChainId === 'Oraichain'; let { relayerFee: relayerFeeTokenFee } = useRelayerFeeToken(token, to); + relayerFeeTokenFee = to ? relayerFeeTokenFee : 0; const depositFeeBtcV2Result = useDepositFeesBitcoinV2(true); const withdrawalFeeBtcV2Result = useGetWithdrawlFeesBitcoinV2({ enabled: isFromOraichainToBitcoin, diff --git a/src/pages/Balance/index.tsx b/src/pages/Balance/index.tsx index 22757dd79..872350cb5 100644 --- a/src/pages/Balance/index.tsx +++ b/src/pages/Balance/index.tsx @@ -8,6 +8,7 @@ import { NetworkChainId } from '@oraichain/common'; import { calculateTimeoutTimestamp, getTokenOnOraichain, + MIXED_ROUTER, ORAI, ORAI_SOL_CONTRACT_ADDRESS, parseTokenInfoRawDenom, @@ -49,7 +50,8 @@ import { CWAppBitcoinContractAddress, CWBitcoinFactoryDenom, DEFAULT_RELAYER_FEE, - RELAYER_DECIMAL + RELAYER_DECIMAL, + SOLANA_POOLS_MIDDLEWARE } from 'helper/constants'; import { useCoinGeckoPrices } from 'hooks/useCoingecko'; import useConfigReducer from 'hooks/useConfigReducer'; @@ -62,7 +64,8 @@ import { flattenTokens, oraichainTokens as oraichainTokensCommon, oraidexCommon, - otherChainTokens as otherChainTokenCommon + otherChainTokens as otherChainTokenCommon, + usdcSolToken } from 'initCommon'; import Content from 'layouts/Content'; import Metamask from 'libs/metamask'; @@ -112,6 +115,9 @@ import { FallbackEmptyData } from 'components/FallbackEmptyData'; import { getTokenInspectorInstance } from 'initTokenInspector'; import { onChainTokenToTokenItem } from 'reducer/onchainTokens'; import { addToOraichainTokens, addToOtherChainTokens } from 'reducer/token'; +import { parsePoolKey } from '@oraichain/oraiswap-v3'; +import { MsgExecuteContract } from 'cosmjs-types/cosmwasm/wasm/v1/tx'; +import { toUtf8 } from '@cosmjs/encoding'; interface BalanceProps {} export const isMaintainBridge = false; @@ -145,11 +151,15 @@ const Balance: React.FC = () => { const [loadingInspector, setLoadingInspector] = useState(false); const [toToken, setToToken] = useState(); const [toTokens, setToTokens] = useState(); - const [filterNetworkUI, setFilterNetworkUI] = useConfigReducer('filterNetwork'); const [hideOtherSmallAmount, setHideOtherSmallAmount] = useConfigReducer('hideOtherSmallAmount'); const [tokenPoolPrices] = useConfigReducer('tokenPoolPrices'); + console.log({ + oraichainTokens, + otherChainTokens, + toTokens + }); const { metamaskAddress, address: oraiAddress, @@ -212,6 +222,7 @@ const Balance: React.FC = () => { const { data: prices } = useCoinGeckoPrices(); useGetFeeConfig(); + useEffect(() => { (async () => { try { @@ -321,6 +332,10 @@ const Balance: React.FC = () => { } let toToken = toTokens?.[toNetworkChainId]; + console.log({ + toTokens, + toNetworkChainId + }); if (!toToken) { toToken = findDefaultToToken(token); } @@ -556,7 +571,6 @@ const Balance: React.FC = () => { if (!solAddress) { throw new Error('Please connect to Solana wallet'); } - const isMemeBridge = getStatusMemeBridge(fromToken); let receiverAddress = ORAICHAIN_RELAYER_ADDRESS_AGENTS; let solRelayer = SOL_RELAYER_ADDRESS_AGENTS; @@ -589,20 +603,85 @@ const Balance: React.FC = () => { throw new Error(message); } } - - const result = await window.client.sendTokens( - oraiAddress, - receiverAddress, - [ - { - amount: toAmount(transferAmount, fromToken.decimals).toString(), - denom: fromToken.denom + const tokenMintPubkey = toToken.contractAddress!; + const poolMiddleware = SOLANA_POOLS_MIDDLEWARE?.[tokenMintPubkey]; + const instructions = []; + if (poolMiddleware) { + const poolKey = parsePoolKey(poolMiddleware); + if (poolKey.token_y.includes(tokenMintPubkey)) { + instructions.push({ + typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', + value: MsgExecuteContract.fromPartial({ + contract: poolKey.token_x, + msg: toUtf8( + JSON.stringify({ + send: { + contract: MIXED_ROUTER, + amount: toAmount(transferAmount, fromToken.decimals).toString(), + msg: toBinary({ + execute_swap_operations: { + operations: [ + { + swap_v3: { + pool_key: poolKey, + x_to_y: true + } + } + ], + to: receiverAddress + } + }) + } + }) + ) + }) + }); + } else if (poolKey.token_x.includes(tokenMintPubkey)) { + instructions.push({ + typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', + value: MsgExecuteContract.fromPartial({ + contract: poolKey.token_y, + msg: toUtf8( + JSON.stringify({ + send: { + contract: MIXED_ROUTER, + amount: toAmount(transferAmount, fromToken.decimals).toString(), + msg: toBinary({ + execute_swap_operations: { + operations: [ + { + swap_v3: { + pool_key: poolKey, + x_to_y: false + } + } + ], + to: receiverAddress + } + }) + } + }) + ) + }) + }); + } + } else { + instructions.push({ + typeUrl: '/cosmos.bank.v1beta1.MsgSend', + value: { + fromAddress: oraiAddress, + toAddress: receiverAddress, + amount: [ + { + amount: toAmount(transferAmount, fromToken.decimals).toString(), + denom: fromToken.denom + } + ] } - ], - 'auto', - solAddress - ); + }); + } + const result = await window.client.signAndBroadcast(oraiAddress, instructions, 'auto', solAddress); if (result) { displayToast(TToastType.TX_SUCCESSFUL, { customLink: getTransactionUrl(fromToken.chainId, result.transactionHash) From d7450036608fa17f6b3ac026ebbc9db6ffda3ae8 Mon Sep 17 00:00:00 2001 From: Hau Nguyen Van Date: Mon, 17 Feb 2025 18:41:14 +0700 Subject: [PATCH 2/6] add flatten token --- src/initCommon.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/initCommon.ts b/src/initCommon.ts index 79621fb7c..242edeffd 100644 --- a/src/initCommon.ts +++ b/src/initCommon.ts @@ -61,6 +61,7 @@ export const initializeOraidexCommon = async ( const otherChainTokens = oraidexCommonOg.otherChainTokens; // Start Dev otherChainTokens.push(usdcSolToken as any); + flattenTokens.push(usdcSolToken as any); let usdcToken = oraichainTokens.find((token) => token.name === 'USDC'); usdcToken.bridgeTo.push('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'); oraichainTokens = oraichainTokens.map((token) => { From 83dc595d4bb563e6aa83db75ab1ef4fbb43298e2 Mon Sep 17 00:00:00 2001 From: perfogic Date: Tue, 18 Feb 2025 00:12:07 +0700 Subject: [PATCH 3/6] fix handle transfer orai to sol --- src/helper/constants.ts | 3 ++- src/pages/Balance/index.tsx | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/helper/constants.ts b/src/helper/constants.ts index 33dfb4858..54cfbf499 100644 --- a/src/helper/constants.ts +++ b/src/helper/constants.ts @@ -25,5 +25,6 @@ export const DEFAULT_TOKEN_ICON_URL = 'https://raw.githubusercontent.com/cosmos/chain-registry/master/oraichain/images/orai-token.png'; export const SOLANA_POOLS_MIDDLEWARE = { - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v']: '' + ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v']: + 'factory/orai1wuvhex9xqs3r539mvc6mtm7n20fcj3qr2m0y9khx6n5vtlngfzes3k0rq9/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v-orai15un8msx3n5zf9ahlxmfeqd2kwa5wm0nrpxer304m9nd5q6qq0g6sku5pdd-100000000-1' }; diff --git a/src/pages/Balance/index.tsx b/src/pages/Balance/index.tsx index 872350cb5..b3c0f2332 100644 --- a/src/pages/Balance/index.tsx +++ b/src/pages/Balance/index.tsx @@ -612,6 +612,7 @@ const Balance: React.FC = () => { instructions.push({ typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', value: MsgExecuteContract.fromPartial({ + sender: oraiAddress, contract: poolKey.token_x, msg: toUtf8( JSON.stringify({ @@ -640,6 +641,7 @@ const Balance: React.FC = () => { instructions.push({ typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', value: MsgExecuteContract.fromPartial({ + sender: oraiAddress, contract: poolKey.token_y, msg: toUtf8( JSON.stringify({ From 86c9f2d3c189bdec3e7c6b04febeea3966042a9c Mon Sep 17 00:00:00 2001 From: perfogic Date: Wed, 19 Feb 2025 11:56:06 +0700 Subject: [PATCH 4/6] feat: change from pool middleware to converter middleware --- src/helper/constants.ts | 31 +++++++++- src/pages/Balance/index.tsx | 117 +++++++++++++++--------------------- 2 files changed, 78 insertions(+), 70 deletions(-) diff --git a/src/helper/constants.ts b/src/helper/constants.ts index 54cfbf499..73af2138b 100644 --- a/src/helper/constants.ts +++ b/src/helper/constants.ts @@ -1,4 +1,5 @@ import { ChainIdEnum } from '@oraichain/oraidex-common'; +import { TokenInfo } from '@oraichain/oraidex-contracts-sdk/build/OraiswapConverter.types'; export const leapSnapId = 'npm:@leapwallet/metamask-cosmos-snap'; export const leapWalletType = 'leapSnap'; @@ -24,7 +25,31 @@ export const DAY_IN_MILIS = 86400000; export const DEFAULT_TOKEN_ICON_URL = 'https://raw.githubusercontent.com/cosmos/chain-registry/master/oraichain/images/orai-token.png'; -export const SOLANA_POOLS_MIDDLEWARE = { - ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v']: - 'factory/orai1wuvhex9xqs3r539mvc6mtm7n20fcj3qr2m0y9khx6n5vtlngfzes3k0rq9/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v-orai15un8msx3n5zf9ahlxmfeqd2kwa5wm0nrpxer304m9nd5q6qq0g6sku5pdd-100000000-1' +export type ConverterPairParams = { + from: TokenInfo; + to: TokenInfo; + isMintBurn: boolean; +}; + +export const CONVERTER_MIDDLEWARE: Partial> = { + ['EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v']: { + from: { + decimals: 6, + info: { + native_token: { + denom: + 'factory/orai1wuvhex9xqs3r539mvc6mtm7n20fcj3qr2m0y9khx6n5vtlngfzes3k0rq9/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' + } + } + }, + to: { + decimals: 6, + info: { + token: { + contract_addr: 'orai15un8msx3n5zf9ahlxmfeqd2kwa5wm0nrpxer304m9nd5q6qq0g6sku5pdd' + } + } + }, + isMintBurn: false + } }; diff --git a/src/pages/Balance/index.tsx b/src/pages/Balance/index.tsx index b3c0f2332..51f37255e 100644 --- a/src/pages/Balance/index.tsx +++ b/src/pages/Balance/index.tsx @@ -7,10 +7,12 @@ import { AppBitcoinClient } from '@oraichain/bitcoin-bridge-contracts-sdk'; import { NetworkChainId } from '@oraichain/common'; import { calculateTimeoutTimestamp, + CONVERTER_CONTRACT, getTokenOnOraichain, MIXED_ROUTER, ORAI, ORAI_SOL_CONTRACT_ADDRESS, + parseAssetInfo, parseTokenInfoRawDenom, solChainId, toAmount, @@ -51,7 +53,7 @@ import { CWBitcoinFactoryDenom, DEFAULT_RELAYER_FEE, RELAYER_DECIMAL, - SOLANA_POOLS_MIDDLEWARE + CONVERTER_MIDDLEWARE } from 'helper/constants'; import { useCoinGeckoPrices } from 'hooks/useCoingecko'; import useConfigReducer from 'hooks/useConfigReducer'; @@ -604,69 +606,44 @@ const Balance: React.FC = () => { } } const tokenMintPubkey = toToken.contractAddress!; - const poolMiddleware = SOLANA_POOLS_MIDDLEWARE?.[tokenMintPubkey]; + const converterMiddleware = CONVERTER_MIDDLEWARE?.[tokenMintPubkey]; const instructions = []; - if (poolMiddleware) { - const poolKey = parsePoolKey(poolMiddleware); - if (poolKey.token_y.includes(tokenMintPubkey)) { - instructions.push({ - typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', - value: MsgExecuteContract.fromPartial({ - sender: oraiAddress, - contract: poolKey.token_x, - msg: toUtf8( - JSON.stringify({ - send: { - contract: MIXED_ROUTER, - amount: toAmount(transferAmount, fromToken.decimals).toString(), - msg: toBinary({ - execute_swap_operations: { - operations: [ - { - swap_v3: { - pool_key: poolKey, - x_to_y: true - } - } - ], - to: receiverAddress - } - }) - } - }) - ) - }) - }); - } else if (poolKey.token_x.includes(tokenMintPubkey)) { - instructions.push({ - typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', - value: MsgExecuteContract.fromPartial({ - sender: oraiAddress, - contract: poolKey.token_y, - msg: toUtf8( - JSON.stringify({ - send: { - contract: MIXED_ROUTER, - amount: toAmount(transferAmount, fromToken.decimals).toString(), - msg: toBinary({ - execute_swap_operations: { - operations: [ - { - swap_v3: { - pool_key: poolKey, - x_to_y: false - } - } - ], - to: receiverAddress - } - }) - } - }) - ) - }) - }); - } + if (converterMiddleware) { + const parsedFrom = parseAssetInfo(converterMiddleware.from.info); + const parsedTo = parseAssetInfo(converterMiddleware.to.info); + instructions.push({ + typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', + value: MsgExecuteContract.fromPartial({ + sender: oraiAddress, + contract: parsedTo, + msg: toUtf8( + JSON.stringify({ + send: { + contract: CONVERTER_CONTRACT, + amount: toAmount(transferAmount, converterMiddleware.to.decimals).toString(), + msg: toBinary({ + convert_reverse: { + from: converterMiddleware.from.info + } + }) + } + }) + ) + }) + }); + instructions.push({ + typeUrl: '/cosmos.bank.v1beta1.MsgSend', + value: { + fromAddress: oraiAddress, + toAddress: receiverAddress, + amount: [ + { + amount: toAmount(transferAmount, converterMiddleware.from.decimals).toString(), + denom: parsedFrom + } + ] + } + }); } else { instructions.push({ typeUrl: '/cosmos.bank.v1beta1.MsgSend', @@ -683,10 +660,16 @@ const Balance: React.FC = () => { }); } - const result = await window.client.signAndBroadcast(oraiAddress, instructions, 'auto', solAddress); - if (result) { - displayToast(TToastType.TX_SUCCESSFUL, { - customLink: getTransactionUrl(fromToken.chainId, result.transactionHash) + try { + const result = await window.client.signAndBroadcast(oraiAddress, instructions, 'auto', solAddress); + if (result) { + displayToast(TToastType.TX_SUCCESSFUL, { + customLink: getTransactionUrl(fromToken.chainId, result.transactionHash) + }); + } + } catch (err) { + displayToast(TToastType.TX_FAILED, { + message: err.message }); } }; From e1a83710df3644661cb08727ebda4bb36925aead Mon Sep 17 00:00:00 2001 From: Hau Nguyen Van Date: Wed, 19 Feb 2025 14:49:18 +0700 Subject: [PATCH 5/6] refactor usdc bridge --- src/pages/Balance/index.tsx | 57 ++++++++++++++----------------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/src/pages/Balance/index.tsx b/src/pages/Balance/index.tsx index 51f37255e..f65014ac3 100644 --- a/src/pages/Balance/index.tsx +++ b/src/pages/Balance/index.tsx @@ -157,11 +157,6 @@ const Balance: React.FC = () => { const [hideOtherSmallAmount, setHideOtherSmallAmount] = useConfigReducer('hideOtherSmallAmount'); const [tokenPoolPrices] = useConfigReducer('tokenPoolPrices'); - console.log({ - oraichainTokens, - otherChainTokens, - toTokens - }); const { metamaskAddress, address: oraiAddress, @@ -334,10 +329,6 @@ const Balance: React.FC = () => { } let toToken = toTokens?.[toNetworkChainId]; - console.log({ - toTokens, - toNetworkChainId - }); if (!toToken) { toToken = findDefaultToToken(token); } @@ -608,6 +599,13 @@ const Balance: React.FC = () => { const tokenMintPubkey = toToken.contractAddress!; const converterMiddleware = CONVERTER_MIDDLEWARE?.[tokenMintPubkey]; const instructions = []; + let amount = [ + { + amount: toAmount(transferAmount, fromToken.decimals).toString(), + denom: fromToken.denom + } + ]; + if (converterMiddleware) { const parsedFrom = parseAssetInfo(converterMiddleware.from.info); const parsedTo = parseAssetInfo(converterMiddleware.to.info); @@ -631,35 +629,24 @@ const Balance: React.FC = () => { ) }) }); - instructions.push({ - typeUrl: '/cosmos.bank.v1beta1.MsgSend', - value: { - fromAddress: oraiAddress, - toAddress: receiverAddress, - amount: [ - { - amount: toAmount(transferAmount, converterMiddleware.from.decimals).toString(), - denom: parsedFrom - } - ] - } - }); - } else { - instructions.push({ - typeUrl: '/cosmos.bank.v1beta1.MsgSend', - value: { - fromAddress: oraiAddress, - toAddress: receiverAddress, - amount: [ - { - amount: toAmount(transferAmount, fromToken.decimals).toString(), - denom: fromToken.denom - } - ] + + amount = [ + { + amount: toAmount(transferAmount, converterMiddleware.from.decimals).toString(), + denom: parsedFrom } - }); + ]; } + instructions.push({ + typeUrl: '/cosmos.bank.v1beta1.MsgSend', + value: { + fromAddress: oraiAddress, + toAddress: receiverAddress, + amount + } + }); + try { const result = await window.client.signAndBroadcast(oraiAddress, instructions, 'auto', solAddress); if (result) { From b221a19d4c6ff66cb793023f534ae34e80ca3171 Mon Sep 17 00:00:00 2001 From: Hau Nguyen Van Date: Wed, 19 Feb 2025 14:57:39 +0700 Subject: [PATCH 6/6] refactor usdc bridge --- src/initCommon.ts | 54 ------------------------------------- src/pages/Balance/index.tsx | 3 +-- 2 files changed, 1 insertion(+), 56 deletions(-) diff --git a/src/initCommon.ts b/src/initCommon.ts index 242edeffd..9098f30c2 100644 --- a/src/initCommon.ts +++ b/src/initCommon.ts @@ -14,44 +14,6 @@ while (!oraidexCommonOg) { oraidexCommonOg = await OraidexCommon.load(); } export const oraidexCommon = oraidexCommonOg; - -export const usdcSolToken = { - name: 'USDC', - org: 'sol', - denom: 's20_usdc', - contractAddress: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', - coinGeckoId: 'usd-coin', - decimals: 6, - description: 'USD Coin on Solana', - rpc: 'https://swr.xnftdata.com/rpc-proxy/', - chainId: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp', - cosmosBased: false, - gasPriceStep: { - low: 1, - average: 1.25, - high: 1.5 - }, - coinType: 501, - feeCurrencies: [ - { - coinDenom: 'SOL', - coinMinimalDenom: 'sol', - coinDecimals: 9, - coinGeckoId: 'solana', - coinImageUrl: 'https://assets.coingecko.com/coins/images/4128/standard/solana.png?1718769756', - gasPriceStep: { - low: 1, - average: 1.25, - high: 1.5 - } - } - ], - icon: 'https://statics.solscan.io/cdn/imgs/s60?ref=68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f736f6c616e612d6c6162732f746f6b656e2d6c6973742f6d61696e2f6173736574732f6d61696e6e65742f45506a465764643541756671535371654d32714e31787a7962617043384734774547476b5a777954447431762f6c6f676f2e706e67', - iconLight: - 'https://statics.solscan.io/cdn/imgs/s60?ref=68747470733a2f2f7261772e67697468756275736572636f6e74656e742e636f6d2f736f6c616e612d6c6162732f746f6b656e2d6c6973742f6d61696e2f6173736574732f6d61696e6e65742f45506a465764643541756671535371654d32714e31787a7962617043384734774547476b5a777954447431762f6c6f676f2e706e67', - bridgeTo: ['Oraichain'] -}; - export const initializeOraidexCommon = async ( dispatch: Dispatch, allOraichainTokens: TokenItemType[], @@ -59,18 +21,6 @@ export const initializeOraidexCommon = async ( ) => { let oraichainTokens = oraidexCommonOg.oraichainTokens; const otherChainTokens = oraidexCommonOg.otherChainTokens; - // Start Dev - otherChainTokens.push(usdcSolToken as any); - flattenTokens.push(usdcSolToken as any); - let usdcToken = oraichainTokens.find((token) => token.name === 'USDC'); - usdcToken.bridgeTo.push('solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp'); - oraichainTokens = oraichainTokens.map((token) => { - if (token.name !== 'USDC') { - return token; - } - return usdcToken; - }); - // End Dev const allVerifiedOraichainTokens = allOraichainTokens.filter((token) => token.isVerified); if (arraysAreDifferent(oraichainTokens, allVerifiedOraichainTokens)) { dispatch(updateAllOraichainTokens([...oraichainTokens, ...addedTokens])); @@ -111,10 +61,6 @@ export const { tonTokens } = oraidexCommon; -// Start Dev -otherChainTokens.push(usdcSolToken); -// End Dev - // FIXME: need remove when update chainInfo in oraichain-common sdk const IGNORE_CHAIN_IDS = new Set(['kawaii_6886-1', '0x1ae6']); const getFilteredChainInfos = (chainInfo) => chainInfo.filter((chain) => !IGNORE_CHAIN_IDS.has(chain.chainId)); diff --git a/src/pages/Balance/index.tsx b/src/pages/Balance/index.tsx index f65014ac3..c73740f41 100644 --- a/src/pages/Balance/index.tsx +++ b/src/pages/Balance/index.tsx @@ -66,8 +66,7 @@ import { flattenTokens, oraichainTokens as oraichainTokensCommon, oraidexCommon, - otherChainTokens as otherChainTokenCommon, - usdcSolToken + otherChainTokens as otherChainTokenCommon } from 'initCommon'; import Content from 'layouts/Content'; import Metamask from 'libs/metamask';