From 369f1940e8023f8beee5e1e9b7ccc436544bc6d3 Mon Sep 17 00:00:00 2001 From: Stephen <=> Date: Wed, 19 Nov 2025 14:12:27 +0100 Subject: [PATCH 1/3] trying to resolve error --- backend-all/.DS_Store | Bin 0 -> 6148 bytes backend-all/src/services/bridge.ts | 153 +++++++++++++++-------------- 2 files changed, 79 insertions(+), 74 deletions(-) create mode 100644 backend-all/.DS_Store diff --git a/backend-all/.DS_Store b/backend-all/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..70998d3b77ff930ed01ff760892d7bda2a456a38 GIT binary patch literal 6148 zcmeHKJ5B>J5S@V(E0H2Jh|(1`xxo@GCrCpF3L8PO%SMXQ`zEP#4H}LD$KcI}&x%zf zC=fz3lKsZ^%y{-mYkP=@XPbITG$En_O^`(y5SboaI&k9=kTu3NwbW5f8)^mu{lzKC zeM}FU^^!j4zod0@H=W;h?Mf0qetaJ9vu(SoS~T4PHbp+$t+!WC7yIq&Z`rTzKXN&F zIY;P_U?3O>27-ZL;71JL&K4<-45JSQf`MS*odG!?5}IJ?m<{#lK&K@DP@d5$(503T zpX69NW<#t%*j$0;%3flyxnn-LUFnz&&7Ihb5B8nkiWk=15kILpacLNRFc1v%8921z zMDG7f{4#?@e%~cV!9XzZ&luoQHLqs)D8F03e4gC33GD_=MC`IC5a_)}00wf7oa&;j bC(&V7I%Y$OBJ=7FjE8^{5?wIx3k { - // console.log(transaction.nonce.toString(), 'dkdkdkdkd') - // console.log(+transaction.nonce.toString(), '043489') - let existingTransaction = await transactionRepo.findOne({ - userAddress, - index: index, - bridgeInfo: { - id: bridgeAssist.id, - }, - }) - if (existingTransaction) { - if (existingTransaction.fulfilled) { - return - } - if (isSolChain(existingTransaction.toChain)) { - const isFulfilled = await this.processSolanaIsFulfilled( - _bridgeAssists, - chainId as ChainId, - transaction, - bridgeAssist - ) - existingTransaction.fulfilled = isFulfilled - await transactionRepo.save(existingTransaction) - return - } else { - const isFulfilled = await this.processEvmIsFulfilled( - _bridgeAssists, - providers, - transaction, - bridgeAssist - ) - existingTransaction.fulfilled = isFulfilled - await transactionRepo.save(existingTransaction) - return - } + for (let index = 0; index < transactions.length; index++) { + const transaction = transactions[index] + console.log(transaction, 'transaction') + let existingTransaction = await transactionRepo.findOne({ + userAddress, + index: index, + bridgeInfo: { + id: bridgeAssist.id, + }, + }) + if (existingTransaction) { + if (existingTransaction.fulfilled) { + return } - const toChainId = transaction.toChain.replace('evm.', '') as ChainId - let isFulfilled = false - if (isSolChain(toChainId)) { - isFulfilled = await this.processSolanaIsFulfilled( + if (isSolChain(existingTransaction.toChain)) { + const isFulfilled = await this.processSolanaIsFulfilled( _bridgeAssists, chainId as ChainId, transaction, bridgeAssist ) + existingTransaction.fulfilled = isFulfilled + await transactionRepo.save(existingTransaction) + return } else { - isFulfilled = await this.processEvmIsFulfilled( + const isFulfilled = await this.processEvmIsFulfilled( _bridgeAssists, providers, transaction, bridgeAssist ) + existingTransaction.fulfilled = isFulfilled + await transactionRepo.save(existingTransaction) + return } - - const txBlock = transaction.block.toString() - const confirmations = CONFIRMATIONS[chainId as ChainId] - - const transactionDate = new Date(Number(transaction.timestamp) * 1000) - const transactionObject = transactionRepo.create({ - amount: transaction.amount.toString(), - timestamp: transaction.timestamp.toString(), - fromUser: transaction.fromUser, - toUser: transaction.toUser, - fromChain: transaction.fromChain.replace('evm.', ''), - toChain: transaction.toChain.replace('evm.', ''), - nonce: +transaction.nonce.toString(), - fulfillAmount: transaction.amount.toString(), - fulfilled: isFulfilled, - fulfillToUser: transaction.toUser, - fulfillFromChain: transaction.fromChain.replace('evm.', ''), - fulfillNonce: +transaction.nonce.toString(), - txBlock, - confirmations, - transactionDate, - bridgeInfo: bridgeAssist, - chainId, - fulfillFromUser: transaction.fromUser, - index: index, - userAddress: userAddress, - symbol: bridgeAssist.token.symbol, - }) - - EventLogger.info( - `Created transaction: ${transactionObject.index} on ${chainId}` + } + const toChainId = transaction.toChain.replace('evm.', '') as ChainId + let isFulfilled = false + if (isSolChain(toChainId)) { + isFulfilled = await this.processSolanaIsFulfilled( + _bridgeAssists, + chainId as ChainId, + transaction, + bridgeAssist ) - dbtransactions.push(transactionObject) + } else { + isFulfilled = await this.processEvmIsFulfilled( + _bridgeAssists, + providers, + transaction, + bridgeAssist + ) + } + + const txBlock = transaction.block.toString() + const confirmations = CONFIRMATIONS[chainId as ChainId] + + const transactionDate = new Date(Number(transaction.timestamp) * 1000) + const transactionObject = transactionRepo.create({ + amount: transaction.amount.toString(), + timestamp: transaction.timestamp.toString(), + fromUser: transaction.fromUser, + toUser: transaction.toUser, + fromChain: transaction.fromChain.replace('evm.', ''), + toChain: transaction.toChain.replace('evm.', ''), + nonce: +transaction.nonce.toString(), + fulfillAmount: transaction.amount.toString(), + fulfilled: isFulfilled, + fulfillToUser: transaction.toUser, + fulfillFromChain: transaction.fromChain.replace('evm.', ''), + fulfillNonce: +transaction.nonce.toString(), + txBlock, + confirmations, + transactionDate, + bridgeInfo: bridgeAssist, + chainId, + fulfillFromUser: transaction.fromUser, + index: index, + userAddress: userAddress, + symbol: bridgeAssist.token.symbol, }) - ) + + EventLogger.info( + `Created transaction: ${transactionObject.index} on ${chainId}` + ) + dbtransactions.push(transactionObject) + } + // await Promise.all( + // transactions.map(async (transaction, index) => { + // // console.log(transaction.nonce.toString(), 'dkdkdkdkd') + // // console.log(+transaction.nonce.toString(), '043489') + + // }) + // ) }) ) await transactionRepo.save(dbtransactions as any) From 7f01b28724f0ad66a509fed8149fa8cf29593eab Mon Sep 17 00:00:00 2001 From: Stephen <=> Date: Mon, 13 Apr 2026 09:49:26 +0100 Subject: [PATCH 2/3] checking error --- backend-all/src/services/blockchain.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/backend-all/src/services/blockchain.ts b/backend-all/src/services/blockchain.ts index 5ed47c0..f4a93d2 100644 --- a/backend-all/src/services/blockchain.ts +++ b/backend-all/src/services/blockchain.ts @@ -89,10 +89,13 @@ export const signTransaction = async ( } const _fromChain = fromChain.replace('evm.', '') as ChainId const _provider = await _getProvider(_fromChain) + console.log('got from chain _provider') const contract = anyBridgeAssist(fromBridgeAddress, _provider) + console.log('got from bridge address contract') const transactionPromise = contract.transactions(fromUser, index) // const relayerLengthPromise = contract.relayersLength() tx = await transactionPromise + console.log('got transaction') if (!tx || tx.block.toNumber() === 0) throw Error('Transaction not found') if ( _fromChain === '42161' || @@ -102,6 +105,7 @@ export const signTransaction = async ( // const provider = getProvider(fromChain.slice(4) as ChainId) const currentBlock = await safeRead(_provider.getBlockNumber(), 0) + console.log('got current block') if (currentBlock === 0 || tx.block.gt(currentBlock)) throw Error(`Relayer ${relayerIndex} waiting for confirmations`) @@ -110,8 +114,10 @@ export const signTransaction = async ( const chainId = tx.toChain.replace('evm.', '') const toProvider = await _getProvider(chainId as ChainId) + console.log('got to provider') const toBridgeAddressContract = anyBridgeAssist(toBridgeAddress, toProvider) const { isFulfilled } = await fulfilledInfo(toBridgeAddressContract, tx) + console.log('got is fulfilled') if (isFulfilled) { if (process.env.IS_PUBLIC_RELAYER === 'true') { await transactionRepo.update(transactionId, { fulfilled: true }) @@ -121,6 +127,7 @@ export const signTransaction = async ( const relayersLength = await toBridgeAddressContract.relayersLength() relayers = relayersLength.toNumber() + console.log('got relayers length') let signatures: string[] = [] const allowedIps = process.env.ALLOWED_IPS?.split(',') @@ -136,6 +143,7 @@ export const signTransaction = async ( toBridgeAddress, 0 ) + console.log('got signer0') signatures.push(signer0) if (process.env.IS_PUBLIC_RELAYER === 'true' && relayers > 1) { const relayer1Url = process.env.RELAYER1_URL @@ -148,6 +156,7 @@ export const signTransaction = async ( const results = await Promise.all(promises) signatures = signatures.concat(results[0], results[1]) } + console.log('got signatures') return signatures // } else { // throw Error('bad contract params') From 96d5114f6c16032a2bf17a2101252b35dfa4aa5b Mon Sep 17 00:00:00 2001 From: Stephen <=> Date: Mon, 13 Apr 2026 15:10:24 +0100 Subject: [PATCH 3/3] fixing issue --- backend-all/src/services/blockchain.ts | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/backend-all/src/services/blockchain.ts b/backend-all/src/services/blockchain.ts index f4a93d2..1c5b368 100644 --- a/backend-all/src/services/blockchain.ts +++ b/backend-all/src/services/blockchain.ts @@ -101,7 +101,7 @@ export const signTransaction = async ( _fromChain === '42161' || (_fromChain === '421614' && process.env.IS_PUBLIC_RELAYER === 'true') ) - await checkToken(fromUser, contract, _fromChain, tx) + await checkToken(fromUser, contract, _fromChain, tx, _provider) // const provider = getProvider(fromChain.slice(4) as ChainId) const currentBlock = await safeRead(_provider.getBlockNumber(), 0) @@ -318,7 +318,8 @@ async function checkToken( user: string, bridgeAssist: BridgeAssist, fromChain: ChainId, - transaction: TransactionContract + transaction: TransactionContract, + _provider: providers.JsonRpcProvider ) { const timeStamp = Number(transaction.timestamp.toString()) if (timeStamp < targetTimeStamp(fromChain)) { @@ -326,9 +327,9 @@ async function checkToken( console.log('no need to check') return } - const provider = ARB_STATIC_PROVIDER(fromChain) + // const provider = ARB_STATIC_PROVIDER(fromChain, _provider) const address = await bridgeAssist.TOKEN() - const token = anyToken(address, provider) + const token = anyToken(address, _provider) const symbol = await token.symbol() const isWNT = symbol === 'WNT' if (!isWNT) return @@ -420,7 +421,7 @@ export const targetBlockNumber = (chainId: ChainId) => export const targetTimeStamp = (chainId: ChainId) => chainId === '42161' ? 1755734340 : 1754406000 -export const ARB_STATIC_PROVIDER = (chainId: ChainId) => +export const ARB_STATIC_PROVIDER = (chainId: ChainId, provider: providers.JsonRpcProvider) => chainId === '42161' - ? new providers.JsonRpcProvider('https://api.zan.top/arb-one') - : new providers.JsonRpcProvider('https://api.zan.top/arb-sepolia') + ? provider + : provider