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);