From 3a18fc4201e20cc742b96ca75458e14ae46fd7f8 Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Sun, 1 Dec 2024 20:46:01 +0000 Subject: [PATCH 1/5] no need for paymaster --- .../pimlico/utils/prepareUserOperationForErc20Paymaster.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts index 5b7b83bd..39f694b5 100644 --- a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +++ b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts @@ -196,6 +196,7 @@ export const prepareUserOperationForErc20Paymaster = "prepareUserOperation" )({ ...parameters, + paymaster: null, calls: callsWithDummyApproval } as unknown as PrepareUserOperationParameters) From f50bf5abe4d08f75f756bf1117bea468cc80732e Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Sun, 1 Dec 2024 20:59:52 +0000 Subject: [PATCH 2/5] only user stub data for the first time --- .../prepareUserOperationForErc20Paymaster.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts index 39f694b5..61ae6d05 100644 --- a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +++ b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts @@ -12,6 +12,8 @@ import { } from "viem" import { type BundlerClient, + type GetPaymasterDataParameters, + type GetPaymasterDataReturnType, type PrepareUserOperationParameters, type PrepareUserOperationRequest, type PrepareUserOperationReturnType, @@ -19,6 +21,7 @@ import { type UserOperation, type UserOperationCall, getPaymasterData as getPaymasterData_, + getPaymasterStubData, prepareUserOperation } from "viem/account-abstraction" import { getChainId as getChainId_ } from "viem/actions" @@ -196,7 +199,17 @@ export const prepareUserOperationForErc20Paymaster = "prepareUserOperation" )({ ...parameters, - paymaster: null, + paymaster: { + getPaymasterData: ( + parameters: GetPaymasterDataParameters + ): Promise => { + return getAction( + client, + getPaymasterStubData, + "getPaymasterStubData" + )(parameters) + } + }, calls: callsWithDummyApproval } as unknown as PrepareUserOperationParameters) From 41e3a2b8258b1770a3d81fba1c949fe194965c47 Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Sun, 1 Dec 2024 21:01:26 +0000 Subject: [PATCH 3/5] Add changeset --- .changeset/tasty-pugs-smell.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tasty-pugs-smell.md diff --git a/.changeset/tasty-pugs-smell.md b/.changeset/tasty-pugs-smell.md new file mode 100644 index 00000000..d3bc318f --- /dev/null +++ b/.changeset/tasty-pugs-smell.md @@ -0,0 +1,5 @@ +--- +"permissionless": patch +--- + +Fixed use of getPaymasterData twice in prepareUserOperationForErc20Paymaster From 00b1f630206735155b7e25c55e62b30dc704b1e1 Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Sun, 1 Dec 2024 21:17:34 +0000 Subject: [PATCH 4/5] check if getPaymasterStubData is present in the object --- .../prepareUserOperationForErc20Paymaster.ts | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts index 61ae6d05..f5249132 100644 --- a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +++ b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts @@ -201,13 +201,24 @@ export const prepareUserOperationForErc20Paymaster = ...parameters, paymaster: { getPaymasterData: ( - parameters: GetPaymasterDataParameters + args: GetPaymasterDataParameters ): Promise => { + const paymaster = + parameters.paymaster ?? bundlerClient?.paymaster + + if (typeof paymaster === "object") { + const { getPaymasterStubData } = paymaster + + if (getPaymasterStubData) { + return getPaymasterStubData(args) + } + } + return getAction( - client, - getPaymasterStubData, - "getPaymasterStubData" - )(parameters) + bundlerClient, + getPaymasterData_, + "getPaymasterData" + )(args) } }, calls: callsWithDummyApproval From edb8baf9e6c347c8cda5d831b01db84570b5bd4f Mon Sep 17 00:00:00 2001 From: Garvit Khatri Date: Sun, 1 Dec 2024 21:19:00 +0000 Subject: [PATCH 5/5] fix build --- .../pimlico/utils/prepareUserOperationForErc20Paymaster.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts index f5249132..e4ea72ce 100644 --- a/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts +++ b/packages/permissionless/experimental/pimlico/utils/prepareUserOperationForErc20Paymaster.ts @@ -21,7 +21,6 @@ import { type UserOperation, type UserOperationCall, getPaymasterData as getPaymasterData_, - getPaymasterStubData, prepareUserOperation } from "viem/account-abstraction" import { getChainId as getChainId_ } from "viem/actions"