From 242e63c0cfffc0e7d534470f8b39ba04a6849f20 Mon Sep 17 00:00:00 2001 From: rac-sri Date: Tue, 23 Jul 2024 15:24:28 +0530 Subject: [PATCH 1/4] chore: add index fields to prisma schema --- prisma/schema.prisma | 11 +++++++++++ src/index.ts | 2 +- src/services/transaction-cron.ts | 5 ++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 5a58929..720f6e8 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -33,6 +33,12 @@ model availsends { amount String? message String? dataType String + + @@index([depositorAddress], map: "idx_depositorAddress_avl") + @@index([receiverAddress], map: "idx_receiverAddress_avl") + @@index([depositorAddress, status], map: "idx_status_depositorAddress_avl") + @@index([receiverAddress, status], map: "idx_status_receiverAddress_avl") + } model ethereumsends { @@ -55,4 +61,9 @@ model ethereumsends { amount String? message String? dataType String + + @@index([depositorAddress], map: "idx_depositorAddress_eth") + @@index([receiverAddress], map: "idx_receiverAddress_eth") + @@index([depositorAddress, status], map: "idx_status_depositorAddress_eth") + @@index([receiverAddress, status], map: "idx_status_receiverAddress_eth") } diff --git a/src/index.ts b/src/index.ts index e4571b2..6454bc8 100755 --- a/src/index.ts +++ b/src/index.ts @@ -120,7 +120,7 @@ async function startCron() { ); startFunction( transactionCron.updateSendOnAvail.bind(transactionCron), - Number(process.env.SEND_ON_AVAIL_CRON_INTERVAL) || 120000 + Number(process.env.SEND_ON_AVAIL_CRON_INTERVAL) || 120 ); startFunction( transactionCron.updateReceiveOnAvail.bind(transactionCron), diff --git a/src/services/transaction-cron.ts b/src/services/transaction-cron.ts index 0c56158..87d01d3 100644 --- a/src/services/transaction-cron.ts +++ b/src/services/transaction-cron.ts @@ -84,6 +84,7 @@ export default class TransactionCron { let findMore = true; while (findMore) { + console.log(startBlockNumber); const receiveMessages = await this.ethIndexer.getReceiveMessageTx( startBlockNumber, limit @@ -199,7 +200,7 @@ export default class TransactionCron { const blocks = Object.keys(blockToTransactionMapping) .map(Number) .sort((a, b) => a - b); - + console.log("blocks", blocks.length); for (const block of blocks) { const transactions = blockToTransactionMapping[block]; await this.processTransactionsInAvailReceive(transactions, block); @@ -410,6 +411,8 @@ export default class TransactionCron { transaction.id, "MessageExecuted" ); + + logger.debug("AvailReceivePassed"); operation = this.createOperationForAvailReceive( transaction, event, From 1144754550f9a06d9f5177acdc1eb9c7125854ee Mon Sep 17 00:00:00 2001 From: rac-sri Date: Tue, 23 Jul 2024 15:26:08 +0530 Subject: [PATCH 2/4] chore: revert extra consoles --- src/index.ts | 2 +- src/services/transaction-cron.ts | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/index.ts b/src/index.ts index 6454bc8..e4571b2 100755 --- a/src/index.ts +++ b/src/index.ts @@ -120,7 +120,7 @@ async function startCron() { ); startFunction( transactionCron.updateSendOnAvail.bind(transactionCron), - Number(process.env.SEND_ON_AVAIL_CRON_INTERVAL) || 120 + Number(process.env.SEND_ON_AVAIL_CRON_INTERVAL) || 120000 ); startFunction( transactionCron.updateReceiveOnAvail.bind(transactionCron), diff --git a/src/services/transaction-cron.ts b/src/services/transaction-cron.ts index 87d01d3..9e746f8 100644 --- a/src/services/transaction-cron.ts +++ b/src/services/transaction-cron.ts @@ -84,7 +84,6 @@ export default class TransactionCron { let findMore = true; while (findMore) { - console.log(startBlockNumber); const receiveMessages = await this.ethIndexer.getReceiveMessageTx( startBlockNumber, limit @@ -200,7 +199,7 @@ export default class TransactionCron { const blocks = Object.keys(blockToTransactionMapping) .map(Number) .sort((a, b) => a - b); - console.log("blocks", blocks.length); + for (const block of blocks) { const transactions = blockToTransactionMapping[block]; await this.processTransactionsInAvailReceive(transactions, block); From 05610bc002300ed558b19542a242d881c44f63fe Mon Sep 17 00:00:00 2001 From: rac-sri Date: Thu, 1 Aug 2024 01:43:31 +0530 Subject: [PATCH 3/4] fix: repeated block checks --- src/services/transaction-cron.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/services/transaction-cron.ts b/src/services/transaction-cron.ts index 9e746f8..4b0efa3 100644 --- a/src/services/transaction-cron.ts +++ b/src/services/transaction-cron.ts @@ -79,7 +79,7 @@ export default class TransactionCron { }); let startBlockNumber = 0; if (latestTransaction) { - startBlockNumber = Number(latestTransaction.destinationBlockNumber); + startBlockNumber = Number(latestTransaction.destinationBlockNumber) + 1; } let findMore = true; @@ -129,7 +129,7 @@ export default class TransactionCron { }); let startBlockNumber = 0; if (latestTransaction) { - startBlockNumber = Number(latestTransaction.sourceBlockNumber); + startBlockNumber = Number(latestTransaction.sourceBlockNumber) + 1; } let findMore = true; @@ -177,7 +177,7 @@ export default class TransactionCron { }); let startBlockNumber = 0; if (latestTransaction) { - startBlockNumber = Number(latestTransaction.destinationBlockNumber); + startBlockNumber = Number(latestTransaction.destinationBlockNumber) + 1; } let findMore = true; @@ -253,7 +253,10 @@ export default class TransactionCron { }, }); } catch (error) { - logger.error("something went wrong while axios call", error); + logger.error( + "UpdateAvlToETH something went wrong while axios call", + error + ); } } @@ -278,7 +281,10 @@ export default class TransactionCron { } } } catch (error) { - logger.error("something went wrong while axios call", error); + logger.error( + "updateEthToAvl something went wrong while axios call", + error + ); } } private async getLatestProcessedBlockNumber(): Promise { @@ -291,7 +297,9 @@ export default class TransactionCron { }, take: 1, }); - return latestTransaction ? Number(latestTransaction.sourceBlockNumber) : 0; + return latestTransaction + ? Number(latestTransaction.sourceBlockNumber) + 1 + : 0; } private groupTransactionsByBlock< From e59f6a75eceee15b10ee33255091bb479dc0da69 Mon Sep 17 00:00:00 2001 From: rac-sri Date: Thu, 1 Aug 2024 17:21:12 +0530 Subject: [PATCH 4/4] chore: improve amount parseing --- src/services/transaction-cron.ts | 58 +++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 4 deletions(-) diff --git a/src/services/transaction-cron.ts b/src/services/transaction-cron.ts index 4b0efa3..1d2ff20 100644 --- a/src/services/transaction-cron.ts +++ b/src/services/transaction-cron.ts @@ -490,7 +490,20 @@ export default class TransactionCron { : decodedData.result!.params[1].value, dataType: "ERC20", }; - logger.info(schemaObj, "sendAVAIL"); + + logger.info( + { + ...schemaObj, + amount_prettified: parseAmount( + transferLog + ? ( + decodeParameter("uint256", transferLog.logData) as BigInt + ).toString() + : decodedData.result!.params[1].value + ), + }, + "sendAVAIL" + ); return prisma.ethereumsends.upsert({ where: { messageId: BigInt(messageId) }, @@ -543,7 +556,13 @@ export default class TransactionCron { status: "CLAIMED", }; }; - logger.info(updateObj(), "receiveAVAIL"); + logger.info( + { + ...updateObj(), + amount_prettified: parseAmount((params[1] as string).toString()), + }, + "receiveAVAIL" + ); return prisma.availsends.upsert({ where: { messageId: BigInt(messageId) }, @@ -580,7 +599,16 @@ export default class TransactionCron { }; const data = event[0]; - logger.info(sourceObj(), "MessageSent"); + + logger.info( + { + ...sourceObj(), + amount_prettified: parseAmount( + BigInt(value.fungibleToken.amount).toString() + ), + }, + "MessageSent" + ); const operation = prisma.availsends.upsert({ where: { messageId: BigInt(data.argsValue[4]) }, update: { ...sourceObj() }, @@ -620,7 +648,16 @@ export default class TransactionCron { destinationBlockHash: data.block.hash, }; }; - logger.info(sourceObj(), "MessageExecuted"); + + logger.info( + { + ...sourceObj(), + amount_prettified: parseAmount( + new BigNumber(value.message.fungibleToken.amount, 16).toString() + ), + }, + "MessageExecuted" + ); return prisma.ethereumsends.upsert({ where: { messageId: BigInt(data.argsValue[2]) }, @@ -643,3 +680,16 @@ export default class TransactionCron { } } } + +function parseAmount(numberString: string): string { + try { + const divisor = BigInt(10 ** 18); + + const number = BigInt(numberString); + const result = number / divisor; + + return result.toString(); + } catch (e) { + return ""; + } +}