Skip to content

Commit e050d86

Browse files
Add support for kernel 0.3.2 & 0.3.3 (#396)
* Add support for kernel 0.3.2 & 0.3.3 * Added changest
1 parent a631696 commit e050d86

File tree

16 files changed

+384
-230
lines changed

16 files changed

+384
-230
lines changed

.changeset/forty-jeans-look.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"permissionless": patch
3+
---
4+
5+
Added support for kernel 0.3.2 & 0.3.3

packages/permissionless-test/mock-aa-infra/alto/constants.ts

-223
This file was deleted.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/biconomy.ts

+22
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/etherspot.ts

+12
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/kernel.ts

+63
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/light.ts

+10
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/nexus.ts

+16
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/safe.ts

+59
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/simple.ts

+9
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/thirdweb.ts

+7
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/accounts/trust.ts

+26
Large diffs are not rendered by default.

packages/permissionless-test/mock-aa-infra/alto/constants/core.ts

+20
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
export * from "./core"
2+
export * from "./accounts/biconomy"
3+
export * from "./accounts/etherspot"
4+
export * from "./accounts/kernel"
5+
export * from "./accounts/light"
6+
export * from "./accounts/nexus"
7+
export * from "./accounts/safe"
8+
export * from "./accounts/simple"
9+
export * from "./accounts/thirdweb"
10+
export * from "./accounts/trust"

packages/permissionless-test/mock-aa-infra/alto/index.ts

+50-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ import {
3838
KERNEL_V07_V3_1_ECDSA_VALIDATOR_V3_CREATECALL,
3939
KERNEL_V07_V3_1_FACTORY_CREATECALL,
4040
KERNEL_V07_V3_1_WEB_AUTHN_VALIDATOR_CREATECALL,
41+
KERNEL_V07_V3_2_ACCOUNT_V3_LOGIC_CREATECALL,
42+
KERNEL_V07_V3_2_FACTORY_CREATECALL,
43+
KERNEL_V07_V3_3_ACCOUNT_V3_LOGIC_CREATECALL,
44+
KERNEL_V07_V3_3_FACTORY_CREATECALL,
4145
LIGHT_ACCOUNT_FACTORY_V110_CREATECALL,
4246
LIGHT_ACCOUNT_FACTORY_V200_CREATECALL,
4347
NEXUS_ACCOUNT_BOOTSTRAPPER_CREATECALL,
@@ -72,7 +76,7 @@ import {
7276
TRUST_FACTORY_V06_CREATECALL,
7377
TRUST_SECP256K1_VERIFICATION_FACET_CREATECALL,
7478
TRUST_TOKEN_RECEIVER_FACET_CREATE_CALL
75-
} from "./constants"
79+
} from "./constants/index"
7680

7781
const DETERMINISTIC_DEPLOYER = "0x4e59b44847b379578588920ca78fbf26c0b4956c"
7882
const SAFE_SINGLETON_FACTORY = "0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7"
@@ -266,6 +270,30 @@ export const setupContracts = async (rpc: string) => {
266270
gas: 15_000_000n,
267271
nonce: nonce++
268272
}),
273+
walletClient.sendTransaction({
274+
to: DETERMINISTIC_DEPLOYER,
275+
data: KERNEL_V07_V3_2_ACCOUNT_V3_LOGIC_CREATECALL,
276+
gas: 15_000_000n,
277+
nonce: nonce++
278+
}),
279+
walletClient.sendTransaction({
280+
to: DETERMINISTIC_DEPLOYER,
281+
data: KERNEL_V07_V3_2_FACTORY_CREATECALL,
282+
gas: 15_000_000n,
283+
nonce: nonce++
284+
}),
285+
walletClient.sendTransaction({
286+
to: DETERMINISTIC_DEPLOYER,
287+
data: KERNEL_V07_V3_3_ACCOUNT_V3_LOGIC_CREATECALL,
288+
gas: 15_000_000n,
289+
nonce: nonce++
290+
}),
291+
walletClient.sendTransaction({
292+
to: DETERMINISTIC_DEPLOYER,
293+
data: KERNEL_V07_V3_3_FACTORY_CREATECALL,
294+
gas: 15_000_000n,
295+
nonce: nonce++
296+
}),
269297
walletClient.sendTransaction({
270298
to: DETERMINISTIC_DEPLOYER,
271299
data: LIGHT_ACCOUNT_FACTORY_V110_CREATECALL,
@@ -587,6 +615,20 @@ export const setupContracts = async (rpc: string) => {
587615
data: "0x6e7dbabb000000000000000000000000aac5D4240AF87249B3f71BC8E4A2cae074A3E4190000000000000000000000000000000000000000000000000000000000000001"
588616
})
589617

618+
// register 0x7a1dBAB750f12a90EB1B60D2Ae3aD17D4D81EfFe
619+
await sendTransaction(walletClient, {
620+
account: kernelFactoryOwner,
621+
to: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5" /* kernel factory v0.7 */,
622+
data: "0x6e7dbabb0000000000000000000000007a1dBAB750f12a90EB1B60D2Ae3aD17D4D81EfFe0000000000000000000000000000000000000000000000000000000000000001"
623+
})
624+
625+
// register 0xE30c76Dc9eCF1c19F6Fec070674E1b4eFfE069FA
626+
await sendTransaction(walletClient, {
627+
account: kernelFactoryOwner,
628+
to: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5" /* kernel factory v0.7 */,
629+
data: "0x6e7dbabb000000000000000000000000E30c76Dc9eCF1c19F6Fec070674E1b4eFfE069FA0000000000000000000000000000000000000000000000000000000000000001"
630+
})
631+
590632
await sendTransaction(walletClient, {
591633
account: kernelFactoryOwner,
592634
to: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5" /* kernel factory v0.7 */,
@@ -644,19 +686,23 @@ export const setupContracts = async (rpc: string) => {
644686
"0x000000a56Aaca3e9a4C479ea6b6CD0DbcB6634F5", // Biconomy Factory Address
645687
"0x0bBa6d96BD616BedC6BFaa341742FD43c60b83C1", // Biconomy Default Fallback Handler
646688
"0xf048AD83CB2dfd6037A43902a2A5Be04e53cd2Eb", // Kernel 0.2.1 Account Logic
647-
"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390", // Kernel v0.2.2 ECDSA Valdiator
689+
"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390", // Kernel v0.2.2 ECDSA Validator
648690
"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5", // Kernel v0.2.2 Account Logic
649691
"0xD3F582F6B4814E989Ee8E96bc3175320B5A540ab", // Kernel v0.2.3 Account Logic
650692
"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3", // Kernel v0.2.2 Factory
651693
"0xd3082872F8B06073A021b4602e022d5A070d7cfC", // Kernel v0.2.4 Factory
652-
"0x8104e3Ad430EA6d354d013A6789fDFc71E671c43", // Kernel v0.3.0 ECDSA Valdiator
694+
"0x8104e3Ad430EA6d354d013A6789fDFc71E671c43", // Kernel v0.3.0 ECDSA Validator
653695
"0x94F097E1ebEB4ecA3AAE54cabb08905B239A7D27", // Kernel v0.3.0 Account Logic
654696
"0x6723b44Abeec4E71eBE3232BD5B455805baDD22f", // Kernel v0.3.0 Factory
655697
"0xd703aaE79538628d27099B8c4f621bE4CCd142d5", // Kernel v0.3.0 & v0.3.1 Meta Factory
656-
"0x845ADb2C711129d4f3966735eD98a9F09fC4cE57", // Kernel v0.3.1 ECDSA Valdiator
698+
"0x845ADb2C711129d4f3966735eD98a9F09fC4cE57", // Kernel v0.3.1 ECDSA Validator
657699
"0xBAC849bB641841b44E965fB01A4Bf5F074f84b4D", // Kernel v0.3.1 Account Logic
658700
"0xaac5D4240AF87249B3f71BC8E4A2cae074A3E419", // Kernel v0.3.1 Factory
659701
"0xbA45a2BFb8De3D24cA9D7F1B551E14dFF5d690Fd", // Kernel v0.3.1 WebAuthn Validator
702+
"0xD830D15D3dc0C269F3dBAa0F3e8626d33CFdaBe1", // Kernel v0.3.2 Account Logic
703+
"0x7a1dBAB750f12a90EB1B60D2Ae3aD17D4D81EfFe", // Kernel v0.3.2 Factory
704+
"0xE264dCCc54e4b6906c0D1Fee11D4326c06D33c80", // Kernel v0.3.3 Account Logic
705+
"0xE30c76Dc9eCF1c19F6Fec070674E1b4eFfE069FA", // Kernel v0.3.3 Factory
660706
"0x00004EC70002a32400f8ae005A26081065620D20", // LightAccountFactory v1.1.0
661707
"0xae8c656ad28F2B59a196AB61815C16A0AE1c3cba", // LightAccount v1.1.0 implementation
662708
"0x0000000000400CdFef5E2714E63d8040b700BC24", // LightAccountFactory v2.0.0

packages/permissionless-test/src/utils.ts

+56
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,62 @@ export const getCoreSmartAccounts = () => [
671671
supportsEntryPointV07: true,
672672
isEip1271Compliant: true
673673
},
674+
{
675+
name: "Kernel 7579 0.3.2",
676+
getSmartAccountClient: async <entryPointVersion extends "0.6" | "0.7">(
677+
conf: AAParamType<entryPointVersion>
678+
) =>
679+
getBundlerClient({
680+
account: await getKernelEcdsaClient({
681+
...conf,
682+
version: "0.3.2" as KernelVersion<entryPointVersion>
683+
}),
684+
...conf
685+
}),
686+
getErc7579SmartAccountClient: async <
687+
entryPointVersion extends "0.6" | "0.7"
688+
>(
689+
conf: AAParamType<entryPointVersion>
690+
) =>
691+
getSmartAccountClient({
692+
account: await getKernelEcdsaClient({
693+
...conf,
694+
version: "0.3.2" as KernelVersion<entryPointVersion>
695+
}),
696+
...conf
697+
}),
698+
supportsEntryPointV06: false,
699+
supportsEntryPointV07: true,
700+
isEip1271Compliant: true
701+
},
702+
{
703+
name: "Kernel 7579 0.3.3",
704+
getSmartAccountClient: async <entryPointVersion extends "0.6" | "0.7">(
705+
conf: AAParamType<entryPointVersion>
706+
) =>
707+
getBundlerClient({
708+
account: await getKernelEcdsaClient({
709+
...conf,
710+
version: "0.3.3" as KernelVersion<entryPointVersion>
711+
}),
712+
...conf
713+
}),
714+
getErc7579SmartAccountClient: async <
715+
entryPointVersion extends "0.6" | "0.7"
716+
>(
717+
conf: AAParamType<entryPointVersion>
718+
) =>
719+
getSmartAccountClient({
720+
account: await getKernelEcdsaClient({
721+
...conf,
722+
version: "0.3.3" as KernelVersion<entryPointVersion>
723+
}),
724+
...conf
725+
}),
726+
supportsEntryPointV06: false,
727+
supportsEntryPointV07: true,
728+
isEip1271Compliant: true
729+
},
674730
{
675731
name: "Biconomy",
676732
getSmartAccountClient: async <entryPointVersion extends "0.6" | "0.7">(

packages/permissionless/accounts/kernel/toKernelSmartAccount.ts

+19-3
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ const createAccountAbi = [
9393
export type KernelVersion<entryPointVersion extends "0.6" | "0.7"> =
9494
entryPointVersion extends "0.6"
9595
? "0.2.1" | "0.2.2" | "0.2.3" | "0.2.4"
96-
: "0.3.0-beta" | "0.3.1"
96+
: "0.3.0-beta" | "0.3.1" | "0.3.2" | "0.3.3"
9797

9898
/**
9999
* Default addresses map for different kernel smart account versions
@@ -140,6 +140,18 @@ export const KERNEL_VERSION_TO_ADDRESSES_MAP: {
140140
FACTORY_ADDRESS: "0xaac5D4240AF87249B3f71BC8E4A2cae074A3E419",
141141
META_FACTORY_ADDRESS: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5",
142142
WEB_AUTHN_VALIDATOR: "0xbA45a2BFb8De3D24cA9D7F1B551E14dFF5d690Fd"
143+
},
144+
"0.3.2": {
145+
ECDSA_VALIDATOR: "0x845ADb2C711129d4f3966735eD98a9F09fC4cE57",
146+
ACCOUNT_LOGIC: "0xD830D15D3dc0C269F3dBAa0F3e8626d33CFdaBe1",
147+
FACTORY_ADDRESS: "0x7a1dBAB750f12a90EB1B60D2Ae3aD17D4D81EfFe",
148+
META_FACTORY_ADDRESS: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5"
149+
},
150+
"0.3.3": {
151+
ECDSA_VALIDATOR: "0x845ADb2C711129d4f3966735eD98a9F09fC4cE57",
152+
ACCOUNT_LOGIC: "0xE264dCCc54e4b6906c0D1Fee11D4326c06D33c80",
153+
FACTORY_ADDRESS: "0xE30c76Dc9eCF1c19F6Fec070674E1b4eFfE069FA",
154+
META_FACTORY_ADDRESS: "0xd703aaE79538628d27099B8c4f621bE4CCd142d5"
143155
}
144156
}
145157

@@ -616,7 +628,9 @@ export async function toKernelSmartAccount<
616628
owner,
617629
message,
618630
accountAddress: await this.getAddress(),
619-
kernelVersion,
631+
kernelVersion:
632+
// TODO: remove this once 0.3.3 is released
633+
kernelVersion === "0.3.3" ? "0.3.2" : kernelVersion,
620634
chainId: await getMemoizedChainId()
621635
})
622636

@@ -635,7 +649,9 @@ export async function toKernelSmartAccount<
635649
chainId: await getMemoizedChainId(),
636650
...(typedData as TypedDataDefinition),
637651
accountAddress: await this.getAddress(),
638-
kernelVersion
652+
kernelVersion:
653+
// TODO: remove this once 0.3.3 is released
654+
kernelVersion === "0.3.3" ? "0.3.2" : kernelVersion
639655
})
640656

641657
if (isKernelV2(kernelVersion)) {

0 commit comments

Comments
 (0)