From 671bfac49d783f76e0f5d0f4753459180ef248e8 Mon Sep 17 00:00:00 2001 From: SilasZhr Date: Wed, 26 Jul 2023 10:59:32 +0800 Subject: [PATCH] fix: Add check for whether account is deployed --- src/preset/builder/simpleAccount.ts | 4 +++- src/preset/middleware/gasLimit.ts | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/preset/builder/simpleAccount.ts b/src/preset/builder/simpleAccount.ts index 668a94e..d86a956 100644 --- a/src/preset/builder/simpleAccount.ts +++ b/src/preset/builder/simpleAccount.ts @@ -52,7 +52,9 @@ export class SimpleAccount extends UserOperationBuilder { private resolveAccount: UserOperationMiddlewareFn = async (ctx) => { ctx.op.nonce = await this.entryPoint.getNonce(ctx.op.sender, 0); - ctx.op.initCode = ctx.op.nonce.eq(0) ? this.initCode : "0x"; + const code = await this.provider.getCode(this.proxy.address) + const ifNotDeployed = code === "0x"; + ctx.op.initCode = ifNotDeployed ? this.initCode : "0x"; }; public static async init( diff --git a/src/preset/middleware/gasLimit.ts b/src/preset/middleware/gasLimit.ts index ce8683a..c58d040 100644 --- a/src/preset/middleware/gasLimit.ts +++ b/src/preset/middleware/gasLimit.ts @@ -12,6 +12,9 @@ const estimateCreationGas = async ( provider: ethers.providers.JsonRpcProvider, initCode: BytesLike ): Promise => { + if (initCode.length <= 20) { + return ethers.BigNumber.from(0); + } const initCodeHex = ethers.utils.hexlify(initCode); const factory = initCodeHex.substring(0, 42); const callData = "0x" + initCodeHex.substring(42);