Skip to content

Commit 641a231

Browse files
committed
chore: add custom logic for bridge tx check
1 parent 8193919 commit 641a231

File tree

1 file changed

+17
-18
lines changed

1 file changed

+17
-18
lines changed

advanced/wallets/react-wallet-v2/src/utils/MultibridgeUtil.ts

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data'
88

99
const BASE_URL = 'https://api.socket.tech/v2'
1010
const WHITELIST_BRIDGES = 'across'
11-
const AMOUNT_MULTIPLIER = 1.1
11+
const AMOUNT_MULTIPLIER = 1.05
1212

1313
export const supportedAssets: Record<string, Record<number, Hex>> = {
1414
USDC: {
@@ -246,7 +246,8 @@ async function getBridgeStatus(params: BridgeStatusParams): Promise<any> {
246246
export async function bridgeFunds(bridgingParams: BridgingParams, wallet: EIP155Lib | SmartAccountLib): Promise<void> {
247247
performance.mark('startGetQuote')
248248
console.log('Bridging funds', bridgingParams);
249-
bridgingParams.amount = Math.round(bridgingParams.amount*1.1)
249+
const originalAmount = bridgingParams.amount
250+
bridgingParams.amount = Math.round(originalAmount*AMOUNT_MULTIPLIER)
250251
const quote = await getQuote(bridgingParams)
251252
performance.mark('endGetQuote')
252253
console.log('Fetched quote', quote);
@@ -255,7 +256,6 @@ export async function bridgeFunds(bridgingParams: BridgingParams, wallet: EIP155
255256
if (!route) {
256257
throw new Error("No routes found");
257258
}
258-
259259
performance.mark('startGetRouteTransactionData')
260260
const apiReturnData = await getRouteTransactionData(route);
261261
performance.mark('endGetRouteTransactionData')
@@ -267,6 +267,7 @@ export async function bridgeFunds(bridgingParams: BridgingParams, wallet: EIP155
267267
const walletAddress = wallet.getAddress()
268268
performance.mark('endGetWalletAddress')
269269
console.log({approvalData});
270+
let currentNonce = await sourceChainProvider.getTransactionCount(walletAddress)
270271
// approvalData from apiReturnData is null for native tokens
271272
// Values are returned for ERC20 tokens but token allowance needs to be checked
272273
if (approvalData !== null) {
@@ -311,13 +312,15 @@ export async function bridgeFunds(bridgingParams: BridgingParams, wallet: EIP155
311312
data: approvalTransactionData.result?.data,
312313
gasPrice: gasPrice,
313314
gasLimit: gasEstimate,
315+
nonce: currentNonce,
314316
})
315317
const receipt = typeof hash === 'string' ? hash : hash?.hash
316318
performance.mark('endApprovalTransactionSend')
317319
console.log("Approval Transaction", {receipt});
320+
currentNonce++
318321
}
319322
}
320-
323+
321324
performance.mark('startBridgingTransactionGasEstimate')
322325
const gasPrice = await sourceChainProvider.getGasPrice();
323326
let gasEstimate = BigInt('0x029a6b')*BigInt(4)
@@ -344,6 +347,7 @@ export async function bridgeFunds(bridgingParams: BridgingParams, wallet: EIP155
344347
value: apiReturnData.result.value,
345348
gasPrice: gasPrice,
346349
gasLimit: gasEstimate,
350+
nonce: currentNonce
347351
});
348352
const receipt = typeof hash === 'string' ? hash : hash?.hash
349353
console.log("Bridging Transaction : ", {receipt});
@@ -352,20 +356,15 @@ export async function bridgeFunds(bridgingParams: BridgingParams, wallet: EIP155
352356
performance.mark('startBridgingTransactionCheck')
353357
let interations = 0
354358
while (interations < 20) {
355-
const status = await getBridgeStatus({
356-
transactionHash: receipt,
357-
fromChainId: bridgingParams.fromChainId,
358-
toChainId: bridgingParams.toChainId
359-
});
360-
console.log(
361-
`SOURCE TX : ${status.result.sourceTxStatus}\nDEST TX : ${status.result.destinationTxStatus}`
362-
);
363-
if (status.result.destinationTxStatus == "COMPLETED") {
364-
console.log("BRIDGE COMPLETED. DEST TX HASH :", status.result.destinationTransactionHash);
365-
performance.mark('endBridgingTransactionCheck')
366-
printMeasurements()
367-
return
368-
}
359+
const balance = await getErc20TokenBalance(bridgingParams.toAssetAddress as Hex,bridgingParams.toChainId, walletAddress as Hex, false)
360+
console.log('Checking destination address',{balance, originalAmount});
361+
362+
if (balance >= originalAmount) {
363+
console.log('Bridging completed');
364+
performance.mark('endBridgingTransactionCheck')
365+
printMeasurements()
366+
return
367+
}
369368
await new Promise(resolve => setTimeout(resolve, 1500));
370369
interations++
371370
}

0 commit comments

Comments
 (0)