diff --git a/src/config/interface/IConfig.ts b/src/config/interface/IConfig.ts index 252d8282..18ed9e87 100644 --- a/src/config/interface/IConfig.ts +++ b/src/config/interface/IConfig.ts @@ -163,7 +163,6 @@ export type ConfigType = { supportedTransactionType: ChainIdSupportedTransactionType; // array of chain Ids for networks that are supported by the Bundler with EPv7 supportedNetworksV07: Array; - supportedTransactionTypeV07: ChainIdSupportedTransactionType; // array of chain Ids for networks that are TEST networks testnetNetworks: Array; // Transaction error messages diff --git a/src/relayer/transaction-listener/EVMTransactionListener.ts b/src/relayer/transaction-listener/EVMTransactionListener.ts index 7d5aeb31..c4c9b851 100644 --- a/src/relayer/transaction-listener/EVMTransactionListener.ts +++ b/src/relayer/transaction-listener/EVMTransactionListener.ts @@ -268,7 +268,7 @@ export class EVMTransactionListener return; } - // let tryForV07 = false; + let tryForV07 = false; if (transactionHash) { try { log.info( @@ -286,8 +286,7 @@ export class EVMTransactionListener log.info( `No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, ); - // tryForV07 = true; - return; + tryForV07 = true; } else { for ( let userOpIndex = 0; @@ -381,111 +380,111 @@ export class EVMTransactionListener } } } - // if (transactionType === TransactionType.BUNDLER && tryForV07) { - // log.info( - // `V0.7 Getting userOps for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // const userOps = - // await this.userOperationDaoV07.getUserOpsByTransactionId( - // this.chainId, - // transactionId, - // ); - // if (!userOps.length) { - // log.info( - // `V0.7 No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // return; - // } - // for ( - // let userOpIndex = 0; - // userOpIndex < userOps.length; - // userOpIndex += 1 - // ) { - // const { userOpHash, entryPoint } = userOps[userOpIndex]; - - // const entryPointContracts = this.entryPointV07Map[this.chainId]; - - // const entryPointContract = entryPointContracts.find( - // (contract) => - // contract.address.toLowerCase() === entryPoint.toLowerCase(), - // )?.entryPointContract; - - // if (entryPointContract) { - // const userOpReceipt = - // await getUserOperationReceiptForSuccessfulTransaction( - // this.chainId, - // userOpHash, - // transactionReceipt, - // entryPointContract, - // ); - // if (!userOpReceipt) { - // log.info( - // `V0.7 userOpReceipt not fetched for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // return; - // } - // const { success, actualGasCost, actualGasUsed, reason, logs } = - // userOpReceipt; - - // log.info( - // `v0.7 Updating userOp data: ${customJSONStringify( - // convertBigIntToString({ - // transactionHash, - // receipt: convertBigIntToString(transactionReceipt), - // blockNumber: Number(transactionReceipt.blockNumber), - // blockHash: transactionReceipt.blockHash, - // status: TransactionStatus.SUCCESS, - // success: success.toString(), - // actualGasCost, - // actualGasUsed, - // reason, - // logs: convertBigIntToString(logs), - // }), - // )} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${ - // this.chainId - // }`, - // ); - // await this.userOperationDaoV07.updateUserOpDataToDatabaseByTransactionIdAndUserOpHash( - // this.chainId, - // transactionId, - // userOpHash, - // convertBigIntToString({ - // transactionHash, - // receipt: convertBigIntToString(transactionReceipt), - // blockNumber: Number(transactionReceipt.blockNumber), - // blockHash: transactionReceipt.blockHash, - // status: TransactionStatus.SUCCESS, - // success: success.toString(), - // actualGasCost, - // actualGasUsed, - // reason, - // logs: convertBigIntToString(logs), - // }), - // ); - // log.info( - // `v0.7 userOp data updated for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - - // if (transactionType === TransactionType.BUNDLER) { - // log.info( - // `v0.7 updating state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // await this.userOperationStateDao.updateState(this.chainId, { - // transactionId, - // message: "Transaction confirmed", - // state: UserOperationStateEnum.CONFIRMED, - // }); - // log.info( - // `v0.7 updated state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // } - // } else { - // log.info( - // `v0.7 entryPoint: ${entryPoint} not found in entry point map for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // } - // } - // } + if (transactionType === TransactionType.BUNDLER && tryForV07) { + log.info( + `V0.7 Getting userOps for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + const userOps = + await this.userOperationDaoV07.getUserOpsByTransactionId( + this.chainId, + transactionId, + ); + if (!userOps.length) { + log.info( + `V0.7 No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + return; + } + for ( + let userOpIndex = 0; + userOpIndex < userOps.length; + userOpIndex += 1 + ) { + const { userOpHash, entryPoint } = userOps[userOpIndex]; + + const entryPointContracts = this.entryPointV07Map[this.chainId]; + + const entryPointContract = entryPointContracts.find( + (contract) => + contract.address.toLowerCase() === entryPoint.toLowerCase(), + )?.entryPointContract; + + if (entryPointContract) { + const userOpReceipt = + await getUserOperationReceiptForSuccessfulTransaction( + this.chainId, + userOpHash, + transactionReceipt, + entryPointContract, + ); + if (!userOpReceipt) { + log.info( + `V0.7 userOpReceipt not fetched for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + return; + } + const { success, actualGasCost, actualGasUsed, reason, logs } = + userOpReceipt; + + log.info( + `v0.7 Updating userOp data: ${customJSONStringify( + convertBigIntToString({ + transactionHash, + receipt: convertBigIntToString(transactionReceipt), + blockNumber: Number(transactionReceipt.blockNumber), + blockHash: transactionReceipt.blockHash, + status: TransactionStatus.SUCCESS, + success: success.toString(), + actualGasCost, + actualGasUsed, + reason, + logs: convertBigIntToString(logs), + }), + )} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${ + this.chainId + }`, + ); + await this.userOperationDaoV07.updateUserOpDataToDatabaseByTransactionIdAndUserOpHash( + this.chainId, + transactionId, + userOpHash, + convertBigIntToString({ + transactionHash, + receipt: convertBigIntToString(transactionReceipt), + blockNumber: Number(transactionReceipt.blockNumber), + blockHash: transactionReceipt.blockHash, + status: TransactionStatus.SUCCESS, + success: success.toString(), + actualGasCost, + actualGasUsed, + reason, + logs: convertBigIntToString(logs), + }), + ); + log.info( + `v0.7 userOp data updated for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + + if (transactionType === TransactionType.BUNDLER) { + log.info( + `v0.7 updating state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + await this.userOperationStateDao.updateState(this.chainId, { + transactionId, + message: "Transaction confirmed", + state: UserOperationStateEnum.CONFIRMED, + }); + log.info( + `v0.7 updated state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + } + } else { + log.info( + `v0.7 entryPoint: ${entryPoint} not found in entry point map for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + } + } + } } catch (error) { log.error( `Error in saving userOp data in database for transactionId: ${transactionId} on chainId ${ @@ -565,7 +564,7 @@ export class EVMTransactionListener return; } - // let tryForV07 = false; + let tryForV07 = false; if (transactionHash) { try { log.info( @@ -584,8 +583,7 @@ export class EVMTransactionListener log.info( `No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, ); - // tryForV07 = true; - return; + tryForV07 = true; } for ( let userOpIndex = 0; @@ -838,245 +836,245 @@ export class EVMTransactionListener } } } - // if (transactionType === TransactionType.BUNDLER && tryForV07) { - // log.info( - // `V0.7 Getting userOps for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - - // const userOps = await this.userOperationDaoV07.getUserOpsByTransactionId( - // this.chainId, - // transactionId, - // ); - // if (!userOps.length) { - // log.info( - // `V0.7 No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // return; - // } - // for ( - // let userOpIndex = 0; - // userOpIndex < userOps.length; - // userOpIndex += 1 - // ) { - // const { userOpHash, entryPoint } = userOps[userOpIndex]; - - // const entryPointContracts = this.entryPointV07Map[this.chainId]; - - // const entryPointContract = entryPointContracts.find( - // (contract) => - // contract.address.toLowerCase() === entryPoint.toLowerCase(), - // )?.entryPointContract; - - // if (entryPointContract) { - // const latestBlock = - // await this.networkService.getLatesBlockNumber(); - // log.info( - // `v0.7 latestBlock: ${latestBlock} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // let fromBlock = latestBlock - BigInt(1000); - // if (config.astarNetworks.includes(this.chainId)) { - // fromBlock += BigInt(501); - // } - // log.info( - // `v0.7 fromBlock: ${fromBlock} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // const userOpReceipt = - // await getUserOperationReceiptForFailedTransaction( - // this.chainId, - // userOpHash, - // transactionReceipt, - // entryPointContract, - // fromBlock, - // this.networkService.provider, - // ); - - // if (!userOpReceipt) { - // log.info( - // `v0.7 userOpReceipt not fetched for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // log.info( - // `v0.7 Updating userOp data: ${customJSONStringify( - // convertBigIntToString({ - // transactionHash, - // receipt: convertBigIntToString(transactionReceipt), - // blockNumber: Number(transactionReceipt.blockNumber), - // blockHash: transactionReceipt.blockHash, - // status: TransactionStatus.FAILED, - // success: "false", - // actualGasCost: 0, - // actualGasUsed: 0, - // reason: null, - // logs: null, - // }), - // )} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${ - // this.chainId - // }`, - // ); - - // await this.userOperationDaoV07.updateUserOpDataToDatabaseByTransactionIdAndUserOpHash( - // this.chainId, - // transactionId, - // userOpHash, - // convertBigIntToString({ - // transactionHash, - // receipt: convertBigIntToString(transactionReceipt), - // blockNumber: Number(transactionReceipt.blockNumber), - // blockHash: transactionReceipt.blockHash, - // status: TransactionStatus.FAILED, - // success: "false", - // actualGasCost: 0, - // actualGasUsed: 0, - // reason: "null", - // logs: null, - // }), - // ); - // log.info( - // `v0.7 userOp data updated for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - - // if (transactionType === TransactionType.BUNDLER) { - // log.info( - // `v0.7 updating state to: ${UserOperationStateEnum.FAILED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // await this.userOperationStateDao.updateState(this.chainId, { - // transactionId, - // state: UserOperationStateEnum.FAILED, - // message: await this.getTransactionFailureMessage( - // transactionReceipt, - // entryPointContract, - // ), - // }); - // log.info( - // `v0.7 updated state to: ${UserOperationStateEnum.FAILED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // } - // return; - // } - // const { - // success, - // actualGasCost, - // actualGasUsed, - // reason, - // logs, - // frontRunnedTransactionReceipt, - // } = userOpReceipt; - - // log.info( - // `Updating transaction data for a front runned transaction for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - - // await this.userOperationDaoV07.updateUserOpDataToDatabaseByTransactionIdAndUserOpHash( - // this.chainId, - // transactionId, - // userOpHash, - // convertBigIntToString({ - // receipt: convertBigIntToString(frontRunnedTransactionReceipt), - // transactionHash: ( - // frontRunnedTransactionReceipt as TransactionReceipt - // ).transactionHash, - // blockNumber: Number( - // (frontRunnedTransactionReceipt as TransactionReceipt) - // .blockNumber, - // ), - // blockHash: ( - // frontRunnedTransactionReceipt as TransactionReceipt - // ).blockHash, - // status: TransactionStatus.SUCCESS, - // success, - // actualGasCost, - // actualGasUsed, - // reason, - // logs: convertBigIntToString(logs), - // }), - // ); - - // log.info( - // `userOp data updated for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // let frontRunnedTransactionFee = 0; - // let frontRunnedTransactionFeeInUSD = 0; - // let frontRunnedTransactionFeeCurrency = ""; - // if ( - // !frontRunnedTransactionReceipt.gasUsed && - // !frontRunnedTransactionReceipt.effectiveGasPrice - // ) { - // log.info( - // `gasUsed or effectiveGasPrice field not found in ${customJSONStringify( - // frontRunnedTransactionReceipt, - // )}`, - // ); - // } else { - // frontRunnedTransactionFee = 0; - // try { - // frontRunnedTransactionFee = Number( - // frontRunnedTransactionReceipt.gasUsed * - // frontRunnedTransactionReceipt.effectiveGasPrice, - // ); - // } catch (err) { - // log.error( - // `Error in calculating front ran transaction fee, defaulting to ${frontRunnedTransactionFee}`, - // { - // transactionId, - // chainId: this.chainId, - // gasUsed: frontRunnedTransactionReceipt.gasUsed, - // effectiveGasPrice: - // frontRunnedTransactionReceipt.effectiveGasPrice, - // }, - // ); - // } - - // frontRunnedTransactionFeeCurrency = - // config.chains.currency[this.chainId]; - // const coinsRateObj = - // await this.cacheService.get(getTokenPriceKey()); - // if (!coinsRateObj) { - // log.info("Coins Rate Obj not fetched from cache"); - // } else { - // frontRunnedTransactionFeeInUSD = - // JSON.parse(coinsRateObj)[this.chainId]; - // } - // } - - // await this.transactionDao.updateByTransactionIdAndTransactionHashForFrontRunnedTransaction( - // this.chainId, - // transactionId, - // transactionHash, - // { - // frontRunnedTransactionHash: - // frontRunnedTransactionReceipt.hash, - // frontRunnedReceipt: convertBigIntToString( - // frontRunnedTransactionReceipt, - // ), - // frontRunnedTransactionFee, - // frontRunnedTransactionFeeInUSD, - // frontRunnedTransactionFeeCurrency, - // status: TransactionStatus.FAILED, - // updationTime: Date.now(), - // }, - // ); - - // if (transactionType === TransactionType.BUNDLER) { - // log.info( - // `updating state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId} for a front runned transaction`, - // ); - // await this.userOperationStateDao.updateState(this.chainId, { - // transactionId, - // transactionHash: frontRunnedTransactionReceipt.hash, - // message: - // "Transaction was front runned, check new transaction hash in receipt", - // state: UserOperationStateEnum.CONFIRMED, - // }); - // log.info( - // `updated state state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId} for a front runned transaction`, - // ); - // } - // } else { - // log.info( - // `entryPoint: ${entryPoint} not found in entry point map for transactionId: ${transactionId} on chainId: ${this.chainId}`, - // ); - // } - // } - // } + if (transactionType === TransactionType.BUNDLER && tryForV07) { + log.info( + `V0.7 Getting userOps for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + + const userOps = await this.userOperationDaoV07.getUserOpsByTransactionId( + this.chainId, + transactionId, + ); + if (!userOps.length) { + log.info( + `V0.7 No user op found for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + return; + } + for ( + let userOpIndex = 0; + userOpIndex < userOps.length; + userOpIndex += 1 + ) { + const { userOpHash, entryPoint } = userOps[userOpIndex]; + + const entryPointContracts = this.entryPointV07Map[this.chainId]; + + const entryPointContract = entryPointContracts.find( + (contract) => + contract.address.toLowerCase() === entryPoint.toLowerCase(), + )?.entryPointContract; + + if (entryPointContract) { + const latestBlock = + await this.networkService.getLatesBlockNumber(); + log.info( + `v0.7 latestBlock: ${latestBlock} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + let fromBlock = latestBlock - BigInt(1000); + if (config.astarNetworks.includes(this.chainId)) { + fromBlock += BigInt(501); + } + log.info( + `v0.7 fromBlock: ${fromBlock} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + const userOpReceipt = + await getUserOperationReceiptForFailedTransaction( + this.chainId, + userOpHash, + transactionReceipt, + entryPointContract, + fromBlock, + this.networkService.provider, + ); + + if (!userOpReceipt) { + log.info( + `v0.7 userOpReceipt not fetched for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + log.info( + `v0.7 Updating userOp data: ${customJSONStringify( + convertBigIntToString({ + transactionHash, + receipt: convertBigIntToString(transactionReceipt), + blockNumber: Number(transactionReceipt.blockNumber), + blockHash: transactionReceipt.blockHash, + status: TransactionStatus.FAILED, + success: "false", + actualGasCost: 0, + actualGasUsed: 0, + reason: null, + logs: null, + }), + )} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${ + this.chainId + }`, + ); + + await this.userOperationDaoV07.updateUserOpDataToDatabaseByTransactionIdAndUserOpHash( + this.chainId, + transactionId, + userOpHash, + convertBigIntToString({ + transactionHash, + receipt: convertBigIntToString(transactionReceipt), + blockNumber: Number(transactionReceipt.blockNumber), + blockHash: transactionReceipt.blockHash, + status: TransactionStatus.FAILED, + success: "false", + actualGasCost: 0, + actualGasUsed: 0, + reason: "null", + logs: null, + }), + ); + log.info( + `v0.7 userOp data updated for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + + if (transactionType === TransactionType.BUNDLER) { + log.info( + `v0.7 updating state to: ${UserOperationStateEnum.FAILED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + await this.userOperationStateDao.updateState(this.chainId, { + transactionId, + state: UserOperationStateEnum.FAILED, + message: await this.getTransactionFailureMessage( + transactionReceipt, + entryPointContract, + ), + }); + log.info( + `v0.7 updated state to: ${UserOperationStateEnum.FAILED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + } + return; + } + const { + success, + actualGasCost, + actualGasUsed, + reason, + logs, + frontRunnedTransactionReceipt, + } = userOpReceipt; + + log.info( + `Updating transaction data for a front runned transaction for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + + await this.userOperationDaoV07.updateUserOpDataToDatabaseByTransactionIdAndUserOpHash( + this.chainId, + transactionId, + userOpHash, + convertBigIntToString({ + receipt: convertBigIntToString(frontRunnedTransactionReceipt), + transactionHash: ( + frontRunnedTransactionReceipt as TransactionReceipt + ).transactionHash, + blockNumber: Number( + (frontRunnedTransactionReceipt as TransactionReceipt) + .blockNumber, + ), + blockHash: ( + frontRunnedTransactionReceipt as TransactionReceipt + ).blockHash, + status: TransactionStatus.SUCCESS, + success, + actualGasCost, + actualGasUsed, + reason, + logs: convertBigIntToString(logs), + }), + ); + + log.info( + `userOp data updated for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + let frontRunnedTransactionFee = 0; + let frontRunnedTransactionFeeInUSD = 0; + let frontRunnedTransactionFeeCurrency = ""; + if ( + !frontRunnedTransactionReceipt.gasUsed && + !frontRunnedTransactionReceipt.effectiveGasPrice + ) { + log.info( + `gasUsed or effectiveGasPrice field not found in ${customJSONStringify( + frontRunnedTransactionReceipt, + )}`, + ); + } else { + frontRunnedTransactionFee = 0; + try { + frontRunnedTransactionFee = Number( + frontRunnedTransactionReceipt.gasUsed * + frontRunnedTransactionReceipt.effectiveGasPrice, + ); + } catch (err) { + log.error( + `Error in calculating front ran transaction fee, defaulting to ${frontRunnedTransactionFee}`, + { + transactionId, + chainId: this.chainId, + gasUsed: frontRunnedTransactionReceipt.gasUsed, + effectiveGasPrice: + frontRunnedTransactionReceipt.effectiveGasPrice, + }, + ); + } + + frontRunnedTransactionFeeCurrency = + config.chains.currency[this.chainId]; + const coinsRateObj = + await this.cacheService.get(getTokenPriceKey()); + if (!coinsRateObj) { + log.info("Coins Rate Obj not fetched from cache"); + } else { + frontRunnedTransactionFeeInUSD = + JSON.parse(coinsRateObj)[this.chainId]; + } + } + + await this.transactionDao.updateByTransactionIdAndTransactionHashForFrontRunnedTransaction( + this.chainId, + transactionId, + transactionHash, + { + frontRunnedTransactionHash: + frontRunnedTransactionReceipt.hash, + frontRunnedReceipt: convertBigIntToString( + frontRunnedTransactionReceipt, + ), + frontRunnedTransactionFee, + frontRunnedTransactionFeeInUSD, + frontRunnedTransactionFeeCurrency, + status: TransactionStatus.FAILED, + updationTime: Date.now(), + }, + ); + + if (transactionType === TransactionType.BUNDLER) { + log.info( + `updating state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId} for a front runned transaction`, + ); + await this.userOperationStateDao.updateState(this.chainId, { + transactionId, + transactionHash: frontRunnedTransactionReceipt.hash, + message: + "Transaction was front runned, check new transaction hash in receipt", + state: UserOperationStateEnum.CONFIRMED, + }); + log.info( + `updated state state to: ${UserOperationStateEnum.CONFIRMED} for userOpHash: ${userOpHash} for transactionId: ${transactionId} on chainId: ${this.chainId} for a front runned transaction`, + ); + } + } else { + log.info( + `entryPoint: ${entryPoint} not found in entry point map for transactionId: ${transactionId} on chainId: ${this.chainId}`, + ); + } + } + } } catch (error) { log.error( `Error in saving userOp data in database for transactionId: ${transactionId} on chainId ${ diff --git a/src/server/api/v2/eth_sendUserOperation/handler.ts b/src/server/api/v2/eth_sendUserOperation/handler.ts index 00f59b0f..a28c40c2 100644 --- a/src/server/api/v2/eth_sendUserOperation/handler.ts +++ b/src/server/api/v2/eth_sendUserOperation/handler.ts @@ -21,7 +21,7 @@ import { import { BUNDLER_ERROR_CODES, STATUSES } from "../../shared/middleware"; // import { updateRequest } from '../../auth/UpdateRequest'; -let log = logger.child({ +const log = logger.child({ module: module.filename.split("/").slice(-4).join("/"), }); @@ -40,16 +40,6 @@ export const bundleUserOperation = async (req: Request, res: Response) => { gasLimitFromSimulation += 5000000000; } - log = log.child({ - chainId, - requestId: id, - apiKey: dappAPIKey, - userOp, - entryPointAddress, - gasLimitFromSimulation, - userOpHash, - }); - const transactionId = generateTransactionId(Date.now().toString()); log.info( `transactionId: ${transactionId} for userOpHash: ${userOpHash} on chainId: ${chainIdInNum} for apiKey: ${dappAPIKey}`, diff --git a/src/server/api/v3/eth_estimateUserOperationGas/handler.ts b/src/server/api/v3/eth_estimateUserOperationGas/handler.ts index 20628a65..25fde2e1 100644 --- a/src/server/api/v3/eth_estimateUserOperationGas/handler.ts +++ b/src/server/api/v3/eth_estimateUserOperationGas/handler.ts @@ -25,23 +25,20 @@ export const estimateUserOperationGas = async (req: Request, res: Response) => { const { id } = req.body; const { chainId, apiKey } = req.params; - // create a child logger so all important tracing info is logged with each call - let log = filenameLogger.child({ + // create a child logger so all important tracing info is logged with each call + let log = filenameLogger.child({ chainId, requestId: id, - apiKey, + apiKey: apiKey, }); - + log.info( `EP v7 estimateUserOperationGas called, entryPointAddress: ${req.body.params[1]}`, ); - // return res.status(500).json({ error: "Not implemented" }); try { const [userOp, entryPointAddress, stateOverrideSet] = req.body.params; - log = log.child({ entryPointAddress }); - // Check if given entrypoint is supported by our bundler const entryPointContracts = entryPointMapV07[parseInt(chainId, 10)]; const entryPointContract = entryPointContracts?.find(