From 13a2bdd74e6380bd46607abee8db2ec73ae0eadc Mon Sep 17 00:00:00 2001 From: mouseless <97399882+mouseless-eth@users.noreply.github.com> Date: Fri, 4 Oct 2024 19:38:36 +0100 Subject: [PATCH] fix for v0.7 --- src/rpc/estimation/gasEstimationsV07.ts | 32 +++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/rpc/estimation/gasEstimationsV07.ts b/src/rpc/estimation/gasEstimationsV07.ts index 4081e503..b0893b4a 100644 --- a/src/rpc/estimation/gasEstimationsV07.ts +++ b/src/rpc/estimation/gasEstimationsV07.ts @@ -228,11 +228,23 @@ export class GasEstimatorV07 { gasAllowance }) - const cause = await this.callPimlicoEntryPointSimulations({ + let cause = await this.callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData: [simulateCallData] }) + cause = cause.map((data: Hex) => { + const decodedDelegateAndError = decodeErrorResult({ + abi: EntryPointV07Abi, + data: data + }) + + if (!decodedDelegateAndError?.args?.[1]) { + throw new Error("Unexpected error") + } + return decodedDelegateAndError.args[1] as Hex + }) + const simulateCallDataResult = validateTargetCallDataResult( cause[0] ) @@ -290,7 +302,7 @@ export class GasEstimatorV07 { queuedUserOperations }) - const cause = await this.callPimlicoEntryPointSimulations({ + let cause = await this.callPimlicoEntryPointSimulations({ entryPoint, entryPointSimulationsCallData: [ simulateHandleOpLast, @@ -299,6 +311,22 @@ export class GasEstimatorV07 { stateOverrides }) + cause = cause.map((data: Hex) => { + const decodedDelegateAndError = decodeErrorResult({ + abi: EntryPointV07Abi, + data: data + }) + + const delegateAndRevertResponseBytes = + decodedDelegateAndError?.args?.[1] + + if (!delegateAndRevertResponseBytes) { + throw new Error("Unexpected error") + } + + return delegateAndRevertResponseBytes as Hex + }) + try { const simulateHandleOpLastResult = getSimulateHandleOpResult( cause[0]