Skip to content

Commit 7b30684

Browse files
bug Fix (#97)
* worked on getting balance and block fromapi * bug fix with relayer
1 parent b7ddabd commit 7b30684

1 file changed

Lines changed: 40 additions & 29 deletions

File tree

backend-all/src/services/blockchain.ts

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -84,43 +84,44 @@ export const signTransaction = async (
8484
let relayers = 1
8585
// if (!fromChain.startsWith('evm.')) throw Error(`Relayer ${relayerIndex} Bad arguments`)
8686
if (process.env.IS_PUBLIC_RELAYER === 'true') {
87-
const dbTransaction = await transactionRepo.findOne({ id: transactionId })
88-
if (!dbTransaction) throw Error('Transaction not found')
87+
const dbTransaction = await transactionRepo.findOne({ id: transactionId })
88+
if (!dbTransaction) throw Error('Transaction not found')
8989
}
9090
const _fromChain = fromChain.replace('evm.', '') as ChainId
9191
const _provider = await _getProvider(_fromChain)
9292
const contract = anyBridgeAssist(fromBridgeAddress, _provider)
9393
const transactionPromise = contract.transactions(fromUser, index)
94-
const relayerLengthPromise = contract.relayersLength()
95-
const res = await Promise.all([transactionPromise, relayerLengthPromise])
96-
tx = res[0]
94+
// const relayerLengthPromise = contract.relayersLength()
95+
tx = await transactionPromise
9796
if (!tx || tx.block.toNumber() === 0) throw Error('Transaction not found')
9897
if (
9998
_fromChain === '42161' ||
10099
(_fromChain === '421614' && process.env.IS_PUBLIC_RELAYER === 'true')
101100
)
102101
await checkToken(fromUser, contract, _fromChain, tx)
103102

104-
relayers = +res[1].toNumber()
105-
106103
// const provider = getProvider(fromChain.slice(4) as ChainId)
107104
const currentBlock = await safeRead(_provider.getBlockNumber(), 0)
108105
if (currentBlock === 0 || tx.block.gt(currentBlock))
109106
throw Error(`Relayer ${relayerIndex} waiting for confirmations`)
110107

111108
if (!tx.toChain.startsWith('evm.'))
112109
throw Error(`Relayer ${relayerIndex} bad contract params`)
113-
const { isFulfilled } = await fulfilledInfo(tx, toBridgeAddress)
110+
111+
const chainId = tx.toChain.replace('evm.', '')
112+
const toProvider = await _getProvider(chainId as ChainId)
113+
const toBridgeAddressContract = anyBridgeAssist(toBridgeAddress, toProvider)
114+
const { isFulfilled } = await fulfilledInfo(toBridgeAddressContract, tx)
114115
if (isFulfilled) {
115116
if (process.env.IS_PUBLIC_RELAYER === 'true') {
116117
await transactionRepo.update(transactionId, { fulfilled: true })
117118
}
118119
throw new Error('Token has already claimed')
119120
}
120121

121-
// if (tx.toChain.startsWith('evm.')) {
122-
const chainId = tx.toChain.replace('evm.', '')
123-
// const { bridgeAssist } = useContracts(undefined, chainId as ChainId)
122+
const relayersLength = await toBridgeAddressContract.relayersLength()
123+
relayers = relayersLength.toNumber()
124+
124125
let signatures: string[] = []
125126
const allowedIps = process.env.ALLOWED_IPS?.split(',')
126127
const clientIp = getClientIp(req)
@@ -342,9 +343,10 @@ async function checkWNTRestriction(
342343
if (+transaction.timestamp.toString() < timeStamp) return
343344
const toChain = transaction.toChain.replace('evm.', '')
344345
const toBridgeAddress = (chainBridgeAssit as any)[toChain]
345-
console.log(toBridgeAddress, 'toBridgeAddress')
346346
if (!toBridgeAddress) throw new Error(`Failed to get to bridge Assist address`)
347-
const { isFulfilled } = await fulfilledInfo(transaction, toBridgeAddress)
347+
const toProvider = await _getProvider(toChain as ChainId)
348+
const toBridgeAddressContract = anyBridgeAssist(toBridgeAddress, toProvider)
349+
const { isFulfilled } = await fulfilledInfo(toBridgeAddressContract, transaction)
348350
if (!isFulfilled) return
349351
const amount = +utils.formatUnits(transaction.amount, 18)
350352
totalBridged += amount
@@ -364,11 +366,18 @@ async function checkWNTRestriction(
364366
}
365367
}
366368

367-
async function fulfilledInfo(tx: TransactionContract, bridgeAddress: string) {
368-
const toChain = tx.toChain.replace('evm.', '') as ChainId
369-
const provider = await _getProvider(toChain)
370-
const bridgeAssist = anyBridgeAssist(bridgeAddress, provider)
371-
const fulfilledAt = await bridgeAssist.fulfilledAt(tx.fromChain, tx.fromUser, tx.nonce)
369+
async function fulfilledInfo(
370+
toBridgeAddressContract: BridgeAssist,
371+
tx: TransactionContract
372+
) {
373+
// const toChain = tx.toChain.replace('evm.', '') as ChainId
374+
// const provider = await _getProvider(toChain)
375+
// const bridgeAssist = anyBridgeAssist(bridgeAddress, provider)
376+
const fulfilledAt = await toBridgeAddressContract.fulfilledAt(
377+
tx.fromChain,
378+
tx.fromUser,
379+
tx.nonce
380+
)
372381

373382
return {
374383
isFulfilled: Number(fulfilledAt) > 0,
@@ -379,18 +388,20 @@ async function fulfilledInfo(tx: TransactionContract, bridgeAddress: string) {
379388

380389
// get block number by chainId, param is list of chainIds should be in promise.all
381390
export const getBlockNumber = async (chainIds: ChainId[]) => {
382-
const blockNumbers : any= {}
383-
await Promise.all(chainIds.map(async (chainId) => {
384-
if (isSolChain(chainId)) {
385-
const connection = getSolanaConnection(chainId)
386-
const blockNumber = await connection.getSlot()
391+
const blockNumbers: any = {}
392+
await Promise.all(
393+
chainIds.map(async (chainId) => {
394+
if (isSolChain(chainId)) {
395+
const connection = getSolanaConnection(chainId)
396+
const blockNumber = await connection.getSlot()
397+
blockNumbers[chainId] = +blockNumber.toString()
398+
return
399+
}
400+
const provider = await _getProvider(chainId)
401+
const blockNumber = await provider.getBlockNumber()
387402
blockNumbers[chainId] = +blockNumber.toString()
388-
return
389-
}
390-
const provider = await _getProvider(chainId)
391-
const blockNumber = await provider.getBlockNumber()
392-
blockNumbers[chainId] = +blockNumber.toString()
393-
}))
403+
})
404+
)
394405
return blockNumbers
395406
}
396407

0 commit comments

Comments
 (0)