@zerodev/sdk 4.0.33 → 4.0.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.d.ts +4 -42
- package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js +4 -53
- package/dist/cjs/kernel-zerodev/abis/KernelAccountAbi.js.map +1 -1
- package/dist/cjs/kernel-zerodev/account.d.ts +0 -3
- package/dist/cjs/kernel-zerodev/account.js +6 -47
- package/dist/cjs/kernel-zerodev/account.js.map +1 -1
- package/dist/cjs/kernel-zerodev/constants.d.ts +2 -2
- package/dist/cjs/kernel-zerodev/constants.js +2 -2
- package/dist/cjs/kernel-zerodev/constants.js.map +1 -1
- package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/ethers-provider/account-signer.js.map +1 -1
- package/dist/cjs/kernel-zerodev/middleware/paymaster.js +6 -19
- package/dist/cjs/kernel-zerodev/middleware/paymaster.js.map +1 -1
- package/dist/cjs/kernel-zerodev/paymaster/base.js +33 -36
- package/dist/cjs/kernel-zerodev/paymaster/base.js.map +1 -1
- package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.d.ts +3 -4
- package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js +39 -48
- package/dist/cjs/kernel-zerodev/paymaster/token-paymaster.js.map +1 -1
- package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js +15 -7
- package/dist/cjs/kernel-zerodev/paymaster/verifying-paymaster.js.map +1 -1
- package/dist/cjs/kernel-zerodev/provider.js +2 -1
- package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.d.ts +4 -42
- package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js +4 -53
- package/dist/esm/kernel-zerodev/abis/KernelAccountAbi.js.map +1 -1
- package/dist/esm/kernel-zerodev/account.d.ts +0 -3
- package/dist/esm/kernel-zerodev/account.js +6 -47
- package/dist/esm/kernel-zerodev/account.js.map +1 -1
- package/dist/esm/kernel-zerodev/constants.d.ts +2 -2
- package/dist/esm/kernel-zerodev/constants.js +2 -2
- package/dist/esm/kernel-zerodev/constants.js.map +1 -1
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.js.map +1 -1
- package/dist/esm/kernel-zerodev/middleware/paymaster.js +6 -19
- package/dist/esm/kernel-zerodev/middleware/paymaster.js.map +1 -1
- package/dist/esm/kernel-zerodev/paymaster/base.js +33 -36
- package/dist/esm/kernel-zerodev/paymaster/base.js.map +1 -1
- package/dist/esm/kernel-zerodev/paymaster/token-paymaster.d.ts +3 -4
- package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js +39 -47
- package/dist/esm/kernel-zerodev/paymaster/token-paymaster.js.map +1 -1
- package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js +15 -7
- package/dist/esm/kernel-zerodev/paymaster/verifying-paymaster.js.map +1 -1
- package/dist/esm/kernel-zerodev/provider.js +2 -1
- package/dist/esm/kernel-zerodev/provider.js.map +1 -1
- package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts +4 -42
- package/dist/types/kernel-zerodev/abis/KernelAccountAbi.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/account.d.ts +0 -3
- package/dist/types/kernel-zerodev/account.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/constants.d.ts +2 -2
- package/dist/types/kernel-zerodev/constants.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/types/kernel-zerodev/ethers-provider/account-signer.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/middleware/paymaster.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/paymaster/base.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts +3 -4
- package/dist/types/kernel-zerodev/paymaster/token-paymaster.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/paymaster/verifying-paymaster.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/provider.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kernel-zerodev/abis/KernelAccountAbi.ts +4 -53
- package/src/kernel-zerodev/account.ts +10 -57
- package/src/kernel-zerodev/constants.ts +2 -3
- package/src/kernel-zerodev/ethers-provider/account-signer.ts +1 -1
- package/src/kernel-zerodev/middleware/paymaster.ts +9 -20
- package/src/kernel-zerodev/paymaster/base.ts +38 -44
- package/src/kernel-zerodev/paymaster/token-paymaster.ts +53 -74
- package/src/kernel-zerodev/paymaster/verifying-paymaster.ts +14 -7
- package/src/kernel-zerodev/provider.ts +2 -1
|
@@ -3,7 +3,6 @@ import {
|
|
|
3
3
|
type BytesLike,
|
|
4
4
|
type UserOperationCallData,
|
|
5
5
|
type UserOperationStruct,
|
|
6
|
-
type BatchUserOperationCallData,
|
|
7
6
|
} from "@alchemy/aa-core";
|
|
8
7
|
import axios from "axios";
|
|
9
8
|
import {
|
|
@@ -15,11 +14,12 @@ import {
|
|
|
15
14
|
} from "viem";
|
|
16
15
|
import { ERC20Abi } from "../abis/ERC20Abi.js";
|
|
17
16
|
import { KernelAccountAbi } from "../abis/KernelAccountAbi.js";
|
|
17
|
+
import { MultiSendAbi } from "../abis/MultiSendAbi.js";
|
|
18
18
|
import {
|
|
19
19
|
PAYMASTER_URL,
|
|
20
20
|
ENTRYPOINT_ADDRESS,
|
|
21
|
-
ERC20_APPROVAL_AMOUNT,
|
|
22
21
|
MULTISEND_ADDR,
|
|
22
|
+
ERC20_APPROVAL_AMOUNT,
|
|
23
23
|
} from "../constants.js";
|
|
24
24
|
import {
|
|
25
25
|
AccountNotConnected,
|
|
@@ -36,13 +36,7 @@ import {
|
|
|
36
36
|
type PaymasterConfig,
|
|
37
37
|
} from "./types.js";
|
|
38
38
|
import { getChainId } from "../api/index.js";
|
|
39
|
-
import { MultiSendAbi } from "../abis/MultiSendAbi.js";
|
|
40
39
|
|
|
41
|
-
export function isBatchUserOperationCallData(
|
|
42
|
-
data: any
|
|
43
|
-
): data is BatchUserOperationCallData {
|
|
44
|
-
return data && Array.isArray(data);
|
|
45
|
-
}
|
|
46
40
|
export class TokenPaymaster extends Paymaster {
|
|
47
41
|
constructor(
|
|
48
42
|
provider: ZeroDevProvider,
|
|
@@ -74,12 +68,7 @@ export class TokenPaymaster extends Paymaster {
|
|
|
74
68
|
async decodeMainCallFromCallData(
|
|
75
69
|
kernelAddress: PromiseOrValue<string>,
|
|
76
70
|
callData: PromiseOrValue<BytesLike>
|
|
77
|
-
): Promise<
|
|
78
|
-
| UserOperationCallData
|
|
79
|
-
| BatchUserOperationCallData
|
|
80
|
-
| UserOperationCallDataWithDelegate
|
|
81
|
-
| undefined
|
|
82
|
-
> {
|
|
71
|
+
): Promise<UserOperationCallDataWithDelegate | undefined> {
|
|
83
72
|
let data: Hex = "0x";
|
|
84
73
|
if (callData instanceof Promise) {
|
|
85
74
|
const _data = await callData;
|
|
@@ -124,13 +113,6 @@ export class TokenPaymaster extends Paymaster {
|
|
|
124
113
|
};
|
|
125
114
|
}
|
|
126
115
|
return mainCall;
|
|
127
|
-
} else if (functionName === "executeBatch") {
|
|
128
|
-
const [txs] = args;
|
|
129
|
-
return txs.map((tx) => ({
|
|
130
|
-
target: tx.to,
|
|
131
|
-
value: tx.value ?? 0n,
|
|
132
|
-
data: tx.data,
|
|
133
|
-
}));
|
|
134
116
|
}
|
|
135
117
|
} catch (error) {
|
|
136
118
|
return {
|
|
@@ -145,11 +127,9 @@ export class TokenPaymaster extends Paymaster {
|
|
|
145
127
|
return;
|
|
146
128
|
}
|
|
147
129
|
|
|
148
|
-
async getERC20UserOp
|
|
149
|
-
T extends UserOperationCallData | BatchUserOperationCallData
|
|
150
|
-
>(
|
|
130
|
+
async getERC20UserOp(
|
|
151
131
|
struct: UserOperationStruct,
|
|
152
|
-
mainCall:
|
|
132
|
+
mainCall: UserOperationCallDataWithDelegate,
|
|
153
133
|
gasTokenAddress: Hex,
|
|
154
134
|
paymasterAddress: Hex
|
|
155
135
|
): Promise<UserOperationStruct | undefined> {
|
|
@@ -166,17 +146,10 @@ export class TokenPaymaster extends Paymaster {
|
|
|
166
146
|
if (!this.provider.account) {
|
|
167
147
|
throw AccountNotConnected;
|
|
168
148
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
calls = [approveData, ...mainCall];
|
|
174
|
-
} else {
|
|
175
|
-
calls = [approveData, mainCall];
|
|
176
|
-
}
|
|
177
|
-
const erc20CallData = await this.provider.account.encodeBatchExecute(
|
|
178
|
-
calls
|
|
179
|
-
);
|
|
149
|
+
const erc20CallData = await this.provider.account.encodeBatchExecute([
|
|
150
|
+
approveData,
|
|
151
|
+
mainCall,
|
|
152
|
+
]);
|
|
180
153
|
return {
|
|
181
154
|
...struct,
|
|
182
155
|
callData: erc20CallData,
|
|
@@ -203,46 +176,52 @@ export class TokenPaymaster extends Paymaster {
|
|
|
203
176
|
paymasterProvider?: PaymasterAndBundlerProviders,
|
|
204
177
|
shouldOverrideFee?: boolean
|
|
205
178
|
): Promise<UserOperationStruct | undefined> {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
if (!mainCall) {
|
|
211
|
-
throw IncorrectCallDataForTokenPaymaster;
|
|
212
|
-
}
|
|
213
|
-
const chainId = await getChainId(this.provider.getProjectId());
|
|
214
|
-
if (!chainId) {
|
|
215
|
-
throw new Error("ChainId not found");
|
|
216
|
-
}
|
|
217
|
-
const gasTokenAddress = getGasTokenAddress(
|
|
218
|
-
this.paymasterConfig.gasToken,
|
|
219
|
-
chainId
|
|
220
|
-
);
|
|
221
|
-
let paymasterAddress = await this.getPaymasterAddress(paymasterProvider);
|
|
222
|
-
if (
|
|
223
|
-
gasTokenAddress !== undefined &&
|
|
224
|
-
paymasterAddress !== undefined &&
|
|
225
|
-
isAddress(paymasterAddress)
|
|
226
|
-
) {
|
|
227
|
-
const erc20UserOp = await this.getERC20UserOp(
|
|
228
|
-
struct,
|
|
229
|
-
mainCall,
|
|
230
|
-
gasTokenAddress,
|
|
231
|
-
paymasterAddress
|
|
179
|
+
try {
|
|
180
|
+
const mainCall = await this.decodeMainCallFromCallData(
|
|
181
|
+
struct.sender,
|
|
182
|
+
struct.callData
|
|
232
183
|
);
|
|
233
|
-
if (!
|
|
234
|
-
|
|
184
|
+
if (!mainCall) {
|
|
185
|
+
throw IncorrectCallDataForTokenPaymaster;
|
|
235
186
|
}
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
187
|
+
const chainId = await getChainId(this.provider.getProjectId());
|
|
188
|
+
if (!chainId) {
|
|
189
|
+
throw new Error("ChainId not found");
|
|
190
|
+
}
|
|
191
|
+
const gasTokenAddress = getGasTokenAddress(
|
|
192
|
+
this.paymasterConfig.gasToken,
|
|
193
|
+
chainId
|
|
194
|
+
);
|
|
195
|
+
let paymasterAddress = await this.getPaymasterAddress(paymasterProvider);
|
|
196
|
+
if (
|
|
197
|
+
gasTokenAddress !== undefined &&
|
|
198
|
+
paymasterAddress !== undefined &&
|
|
199
|
+
isAddress(paymasterAddress)
|
|
200
|
+
) {
|
|
201
|
+
const erc20UserOp = await this.getERC20UserOp(
|
|
202
|
+
struct,
|
|
203
|
+
mainCall,
|
|
204
|
+
gasTokenAddress,
|
|
205
|
+
paymasterAddress
|
|
206
|
+
);
|
|
207
|
+
if (!erc20UserOp) {
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const paymasterResp = await this.signUserOp({
|
|
211
|
+
userOp: struct,
|
|
212
|
+
callData: struct.callData,
|
|
213
|
+
gasTokenAddress,
|
|
214
|
+
erc20UserOp,
|
|
215
|
+
erc20CallData: erc20UserOp.callData,
|
|
216
|
+
paymasterProvider,
|
|
217
|
+
shouldOverrideFee,
|
|
218
|
+
});
|
|
219
|
+
if (paymasterResp) {
|
|
220
|
+
return paymasterResp;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
} catch (error) {
|
|
224
|
+
console.log(error);
|
|
246
225
|
}
|
|
247
226
|
return;
|
|
248
227
|
}
|
|
@@ -19,12 +19,19 @@ export class VerifyingPaymaster extends Paymaster {
|
|
|
19
19
|
paymasterProvider?: PaymasterAndBundlerProviders,
|
|
20
20
|
shouldOverrideFee?: boolean
|
|
21
21
|
): Promise<UserOperationStruct | undefined> {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
try {
|
|
23
|
+
const hexifiedUserOp = deepHexlify(await resolveProperties(struct));
|
|
24
|
+
const paymasterResp = await this.signUserOp({
|
|
25
|
+
userOp: hexifiedUserOp,
|
|
26
|
+
paymasterProvider,
|
|
27
|
+
shouldOverrideFee,
|
|
28
|
+
});
|
|
29
|
+
if (paymasterResp) {
|
|
30
|
+
return paymasterResp;
|
|
31
|
+
}
|
|
32
|
+
} catch (error) {
|
|
33
|
+
console.log(error);
|
|
34
|
+
}
|
|
35
|
+
return;
|
|
29
36
|
}
|
|
30
37
|
}
|
|
@@ -298,7 +298,8 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
298
298
|
dummyPaymasterDataMiddleware: AccountMiddlewareFn = async (
|
|
299
299
|
struct: UserOperationStruct
|
|
300
300
|
): Promise<UserOperationStruct> => {
|
|
301
|
-
struct.paymasterAndData =
|
|
301
|
+
struct.paymasterAndData =
|
|
302
|
+
"0xfe7dbcab8aaee4eb67943c1e6be95b1d065985c6000000000000000000000000000000000000000000000000000001869aa31cf400000000000000000000000000000000000000000000000000000000000000007dfe2190f34af27b265bae608717cdc9368b471fc0c097ab7b4088f255b4961e57b039e7e571b15221081c5dce7bcb93459b27a3ab65d2f8a889f4a40b4022801b";
|
|
302
303
|
return struct;
|
|
303
304
|
};
|
|
304
305
|
|