@zerodev/sdk 5.1.0-beta.1 → 5.1.1
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/_cjs/accounts/kernel/createKernelAccount.js +67 -26
- package/_cjs/accounts/kernel/createKernelAccount.js.map +1 -1
- package/_cjs/accounts/utils/6492.js +31 -0
- package/_cjs/accounts/utils/6492.js.map +1 -0
- package/_cjs/accounts/utils/index.js +3 -1
- package/_cjs/accounts/utils/index.js.map +1 -1
- package/_cjs/constants.js +2 -1
- package/_cjs/constants.js.map +1 -1
- package/_cjs/index.js +3 -1
- package/_cjs/index.js.map +1 -1
- package/_esm/accounts/kernel/createKernelAccount.js +68 -27
- package/_esm/accounts/kernel/createKernelAccount.js.map +1 -1
- package/_esm/accounts/utils/6492.js +35 -0
- package/_esm/accounts/utils/6492.js.map +1 -0
- package/_esm/accounts/utils/index.js +2 -0
- package/_esm/accounts/utils/index.js.map +1 -1
- package/_esm/constants.js +1 -0
- package/_esm/constants.js.map +1 -1
- package/_esm/index.js +1 -0
- package/_esm/index.js.map +1 -1
- package/_types/accounts/kernel/createKernelAccount.d.ts.map +1 -1
- package/_types/accounts/utils/6492.d.ts +16 -0
- package/_types/accounts/utils/6492.d.ts.map +1 -0
- package/_types/accounts/utils/index.d.ts +2 -0
- package/_types/accounts/utils/index.d.ts.map +1 -1
- package/_types/clients/kernelAccountClient.d.ts +1 -1
- package/_types/constants.d.ts +1 -0
- package/_types/constants.d.ts.map +1 -1
- package/_types/index.d.ts +1 -0
- package/_types/index.d.ts.map +1 -1
- package/accounts/kernel/createKernelAccount.ts +88 -26
- package/accounts/utils/6492.ts +70 -0
- package/accounts/utils/index.ts +3 -0
- package/constants.ts +1 -0
- package/index.ts +1 -0
- package/package.json +1 -1
|
@@ -8,6 +8,8 @@ const accounts_2 = require("viem/accounts");
|
|
|
8
8
|
const actions_1 = require("viem/actions");
|
|
9
9
|
const toKernelPluginManager_js_1 = require("../utils/toKernelPluginManager.js");
|
|
10
10
|
const KernelAccountAbi_js_1 = require("./abi/KernelAccountAbi.js");
|
|
11
|
+
const _6492_js_1 = require("../utils/6492.js");
|
|
12
|
+
const constants_js_1 = require("../../constants.js");
|
|
11
13
|
const createAccountAbi = [
|
|
12
14
|
{
|
|
13
15
|
inputs: [
|
|
@@ -104,6 +106,11 @@ const getAccountAddress = async ({ client, entryPoint, initCodeProvider }) => {
|
|
|
104
106
|
entryPoint
|
|
105
107
|
});
|
|
106
108
|
};
|
|
109
|
+
const parseFactoryAddressAndCallDataFromAccountInitCode = (initCode) => {
|
|
110
|
+
const factoryAddress = `0x${initCode.substring(2, 42)}`;
|
|
111
|
+
const factoryCalldata = `0x${initCode.substring(42)}`;
|
|
112
|
+
return [factoryAddress, factoryCalldata];
|
|
113
|
+
};
|
|
107
114
|
async function createKernelAccount(client, { plugins, entryPoint = exports.KERNEL_ADDRESSES.ENTRYPOINT_V0_6, index = 0n, factoryAddress = exports.KERNEL_ADDRESSES.FACTORY_ADDRESS, accountLogicAddress = exports.KERNEL_ADDRESSES.ACCOUNT_V2_3_LOGIC, deployedAccountAddress }) {
|
|
108
115
|
const kernelPluginManager = (0, toKernelPluginManager_js_1.isKernelPluginManager)(plugins)
|
|
109
116
|
? plugins
|
|
@@ -123,14 +130,12 @@ async function createKernelAccount(client, { plugins, entryPoint = exports.KERNE
|
|
|
123
130
|
enableData: validatorInitData.enableData
|
|
124
131
|
});
|
|
125
132
|
};
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
})
|
|
133
|
-
]);
|
|
133
|
+
const accountAddress = deployedAccountAddress ??
|
|
134
|
+
await getAccountAddress({
|
|
135
|
+
client,
|
|
136
|
+
entryPoint,
|
|
137
|
+
initCodeProvider: generateInitCode
|
|
138
|
+
});
|
|
134
139
|
if (!accountAddress)
|
|
135
140
|
throw new Error("Account address not found");
|
|
136
141
|
const signHashedMessage = async (messageHash) => {
|
|
@@ -147,11 +152,22 @@ async function createKernelAccount(client, { plugins, entryPoint = exports.KERNE
|
|
|
147
152
|
"latest"
|
|
148
153
|
]
|
|
149
154
|
});
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
+
let name, version, chainId;
|
|
156
|
+
if (domain !== "0x") {
|
|
157
|
+
const decoded = (0, viem_1.decodeFunctionResult)({
|
|
158
|
+
abi: [...exports.EIP1271ABI],
|
|
159
|
+
functionName: "eip712Domain",
|
|
160
|
+
data: domain
|
|
161
|
+
});
|
|
162
|
+
name = decoded[1];
|
|
163
|
+
version = decoded[2];
|
|
164
|
+
chainId = decoded[3];
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
name = constants_js_1.KERNEL_NAME;
|
|
168
|
+
version = constants_js_1.LATEST_KERNEL_VERSION;
|
|
169
|
+
chainId = client.chain ? client.chain.id : await client.extend(viem_1.publicActions).getChainId();
|
|
170
|
+
}
|
|
155
171
|
const encoded = (0, viem_1.encodeAbiParameters)([
|
|
156
172
|
{ type: "bytes32" },
|
|
157
173
|
{ type: "bytes32" },
|
|
@@ -160,9 +176,9 @@ async function createKernelAccount(client, { plugins, entryPoint = exports.KERNE
|
|
|
160
176
|
{ type: "address" }
|
|
161
177
|
], [
|
|
162
178
|
(0, viem_1.keccak256)((0, viem_1.stringToHex)("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")),
|
|
163
|
-
(0, viem_1.keccak256)((0, viem_1.stringToHex)(
|
|
164
|
-
(0, viem_1.keccak256)((0, viem_1.stringToHex)(
|
|
165
|
-
|
|
179
|
+
(0, viem_1.keccak256)((0, viem_1.stringToHex)(name)),
|
|
180
|
+
(0, viem_1.keccak256)((0, viem_1.stringToHex)(version)),
|
|
181
|
+
BigInt(chainId),
|
|
166
182
|
accountAddress
|
|
167
183
|
]);
|
|
168
184
|
const domainSeparator = (0, viem_1.keccak256)(encoded);
|
|
@@ -177,7 +193,11 @@ async function createKernelAccount(client, { plugins, entryPoint = exports.KERNE
|
|
|
177
193
|
address: accountAddress,
|
|
178
194
|
async signMessage({ message }) {
|
|
179
195
|
const messageHash = (0, viem_1.hashMessage)(message);
|
|
180
|
-
|
|
196
|
+
const [isDeployed, signature] = await Promise.all([
|
|
197
|
+
isAccountDeployed(),
|
|
198
|
+
signHashedMessage(messageHash),
|
|
199
|
+
]);
|
|
200
|
+
return create6492Signature(isDeployed, signature);
|
|
181
201
|
},
|
|
182
202
|
async signTransaction(_, __) {
|
|
183
203
|
throw new accounts_1.SignTransactionNotSupportedBySmartAccount();
|
|
@@ -196,15 +216,38 @@ async function createKernelAccount(client, { plugins, entryPoint = exports.KERNE
|
|
|
196
216
|
types: types
|
|
197
217
|
});
|
|
198
218
|
const typedHash = (0, viem_1.hashTypedData)(typedData);
|
|
199
|
-
|
|
219
|
+
const [isDeployed, signature] = await Promise.all([
|
|
220
|
+
isAccountDeployed(),
|
|
221
|
+
signHashedMessage(typedHash),
|
|
222
|
+
]);
|
|
223
|
+
return create6492Signature(isDeployed, signature);
|
|
200
224
|
}
|
|
201
225
|
});
|
|
226
|
+
const isAccountDeployed = async () => {
|
|
227
|
+
const contractCode = await (0, actions_1.getBytecode)(client, {
|
|
228
|
+
address: accountAddress
|
|
229
|
+
});
|
|
230
|
+
return (contractCode?.length ?? 0) > 2;
|
|
231
|
+
};
|
|
232
|
+
const create6492Signature = async (isDeployed, signature) => {
|
|
233
|
+
if (isDeployed) {
|
|
234
|
+
return signature;
|
|
235
|
+
}
|
|
236
|
+
const [factoryAddress, factoryCalldata] = parseFactoryAddressAndCallDataFromAccountInitCode(await generateInitCode());
|
|
237
|
+
return (0, _6492_js_1.wrapSignatureWith6492)({
|
|
238
|
+
factoryAddress,
|
|
239
|
+
factoryCalldata,
|
|
240
|
+
signature,
|
|
241
|
+
});
|
|
242
|
+
};
|
|
202
243
|
return {
|
|
203
244
|
...account,
|
|
204
245
|
client: client,
|
|
205
246
|
publicKey: accountAddress,
|
|
206
247
|
entryPoint: entryPoint,
|
|
207
248
|
source: "kernelSmartAccount",
|
|
249
|
+
kernelPluginManager,
|
|
250
|
+
generateInitCode,
|
|
208
251
|
async getNonce() {
|
|
209
252
|
const key = await kernelPluginManager.getNonceKey();
|
|
210
253
|
return (0, permissionless_1.getAccountNonce)(client, {
|
|
@@ -213,18 +256,16 @@ async function createKernelAccount(client, { plugins, entryPoint = exports.KERNE
|
|
|
213
256
|
key
|
|
214
257
|
});
|
|
215
258
|
},
|
|
216
|
-
kernelPluginManager,
|
|
217
259
|
async signUserOperation(userOperation) {
|
|
218
260
|
return kernelPluginManager.signUserOperation(userOperation);
|
|
219
261
|
},
|
|
220
|
-
generateInitCode,
|
|
221
262
|
async getInitCode() {
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
return
|
|
227
|
-
|
|
263
|
+
if (await isAccountDeployed()) {
|
|
264
|
+
return '0x';
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
return generateInitCode();
|
|
268
|
+
}
|
|
228
269
|
},
|
|
229
270
|
async encodeDeployCallData(_tx) {
|
|
230
271
|
return (0, viem_1.encodeFunctionData)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createKernelAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/createKernelAccount.ts"],"names":[],"mappings":";;;AAAA,mDAAkE;AAClE,sDAGgC;AAChC,+
|
|
1
|
+
{"version":3,"file":"createKernelAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/createKernelAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyEIP6492Signature = exports.wrapSignatureWith6492 = void 0;
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const wrapSignatureWith6492 = ({ factoryAddress, factoryCalldata, signature, }) => {
|
|
6
|
+
return (0, viem_1.concat)([
|
|
7
|
+
(0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("address, bytes, bytes"), [
|
|
8
|
+
factoryAddress,
|
|
9
|
+
factoryCalldata,
|
|
10
|
+
signature,
|
|
11
|
+
]),
|
|
12
|
+
"0x6492649264926492649264926492649264926492649264926492649264926492",
|
|
13
|
+
]);
|
|
14
|
+
};
|
|
15
|
+
exports.wrapSignatureWith6492 = wrapSignatureWith6492;
|
|
16
|
+
const universalValidatorByteCode = "0x60806040523480156200001157600080fd5b50604051620007003803806200070083398101604081905262000034916200056f565b6000620000438484846200004f565b9050806000526001601ff35b600080846001600160a01b0316803b806020016040519081016040528181526000908060200190933c90507f6492649264926492649264926492649264926492649264926492649264926492620000a68462000451565b036200021f57600060608085806020019051810190620000c79190620005ce565b8651929550909350915060000362000192576000836001600160a01b031683604051620000f5919062000643565b6000604051808303816000865af19150503d806000811462000134576040519150601f19603f3d011682016040523d82523d6000602084013e62000139565b606091505b5050905080620001905760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b505b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90620001c4908b90869060040162000661565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200069d565b6001600160e01b031916149450505050506200044a565b805115620002b157604051630b135d3f60e11b808252906001600160a01b03871690631626ba7e9062000259908890889060040162000661565b602060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d91906200069d565b6001600160e01b031916149150506200044a565b8251604114620003195760405162461bcd60e51b815260206004820152603a6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e677468000000000000606482015260840162000187565b620003236200046b565b506020830151604080850151855186939260009185919081106200034b576200034b620006c9565b016020015160f81c9050601b81148015906200036b57508060ff16601c14155b15620003cf5760405162461bcd60e51b815260206004820152603b6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c75650000000000606482015260840162000187565b6040805160008152602081018083528a905260ff83169181019190915260608101849052608081018390526001600160a01b038a169060019060a0016020604051602081039080840390855afa1580156200042e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614955050505050505b9392505050565b60006020825110156200046357600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146200049f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004d5578181015183820152602001620004bb565b50506000910152565b600082601f830112620004f057600080fd5b81516001600160401b03808211156200050d576200050d620004a2565b604051601f8301601f19908116603f01168101908282118183101715620005385762000538620004a2565b816040528381528660208588010111156200055257600080fd5b62000565846020830160208901620004b8565b9695505050505050565b6000806000606084860312156200058557600080fd5b8351620005928162000489565b6020850151604086015191945092506001600160401b03811115620005b657600080fd5b620005c486828701620004de565b9150509250925092565b600080600060608486031215620005e457600080fd5b8351620005f18162000489565b60208501519093506001600160401b03808211156200060f57600080fd5b6200061d87838801620004de565b935060408601519150808211156200063457600080fd5b50620005c486828701620004de565b6000825162000657818460208701620004b8565b9190910192915050565b828152604060208201526000825180604084015262000688816060850160208701620004b8565b601f01601f1916919091016060019392505050565b600060208284031215620006b057600080fd5b81516001600160e01b0319811681146200044a57600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572";
|
|
17
|
+
const verifyEIP6492Signature = async ({ signer, hash, signature, client, }) => {
|
|
18
|
+
const result = await client.call({
|
|
19
|
+
data: (0, viem_1.concat)([
|
|
20
|
+
universalValidatorByteCode,
|
|
21
|
+
(0, viem_1.encodeAbiParameters)((0, viem_1.parseAbiParameters)("address, bytes32, bytes"), [
|
|
22
|
+
signer,
|
|
23
|
+
hash,
|
|
24
|
+
signature,
|
|
25
|
+
]),
|
|
26
|
+
]),
|
|
27
|
+
});
|
|
28
|
+
return result.data === "0x01";
|
|
29
|
+
};
|
|
30
|
+
exports.verifyEIP6492Signature = verifyEIP6492Signature;
|
|
31
|
+
//# sourceMappingURL=6492.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"6492.js","sourceRoot":"","sources":["../../../accounts/utils/6492.ts"],"names":[],"mappings":";;;AAEA,+BAQc;AAeP,MAAM,qBAAqB,GAAG,CAAC,EACpC,cAAc,EACd,eAAe,EACf,SAAS,GACU,EAAQ,EAAE;IAQ7B,OAAO,IAAA,aAAM,EAAC;QACZ,IAAA,0BAAmB,EAAC,IAAA,yBAAkB,EAAC,uBAAuB,CAAC,EAAE;YAC/D,cAAc;YACd,eAAe;YACf,SAAS;SACV,CAAC;QACF,oEAAoE;KACrE,CAAC,CAAC;AACL,CAAC,CAAC;AApBW,QAAA,qBAAqB,yBAoBhC;AAGF,MAAM,0BAA0B,GAC9B,ogHAAogH,CAAC;AAEhgH,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,MAAM,EACN,IAAI,EACJ,SAAS,EACT,MAAM,GACuB,EAAoB,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,EAAE,IAAA,aAAM,EAAC;YACX,0BAA0B;YAC1B,IAAA,0BAAmB,EAAC,IAAA,yBAAkB,EAAC,yBAAyB,CAAC,EAAE;gBACjE,MAAM;gBACN,IAAI;gBACJ,SAAS;aACV,CAAC;SACH,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AAChC,CAAC,CAAC;AAlBW,QAAA,sBAAsB,0BAkBjC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toKernelPluginManager = void 0;
|
|
3
|
+
exports.verifyEIP6492Signature = exports.toKernelPluginManager = void 0;
|
|
4
4
|
const toKernelPluginManager_js_1 = require("./toKernelPluginManager.js");
|
|
5
5
|
Object.defineProperty(exports, "toKernelPluginManager", { enumerable: true, get: function () { return toKernelPluginManager_js_1.toKernelPluginManager; } });
|
|
6
|
+
const _6492_js_1 = require("./6492.js");
|
|
7
|
+
Object.defineProperty(exports, "verifyEIP6492Signature", { enumerable: true, get: function () { return _6492_js_1.verifyEIP6492Signature; } });
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../accounts/utils/index.ts"],"names":[],"mappings":";;;AAAA,yEAAkE;AACzD,sGADA,gDAAqB,OACA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../accounts/utils/index.ts"],"names":[],"mappings":";;;AAAA,yEAAkE;AACzD,sGADA,gDAAqB,OACA;AAE9B,wCAAkD;AACzC,uGADA,iCAAsB,OACA"}
|
package/_cjs/constants.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LATEST_KERNEL_VERSION = exports.TOKEN_ACTION = exports.KernelImplToVersionMap = exports.DUMMY_ECDSA_SIG = void 0;
|
|
3
|
+
exports.LATEST_KERNEL_VERSION = exports.KERNEL_NAME = exports.TOKEN_ACTION = exports.KernelImplToVersionMap = exports.DUMMY_ECDSA_SIG = void 0;
|
|
4
4
|
exports.DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c";
|
|
5
5
|
exports.KernelImplToVersionMap = {
|
|
6
6
|
"0x8dD4DBB54d8A8Cf0DE6F9CCC4609470A30EfF18C": "0.2.2",
|
|
@@ -8,5 +8,6 @@ exports.KernelImplToVersionMap = {
|
|
|
8
8
|
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab": "0.2.3"
|
|
9
9
|
};
|
|
10
10
|
exports.TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
11
|
+
exports.KERNEL_NAME = 'Kernel';
|
|
11
12
|
exports.LATEST_KERNEL_VERSION = "0.2.3";
|
|
12
13
|
//# sourceMappingURL=constants.js.map
|
package/_cjs/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GACxB,sIAAsI,CAAA;AAE7H,QAAA,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;CACxD,CAAA;AACY,QAAA,YAAY,GAAG,4CAA4C,CAAA;AAC3D,QAAA,qBAAqB,GAAG,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GACxB,sIAAsI,CAAA;AAE7H,QAAA,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;CACxD,CAAA;AACY,QAAA,YAAY,GAAG,4CAA4C,CAAA;AAC3D,QAAA,WAAW,GAAG,QAAQ,CAAA;AACtB,QAAA,qBAAqB,GAAG,OAAO,CAAA"}
|
package/_cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.gasTokenAddresses = exports.constants = exports.TokenActionsAbi = exports.KernelFactoryAbi = exports.KernelAccountAbi = exports.createKernelAccountClient = exports.createZeroDevPaymasterClient = exports.kernelAccountClientActions = exports.zerodevPaymasterActions = exports.sponsorUserOperation = exports.EIP1271ABI = exports.addressToEmptyAccount = exports.KERNEL_ADDRESSES = exports.createKernelAccount = void 0;
|
|
3
|
+
exports.verifyEIP6492Signature = exports.gasTokenAddresses = exports.constants = exports.TokenActionsAbi = exports.KernelFactoryAbi = exports.KernelAccountAbi = exports.createKernelAccountClient = exports.createZeroDevPaymasterClient = exports.kernelAccountClientActions = exports.zerodevPaymasterActions = exports.sponsorUserOperation = exports.EIP1271ABI = exports.addressToEmptyAccount = exports.KERNEL_ADDRESSES = exports.createKernelAccount = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
var index_js_1 = require("./accounts/index.js");
|
|
6
6
|
Object.defineProperty(exports, "createKernelAccount", { enumerable: true, get: function () { return index_js_1.createKernelAccount; } });
|
|
@@ -26,4 +26,6 @@ exports.constants = require("./constants.js");
|
|
|
26
26
|
tslib_1.__exportStar(require("./utils.js"), exports);
|
|
27
27
|
var gasTokenAddresses_js_1 = require("./gasTokenAddresses.js");
|
|
28
28
|
Object.defineProperty(exports, "gasTokenAddresses", { enumerable: true, get: function () { return gasTokenAddresses_js_1.gasTokenAddresses; } });
|
|
29
|
+
var utils_1 = require("./accounts/utils");
|
|
30
|
+
Object.defineProperty(exports, "verifyEIP6492Signature", { enumerable: true, get: function () { return utils_1.verifyEIP6492Signature; } });
|
|
29
31
|
//# sourceMappingURL=index.js.map
|
package/_cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,gDAM4B;AALxB,+GAAA,mBAAmB,OAAA;AAEnB,4GAAA,gBAAgB,OAAA;AAChB,iHAAA,qBAAqB,OAAA;AACrB,sGAAA,UAAU,OAAA;AAEd,uFAIoD;AAHhD,+HAAA,oBAAoB,OAAA;AAIxB,4DAKuC;AAJnC,oHAAA,uBAAuB,OAAA;AAEvB,uHAAA,0BAA0B,OAAA;AAG9B,mEAGqC;AAFjC,kIAAA,4BAA4B,OAAA;AAGhC,2EAGyC;AAFrC,mIAAA,yBAAyB,OAAA;AAQ7B,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,8CAA2C;AAC3C,qDAA0B;AAC1B,+DAG+B;AAF3B,yHAAA,iBAAiB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,gDAM4B;AALxB,+GAAA,mBAAmB,OAAA;AAEnB,4GAAA,gBAAgB,OAAA;AAChB,iHAAA,qBAAqB,OAAA;AACrB,sGAAA,UAAU,OAAA;AAEd,uFAIoD;AAHhD,+HAAA,oBAAoB,OAAA;AAIxB,4DAKuC;AAJnC,oHAAA,uBAAuB,OAAA;AAEvB,uHAAA,0BAA0B,OAAA;AAG9B,mEAGqC;AAFjC,kIAAA,4BAA4B,OAAA;AAGhC,2EAGyC;AAFrC,mIAAA,yBAAyB,OAAA;AAQ7B,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,iFAA4E;AAAnE,uHAAA,gBAAgB,OAAA;AACzB,+EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,8CAA2C;AAC3C,qDAA0B;AAC1B,+DAG+B;AAF3B,yHAAA,iBAAiB,OAAA;AAGrB,0CAEyB;AADrB,+GAAA,sBAAsB,OAAA"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { getAccountNonce, getSenderAddress } from "permissionless";
|
|
2
2
|
import { SignTransactionNotSupportedBySmartAccount } from "permissionless/accounts";
|
|
3
|
-
import { concatHex, decodeFunctionResult, encodeAbiParameters, encodeDeployData, encodeFunctionData, getTypesForEIP712Domain, hashMessage, hashTypedData, keccak256, parseAbi, stringToHex, validateTypedData } from "viem";
|
|
3
|
+
import { concatHex, decodeFunctionResult, encodeAbiParameters, encodeDeployData, encodeFunctionData, getTypesForEIP712Domain, hashMessage, hashTypedData, keccak256, parseAbi, stringToHex, validateTypedData, publicActions, } from "viem";
|
|
4
4
|
import { toAccount } from "viem/accounts";
|
|
5
5
|
import { getBytecode } from "viem/actions";
|
|
6
6
|
import { isKernelPluginManager, toKernelPluginManager } from "../utils/toKernelPluginManager.js";
|
|
7
7
|
import { KernelExecuteAbi, KernelInitAbi } from "./abi/KernelAccountAbi.js";
|
|
8
|
+
import { wrapSignatureWith6492 } from "../utils/6492.js";
|
|
9
|
+
import { KERNEL_NAME, LATEST_KERNEL_VERSION } from "../../constants.js";
|
|
8
10
|
/**
|
|
9
11
|
* The account creation ABI for a kernel smart account (from the KernelFactory)
|
|
10
12
|
*/
|
|
@@ -126,6 +128,11 @@ const getAccountAddress = async ({ client, entryPoint, initCodeProvider }) => {
|
|
|
126
128
|
entryPoint
|
|
127
129
|
});
|
|
128
130
|
};
|
|
131
|
+
const parseFactoryAddressAndCallDataFromAccountInitCode = (initCode) => {
|
|
132
|
+
const factoryAddress = `0x${initCode.substring(2, 42)}`;
|
|
133
|
+
const factoryCalldata = `0x${initCode.substring(42)}`;
|
|
134
|
+
return [factoryAddress, factoryCalldata];
|
|
135
|
+
};
|
|
129
136
|
/**
|
|
130
137
|
* Build a kernel smart account from a private key, that use the ECDSA signer behind the scene
|
|
131
138
|
* @param client
|
|
@@ -158,14 +165,12 @@ export async function createKernelAccount(client, { plugins, entryPoint = KERNEL
|
|
|
158
165
|
});
|
|
159
166
|
};
|
|
160
167
|
// Fetch account address and chain id
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
})
|
|
168
|
-
]);
|
|
168
|
+
const accountAddress = deployedAccountAddress ??
|
|
169
|
+
await getAccountAddress({
|
|
170
|
+
client,
|
|
171
|
+
entryPoint,
|
|
172
|
+
initCodeProvider: generateInitCode
|
|
173
|
+
});
|
|
169
174
|
if (!accountAddress)
|
|
170
175
|
throw new Error("Account address not found");
|
|
171
176
|
const signHashedMessage = async (messageHash) => {
|
|
@@ -182,11 +187,22 @@ export async function createKernelAccount(client, { plugins, entryPoint = KERNEL
|
|
|
182
187
|
"latest"
|
|
183
188
|
]
|
|
184
189
|
});
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
+
let name, version, chainId;
|
|
191
|
+
if (domain !== "0x") {
|
|
192
|
+
const decoded = decodeFunctionResult({
|
|
193
|
+
abi: [...EIP1271ABI],
|
|
194
|
+
functionName: "eip712Domain",
|
|
195
|
+
data: domain
|
|
196
|
+
});
|
|
197
|
+
name = decoded[1];
|
|
198
|
+
version = decoded[2];
|
|
199
|
+
chainId = decoded[3];
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
name = KERNEL_NAME;
|
|
203
|
+
version = LATEST_KERNEL_VERSION;
|
|
204
|
+
chainId = client.chain ? client.chain.id : await client.extend(publicActions).getChainId();
|
|
205
|
+
}
|
|
190
206
|
const encoded = encodeAbiParameters([
|
|
191
207
|
{ type: "bytes32" },
|
|
192
208
|
{ type: "bytes32" },
|
|
@@ -195,9 +211,9 @@ export async function createKernelAccount(client, { plugins, entryPoint = KERNEL
|
|
|
195
211
|
{ type: "address" }
|
|
196
212
|
], [
|
|
197
213
|
keccak256(stringToHex("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)")),
|
|
198
|
-
keccak256(stringToHex(
|
|
199
|
-
keccak256(stringToHex(
|
|
200
|
-
|
|
214
|
+
keccak256(stringToHex(name)),
|
|
215
|
+
keccak256(stringToHex(version)),
|
|
216
|
+
BigInt(chainId),
|
|
201
217
|
accountAddress
|
|
202
218
|
]);
|
|
203
219
|
const domainSeparator = keccak256(encoded);
|
|
@@ -213,7 +229,11 @@ export async function createKernelAccount(client, { plugins, entryPoint = KERNEL
|
|
|
213
229
|
address: accountAddress,
|
|
214
230
|
async signMessage({ message }) {
|
|
215
231
|
const messageHash = hashMessage(message);
|
|
216
|
-
|
|
232
|
+
const [isDeployed, signature] = await Promise.all([
|
|
233
|
+
isAccountDeployed(),
|
|
234
|
+
signHashedMessage(messageHash),
|
|
235
|
+
]);
|
|
236
|
+
return create6492Signature(isDeployed, signature);
|
|
217
237
|
},
|
|
218
238
|
async signTransaction(_, __) {
|
|
219
239
|
throw new SignTransactionNotSupportedBySmartAccount();
|
|
@@ -234,15 +254,38 @@ export async function createKernelAccount(client, { plugins, entryPoint = KERNEL
|
|
|
234
254
|
types: types
|
|
235
255
|
});
|
|
236
256
|
const typedHash = hashTypedData(typedData);
|
|
237
|
-
|
|
257
|
+
const [isDeployed, signature] = await Promise.all([
|
|
258
|
+
isAccountDeployed(),
|
|
259
|
+
signHashedMessage(typedHash),
|
|
260
|
+
]);
|
|
261
|
+
return create6492Signature(isDeployed, signature);
|
|
238
262
|
}
|
|
239
263
|
});
|
|
264
|
+
const isAccountDeployed = async () => {
|
|
265
|
+
const contractCode = await getBytecode(client, {
|
|
266
|
+
address: accountAddress
|
|
267
|
+
});
|
|
268
|
+
return (contractCode?.length ?? 0) > 2;
|
|
269
|
+
};
|
|
270
|
+
const create6492Signature = async (isDeployed, signature) => {
|
|
271
|
+
if (isDeployed) {
|
|
272
|
+
return signature;
|
|
273
|
+
}
|
|
274
|
+
const [factoryAddress, factoryCalldata] = parseFactoryAddressAndCallDataFromAccountInitCode(await generateInitCode());
|
|
275
|
+
return wrapSignatureWith6492({
|
|
276
|
+
factoryAddress,
|
|
277
|
+
factoryCalldata,
|
|
278
|
+
signature,
|
|
279
|
+
});
|
|
280
|
+
};
|
|
240
281
|
return {
|
|
241
282
|
...account,
|
|
242
283
|
client: client,
|
|
243
284
|
publicKey: accountAddress,
|
|
244
285
|
entryPoint: entryPoint,
|
|
245
286
|
source: "kernelSmartAccount",
|
|
287
|
+
kernelPluginManager,
|
|
288
|
+
generateInitCode,
|
|
246
289
|
// Get the nonce of the smart account
|
|
247
290
|
async getNonce() {
|
|
248
291
|
const key = await kernelPluginManager.getNonceKey();
|
|
@@ -252,20 +295,18 @@ export async function createKernelAccount(client, { plugins, entryPoint = KERNEL
|
|
|
252
295
|
key
|
|
253
296
|
});
|
|
254
297
|
},
|
|
255
|
-
kernelPluginManager,
|
|
256
298
|
// Sign a user operation
|
|
257
299
|
async signUserOperation(userOperation) {
|
|
258
300
|
return kernelPluginManager.signUserOperation(userOperation);
|
|
259
301
|
},
|
|
260
|
-
generateInitCode,
|
|
261
302
|
// Encode the init code
|
|
262
303
|
async getInitCode() {
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
return
|
|
268
|
-
|
|
304
|
+
if (await isAccountDeployed()) {
|
|
305
|
+
return '0x';
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
return generateInitCode();
|
|
309
|
+
}
|
|
269
310
|
},
|
|
270
311
|
// Encode the deploy call data
|
|
271
312
|
async encodeDeployCallData(_tx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createKernelAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/createKernelAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EACH,yCAAyC,EAE5C,MAAM,yBAAyB,CAAA;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"createKernelAccount.js","sourceRoot":"","sources":["../../../accounts/kernel/createKernelAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAClE,OAAO,EACH,yCAAyC,EAE5C,MAAM,yBAAyB,CAAA;AAChC,OAAO,EASH,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,aAAa,EACb,SAAS,EACT,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,aAAa,GAChB,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAM1C,OAAO,EACH,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAWvE;;GAEG;AACH,MAAM,gBAAgB,GAAG;IACrB;QACI,MAAM,EAAE;YACJ;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,SAAS;aAClB;YACD;gBACI,YAAY,EAAE,OAAO;gBACrB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;aAChB;YACD;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE;YACL;gBACI,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAClB;SACJ;QACD,eAAe,EAAE,SAAS;QAC1B,IAAI,EAAE,UAAU;KACnB;CACK,CAAA;AAEV,wKAAwK;AACxK,2JAA2J;AAC3J,MAAM,iBAAiB,GAAG,4CAA4C,CAAA;AAEtE,MAAM,aAAa,GAAG,QAAQ,CAAC;IAC3B,yGAAyG;IACzG,wHAAwH;CAC3H,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE;YACL,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;YAC1D,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;YACxD,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;YAC3D,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC7D;gBACI,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,SAAS;gBACf,YAAY,EAAE,SAAS;aAC1B;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE;SACvE;QACD,eAAe,EAAE,MAAM;KAC1B;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE;YACJ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE;YAC1D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE;SAC9D;QACD,OAAO,EAAE;YACL,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE;SACjE;QACD,eAAe,EAAE,MAAM;KAC1B;CACK,CAAA;AACV;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAIzB;IACA,kBAAkB,EAAE,4CAA4C;IAChE,eAAe,EAAE,4CAA4C;IAC7D,eAAe,EAAE,4CAA4C;CAChE,CAAA;AAED;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAG,KAAK,EAAE,EAC9B,KAAK,EACL,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EAOb,EAAgB,EAAE;IACf,wCAAwC;IACxC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;QAC1C,GAAG,EAAE,aAAa;QAClB,YAAY,EAAE,YAAY;QAC1B,IAAI,EAAE,CAAC,gBAAgB,EAAE,UAAU,CAAC;KACvC,CAAC,CAAA;IAEF,8BAA8B;IAC9B,OAAO,SAAS,CAAC;QACb,cAAc;QACd,kBAAkB,CAAC;YACf,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,KAAK,CAAC;SACzD,CAAQ;KACZ,CAAC,CAAA;AACN,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,iBAAiB,GAAG,KAAK,EAG7B,EACE,MAAM,EACN,UAAU,EACV,gBAAgB,EAKnB,EAAoB,EAAE;IACnB,sCAAsC;IACtC,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAA;IAEzC,gDAAgD;IAChD,OAAO,gBAAgB,CAAC,MAAM,EAAE;QAC5B,QAAQ;QACR,UAAU;KACb,CAAC,CAAA;AACN,CAAC,CAAA;AAED,MAAM,iDAAiD,GAAG,CAAC,QAAa,EAAkB,EAAE;IACxF,MAAM,cAAc,GAAG,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAa,CAAA;IAClE,MAAM,eAAe,GAAG,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,EAAS,CAAA;IAC5D,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC,CAAA;AAC5C,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAIrC,MAA6C,EAC7C,EACI,OAAO,EACP,UAAU,GAAG,gBAAgB,CAAC,eAAe,EAC7C,KAAK,GAAG,EAAE,EACV,cAAc,GAAG,gBAAgB,CAAC,eAAe,EACjD,mBAAmB,GAAG,gBAAgB,CAAC,kBAAkB,EACzD,sBAAsB,EAQzB;IAED,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,OAAO,CAAC;QACtD,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,EAAE;YAClC,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;SACvD,CAAC,CAAA;IACN,yDAAyD;IACzD,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,iBAAiB,GACnB,MAAM,mBAAmB,CAAC,oBAAoB,EAAE,CAAA;QACpD,OAAO,kBAAkB,CAAC;YACtB,KAAK;YACL,cAAc;YACd,mBAAmB;YACnB,gBAAgB,EAAE,iBAAiB,CAAC,gBAAgB;YACpD,UAAU,EAAE,iBAAiB,CAAC,UAAU;SAC3C,CAAC,CAAA;IACN,CAAC,CAAA;IAED,qCAAqC;IACrC,MAAM,cAAc,GAAG,sBAAsB;QACzC,MAAM,iBAAiB,CAAqB;YACxC,MAAM;YACN,UAAU;YACV,gBAAgB,EAAE,gBAAgB;SACrC,CAAC,CAAA;IAEN,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAEjE,MAAM,iBAAiB,GAAG,KAAK,EAAE,WAAgB,EAAgB,EAAE;QAC/D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;YAChC,MAAM,EAAE,UAAU;YAClB,MAAM,EAAE;gBACJ;oBACI,EAAE,EAAE,cAAc;oBAClB,IAAI,EAAE,kBAAkB,CAAC;wBACrB,GAAG,EAAE,UAAU;wBACf,YAAY,EAAE,cAAc;qBAC/B,CAAC;iBACL;gBACD,QAAQ;aACX;SACJ,CAAC,CAAA;QAEF,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,CAAA;QAE1B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,oBAAoB,CAAC;gBACjC,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC;gBACpB,YAAY,EAAE,cAAc;gBAC5B,IAAI,EAAE,MAAM;aACf,CAAC,CAAA;YAEF,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACjB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;YACpB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACxB,CAAC;aAAM,CAAC;YACJ,IAAI,GAAG,WAAW,CAAA;YAClB,OAAO,GAAG,qBAAqB,CAAA;YAC/B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,EAAE,CAAA;QAC9F,CAAC;QAGD,MAAM,OAAO,GAAG,mBAAmB,CAC/B;YACI,EAAE,IAAI,EAAE,SAAS,EAAE;YACnB,EAAE,IAAI,EAAE,SAAS,EAAE;YACnB,EAAE,IAAI,EAAE,SAAS,EAAE;YACnB,EAAE,IAAI,EAAE,SAAS,EAAE;YACnB,EAAE,IAAI,EAAE,SAAS,EAAE;SACtB,EACD;YACI,SAAS,CACL,WAAW,CACP,oFAAoF,CACvF,CACJ;YACD,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC5B,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC;YACf,cAAc;SACjB,CACJ,CAAA;QAED,MAAM,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;QAC1C,MAAM,MAAM,GAAG,SAAS,CACpB,SAAS,CAAC,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC,CACtD,CAAA;QACD,OAAO,mBAAmB,CAAC,WAAW,CAAC;YACnC,OAAO,EAAE;gBACL,GAAG,EAAE,MAAM;aACd;SACJ,CAAC,CAAA;IACN,CAAC,CAAA;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAG,SAAS,CAAC;QACtB,OAAO,EAAE,cAAc;QACvB,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YACzB,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC9C,iBAAiB,EAAE;gBACnB,iBAAiB,CAAC,WAAW,CAAC;aACjC,CAAC,CAAA;YACF,OAAO,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QACrD,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,IAAI,yCAAyC,EAAE,CAAA;QACzD,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,SAAS;YACzB,MAAM,KAAK,GAAG;gBACV,YAAY,EAAE,uBAAuB,CAAC;oBAClC,MAAM,EAAE,SAAS,CAAC,MAAM;iBAC3B,CAAC;gBACF,GAAG,SAAS,CAAC,KAAK;aACrB,CAAA;YAED,uFAAuF;YACvF,qDAAqD;YACrD,iBAAiB,CAAC;gBACd,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,KAAK,EAAE,KAAK;aACQ,CAAC,CAAA;YAEzB,MAAM,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC,CAAA;YAC1C,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC9C,iBAAiB,EAAE;gBACnB,iBAAiB,CAAC,SAAS,CAAC;aAC/B,CAAC,CAAA;YACF,OAAO,mBAAmB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;QACrD,CAAC;KACJ,CAAC,CAAA;IAEF,MAAM,iBAAiB,GAAG,KAAK,IAAsB,EAAE;QACnD,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;YAC3C,OAAO,EAAE,cAAc;SAC1B,CAAC,CAAA;QAEF,OAAO,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IAC1C,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,KAAK,EAC7B,UAAmB,EACnB,SAAe,EACF,EAAE;QACf,IAAI,UAAU,EAAE,CAAC;YACb,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,cAAc,EAAE,eAAe,CAAC,GACnC,iDAAiD,CAAC,MAAM,gBAAgB,EAAE,CAAC,CAAA;QAE/E,OAAO,qBAAqB,CAAC;YACzB,cAAc;YACd,eAAe;YACf,SAAS;SACZ,CAAC,CAAA;IACN,CAAC,CAAA;IAED,OAAO;QACH,GAAG,OAAO;QACV,MAAM,EAAE,MAAM;QACd,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,UAAU;QACtB,MAAM,EAAE,oBAAoB;QAC5B,mBAAmB;QACnB,gBAAgB;QAEhB,qCAAqC;QACrC,KAAK,CAAC,QAAQ;YACV,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,WAAW,EAAE,CAAA;YACnD,OAAO,eAAe,CAAC,MAAM,EAAE;gBAC3B,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,UAAU;gBACtB,GAAG;aACN,CAAC,CAAA;QACN,CAAC;QAED,wBAAwB;QACxB,KAAK,CAAC,iBAAiB,CAAC,aAAa;YACjC,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC/D,CAAC;QAED,uBAAuB;QACvB,KAAK,CAAC,WAAW;YACb,IAAI,MAAM,iBAAiB,EAAE,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAA;YACf,CAAC;iBAAM,CAAC;gBACJ,OAAO,gBAAgB,EAAE,CAAA;YAC7B,CAAC;QACL,CAAC;QAED,8BAA8B;QAC9B,KAAK,CAAC,oBAAoB,CAAC,GAAG;YAC1B,OAAO,kBAAkB,CAAC;gBACtB,GAAG,EAAE,gBAAgB;gBACrB,YAAY,EAAE,qBAAqB;gBACnC,IAAI,EAAE;oBACF,iBAAiB;oBACjB,kBAAkB,CAAC;wBACf,GAAG,EAAE,aAAa;wBAClB,YAAY,EAAE,eAAe;wBAC7B,IAAI,EAAE;4BACF,EAAE;4BACF,gBAAgB,CAAC;gCACb,GAAG,EAAE,GAAG,CAAC,GAAG;gCACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ;gCACtB,IAAI,EAAE,GAAG,CAAC,IAAI;6BACa,CAAC;yBACnC;qBACJ,CAAC;iBACL;aACJ,CAAC,CAAA;QACN,CAAC;QAED,gBAAgB;QAChB,KAAK,CAAC,cAAc,CAAC,GAAG;YACpB,MAAM,EAAE,GAAG,GAA+B,CAAA;YAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,wBAAwB;gBACxB,OAAO,kBAAkB,CAAC;oBACtB,GAAG,EAAE,gBAAgB;oBACrB,YAAY,EAAE,cAAc;oBAC5B,IAAI,EAAE;wBACF,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;4BACX,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;gCAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;4BAChD,CAAC;4BACD,OAAO;gCACH,EAAE,EAAE,GAAG,CAAC,EAAE;gCACV,KAAK,EAAE,GAAG,CAAC,KAAK;gCAChB,IAAI,EAAE,GAAG,CAAC,IAAI;6BACjB,CAAA;wBACL,CAAC,CAAC;qBACL;iBACJ,CAAC,CAAA;YACN,CAAC;YAED,oBAAoB;YACpB,IAAI,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACzC,IAAI,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvD,OAAO,EAAE,CAAC,IAAI,CAAA;gBAClB,CAAC;gBACD,OAAO,kBAAkB,CAAC;oBACtB,GAAG,EAAE,gBAAgB;oBACrB,YAAY,EAAE,SAAS;oBACvB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;iBACtC,CAAC,CAAA;YACN,CAAC;YAED,IAAI,EAAE,CAAC,QAAQ,KAAK,cAAc,EAAE,CAAC;gBACjC,OAAO,kBAAkB,CAAC;oBACtB,GAAG,EAAE,gBAAgB;oBACrB,YAAY,EAAE,qBAAqB;oBACnC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;iBACzB,CAAC,CAAA;YACN,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;QACxC,CAAC;QAED,6BAA6B;QAC7B,KAAK,CAAC,iBAAiB,CAAC,aAAa;YACjC,OAAO,mBAAmB,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAA;QAC/D,CAAC;KACJ,CAAA;AACL,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// copied from: https://github.com/alchemyplatform/aa-sdk/blob/266c9757cd721ef0bd97d04c0b592a329f8a9da5/packages/core/src/signer/utils.ts
|
|
2
|
+
import { concat, encodeAbiParameters, parseAbiParameters, } from "viem";
|
|
3
|
+
export const wrapSignatureWith6492 = ({ factoryAddress, factoryCalldata, signature, }) => {
|
|
4
|
+
// wrap the signature as follows: https://eips.ethereum.org/EIPS/eip-6492
|
|
5
|
+
// concat(
|
|
6
|
+
// abi.encode(
|
|
7
|
+
// (create2Factory, factoryCalldata, originalERC1271Signature),
|
|
8
|
+
// (address, bytes, bytes)),
|
|
9
|
+
// magicBytes
|
|
10
|
+
// )
|
|
11
|
+
return concat([
|
|
12
|
+
encodeAbiParameters(parseAbiParameters("address, bytes, bytes"), [
|
|
13
|
+
factoryAddress,
|
|
14
|
+
factoryCalldata,
|
|
15
|
+
signature,
|
|
16
|
+
]),
|
|
17
|
+
"0x6492649264926492649264926492649264926492649264926492649264926492",
|
|
18
|
+
]);
|
|
19
|
+
};
|
|
20
|
+
// defined in https://github.com/AmbireTech/signature-validator/blob/main/index.ts#L13C17-L13C17
|
|
21
|
+
const universalValidatorByteCode = "0x60806040523480156200001157600080fd5b50604051620007003803806200070083398101604081905262000034916200056f565b6000620000438484846200004f565b9050806000526001601ff35b600080846001600160a01b0316803b806020016040519081016040528181526000908060200190933c90507f6492649264926492649264926492649264926492649264926492649264926492620000a68462000451565b036200021f57600060608085806020019051810190620000c79190620005ce565b8651929550909350915060000362000192576000836001600160a01b031683604051620000f5919062000643565b6000604051808303816000865af19150503d806000811462000134576040519150601f19603f3d011682016040523d82523d6000602084013e62000139565b606091505b5050905080620001905760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b505b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90620001c4908b90869060040162000661565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200069d565b6001600160e01b031916149450505050506200044a565b805115620002b157604051630b135d3f60e11b808252906001600160a01b03871690631626ba7e9062000259908890889060040162000661565b602060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d91906200069d565b6001600160e01b031916149150506200044a565b8251604114620003195760405162461bcd60e51b815260206004820152603a6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e677468000000000000606482015260840162000187565b620003236200046b565b506020830151604080850151855186939260009185919081106200034b576200034b620006c9565b016020015160f81c9050601b81148015906200036b57508060ff16601c14155b15620003cf5760405162461bcd60e51b815260206004820152603b6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c75650000000000606482015260840162000187565b6040805160008152602081018083528a905260ff83169181019190915260608101849052608081018390526001600160a01b038a169060019060a0016020604051602081039080840390855afa1580156200042e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614955050505050505b9392505050565b60006020825110156200046357600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146200049f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004d5578181015183820152602001620004bb565b50506000910152565b600082601f830112620004f057600080fd5b81516001600160401b03808211156200050d576200050d620004a2565b604051601f8301601f19908116603f01168101908282118183101715620005385762000538620004a2565b816040528381528660208588010111156200055257600080fd5b62000565846020830160208901620004b8565b9695505050505050565b6000806000606084860312156200058557600080fd5b8351620005928162000489565b6020850151604086015191945092506001600160401b03811115620005b657600080fd5b620005c486828701620004de565b9150509250925092565b600080600060608486031215620005e457600080fd5b8351620005f18162000489565b60208501519093506001600160401b03808211156200060f57600080fd5b6200061d87838801620004de565b935060408601519150808211156200063457600080fd5b50620005c486828701620004de565b6000825162000657818460208701620004b8565b9190910192915050565b828152604060208201526000825180604084015262000688816060850160208701620004b8565b601f01601f1916919091016060019392505050565b600060208284031215620006b057600080fd5b81516001600160e01b0319811681146200044a57600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572";
|
|
22
|
+
export const verifyEIP6492Signature = async ({ signer, hash, signature, client, }) => {
|
|
23
|
+
const result = await client.call({
|
|
24
|
+
data: concat([
|
|
25
|
+
universalValidatorByteCode,
|
|
26
|
+
encodeAbiParameters(parseAbiParameters("address, bytes32, bytes"), [
|
|
27
|
+
signer,
|
|
28
|
+
hash,
|
|
29
|
+
signature,
|
|
30
|
+
]),
|
|
31
|
+
]),
|
|
32
|
+
});
|
|
33
|
+
return result.data === "0x01";
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=6492.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"6492.js","sourceRoot":"","sources":["../../../accounts/utils/6492.ts"],"names":[],"mappings":"AAAA,yIAAyI;AAEzI,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,kBAAkB,GAKnB,MAAM,MAAM,CAAC;AAed,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,EACpC,cAAc,EACd,eAAe,EACf,SAAS,GACU,EAAQ,EAAE;IAC7B,yEAAyE;IACzE,UAAU;IACV,eAAe;IACf,kEAAkE;IAClE,+BAA+B;IAC/B,gBAAgB;IAChB,IAAI;IACJ,OAAO,MAAM,CAAC;QACZ,mBAAmB,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,EAAE;YAC/D,cAAc;YACd,eAAe;YACf,SAAS;SACV,CAAC;QACF,oEAAoE;KACrE,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,gGAAgG;AAChG,MAAM,0BAA0B,GAC9B,ogHAAogH,CAAC;AAEvgH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,MAAM,EACN,IAAI,EACJ,SAAS,EACT,MAAM,GACuB,EAAoB,EAAE;IACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,EAAE,MAAM,CAAC;YACX,0BAA0B;YAC1B,mBAAmB,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,EAAE;gBACjE,MAAM;gBACN,IAAI;gBACJ,SAAS;aACV,CAAC;SACH,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC;AAChC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../accounts/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../accounts/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
|
package/_esm/constants.js
CHANGED
|
@@ -6,5 +6,6 @@ export const KernelImplToVersionMap = {
|
|
|
6
6
|
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab": "0.2.3"
|
|
7
7
|
};
|
|
8
8
|
export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
9
|
+
export const KERNEL_NAME = 'Kernel';
|
|
9
10
|
export const LATEST_KERNEL_VERSION = "0.2.3";
|
|
10
11
|
//# sourceMappingURL=constants.js.map
|
package/_esm/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,MAAM,CAAA;AAEnC,MAAM,CAAC,MAAM,eAAe,GACxB,sIAAsI,CAAA;AAE1I,MAAM,CAAC,MAAM,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;CACxD,CAAA;AACD,MAAM,CAAC,MAAM,YAAY,GAAG,4CAA4C,CAAA;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,MAAM,CAAA;AAEnC,MAAM,CAAC,MAAM,eAAe,GACxB,sIAAsI,CAAA;AAE1I,MAAM,CAAC,MAAM,sBAAsB,GAA+B;IAC9D,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;IACrD,4CAA4C,EAAE,OAAO;CACxD,CAAA;AACD,MAAM,CAAC,MAAM,YAAY,GAAG,4CAA4C,CAAA;AACxE,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AACnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAA"}
|
package/_esm/index.js
CHANGED
|
@@ -11,4 +11,5 @@ import * as constants_1 from "./constants.js";
|
|
|
11
11
|
export { constants_1 as constants };
|
|
12
12
|
export * from "./utils.js";
|
|
13
13
|
export { gasTokenAddresses } from "./gasTokenAddresses.js";
|
|
14
|
+
export { verifyEIP6492Signature } from './accounts/utils';
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/_esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EAGvB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACH,uBAAuB,EAEvB,0BAA0B,EAE7B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAE/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EAE5B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAIN,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;6BAC/C,gBAAgB;wBAA/B,SAAS;AACrB,cAAc,YAAY,CAAA;AAC1B,OAAO,EACH,iBAAiB,EAEpB,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EAEnB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EAGvB,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACH,uBAAuB,EAEvB,0BAA0B,EAE7B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAE/B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EAE5B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAIN,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;6BAC/C,gBAAgB;wBAA/B,SAAS;AACrB,cAAc,YAAY,CAAA;AAC1B,OAAO,EACH,iBAAiB,EAEpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACH,sBAAsB,EACzB,MAAM,kBAAkB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createKernelAccount.d.ts","sourceRoot":"","sources":["../../../accounts/kernel/createKernelAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,YAAY,EACpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"createKernelAccount.d.ts","sourceRoot":"","sources":["../../../accounts/kernel/createKernelAccount.ts"],"names":[],"mappings":"AACA,OAAO,EAEH,KAAK,YAAY,EACpB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACH,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EAGX,KAAK,GAAG,EACR,KAAK,SAAS,EAejB,MAAM,MAAM,CAAA;AAGb,OAAO,KAAK,EACR,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EAC5B,MAAM,uBAAuB,CAAA;AAS9B,MAAM,MAAM,kBAAkB,CAC1B,SAAS,SAAS,SAAS,GAAG,SAAS,EACvC,KAAK,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IACnD,YAAY,CAAC,oBAAoB,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG;IACvD,mBAAmB,EAAE,mBAAmB,CAAA;IACxC,gBAAgB,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IACpC,cAAc,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACnE,CAAA;AA8CD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgCb,CAAA;AACV;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE;IAC3B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,eAAe,EAAE,OAAO,CAAA;IACxB,eAAe,EAAE,OAAO,CAAA;CAK3B,CAAA;AA0ED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACrC,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,EAEpD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,EAC7C,EACI,OAAO,EACP,UAA6C,EAC7C,KAAU,EACV,cAAiD,EACjD,mBAAyD,EACzD,sBAAsB,EACzB,EAAE;IACC,OAAO,EAAE,yBAAyB,GAAG,mBAAmB,CAAA;IACxD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACnC,GACF,OAAO,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CA+QjD"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type Address, type Hash, type Hex, type PublicClient } from "viem";
|
|
2
|
+
export type SignWith6492Params = {
|
|
3
|
+
factoryAddress: Address;
|
|
4
|
+
factoryCalldata: Hex;
|
|
5
|
+
signature: Hash;
|
|
6
|
+
};
|
|
7
|
+
type VerifyEIP6492SignatureParams = {
|
|
8
|
+
signer: Address;
|
|
9
|
+
hash: Hash;
|
|
10
|
+
signature: Hash;
|
|
11
|
+
client: PublicClient;
|
|
12
|
+
};
|
|
13
|
+
export declare const wrapSignatureWith6492: ({ factoryAddress, factoryCalldata, signature, }: SignWith6492Params) => Hash;
|
|
14
|
+
export declare const verifyEIP6492Signature: ({ signer, hash, signature, client, }: VerifyEIP6492SignatureParams) => Promise<boolean>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=6492.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"6492.d.ts","sourceRoot":"","sources":["../../../accounts/utils/6492.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,IAAI,EACT,KAAK,GAAG,EACR,KAAK,YAAY,EAClB,MAAM,MAAM,CAAC;AAEd,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,GAAG,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,qBAAqB,oDAI/B,kBAAkB,KAAG,IAgBvB,CAAC;AAMF,eAAO,MAAM,sBAAsB,yCAKhC,4BAA4B,KAAG,QAAQ,OAAO,CAahD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../accounts/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,sBAAsB,EAAE,CAAA"}
|
|
@@ -273,7 +273,7 @@ export declare const createKernelAccountClient: <TTransport extends Transport, T
|
|
|
273
273
|
transport?: undefined;
|
|
274
274
|
type?: undefined;
|
|
275
275
|
uid?: undefined;
|
|
276
|
-
} & Partial<Pick<import("viem").PublicActions, "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "
|
|
276
|
+
} & Partial<Pick<import("viem").PublicActions<TTransport, TChain, ParseAccount<TSmartAccount>>, "call" | "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<TChain, ParseAccount<TSmartAccount>>, "sendTransaction" | "writeContract">>>(fn: (client: Client<TTransport, TChain, ParseAccount<TSmartAccount>, BundlerRpcSchema, KernelAccountClientActions<TChain, ParseAccount<TSmartAccount>>>) => client) => Client<TTransport, TChain, ParseAccount<TSmartAccount>, BundlerRpcSchema, { [K_7 in keyof client]: client[K_7]; } & import("permissionless").SmartAccountActions<TChain, ParseAccount<TSmartAccount>> & {
|
|
277
277
|
signUserOperation: <TTransport_3 extends Transport>(args: import("../actions/index.js").SignUserOperationParameters<ParseAccount<TSmartAccount>> extends infer T_9 ? { [K_6 in keyof T_9]: import("../actions/index.js").SignUserOperationParameters<ParseAccount<TSmartAccount>>[K_6]; } : never) => Promise<import("permissionless/types").UserOperation>;
|
|
278
278
|
}>;
|
|
279
279
|
};
|
package/_types/constants.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export declare const KernelImplToVersionMap: {
|
|
|
4
4
|
[key: Address]: string;
|
|
5
5
|
};
|
|
6
6
|
export declare const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
7
|
+
export declare const KERNEL_NAME = "Kernel";
|
|
7
8
|
export declare const LATEST_KERNEL_VERSION = "0.2.3";
|
|
8
9
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,eAAO,MAAM,eAAe,yIAC8G,CAAA;AAE1I,eAAO,MAAM,sBAAsB,EAAE;IAAE,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAA;CAI5D,CAAA;AACD,eAAO,MAAM,YAAY,+CAA+C,CAAA;AACxE,eAAO,MAAM,qBAAqB,UAAU,CAAA"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,eAAO,MAAM,eAAe,yIAC8G,CAAA;AAE1I,eAAO,MAAM,sBAAsB,EAAE;IAAE,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAA;CAI5D,CAAA;AACD,eAAO,MAAM,YAAY,+CAA+C,CAAA;AACxE,eAAO,MAAM,WAAW,WAAW,CAAA;AACnC,eAAO,MAAM,qBAAqB,UAAU,CAAA"}
|
package/_types/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ export { TokenActionsAbi } from "./accounts/kernel/abi/TokenActionsAbi.js";
|
|
|
10
10
|
export * as constants from "./constants.js";
|
|
11
11
|
export * from "./utils.js";
|
|
12
12
|
export { gasTokenAddresses, type TokenSymbolsMap } from "./gasTokenAddresses.js";
|
|
13
|
+
export { verifyEIP6492Signature } from './accounts/utils';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
package/_types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EACpB,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACtC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACH,uBAAuB,EACvB,KAAK,6BAA6B,EAClC,0BAA0B,EAC1B,KAAK,0BAA0B,EAClC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAC5B,KAAK,sBAAsB,EAC9B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EACzB,KAAK,mBAAmB,EAC3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,EACH,iBAAiB,EACjB,KAAK,eAAe,EACvB,MAAM,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,mBAAmB,EACnB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EACH,oBAAoB,EACpB,KAAK,8BAA8B,EACnC,KAAK,8BAA8B,EACtC,MAAM,6CAA6C,CAAA;AACpD,OAAO,EACH,uBAAuB,EACvB,KAAK,6BAA6B,EAClC,0BAA0B,EAC1B,KAAK,0BAA0B,EAClC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACH,4BAA4B,EAC5B,KAAK,sBAAsB,EAC9B,MAAM,8BAA8B,CAAA;AACrC,OAAO,EACH,yBAAyB,EACzB,KAAK,mBAAmB,EAC3B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,mBAAmB,EAC3B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAA;AAC1E,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,cAAc,YAAY,CAAA;AAC1B,OAAO,EACH,iBAAiB,EACjB,KAAK,eAAe,EACvB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EACH,sBAAsB,EACzB,MAAM,kBAAkB,CAAA"}
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
type Chain,
|
|
9
9
|
type Client,
|
|
10
10
|
type EncodeDeployDataParameters,
|
|
11
|
+
type Hash,
|
|
11
12
|
type Hex,
|
|
12
13
|
type Transport,
|
|
13
14
|
type TypedDataDefinition,
|
|
@@ -21,16 +22,19 @@ import {
|
|
|
21
22
|
hashTypedData,
|
|
22
23
|
keccak256,
|
|
23
24
|
parseAbi,
|
|
25
|
+
publicActions,
|
|
24
26
|
stringToHex,
|
|
25
27
|
validateTypedData
|
|
26
28
|
} from "viem"
|
|
27
29
|
import { toAccount } from "viem/accounts"
|
|
28
30
|
import { getBytecode } from "viem/actions"
|
|
31
|
+
import { KERNEL_NAME, LATEST_KERNEL_VERSION } from "../../constants.js"
|
|
29
32
|
import type {
|
|
30
33
|
KernelEncodeCallDataArgs,
|
|
31
34
|
KernelPluginManager,
|
|
32
35
|
KernelPluginManagerParams
|
|
33
36
|
} from "../../types/kernel.js"
|
|
37
|
+
import { wrapSignatureWith6492 } from "../utils/6492.js"
|
|
34
38
|
import {
|
|
35
39
|
isKernelPluginManager,
|
|
36
40
|
toKernelPluginManager
|
|
@@ -202,6 +206,14 @@ const getAccountAddress = async <
|
|
|
202
206
|
})
|
|
203
207
|
}
|
|
204
208
|
|
|
209
|
+
const parseFactoryAddressAndCallDataFromAccountInitCode = (
|
|
210
|
+
initCode: Hex
|
|
211
|
+
): [Address, Hex] => {
|
|
212
|
+
const factoryAddress = `0x${initCode.substring(2, 42)}` as Address
|
|
213
|
+
const factoryCalldata = `0x${initCode.substring(42)}` as Hex
|
|
214
|
+
return [factoryAddress, factoryCalldata]
|
|
215
|
+
}
|
|
216
|
+
|
|
205
217
|
/**
|
|
206
218
|
* Build a kernel smart account from a private key, that use the ECDSA signer behind the scene
|
|
207
219
|
* @param client
|
|
@@ -256,14 +268,13 @@ export async function createKernelAccount<
|
|
|
256
268
|
}
|
|
257
269
|
|
|
258
270
|
// Fetch account address and chain id
|
|
259
|
-
const
|
|
271
|
+
const accountAddress =
|
|
260
272
|
deployedAccountAddress ??
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
])
|
|
273
|
+
(await getAccountAddress<TTransport, TChain>({
|
|
274
|
+
client,
|
|
275
|
+
entryPoint,
|
|
276
|
+
initCodeProvider: generateInitCode
|
|
277
|
+
}))
|
|
267
278
|
|
|
268
279
|
if (!accountAddress) throw new Error("Account address not found")
|
|
269
280
|
|
|
@@ -281,11 +292,28 @@ export async function createKernelAccount<
|
|
|
281
292
|
"latest"
|
|
282
293
|
]
|
|
283
294
|
})
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
295
|
+
|
|
296
|
+
let name: string
|
|
297
|
+
let version: string
|
|
298
|
+
let chainId: bigint
|
|
299
|
+
|
|
300
|
+
if (domain !== "0x") {
|
|
301
|
+
const decoded = decodeFunctionResult({
|
|
302
|
+
abi: [...EIP1271ABI],
|
|
303
|
+
functionName: "eip712Domain",
|
|
304
|
+
data: domain
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
name = decoded[1]
|
|
308
|
+
version = decoded[2]
|
|
309
|
+
chainId = decoded[3]
|
|
310
|
+
} else {
|
|
311
|
+
name = KERNEL_NAME
|
|
312
|
+
version = LATEST_KERNEL_VERSION
|
|
313
|
+
chainId = client.chain
|
|
314
|
+
? client.chain.id
|
|
315
|
+
: await client.extend(publicActions).getChainId()
|
|
316
|
+
}
|
|
289
317
|
|
|
290
318
|
const encoded = encodeAbiParameters(
|
|
291
319
|
[
|
|
@@ -301,9 +329,9 @@ export async function createKernelAccount<
|
|
|
301
329
|
"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
|
|
302
330
|
)
|
|
303
331
|
),
|
|
304
|
-
keccak256(stringToHex(
|
|
305
|
-
keccak256(stringToHex(
|
|
306
|
-
|
|
332
|
+
keccak256(stringToHex(name)),
|
|
333
|
+
keccak256(stringToHex(version)),
|
|
334
|
+
BigInt(chainId),
|
|
307
335
|
accountAddress
|
|
308
336
|
]
|
|
309
337
|
)
|
|
@@ -324,7 +352,11 @@ export async function createKernelAccount<
|
|
|
324
352
|
address: accountAddress,
|
|
325
353
|
async signMessage({ message }) {
|
|
326
354
|
const messageHash = hashMessage(message)
|
|
327
|
-
|
|
355
|
+
const [isDeployed, signature] = await Promise.all([
|
|
356
|
+
isAccountDeployed(),
|
|
357
|
+
signHashedMessage(messageHash)
|
|
358
|
+
])
|
|
359
|
+
return create6492Signature(isDeployed, signature)
|
|
328
360
|
},
|
|
329
361
|
async signTransaction(_, __) {
|
|
330
362
|
throw new SignTransactionNotSupportedBySmartAccount()
|
|
@@ -347,16 +379,50 @@ export async function createKernelAccount<
|
|
|
347
379
|
} as TypedDataDefinition)
|
|
348
380
|
|
|
349
381
|
const typedHash = hashTypedData(typedData)
|
|
350
|
-
|
|
382
|
+
const [isDeployed, signature] = await Promise.all([
|
|
383
|
+
isAccountDeployed(),
|
|
384
|
+
signHashedMessage(typedHash)
|
|
385
|
+
])
|
|
386
|
+
return create6492Signature(isDeployed, signature)
|
|
351
387
|
}
|
|
352
388
|
})
|
|
353
389
|
|
|
390
|
+
const isAccountDeployed = async (): Promise<boolean> => {
|
|
391
|
+
const contractCode = await getBytecode(client, {
|
|
392
|
+
address: accountAddress
|
|
393
|
+
})
|
|
394
|
+
|
|
395
|
+
return (contractCode?.length ?? 0) > 2
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
const create6492Signature = async (
|
|
399
|
+
isDeployed: boolean,
|
|
400
|
+
signature: Hash
|
|
401
|
+
): Promise<Hash> => {
|
|
402
|
+
if (isDeployed) {
|
|
403
|
+
return signature
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
const [factoryAddress, factoryCalldata] =
|
|
407
|
+
parseFactoryAddressAndCallDataFromAccountInitCode(
|
|
408
|
+
await generateInitCode()
|
|
409
|
+
)
|
|
410
|
+
|
|
411
|
+
return wrapSignatureWith6492({
|
|
412
|
+
factoryAddress,
|
|
413
|
+
factoryCalldata,
|
|
414
|
+
signature
|
|
415
|
+
})
|
|
416
|
+
}
|
|
417
|
+
|
|
354
418
|
return {
|
|
355
419
|
...account,
|
|
356
420
|
client: client,
|
|
357
421
|
publicKey: accountAddress,
|
|
358
422
|
entryPoint: entryPoint,
|
|
359
423
|
source: "kernelSmartAccount",
|
|
424
|
+
kernelPluginManager,
|
|
425
|
+
generateInitCode,
|
|
360
426
|
|
|
361
427
|
// Get the nonce of the smart account
|
|
362
428
|
async getNonce() {
|
|
@@ -367,23 +433,19 @@ export async function createKernelAccount<
|
|
|
367
433
|
key
|
|
368
434
|
})
|
|
369
435
|
},
|
|
370
|
-
kernelPluginManager,
|
|
371
436
|
|
|
372
437
|
// Sign a user operation
|
|
373
438
|
async signUserOperation(userOperation) {
|
|
374
439
|
return kernelPluginManager.signUserOperation(userOperation)
|
|
375
440
|
},
|
|
376
|
-
generateInitCode,
|
|
377
441
|
|
|
378
442
|
// Encode the init code
|
|
379
443
|
async getInitCode() {
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
return generateInitCode()
|
|
444
|
+
if (await isAccountDeployed()) {
|
|
445
|
+
return "0x"
|
|
446
|
+
} else {
|
|
447
|
+
return generateInitCode()
|
|
448
|
+
}
|
|
387
449
|
},
|
|
388
450
|
|
|
389
451
|
// Encode the deploy call data
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// copied from: https://github.com/alchemyplatform/aa-sdk/blob/266c9757cd721ef0bd97d04c0b592a329f8a9da5/packages/core/src/signer/utils.ts
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
type Address,
|
|
5
|
+
type Hash,
|
|
6
|
+
type Hex,
|
|
7
|
+
type PublicClient,
|
|
8
|
+
concat,
|
|
9
|
+
encodeAbiParameters,
|
|
10
|
+
parseAbiParameters
|
|
11
|
+
} from "viem"
|
|
12
|
+
|
|
13
|
+
export type SignWith6492Params = {
|
|
14
|
+
factoryAddress: Address
|
|
15
|
+
factoryCalldata: Hex
|
|
16
|
+
signature: Hash
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type VerifyEIP6492SignatureParams = {
|
|
20
|
+
signer: Address
|
|
21
|
+
hash: Hash
|
|
22
|
+
signature: Hash
|
|
23
|
+
client: PublicClient
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export const wrapSignatureWith6492 = ({
|
|
27
|
+
factoryAddress,
|
|
28
|
+
factoryCalldata,
|
|
29
|
+
signature
|
|
30
|
+
}: SignWith6492Params): Hash => {
|
|
31
|
+
// wrap the signature as follows: https://eips.ethereum.org/EIPS/eip-6492
|
|
32
|
+
// concat(
|
|
33
|
+
// abi.encode(
|
|
34
|
+
// (create2Factory, factoryCalldata, originalERC1271Signature),
|
|
35
|
+
// (address, bytes, bytes)),
|
|
36
|
+
// magicBytes
|
|
37
|
+
// )
|
|
38
|
+
return concat([
|
|
39
|
+
encodeAbiParameters(parseAbiParameters("address, bytes, bytes"), [
|
|
40
|
+
factoryAddress,
|
|
41
|
+
factoryCalldata,
|
|
42
|
+
signature
|
|
43
|
+
]),
|
|
44
|
+
"0x6492649264926492649264926492649264926492649264926492649264926492"
|
|
45
|
+
])
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// defined in https://github.com/AmbireTech/signature-validator/blob/main/index.ts#L13C17-L13C17
|
|
49
|
+
const universalValidatorByteCode =
|
|
50
|
+
"0x60806040523480156200001157600080fd5b50604051620007003803806200070083398101604081905262000034916200056f565b6000620000438484846200004f565b9050806000526001601ff35b600080846001600160a01b0316803b806020016040519081016040528181526000908060200190933c90507f6492649264926492649264926492649264926492649264926492649264926492620000a68462000451565b036200021f57600060608085806020019051810190620000c79190620005ce565b8651929550909350915060000362000192576000836001600160a01b031683604051620000f5919062000643565b6000604051808303816000865af19150503d806000811462000134576040519150601f19603f3d011682016040523d82523d6000602084013e62000139565b606091505b5050905080620001905760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b505b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90620001c4908b90869060040162000661565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200069d565b6001600160e01b031916149450505050506200044a565b805115620002b157604051630b135d3f60e11b808252906001600160a01b03871690631626ba7e9062000259908890889060040162000661565b602060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d91906200069d565b6001600160e01b031916149150506200044a565b8251604114620003195760405162461bcd60e51b815260206004820152603a6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e677468000000000000606482015260840162000187565b620003236200046b565b506020830151604080850151855186939260009185919081106200034b576200034b620006c9565b016020015160f81c9050601b81148015906200036b57508060ff16601c14155b15620003cf5760405162461bcd60e51b815260206004820152603b6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c75650000000000606482015260840162000187565b6040805160008152602081018083528a905260ff83169181019190915260608101849052608081018390526001600160a01b038a169060019060a0016020604051602081039080840390855afa1580156200042e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614955050505050505b9392505050565b60006020825110156200046357600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146200049f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004d5578181015183820152602001620004bb565b50506000910152565b600082601f830112620004f057600080fd5b81516001600160401b03808211156200050d576200050d620004a2565b604051601f8301601f19908116603f01168101908282118183101715620005385762000538620004a2565b816040528381528660208588010111156200055257600080fd5b62000565846020830160208901620004b8565b9695505050505050565b6000806000606084860312156200058557600080fd5b8351620005928162000489565b6020850151604086015191945092506001600160401b03811115620005b657600080fd5b620005c486828701620004de565b9150509250925092565b600080600060608486031215620005e457600080fd5b8351620005f18162000489565b60208501519093506001600160401b03808211156200060f57600080fd5b6200061d87838801620004de565b935060408601519150808211156200063457600080fd5b50620005c486828701620004de565b6000825162000657818460208701620004b8565b9190910192915050565b828152604060208201526000825180604084015262000688816060850160208701620004b8565b601f01601f1916919091016060019392505050565b600060208284031215620006b057600080fd5b81516001600160e01b0319811681146200044a57600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572"
|
|
51
|
+
|
|
52
|
+
export const verifyEIP6492Signature = async ({
|
|
53
|
+
signer,
|
|
54
|
+
hash,
|
|
55
|
+
signature,
|
|
56
|
+
client
|
|
57
|
+
}: VerifyEIP6492SignatureParams): Promise<boolean> => {
|
|
58
|
+
const result = await client.call({
|
|
59
|
+
data: concat([
|
|
60
|
+
universalValidatorByteCode,
|
|
61
|
+
encodeAbiParameters(parseAbiParameters("address, bytes32, bytes"), [
|
|
62
|
+
signer,
|
|
63
|
+
hash,
|
|
64
|
+
signature
|
|
65
|
+
])
|
|
66
|
+
])
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
return result.data === "0x01"
|
|
70
|
+
}
|
package/accounts/utils/index.ts
CHANGED
package/constants.ts
CHANGED
|
@@ -9,4 +9,5 @@ export const KernelImplToVersionMap: { [key: Address]: string } = {
|
|
|
9
9
|
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab": "0.2.3"
|
|
10
10
|
}
|
|
11
11
|
export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1"
|
|
12
|
+
export const KERNEL_NAME = "Kernel"
|
|
12
13
|
export const LATEST_KERNEL_VERSION = "0.2.3"
|
package/index.ts
CHANGED