@zerodev/sdk 4.3.0 → 4.3.2
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/ethers-provider/account-signer.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/provider.d.ts +3 -0
- package/dist/cjs/kernel-zerodev/provider.js +36 -1
- package/dist/cjs/kernel-zerodev/provider.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/base.d.ts +1 -0
- package/dist/cjs/kernel-zerodev/validator/base.js +11 -2
- package/dist/cjs/kernel-zerodev/validator/base.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/session-key-validator.js +1 -2
- package/dist/cjs/kernel-zerodev/validator/session-key-validator.js.map +1 -1
- package/dist/esm/kernel-zerodev/ethers-provider/account-signer.d.ts +1 -1
- package/dist/esm/kernel-zerodev/provider.d.ts +3 -0
- package/dist/esm/kernel-zerodev/provider.js +38 -3
- package/dist/esm/kernel-zerodev/provider.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/base.d.ts +1 -0
- package/dist/esm/kernel-zerodev/validator/base.js +11 -2
- package/dist/esm/kernel-zerodev/validator/base.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/session-key-validator.js +1 -2
- package/dist/esm/kernel-zerodev/validator/session-key-validator.js.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/provider.d.ts +3 -0
- package/dist/types/kernel-zerodev/provider.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/base.d.ts +1 -0
- package/dist/types/kernel-zerodev/validator/base.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/session-key-validator.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kernel-zerodev/provider.ts +27 -1
- package/src/kernel-zerodev/validator/base.ts +8 -8
- package/src/kernel-zerodev/validator/session-key-validator.ts +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-key-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/session-key-validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-key-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/session-key-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
type Hex,
|
|
7
7
|
type HttpTransport,
|
|
8
8
|
type RpcTransactionRequest,
|
|
9
|
+
getAbiItem,
|
|
9
10
|
} from "viem";
|
|
10
11
|
import {
|
|
11
12
|
deepHexlify,
|
|
@@ -22,6 +23,7 @@ import {
|
|
|
22
23
|
SmartAccountProvider,
|
|
23
24
|
type AccountMiddlewareFn,
|
|
24
25
|
type UserOperationOverrides,
|
|
26
|
+
EntryPointAbi,
|
|
25
27
|
} from "@alchemy/aa-core";
|
|
26
28
|
import {
|
|
27
29
|
BUNDLER_URL,
|
|
@@ -71,6 +73,8 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
71
73
|
protected sendTxMaxRetries: number;
|
|
72
74
|
protected sendTxRetryIntervalMs: number;
|
|
73
75
|
readonly bundlerProvider?: PaymasterAndBundlerProviders;
|
|
76
|
+
private _txMaxRetries: number;
|
|
77
|
+
private _txRetryIntervalMs: number;
|
|
74
78
|
|
|
75
79
|
constructor({
|
|
76
80
|
projectId,
|
|
@@ -91,13 +95,15 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
91
95
|
|
|
92
96
|
super(rpcClient, entryPointAddress, _chain, account, {
|
|
93
97
|
...opts,
|
|
94
|
-
txMaxRetries: opts?.txMaxRetries ??
|
|
98
|
+
txMaxRetries: opts?.txMaxRetries ?? 20,
|
|
95
99
|
txRetryIntervalMs: opts?.txRetryIntervalMs ?? 10000,
|
|
96
100
|
minPriorityFeePerBid:
|
|
97
101
|
opts?.minPriorityFeePerBid ??
|
|
98
102
|
minPriorityFeePerBidDefaults.get(_chain.id),
|
|
99
103
|
});
|
|
100
104
|
|
|
105
|
+
this._txMaxRetries = opts?.txMaxRetries ?? 20;
|
|
106
|
+
this._txRetryIntervalMs = opts?.txRetryIntervalMs ?? 5000;
|
|
101
107
|
this.bundlerProvider = bundlerProvider;
|
|
102
108
|
this.projectId = projectId;
|
|
103
109
|
this.sendTxMaxRetries =
|
|
@@ -364,6 +370,26 @@ export class ZeroDevProvider extends SmartAccountProvider<HttpTransport> {
|
|
|
364
370
|
return errorIn;
|
|
365
371
|
}
|
|
366
372
|
|
|
373
|
+
waitForUserOperationTransaction = async (hash: Hash): Promise<Hash> => {
|
|
374
|
+
let blockNumber = await this.rpcClient.getBlockNumber();
|
|
375
|
+
for (let i = 0; i < this._txMaxRetries; i++) {
|
|
376
|
+
const logs = await this.rpcClient.getLogs({
|
|
377
|
+
address: ENTRYPOINT_ADDRESS,
|
|
378
|
+
event: getAbiItem({ abi: EntryPointAbi, name: "UserOperationEvent" }),
|
|
379
|
+
args: { userOpHash: hash },
|
|
380
|
+
fromBlock: blockNumber - 100n,
|
|
381
|
+
});
|
|
382
|
+
if (logs.length) {
|
|
383
|
+
return logs[0].transactionHash;
|
|
384
|
+
}
|
|
385
|
+
await new Promise((resolve) =>
|
|
386
|
+
setTimeout(resolve, this._txRetryIntervalMs)
|
|
387
|
+
);
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
throw new Error("Failed to find transaction for User Operation");
|
|
391
|
+
};
|
|
392
|
+
|
|
367
393
|
getAccount: () => KernelSmartContractAccount = () => {
|
|
368
394
|
if (!isKernelAccount(this.account)) {
|
|
369
395
|
throw new Error("account not connected!");
|
|
@@ -60,6 +60,7 @@ export type ValidatorPluginData = Required<
|
|
|
60
60
|
export abstract class KernelBaseValidator {
|
|
61
61
|
readonly validatorAddress: Hex;
|
|
62
62
|
mode: ValidatorMode;
|
|
63
|
+
resolvedMode?: ValidatorMode;
|
|
63
64
|
protected projectId: string;
|
|
64
65
|
protected chain?: Chain;
|
|
65
66
|
protected entryPointAddress: Address;
|
|
@@ -136,10 +137,9 @@ export abstract class KernelBaseValidator {
|
|
|
136
137
|
): Promise<Hex> {
|
|
137
138
|
const dummyECDSASig =
|
|
138
139
|
"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
|
|
139
|
-
const validatorMode =
|
|
140
|
-
|
|
141
|
-
calldata
|
|
142
|
-
);
|
|
140
|
+
const validatorMode =
|
|
141
|
+
this.resolvedMode ??
|
|
142
|
+
(await this.resolveValidatorMode(kernelAccountAddress, calldata));
|
|
143
143
|
if (validatorMode === ValidatorMode.enable) {
|
|
144
144
|
const enableData = await this.getEnableData(kernelAccountAddress);
|
|
145
145
|
const enableDataLength = enableData.length / 2 - 1;
|
|
@@ -286,14 +286,14 @@ export abstract class KernelBaseValidator {
|
|
|
286
286
|
mode = this.mode;
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
|
+
this.resolvedMode = mode;
|
|
289
290
|
return mode;
|
|
290
291
|
}
|
|
291
292
|
|
|
292
293
|
async getSignature(userOp: UserOperationRequest): Promise<Hex> {
|
|
293
|
-
const mode =
|
|
294
|
-
|
|
295
|
-
userOp.callData
|
|
296
|
-
);
|
|
294
|
+
const mode =
|
|
295
|
+
this.resolvedMode ??
|
|
296
|
+
(await this.resolveValidatorMode(userOp.sender, userOp.callData));
|
|
297
297
|
if (mode === ValidatorMode.sudo || mode === ValidatorMode.plugin) {
|
|
298
298
|
return concatHex([this.mode, await this.signUserOp(userOp)]);
|
|
299
299
|
} else {
|
|
@@ -403,8 +403,7 @@ export class SessionKeyValidator extends KernelBaseValidator {
|
|
|
403
403
|
return permissionPacked && permissionPacked.length !== 0
|
|
404
404
|
? new MerkleTree(permissionPacked, keccak256, {
|
|
405
405
|
hashLeaves: true,
|
|
406
|
-
|
|
407
|
-
sort: true,
|
|
406
|
+
sortPairs: true,
|
|
408
407
|
})
|
|
409
408
|
: new MerkleTree([pad("0x00", { size: 32 })], keccak256, {
|
|
410
409
|
hashLeaves: false,
|