@zerodev/sdk 4.6.1 → 4.6.3
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/constants.d.ts +1 -1
- package/dist/cjs/kernel-zerodev/constants.js +1 -1
- package/dist/cjs/kernel-zerodev/constants.js.map +1 -1
- package/dist/cjs/kernel-zerodev/utils.js +2 -2
- package/dist/cjs/kernel-zerodev/utils.js.map +1 -1
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.js +1 -2
- package/dist/cjs/kernel-zerodev/validator/recovery-validator.js.map +1 -1
- package/dist/esm/kernel-zerodev/constants.d.ts +1 -1
- package/dist/esm/kernel-zerodev/constants.js +1 -1
- package/dist/esm/kernel-zerodev/constants.js.map +1 -1
- package/dist/esm/kernel-zerodev/utils.js +2 -2
- package/dist/esm/kernel-zerodev/utils.js.map +1 -1
- package/dist/esm/kernel-zerodev/validator/recovery-validator.js +1 -2
- package/dist/esm/kernel-zerodev/validator/recovery-validator.js.map +1 -1
- package/dist/types/kernel-zerodev/constants.d.ts +1 -1
- package/dist/types/kernel-zerodev/utils.d.ts.map +1 -1
- package/dist/types/kernel-zerodev/validator/recovery-validator.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kernel-zerodev/constants.ts +1 -1
- package/src/kernel-zerodev/utils.ts +10 -6
- package/src/kernel-zerodev/validator/recovery-validator.ts +1 -2
|
@@ -17,7 +17,7 @@ export declare const DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000
|
|
|
17
17
|
export declare const ERC165_SESSION_KEY_VALIDATOR_ADDRESS = "0xe149290800De29D4b0BF9dB82c508255D81902E6";
|
|
18
18
|
export declare const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
19
19
|
export declare const SESSION_KEY_VALIDATOR_ADDRESS = "0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5";
|
|
20
|
-
export declare const RECOVERY_VALIDATOR_ADDRESS = "
|
|
20
|
+
export declare const RECOVERY_VALIDATOR_ADDRESS = "0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8";
|
|
21
21
|
export declare const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
|
|
22
22
|
export declare const oneAddress = "0x0000000000000000000000000000000000000001";
|
|
23
23
|
export declare const gasTokenChainAddresses: IGasTokenAddresses;
|
|
@@ -20,7 +20,7 @@ exports.DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff00000000000000000000
|
|
|
20
20
|
exports.ERC165_SESSION_KEY_VALIDATOR_ADDRESS = "0xe149290800De29D4b0BF9dB82c508255D81902E6";
|
|
21
21
|
exports.TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
22
22
|
exports.SESSION_KEY_VALIDATOR_ADDRESS = "0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5";
|
|
23
|
-
exports.RECOVERY_VALIDATOR_ADDRESS = "
|
|
23
|
+
exports.RECOVERY_VALIDATOR_ADDRESS = "0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8";
|
|
24
24
|
exports.RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
|
|
25
25
|
exports.oneAddress = "0x0000000000000000000000000000000000000001";
|
|
26
26
|
exports.gasTokenChainAddresses = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseUnits, type Hex } from \"viem\";\nimport type { IGasTokenAddresses } from \"./paymaster/types.js\";\nimport { polygon } from \"viem/chains\";\n\nexport const DEFAULT_SEND_TX_MAX_RETRIES = 3;\nexport const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes\nexport const BUNDLER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/bundler\";\nexport const PAYMASTER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/paymaster\";\nexport const ENTRYPOINT_ADDRESS: Hex =\n \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nexport const MULTISEND_ADDR: Hex = \"0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c\";\nexport const BACKEND_URL = \"https://backend-vikp.onrender.com\";\nexport const API_URL = \"https://prod-api.zerodev.app\";\nexport const ECDSA_VALIDATOR_ADDRESS =\n \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\";\nexport const KERNEL_FACTORY_ADDRESS =\n \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const KERNEL_IMPL_ADDRESS = \"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5\";\nexport const KILL_SWITCH_VALIDATOR_ADDRESS =\n \"0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC\";\nexport const KILL_SWITCH_ACTION = \"0x3f38e479304c7F18F988269a1bDa7d646bd48243\";\nexport const DUMMY_ECDSA_SIG =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =\n \"0xe149290800De29D4b0BF9dB82c508255D81902E6\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const SESSION_KEY_VALIDATOR_ADDRESS =\n \"0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5\";\nexport const RECOVERY_VALIDATOR_ADDRESS =\n \"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseUnits, type Hex } from \"viem\";\nimport type { IGasTokenAddresses } from \"./paymaster/types.js\";\nimport { polygon } from \"viem/chains\";\n\nexport const DEFAULT_SEND_TX_MAX_RETRIES = 3;\nexport const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes\nexport const BUNDLER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/bundler\";\nexport const PAYMASTER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/paymaster\";\nexport const ENTRYPOINT_ADDRESS: Hex =\n \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nexport const MULTISEND_ADDR: Hex = \"0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c\";\nexport const BACKEND_URL = \"https://backend-vikp.onrender.com\";\nexport const API_URL = \"https://prod-api.zerodev.app\";\nexport const ECDSA_VALIDATOR_ADDRESS =\n \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\";\nexport const KERNEL_FACTORY_ADDRESS =\n \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const KERNEL_IMPL_ADDRESS = \"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5\";\nexport const KILL_SWITCH_VALIDATOR_ADDRESS =\n \"0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC\";\nexport const KILL_SWITCH_ACTION = \"0x3f38e479304c7F18F988269a1bDa7d646bd48243\";\nexport const DUMMY_ECDSA_SIG =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =\n \"0xe149290800De29D4b0BF9dB82c508255D81902E6\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const SESSION_KEY_VALIDATOR_ADDRESS =\n \"0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5\";\nexport const RECOVERY_VALIDATOR_ADDRESS =\n \"0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8\";\nexport const RECOVERY_ACTION = \"0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1\";\nexport const oneAddress = \"0x0000000000000000000000000000000000000001\";\n\nexport const gasTokenChainAddresses: IGasTokenAddresses = {\n USDC: {\n 1: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n // 5: \"0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557\",\n 137: \"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\",\n // 80001: \"\",\n // 420: \"0x7F5c764cBc14f9669B88837ca1490cCa17c31607\",\n 42161: \"0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8\",\n // 421613: \"\",\n 43114: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n // 43113: \"\",\n // 56: \"\",\n // 97: \"\"\n },\n PEPE: {\n 1: \"0x6982508145454Ce325dDbE47a25d4ec3d2311933\",\n },\n};\n\nexport const ERC20_APPROVAL_AMOUNT: { [key: string]: bigint } = {\n // ETH\n [gasTokenChainAddresses[\"USDC\"][1]]: parseUnits(\"100\", 6),\n\n // Goerli\n [gasTokenChainAddresses[\"USDC\"][5]]: parseUnits(\"100\", 6),\n\n // Polygon\n [gasTokenChainAddresses[\"USDC\"][137]]: parseUnits(\"10\", 6),\n\n // Arbitrum\n [gasTokenChainAddresses[\"USDC\"][42161]]: parseUnits(\"10\", 6),\n\n // Avalanche\n [gasTokenChainAddresses[\"USDC\"][43114]]: parseUnits(\"10\", 6),\n\n // ETH\n [gasTokenChainAddresses[\"PEPE\"][1]]: parseUnits(\"50000000\", 18),\n\n \"0x3870419Ba2BBf0127060bCB37f69A1b1C090992B\": parseUnits(\"100\", 18),\n};\n\nexport const minPriorityFeePerBidDefaults = new Map<number, bigint>([\n [polygon.id, 30_000_000_000n],\n]);\n\nexport const INFURA_API_KEY = \"f36f7f706a58477884ce6fe89165666c\";\nexport const CHAIN_ID_TO_NODE: { [key: number]: string } = {\n 1: `https://mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 5: `https://goerli.infura.io/v3/${INFURA_API_KEY}`,\n 11155111:\n \"https://fittest-ultra-aura.ethereum-sepolia.quiknode.pro/3893d01b1dd411fdfa9b6dd372dd2b4f69fcf1ea/\",\n 137: `https://polygon-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 80001: `https://polygon-mumbai.infura.io/v3/${INFURA_API_KEY}`,\n 10: `https://optimism-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 420: `https://optimism-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 42161: `https://arbitrum-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n // 42161: 'https://evocative-stylish-dinghy.arbitrum-mainnet.discover.quiknode.pro/80b526d14fa9fd9a8b0db1e65554acaf00c6a1ab/',\n 421613: `https://arbitrum-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 43114: `https://avalanche-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 43113: `https://avalanche-fuji.infura.io/v3/${INFURA_API_KEY}`,\n 1313161554: `https://aurora-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 1313161555: `https://aurora-testnet.infura.io/v3/${INFURA_API_KEY}`,\n 56: \"https://neat-greatest-layer.bsc.quiknode.pro/9405a499ceee314e5f2f68c9d47518d3537fce6a/\",\n 8453: \"https://twilight-red-tree.base-mainnet.quiknode.pro/dc6eb27bf0f917df215922488dd97f4de7d9b08e/\",\n 84531:\n \"https://icy-long-mountain.base-goerli.quiknode.pro/5b80d93e97cc9412a63c10a30841869abbef9596/\",\n 100: \"https://thrilling-fluent-film.xdai.quiknode.pro/305955cffb9868cdd95b5e3dc9775f20678ad9ac/\",\n 10200: \"https://nd-810-853-201.p2pify.com/e828b09f0d43591de96c297b3f36fffd\",\n 59144: `https://linea-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 59140: `https://linea-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 204: \"https://opbnb.rpc.thirdweb.com/eed98c1f30120c0508f17c1f01d3102b\",\n 42069: \"https://rpc.op-testnet.gelato.digital\",\n 1261120: \"https://rpc.zkatana.gelato.digital\",\n 84532:\n \"https://floral-old-feather.base-sepolia.quiknode.pro/4c3b4295d0c174410872b1e461a91cc33c7969a9/\",\n 421614: `https://arbitrum-sepolia.infura.io/v3/${INFURA_API_KEY}`,\n 11155420: `https://optimism-sepolia.infura.io/v3/${INFURA_API_KEY}`,\n // 5611: 'opBnb-testnet',\n};\n"]}
|
|
@@ -71,7 +71,7 @@ const convertWalletClientToAccountSigner = (client) => {
|
|
|
71
71
|
raw: message,
|
|
72
72
|
},
|
|
73
73
|
})),
|
|
74
|
-
signTypedData: async (params) => await client.signTypedData({ ...params, account: client.account }),
|
|
74
|
+
signTypedData: async (params) => (0, exports.fixSignedData)(await client.signTypedData({ ...params, account: client.account })),
|
|
75
75
|
};
|
|
76
76
|
};
|
|
77
77
|
exports.convertWalletClientToAccountSigner = convertWalletClientToAccountSigner;
|
|
@@ -85,7 +85,7 @@ const convertEthersSignerToAccountSigner = (signer) => {
|
|
|
85
85
|
if (!(0, exports.isWallet)(signer)) {
|
|
86
86
|
throw Error("signTypedData method not implemented in signer");
|
|
87
87
|
}
|
|
88
|
-
return (await signer._signTypedData(params.domain, params.types, params.message));
|
|
88
|
+
return (0, exports.fixSignedData)((await signer._signTypedData(params.domain, params.types, params.message)));
|
|
89
89
|
},
|
|
90
90
|
};
|
|
91
91
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAUc;AACd,oDAAsC;AACtC,uEAAyD;AASzD,iDAAwD;AASxD,MAAM,UAAU,GAAG,CAAC,GAAsC,EAAU,EAAE;IACpE,MAAM,IAAI,GAAG,IAAA,cAAO,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,IAAA,mBAAY,EAC1B,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EACnD;QACE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACnB,IAAA,gBAAS,EAAC,IAAI,EAAE,KAAK,CAAC;KACvB,CACF,CAAC;IACF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC,CAAC;AACK,MAAM,eAAe,GAAG,CAC7B,IAA4C,EACvC,EAAE;IACP,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAQ,CAAC;AACnE,CAAC,CAAC;AAJW,QAAA,eAAe,mBAI1B;AAEF,SAAgB,aAAa,CAAC,MAAc;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAW,CAAC,CAAC;AACvE,CAAC;AAHD,sCAGC;AAED,SAAgB,aAAa,CAAC,KAAiB;IAC7C,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;AACzB,CAAC;AAHD,sCAGC;AAED,SAAgB,kBAAkB,CAChC,QAA2B,EAC3B,OAAe;IAEf,IAAI,QAAQ,KAAK,YAAY,EAAE;QAC7B,OAAO,4CAA4C,CAAC;KACrD;IACD,OAAO,qCAAsB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;AAChE,CAAC;AARD,gDAQC;AAEM,MAAM,kCAAkC,GAAG,CAChD,MAAoB,EACA,EAAE;IACtB,OAAO;QACL,UAAU,EAAE,KAAK,IAAI,EAAE,CACrB,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAkB,CAAC;QACpE,WAAW,EAAE,KAAK,EAAE,OAA4B,EAAE,EAAE,CAClD,CAAC,MAAM,MAAM,CAAC,WAAW,CAAC;YACxB,OAAO,EAAE,MAAM,CAAC,OAAQ;YACxB,OAAO,EACL,OAAO,OAAO,KAAK,QAAQ;gBACzB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC;oBACE,GAAG,EAAE,OAAO;iBACb;SACR,CAAC,CAAkB;QACtB,aAAa,EAAE,KAAK,EAAE,MAA2B,EAAE,EAAE,CACnD,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n encodePacked,\n fromBytes,\n toBytes,\n type Hex,\n type WalletClient,\n toHex,\n isHex,\n hexToSignature,\n signatureToHex,\n} from \"viem\";\nimport * as chains from \"viem/chains\";\nimport * as customChains from \"./utils/custom-chains.js\";\nimport type {\n SignTypedDataParams,\n SmartAccountSigner,\n UserOperationCallData,\n} from \"@alchemy/aa-core\";\nimport { Signer, type TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport type { SupportedGasToken } from \"./paymaster/types.js\";\nimport { gasTokenChainAddresses } from \"./constants.js\";\n\nexport type UserOperationCallDataWithDelegate = UserOperationCallData & {\n delegateCall?: boolean;\n};\n\nexport type BatchUserOperationCallDataWithDelegate =\n UserOperationCallDataWithDelegate[];\n\nconst encodeCall = (_tx: UserOperationCallDataWithDelegate): string => {\n const data = toBytes(_tx.data);\n const encoded = encodePacked(\n [\"uint8\", \"address\", \"uint256\", \"uint256\", \"bytes\"],\n [\n _tx.delegateCall ? 1 : 0,\n _tx.target,\n _tx.value || BigInt(0),\n BigInt(data.length),\n fromBytes(data, \"hex\"),\n ]\n );\n return encoded.slice(2);\n};\nexport const encodeMultiSend = (\n _txs: BatchUserOperationCallDataWithDelegate\n): Hex => {\n return (\"0x\" + _txs.map((tx) => encodeCall(tx)).join(\"\")) as Hex;\n};\n\nexport function base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0) as number);\n}\n\nexport function bytesToBase64(bytes: Uint8Array) {\n const binString = Array.from(bytes, (x) => String.fromCodePoint(x)).join(\"\");\n return btoa(binString);\n}\n\nexport function getGasTokenAddress(\n gasToken: SupportedGasToken,\n chainId: number\n): Hex | undefined {\n if (gasToken === \"TEST_ERC20\") {\n return \"0x3870419Ba2BBf0127060bCB37f69A1b1C090992B\";\n }\n return gasTokenChainAddresses[gasToken][chainId] || undefined;\n}\n\nexport const convertWalletClientToAccountSigner = (\n client: WalletClient\n): SmartAccountSigner => {\n return {\n getAddress: async () =>\n Promise.resolve((await client.getAddresses())[0] as `0x${string}`),\n signMessage: async (message: Uint8Array | string) =>\n (await client.signMessage({\n account: client.account!,\n message:\n typeof message === \"string\"\n ? message\n : {\n raw: message,\n },\n })) as `0x${string}`,\n signTypedData: async (params: SignTypedDataParams) =>\n fixSignedData(\n await client.signTypedData({ ...params, account: client.account! })\n ),\n };\n};\n\nexport const isWallet = (signer: any): signer is Wallet =>\n signer && signer._signTypedData !== undefined;\n\nexport const convertEthersSignerToAccountSigner = (\n signer: Signer | Wallet\n): SmartAccountSigner => {\n return {\n getAddress: async () =>\n Promise.resolve((await signer.getAddress()) as `0x${string}`),\n signMessage: async (msg: Uint8Array | string) =>\n (await signer.signMessage(msg)) as `0x${string}`,\n signTypedData: async (params: SignTypedDataParams) => {\n if (!isWallet(signer)) {\n throw Error(\"signTypedData method not implemented in signer\");\n }\n return fixSignedData(\n (await signer._signTypedData(\n params.domain!,\n params.types as unknown as Record<string, TypedDataField[]>,\n params.message\n )) as Hex\n );\n },\n };\n};\n\nexport const randomHexString = (length: number): Hex =>\n toHex(\n Array.from({ length }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join(\"\")\n );\n\nexport const fixSignedData = (sig: Hex): Hex => {\n let signature = sig;\n if (!isHex(signature)) {\n signature = `0x${signature}`;\n if (!isHex(signature)) {\n throw new Error(\"Invalid signed data \" + sig);\n }\n }\n\n let { r, s, v } = hexToSignature(signature);\n if (v === 0n || v === 1n) v += 27n;\n const joined = signatureToHex({ r, s, v });\n return joined;\n};\n\n// Modified from @alchemy/aa-core\n/**\n * Utility method for converting a chainId to a {@link chains.Chain} object\n *\n * @param chainId\n * @returns a {@link chains.Chain} object for the given chainId\n * @throws if the chainId is not found\n */\nexport const getChain = (chainId: number): chains.Chain => {\n for (const chain of Object.values(chains).concat(\n Object.values(customChains)\n )) {\n if (chain.id === chainId) {\n return chain;\n }\n }\n throw new Error(\"could not find chain\");\n};\n"]}
|
|
@@ -321,8 +321,7 @@ class RecoveryValidator extends base_js_1.KernelBaseValidator {
|
|
|
321
321
|
if (!this.chain) {
|
|
322
322
|
throw new Error("Validator uninitialized");
|
|
323
323
|
}
|
|
324
|
-
|
|
325
|
-
return await signer.signTypedData({
|
|
324
|
+
return await this.signTypedData({
|
|
326
325
|
domain: {
|
|
327
326
|
name: "WeightedECDSAValidator",
|
|
328
327
|
version: "0.0.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n} from \"./base.js\";\nimport {\n concatHex,\n encodeAbiParameters,\n encodeFunctionData,\n getContract,\n parseAbiParameters,\n type LocalAccount,\n createWalletClient,\n type WalletClient,\n http,\n custom,\n type Transport,\n type Chain,\n type Account,\n publicActions,\n getFunctionSelector,\n type PublicClient,\n} from \"viem\";\nimport { WeightedValidatorAbi } from \"../abis/WeightedValidatorAbi.js\";\nimport { getChainId, getRecoveryData } from \"../api/index.js\";\nimport {\n CHAIN_ID_TO_NODE,\n DUMMY_ECDSA_SIG,\n RECOVERY_ACTION,\n RECOVERY_VALIDATOR_ADDRESS,\n} from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { EthereumProvider } from \"./types.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\n\ninterface WeightedGuardians {\n [guardian: Address]: number;\n}\nexport interface RecoveryValidatorParams extends KernelBaseValidatorParams {\n guardians?: WeightedGuardians;\n threshold?: number;\n delaySeconds?: number;\n accountSigner?: SmartAccountSigner;\n localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n walletClient?: WalletClient<Transport, Chain>;\n signatures?: Hex;\n recoveryId?: string;\n}\n\nexport type RecoveryConfig = Required<\n Pick<RecoveryValidatorParams, \"guardians\" | \"threshold\" | \"delaySeconds\">\n>;\n\nexport function isLocalAccount(account: any): account is LocalAccount<string> {\n return account && account.signTransaction !== undefined;\n}\n\nexport function isEthereumProvider(\n provider: any\n): provider is EthereumProvider {\n return provider && provider.request !== undefined;\n}\n\ntype WalletClientAccountType<T> = T extends LocalAccount<string>\n ? Account\n : T extends EthereumProvider\n ? undefined\n : never;\n\nexport const recoverySelector = getFunctionSelector(\n \"doRecovery(address, bytes)\"\n);\n\nexport class RecoveryValidator extends KernelBaseValidator {\n protected guardians?: WeightedGuardians;\n protected threshold?: number;\n protected delaySeconds: number;\n protected accountSigner?: SmartAccountSigner;\n protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n protected signatures?: Hex;\n protected recoveryId?: string;\n walletClient?: WalletClient<\n Transport,\n Chain,\n WalletClientAccountType<typeof this.localAccountOrProvider>\n >;\n\n constructor(params: RecoveryValidatorParams) {\n super(params);\n this.guardians = params.guardians;\n this.threshold = params.threshold;\n this.delaySeconds = params.delaySeconds ?? 0;\n this.accountSigner = params.accountSigner;\n this.mode = params.mode ?? ValidatorMode.plugin;\n this.localAccountOrProvider = params.localAccountOrProvider;\n this.signatures = params.signatures;\n this.validAfter = params.validAfter ?? 0;\n this.validUntil = params.validUntil ?? 0;\n this.executor = params.executor ?? RECOVERY_ACTION;\n this.selector = params.selector ?? recoverySelector;\n this.recoveryId = params.recoveryId;\n if (isLocalAccount(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n account: params.localAccountOrProvider,\n chain: this.chain ?? polygonMumbai,\n transport: http(\n this.rpcUrl ?? CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]\n ),\n }).extend(publicActions);\n } else if (isEthereumProvider(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n chain: this.chain ?? polygonMumbai,\n transport: custom(params.localAccountOrProvider),\n }).extend(publicActions);\n } else if (params.walletClient) {\n this.walletClient = params.walletClient.extend(publicActions);\n } else if (params.localAccountOrProvider) {\n throw Error(\"Incorrect localAccountOrProvider type\");\n }\n }\n\n public static async init(\n params: RecoveryValidatorParams\n ): Promise<RecoveryValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new RecoveryValidator({ ...params, chain });\n return instance;\n }\n\n getNonceKey(): bigint {\n return BigInt(this.validatorAddress);\n }\n\n setRecoverySignatures(signatures: Hex) {\n this.signatures = signatures;\n }\n\n async getRecoverySignatures(): Promise<Hex | undefined> {\n if (this.recoveryId) {\n const { signatures } = await getRecoveryData(this.recoveryId);\n this.setRecoverySignatures(signatures);\n }\n return this.signatures;\n }\n\n getRecoveryConfig(): RecoveryConfig {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return {\n guardians: this.guardians,\n threshold: this.threshold,\n delaySeconds: this.delaySeconds,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await Promise.resolve(this.accountSigner);\n }\n\n async getEnableData(): Promise<Hex> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return encodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n [\n Object.keys(this.guardians) as Address[],\n Object.values(this.guardians),\n this.threshold,\n this.delaySeconds,\n ]\n );\n }\n\n encodeEnable(recoveryData: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"enable\",\n args: [recoveryData],\n });\n }\n\n encodeDisable(disableData: Hex = \"0x\"): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"disable\",\n args: [disableData],\n });\n }\n\n encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approve\",\n args: [callDataAndNonceHash, kernelAccountAddress],\n });\n }\n\n encodeApproveWithSig(\n callDataAndNonceHash: Hex,\n kernelAccountAddress: Address,\n sigs: Hex\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approveWithSig\",\n args: [callDataAndNonceHash, kernelAccountAddress, sigs],\n });\n }\n\n encodeVeto(callDataAndNonceHash: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"veto\",\n args: [callDataAndNonceHash],\n });\n }\n\n encodeRenew(\n guardians: Address[],\n weights: number[],\n threshold: number,\n delay: number\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"renew\",\n args: [guardians, weights, threshold, delay],\n });\n }\n\n encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex {\n return encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n }\n\n static async fetchRecoveryConfigFromContract(\n kernelAccountAddress: Address,\n publicClient: PublicClient<Transport, Chain>\n ): Promise<RecoveryConfig> {\n try {\n const [, threshold, delaySeconds, firstGuardian] =\n await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n const guardians: WeightedGuardians = {};\n\n let nextGuardian = firstGuardian;\n while (\n nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()\n ) {\n const guardianStorage = await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"guardian\",\n args: [nextGuardian, kernelAccountAddress],\n });\n guardians[nextGuardian] = guardianStorage[0];\n nextGuardian = guardianStorage[1];\n }\n return {\n threshold,\n delaySeconds,\n guardians,\n };\n } catch (error) {\n throw Error(\"Failed to fetch config from contract\");\n }\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n try {\n const kernel = getContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n publicClient: this.publicClient,\n });\n const execDetail = await kernel.read.getExecution([selector]);\n const enableData = await this.publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableData[0] ===\n Object.values(this.guardians).reduce((a, c) => a + c, 0) &&\n enableData[1] === this.threshold &&\n enableData[2] === this.delaySeconds &&\n this.isGuardiansEnabled(kernelAccountAddress)\n );\n } catch (error) {\n return false;\n }\n }\n\n async isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n const weightedValidator = getContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n publicClient: this.publicClient,\n });\n for (const [addr, weight] of Object.entries(this.guardians)) {\n const result = await weightedValidator.read.guardian([\n addr as Address,\n kernelAccountAddress,\n ]);\n if (result[0] !== weight) {\n return false;\n }\n }\n return true;\n }\n\n async getDummyUserOpSignature(): Promise<Hex> {\n let dummySignature: Hex = \"0x\";\n if (this.signatures) {\n const totalSigs = this.signatures.substring(2).length / 130;\n for (let i = 0; i < totalSigs; i++) {\n dummySignature = concatHex([dummySignature, DUMMY_ECDSA_SIG]);\n }\n // Hack - Fix this to not send original signatures\n return this.signatures;\n }\n return DUMMY_ECDSA_SIG;\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await this.accountSigner.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return fixSignedData(await this.accountSigner.signTypedData(params));\n }\n\n async signRecoveryHash(recoveryHash: Hex): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const signer = await this.signer();\n return await signer.signTypedData({\n domain: {\n name: \"WeightedECDSAValidator\",\n version: \"0.0.1\",\n chainId: this.chain.id,\n verifyingContract: this.validatorAddress,\n },\n types: {\n Approve: [{ name: \"callDataAndNonceHash\", type: \"bytes32\" }],\n },\n message: {\n callDataAndNonceHash: recoveryHash,\n },\n primaryType: \"Approve\",\n });\n }\n\n async signUserOp(_userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return this.signatures ?? DUMMY_ECDSA_SIG;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"recovery-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n} from \"./base.js\";\nimport {\n concatHex,\n encodeAbiParameters,\n encodeFunctionData,\n getContract,\n parseAbiParameters,\n type LocalAccount,\n createWalletClient,\n type WalletClient,\n http,\n custom,\n type Transport,\n type Chain,\n type Account,\n publicActions,\n getFunctionSelector,\n type PublicClient,\n} from \"viem\";\nimport { WeightedValidatorAbi } from \"../abis/WeightedValidatorAbi.js\";\nimport { getChainId, getRecoveryData } from \"../api/index.js\";\nimport {\n CHAIN_ID_TO_NODE,\n DUMMY_ECDSA_SIG,\n RECOVERY_ACTION,\n RECOVERY_VALIDATOR_ADDRESS,\n} from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { EthereumProvider } from \"./types.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\n\ninterface WeightedGuardians {\n [guardian: Address]: number;\n}\nexport interface RecoveryValidatorParams extends KernelBaseValidatorParams {\n guardians?: WeightedGuardians;\n threshold?: number;\n delaySeconds?: number;\n accountSigner?: SmartAccountSigner;\n localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n walletClient?: WalletClient<Transport, Chain>;\n signatures?: Hex;\n recoveryId?: string;\n}\n\nexport type RecoveryConfig = Required<\n Pick<RecoveryValidatorParams, \"guardians\" | \"threshold\" | \"delaySeconds\">\n>;\n\nexport function isLocalAccount(account: any): account is LocalAccount<string> {\n return account && account.signTransaction !== undefined;\n}\n\nexport function isEthereumProvider(\n provider: any\n): provider is EthereumProvider {\n return provider && provider.request !== undefined;\n}\n\ntype WalletClientAccountType<T> = T extends LocalAccount<string>\n ? Account\n : T extends EthereumProvider\n ? undefined\n : never;\n\nexport const recoverySelector = getFunctionSelector(\n \"doRecovery(address, bytes)\"\n);\n\nexport class RecoveryValidator extends KernelBaseValidator {\n protected guardians?: WeightedGuardians;\n protected threshold?: number;\n protected delaySeconds: number;\n protected accountSigner?: SmartAccountSigner;\n protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n protected signatures?: Hex;\n protected recoveryId?: string;\n walletClient?: WalletClient<\n Transport,\n Chain,\n WalletClientAccountType<typeof this.localAccountOrProvider>\n >;\n\n constructor(params: RecoveryValidatorParams) {\n super(params);\n this.guardians = params.guardians;\n this.threshold = params.threshold;\n this.delaySeconds = params.delaySeconds ?? 0;\n this.accountSigner = params.accountSigner;\n this.mode = params.mode ?? ValidatorMode.plugin;\n this.localAccountOrProvider = params.localAccountOrProvider;\n this.signatures = params.signatures;\n this.validAfter = params.validAfter ?? 0;\n this.validUntil = params.validUntil ?? 0;\n this.executor = params.executor ?? RECOVERY_ACTION;\n this.selector = params.selector ?? recoverySelector;\n this.recoveryId = params.recoveryId;\n if (isLocalAccount(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n account: params.localAccountOrProvider,\n chain: this.chain ?? polygonMumbai,\n transport: http(\n this.rpcUrl ?? CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]\n ),\n }).extend(publicActions);\n } else if (isEthereumProvider(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n chain: this.chain ?? polygonMumbai,\n transport: custom(params.localAccountOrProvider),\n }).extend(publicActions);\n } else if (params.walletClient) {\n this.walletClient = params.walletClient.extend(publicActions);\n } else if (params.localAccountOrProvider) {\n throw Error(\"Incorrect localAccountOrProvider type\");\n }\n }\n\n public static async init(\n params: RecoveryValidatorParams\n ): Promise<RecoveryValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new RecoveryValidator({ ...params, chain });\n return instance;\n }\n\n getNonceKey(): bigint {\n return BigInt(this.validatorAddress);\n }\n\n setRecoverySignatures(signatures: Hex) {\n this.signatures = signatures;\n }\n\n async getRecoverySignatures(): Promise<Hex | undefined> {\n if (this.recoveryId) {\n const { signatures } = await getRecoveryData(this.recoveryId);\n this.setRecoverySignatures(signatures);\n }\n return this.signatures;\n }\n\n getRecoveryConfig(): RecoveryConfig {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return {\n guardians: this.guardians,\n threshold: this.threshold,\n delaySeconds: this.delaySeconds,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await Promise.resolve(this.accountSigner);\n }\n\n async getEnableData(): Promise<Hex> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return encodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n [\n Object.keys(this.guardians) as Address[],\n Object.values(this.guardians),\n this.threshold,\n this.delaySeconds,\n ]\n );\n }\n\n encodeEnable(recoveryData: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"enable\",\n args: [recoveryData],\n });\n }\n\n encodeDisable(disableData: Hex = \"0x\"): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"disable\",\n args: [disableData],\n });\n }\n\n encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approve\",\n args: [callDataAndNonceHash, kernelAccountAddress],\n });\n }\n\n encodeApproveWithSig(\n callDataAndNonceHash: Hex,\n kernelAccountAddress: Address,\n sigs: Hex\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approveWithSig\",\n args: [callDataAndNonceHash, kernelAccountAddress, sigs],\n });\n }\n\n encodeVeto(callDataAndNonceHash: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"veto\",\n args: [callDataAndNonceHash],\n });\n }\n\n encodeRenew(\n guardians: Address[],\n weights: number[],\n threshold: number,\n delay: number\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"renew\",\n args: [guardians, weights, threshold, delay],\n });\n }\n\n encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex {\n return encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n }\n\n static async fetchRecoveryConfigFromContract(\n kernelAccountAddress: Address,\n publicClient: PublicClient<Transport, Chain>\n ): Promise<RecoveryConfig> {\n try {\n const [, threshold, delaySeconds, firstGuardian] =\n await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n const guardians: WeightedGuardians = {};\n\n let nextGuardian = firstGuardian;\n while (\n nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()\n ) {\n const guardianStorage = await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"guardian\",\n args: [nextGuardian, kernelAccountAddress],\n });\n guardians[nextGuardian] = guardianStorage[0];\n nextGuardian = guardianStorage[1];\n }\n return {\n threshold,\n delaySeconds,\n guardians,\n };\n } catch (error) {\n throw Error(\"Failed to fetch config from contract\");\n }\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n try {\n const kernel = getContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n publicClient: this.publicClient,\n });\n const execDetail = await kernel.read.getExecution([selector]);\n const enableData = await this.publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableData[0] ===\n Object.values(this.guardians).reduce((a, c) => a + c, 0) &&\n enableData[1] === this.threshold &&\n enableData[2] === this.delaySeconds &&\n this.isGuardiansEnabled(kernelAccountAddress)\n );\n } catch (error) {\n return false;\n }\n }\n\n async isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n const weightedValidator = getContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n publicClient: this.publicClient,\n });\n for (const [addr, weight] of Object.entries(this.guardians)) {\n const result = await weightedValidator.read.guardian([\n addr as Address,\n kernelAccountAddress,\n ]);\n if (result[0] !== weight) {\n return false;\n }\n }\n return true;\n }\n\n async getDummyUserOpSignature(): Promise<Hex> {\n let dummySignature: Hex = \"0x\";\n if (this.signatures) {\n const totalSigs = this.signatures.substring(2).length / 130;\n for (let i = 0; i < totalSigs; i++) {\n dummySignature = concatHex([dummySignature, DUMMY_ECDSA_SIG]);\n }\n // Hack - Fix this to not send original signatures\n return this.signatures;\n }\n return DUMMY_ECDSA_SIG;\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await this.accountSigner.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return fixSignedData(await this.accountSigner.signTypedData(params));\n }\n\n async signRecoveryHash(recoveryHash: Hex): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return await this.signTypedData({\n domain: {\n name: \"WeightedECDSAValidator\",\n version: \"0.0.1\",\n chainId: this.chain.id,\n verifyingContract: this.validatorAddress,\n },\n types: {\n Approve: [{ name: \"callDataAndNonceHash\", type: \"bytes32\" }],\n },\n message: {\n callDataAndNonceHash: recoveryHash,\n },\n primaryType: \"Approve\",\n });\n }\n\n async signUserOp(_userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return this.signatures ?? DUMMY_ECDSA_SIG;\n }\n}\n"]}
|
|
@@ -17,7 +17,7 @@ export declare const DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000
|
|
|
17
17
|
export declare const ERC165_SESSION_KEY_VALIDATOR_ADDRESS = "0xe149290800De29D4b0BF9dB82c508255D81902E6";
|
|
18
18
|
export declare const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
19
19
|
export declare const SESSION_KEY_VALIDATOR_ADDRESS = "0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5";
|
|
20
|
-
export declare const RECOVERY_VALIDATOR_ADDRESS = "
|
|
20
|
+
export declare const RECOVERY_VALIDATOR_ADDRESS = "0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8";
|
|
21
21
|
export declare const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
|
|
22
22
|
export declare const oneAddress = "0x0000000000000000000000000000000000000001";
|
|
23
23
|
export declare const gasTokenChainAddresses: IGasTokenAddresses;
|
|
@@ -17,7 +17,7 @@ export const DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff000000000000000
|
|
|
17
17
|
export const ERC165_SESSION_KEY_VALIDATOR_ADDRESS = "0xe149290800De29D4b0BF9dB82c508255D81902E6";
|
|
18
18
|
export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
19
19
|
export const SESSION_KEY_VALIDATOR_ADDRESS = "0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5";
|
|
20
|
-
export const RECOVERY_VALIDATOR_ADDRESS = "
|
|
20
|
+
export const RECOVERY_VALIDATOR_ADDRESS = "0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8";
|
|
21
21
|
export const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
|
|
22
22
|
export const oneAddress = "0x0000000000000000000000000000000000000001";
|
|
23
23
|
export const gasTokenChainAddresses = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseUnits, type Hex } from \"viem\";\nimport type { IGasTokenAddresses } from \"./paymaster/types.js\";\nimport { polygon } from \"viem/chains\";\n\nexport const DEFAULT_SEND_TX_MAX_RETRIES = 3;\nexport const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes\nexport const BUNDLER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/bundler\";\nexport const PAYMASTER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/paymaster\";\nexport const ENTRYPOINT_ADDRESS: Hex =\n \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nexport const MULTISEND_ADDR: Hex = \"0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c\";\nexport const BACKEND_URL = \"https://backend-vikp.onrender.com\";\nexport const API_URL = \"https://prod-api.zerodev.app\";\nexport const ECDSA_VALIDATOR_ADDRESS =\n \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\";\nexport const KERNEL_FACTORY_ADDRESS =\n \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const KERNEL_IMPL_ADDRESS = \"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5\";\nexport const KILL_SWITCH_VALIDATOR_ADDRESS =\n \"0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC\";\nexport const KILL_SWITCH_ACTION = \"0x3f38e479304c7F18F988269a1bDa7d646bd48243\";\nexport const DUMMY_ECDSA_SIG =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =\n \"0xe149290800De29D4b0BF9dB82c508255D81902E6\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const SESSION_KEY_VALIDATOR_ADDRESS =\n \"0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5\";\nexport const RECOVERY_VALIDATOR_ADDRESS =\n \"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/constants.ts"],"names":[],"mappings":"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","sourcesContent":["import { parseUnits, type Hex } from \"viem\";\nimport type { IGasTokenAddresses } from \"./paymaster/types.js\";\nimport { polygon } from \"viem/chains\";\n\nexport const DEFAULT_SEND_TX_MAX_RETRIES = 3;\nexport const DEFAULT_SEND_TX_RETRY_INTERVAL_MS = 60000; // 1 minutes\nexport const BUNDLER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/bundler\";\nexport const PAYMASTER_URL =\n \"https://meta-aa-provider.onrender.com/api/v1/paymaster\";\nexport const ENTRYPOINT_ADDRESS: Hex =\n \"0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789\";\nexport const MULTISEND_ADDR: Hex = \"0x8ae01fcf7c655655ff2c6ef907b8b4718ab4e17c\";\nexport const BACKEND_URL = \"https://backend-vikp.onrender.com\";\nexport const API_URL = \"https://prod-api.zerodev.app\";\nexport const ECDSA_VALIDATOR_ADDRESS =\n \"0xd9AB5096a832b9ce79914329DAEE236f8Eea0390\";\nexport const KERNEL_FACTORY_ADDRESS =\n \"0x5de4839a76cf55d0c90e2061ef4386d962E15ae3\";\nexport const KERNEL_IMPL_ADDRESS = \"0x0DA6a956B9488eD4dd761E59f52FDc6c8068E6B5\";\nexport const KILL_SWITCH_VALIDATOR_ADDRESS =\n \"0x7393A7dA58CCfFb78f52adb09705BE6E20F704BC\";\nexport const KILL_SWITCH_ACTION = \"0x3f38e479304c7F18F988269a1bDa7d646bd48243\";\nexport const DUMMY_ECDSA_SIG =\n \"0xfffffffffffffffffffffffffffffff0000000000000000000000000000000007aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa1c\";\nexport const ERC165_SESSION_KEY_VALIDATOR_ADDRESS =\n \"0xe149290800De29D4b0BF9dB82c508255D81902E6\";\nexport const TOKEN_ACTION = \"0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1\";\nexport const SESSION_KEY_VALIDATOR_ADDRESS =\n \"0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5\";\nexport const RECOVERY_VALIDATOR_ADDRESS =\n \"0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8\";\nexport const RECOVERY_ACTION = \"0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1\";\nexport const oneAddress = \"0x0000000000000000000000000000000000000001\";\n\nexport const gasTokenChainAddresses: IGasTokenAddresses = {\n USDC: {\n 1: \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n // 5: \"0x2f3A40A3db8a7e3D09B0adfEfbCe4f6F81927557\",\n 137: \"0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174\",\n // 80001: \"\",\n // 420: \"0x7F5c764cBc14f9669B88837ca1490cCa17c31607\",\n 42161: \"0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8\",\n // 421613: \"\",\n 43114: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n // 43113: \"\",\n // 56: \"\",\n // 97: \"\"\n },\n PEPE: {\n 1: \"0x6982508145454Ce325dDbE47a25d4ec3d2311933\",\n },\n};\n\nexport const ERC20_APPROVAL_AMOUNT: { [key: string]: bigint } = {\n // ETH\n [gasTokenChainAddresses[\"USDC\"][1]]: parseUnits(\"100\", 6),\n\n // Goerli\n [gasTokenChainAddresses[\"USDC\"][5]]: parseUnits(\"100\", 6),\n\n // Polygon\n [gasTokenChainAddresses[\"USDC\"][137]]: parseUnits(\"10\", 6),\n\n // Arbitrum\n [gasTokenChainAddresses[\"USDC\"][42161]]: parseUnits(\"10\", 6),\n\n // Avalanche\n [gasTokenChainAddresses[\"USDC\"][43114]]: parseUnits(\"10\", 6),\n\n // ETH\n [gasTokenChainAddresses[\"PEPE\"][1]]: parseUnits(\"50000000\", 18),\n\n \"0x3870419Ba2BBf0127060bCB37f69A1b1C090992B\": parseUnits(\"100\", 18),\n};\n\nexport const minPriorityFeePerBidDefaults = new Map<number, bigint>([\n [polygon.id, 30_000_000_000n],\n]);\n\nexport const INFURA_API_KEY = \"f36f7f706a58477884ce6fe89165666c\";\nexport const CHAIN_ID_TO_NODE: { [key: number]: string } = {\n 1: `https://mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 5: `https://goerli.infura.io/v3/${INFURA_API_KEY}`,\n 11155111:\n \"https://fittest-ultra-aura.ethereum-sepolia.quiknode.pro/3893d01b1dd411fdfa9b6dd372dd2b4f69fcf1ea/\",\n 137: `https://polygon-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 80001: `https://polygon-mumbai.infura.io/v3/${INFURA_API_KEY}`,\n 10: `https://optimism-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 420: `https://optimism-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 42161: `https://arbitrum-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n // 42161: 'https://evocative-stylish-dinghy.arbitrum-mainnet.discover.quiknode.pro/80b526d14fa9fd9a8b0db1e65554acaf00c6a1ab/',\n 421613: `https://arbitrum-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 43114: `https://avalanche-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 43113: `https://avalanche-fuji.infura.io/v3/${INFURA_API_KEY}`,\n 1313161554: `https://aurora-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 1313161555: `https://aurora-testnet.infura.io/v3/${INFURA_API_KEY}`,\n 56: \"https://neat-greatest-layer.bsc.quiknode.pro/9405a499ceee314e5f2f68c9d47518d3537fce6a/\",\n 8453: \"https://twilight-red-tree.base-mainnet.quiknode.pro/dc6eb27bf0f917df215922488dd97f4de7d9b08e/\",\n 84531:\n \"https://icy-long-mountain.base-goerli.quiknode.pro/5b80d93e97cc9412a63c10a30841869abbef9596/\",\n 100: \"https://thrilling-fluent-film.xdai.quiknode.pro/305955cffb9868cdd95b5e3dc9775f20678ad9ac/\",\n 10200: \"https://nd-810-853-201.p2pify.com/e828b09f0d43591de96c297b3f36fffd\",\n 59144: `https://linea-mainnet.infura.io/v3/${INFURA_API_KEY}`,\n 59140: `https://linea-goerli.infura.io/v3/${INFURA_API_KEY}`,\n 204: \"https://opbnb.rpc.thirdweb.com/eed98c1f30120c0508f17c1f01d3102b\",\n 42069: \"https://rpc.op-testnet.gelato.digital\",\n 1261120: \"https://rpc.zkatana.gelato.digital\",\n 84532:\n \"https://floral-old-feather.base-sepolia.quiknode.pro/4c3b4295d0c174410872b1e461a91cc33c7969a9/\",\n 421614: `https://arbitrum-sepolia.infura.io/v3/${INFURA_API_KEY}`,\n 11155420: `https://optimism-sepolia.infura.io/v3/${INFURA_API_KEY}`,\n // 5611: 'opBnb-testnet',\n};\n"]}
|
|
@@ -43,7 +43,7 @@ export const convertWalletClientToAccountSigner = (client) => {
|
|
|
43
43
|
raw: message,
|
|
44
44
|
},
|
|
45
45
|
})),
|
|
46
|
-
signTypedData: async (params) => await client.signTypedData({ ...params, account: client.account }),
|
|
46
|
+
signTypedData: async (params) => fixSignedData(await client.signTypedData({ ...params, account: client.account })),
|
|
47
47
|
};
|
|
48
48
|
};
|
|
49
49
|
export const isWallet = (signer) => signer && signer._signTypedData !== undefined;
|
|
@@ -55,7 +55,7 @@ export const convertEthersSignerToAccountSigner = (signer) => {
|
|
|
55
55
|
if (!isWallet(signer)) {
|
|
56
56
|
throw Error("signTypedData method not implemented in signer");
|
|
57
57
|
}
|
|
58
|
-
return (await signer._signTypedData(params.domain, params.types, params.message));
|
|
58
|
+
return fixSignedData((await signer._signTypedData(params.domain, params.types, params.message)));
|
|
59
59
|
},
|
|
60
60
|
};
|
|
61
61
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/utils.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/kernel-zerodev/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n encodePacked,\n fromBytes,\n toBytes,\n type Hex,\n type WalletClient,\n toHex,\n isHex,\n hexToSignature,\n signatureToHex,\n} from \"viem\";\nimport * as chains from \"viem/chains\";\nimport * as customChains from \"./utils/custom-chains.js\";\nimport type {\n SignTypedDataParams,\n SmartAccountSigner,\n UserOperationCallData,\n} from \"@alchemy/aa-core\";\nimport { Signer, type TypedDataField } from \"@ethersproject/abstract-signer\";\nimport { Wallet } from \"@ethersproject/wallet\";\nimport type { SupportedGasToken } from \"./paymaster/types.js\";\nimport { gasTokenChainAddresses } from \"./constants.js\";\n\nexport type UserOperationCallDataWithDelegate = UserOperationCallData & {\n delegateCall?: boolean;\n};\n\nexport type BatchUserOperationCallDataWithDelegate =\n UserOperationCallDataWithDelegate[];\n\nconst encodeCall = (_tx: UserOperationCallDataWithDelegate): string => {\n const data = toBytes(_tx.data);\n const encoded = encodePacked(\n [\"uint8\", \"address\", \"uint256\", \"uint256\", \"bytes\"],\n [\n _tx.delegateCall ? 1 : 0,\n _tx.target,\n _tx.value || BigInt(0),\n BigInt(data.length),\n fromBytes(data, \"hex\"),\n ]\n );\n return encoded.slice(2);\n};\nexport const encodeMultiSend = (\n _txs: BatchUserOperationCallDataWithDelegate\n): Hex => {\n return (\"0x\" + _txs.map((tx) => encodeCall(tx)).join(\"\")) as Hex;\n};\n\nexport function base64ToBytes(base64: string) {\n const binString = atob(base64);\n return Uint8Array.from(binString, (m) => m.codePointAt(0) as number);\n}\n\nexport function bytesToBase64(bytes: Uint8Array) {\n const binString = Array.from(bytes, (x) => String.fromCodePoint(x)).join(\"\");\n return btoa(binString);\n}\n\nexport function getGasTokenAddress(\n gasToken: SupportedGasToken,\n chainId: number\n): Hex | undefined {\n if (gasToken === \"TEST_ERC20\") {\n return \"0x3870419Ba2BBf0127060bCB37f69A1b1C090992B\";\n }\n return gasTokenChainAddresses[gasToken][chainId] || undefined;\n}\n\nexport const convertWalletClientToAccountSigner = (\n client: WalletClient\n): SmartAccountSigner => {\n return {\n getAddress: async () =>\n Promise.resolve((await client.getAddresses())[0] as `0x${string}`),\n signMessage: async (message: Uint8Array | string) =>\n (await client.signMessage({\n account: client.account!,\n message:\n typeof message === \"string\"\n ? message\n : {\n raw: message,\n },\n })) as `0x${string}`,\n signTypedData: async (params: SignTypedDataParams) =>\n fixSignedData(\n await client.signTypedData({ ...params, account: client.account! })\n ),\n };\n};\n\nexport const isWallet = (signer: any): signer is Wallet =>\n signer && signer._signTypedData !== undefined;\n\nexport const convertEthersSignerToAccountSigner = (\n signer: Signer | Wallet\n): SmartAccountSigner => {\n return {\n getAddress: async () =>\n Promise.resolve((await signer.getAddress()) as `0x${string}`),\n signMessage: async (msg: Uint8Array | string) =>\n (await signer.signMessage(msg)) as `0x${string}`,\n signTypedData: async (params: SignTypedDataParams) => {\n if (!isWallet(signer)) {\n throw Error(\"signTypedData method not implemented in signer\");\n }\n return fixSignedData(\n (await signer._signTypedData(\n params.domain!,\n params.types as unknown as Record<string, TypedDataField[]>,\n params.message\n )) as Hex\n );\n },\n };\n};\n\nexport const randomHexString = (length: number): Hex =>\n toHex(\n Array.from({ length }, () =>\n Math.floor(Math.random() * 16).toString(16)\n ).join(\"\")\n );\n\nexport const fixSignedData = (sig: Hex): Hex => {\n let signature = sig;\n if (!isHex(signature)) {\n signature = `0x${signature}`;\n if (!isHex(signature)) {\n throw new Error(\"Invalid signed data \" + sig);\n }\n }\n\n let { r, s, v } = hexToSignature(signature);\n if (v === 0n || v === 1n) v += 27n;\n const joined = signatureToHex({ r, s, v });\n return joined;\n};\n\n// Modified from @alchemy/aa-core\n/**\n * Utility method for converting a chainId to a {@link chains.Chain} object\n *\n * @param chainId\n * @returns a {@link chains.Chain} object for the given chainId\n * @throws if the chainId is not found\n */\nexport const getChain = (chainId: number): chains.Chain => {\n for (const chain of Object.values(chains).concat(\n Object.values(customChains)\n )) {\n if (chain.id === chainId) {\n return chain;\n }\n }\n throw new Error(\"could not find chain\");\n};\n"]}
|
|
@@ -317,8 +317,7 @@ export class RecoveryValidator extends KernelBaseValidator {
|
|
|
317
317
|
if (!this.chain) {
|
|
318
318
|
throw new Error("Validator uninitialized");
|
|
319
319
|
}
|
|
320
|
-
|
|
321
|
-
return await signer.signTypedData({
|
|
320
|
+
return await this.signTypedData({
|
|
322
321
|
domain: {
|
|
323
322
|
name: "WeightedECDSAValidator",
|
|
324
323
|
version: "0.0.1",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n} from \"./base.js\";\nimport {\n concatHex,\n encodeAbiParameters,\n encodeFunctionData,\n getContract,\n parseAbiParameters,\n type LocalAccount,\n createWalletClient,\n type WalletClient,\n http,\n custom,\n type Transport,\n type Chain,\n type Account,\n publicActions,\n getFunctionSelector,\n type PublicClient,\n} from \"viem\";\nimport { WeightedValidatorAbi } from \"../abis/WeightedValidatorAbi.js\";\nimport { getChainId, getRecoveryData } from \"../api/index.js\";\nimport {\n CHAIN_ID_TO_NODE,\n DUMMY_ECDSA_SIG,\n RECOVERY_ACTION,\n RECOVERY_VALIDATOR_ADDRESS,\n} from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { EthereumProvider } from \"./types.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\n\ninterface WeightedGuardians {\n [guardian: Address]: number;\n}\nexport interface RecoveryValidatorParams extends KernelBaseValidatorParams {\n guardians?: WeightedGuardians;\n threshold?: number;\n delaySeconds?: number;\n accountSigner?: SmartAccountSigner;\n localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n walletClient?: WalletClient<Transport, Chain>;\n signatures?: Hex;\n recoveryId?: string;\n}\n\nexport type RecoveryConfig = Required<\n Pick<RecoveryValidatorParams, \"guardians\" | \"threshold\" | \"delaySeconds\">\n>;\n\nexport function isLocalAccount(account: any): account is LocalAccount<string> {\n return account && account.signTransaction !== undefined;\n}\n\nexport function isEthereumProvider(\n provider: any\n): provider is EthereumProvider {\n return provider && provider.request !== undefined;\n}\n\ntype WalletClientAccountType<T> = T extends LocalAccount<string>\n ? Account\n : T extends EthereumProvider\n ? undefined\n : never;\n\nexport const recoverySelector = getFunctionSelector(\n \"doRecovery(address, bytes)\"\n);\n\nexport class RecoveryValidator extends KernelBaseValidator {\n protected guardians?: WeightedGuardians;\n protected threshold?: number;\n protected delaySeconds: number;\n protected accountSigner?: SmartAccountSigner;\n protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n protected signatures?: Hex;\n protected recoveryId?: string;\n walletClient?: WalletClient<\n Transport,\n Chain,\n WalletClientAccountType<typeof this.localAccountOrProvider>\n >;\n\n constructor(params: RecoveryValidatorParams) {\n super(params);\n this.guardians = params.guardians;\n this.threshold = params.threshold;\n this.delaySeconds = params.delaySeconds ?? 0;\n this.accountSigner = params.accountSigner;\n this.mode = params.mode ?? ValidatorMode.plugin;\n this.localAccountOrProvider = params.localAccountOrProvider;\n this.signatures = params.signatures;\n this.validAfter = params.validAfter ?? 0;\n this.validUntil = params.validUntil ?? 0;\n this.executor = params.executor ?? RECOVERY_ACTION;\n this.selector = params.selector ?? recoverySelector;\n this.recoveryId = params.recoveryId;\n if (isLocalAccount(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n account: params.localAccountOrProvider,\n chain: this.chain ?? polygonMumbai,\n transport: http(\n this.rpcUrl ?? CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]\n ),\n }).extend(publicActions);\n } else if (isEthereumProvider(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n chain: this.chain ?? polygonMumbai,\n transport: custom(params.localAccountOrProvider),\n }).extend(publicActions);\n } else if (params.walletClient) {\n this.walletClient = params.walletClient.extend(publicActions);\n } else if (params.localAccountOrProvider) {\n throw Error(\"Incorrect localAccountOrProvider type\");\n }\n }\n\n public static async init(\n params: RecoveryValidatorParams\n ): Promise<RecoveryValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new RecoveryValidator({ ...params, chain });\n return instance;\n }\n\n getNonceKey(): bigint {\n return BigInt(this.validatorAddress);\n }\n\n setRecoverySignatures(signatures: Hex) {\n this.signatures = signatures;\n }\n\n async getRecoverySignatures(): Promise<Hex | undefined> {\n if (this.recoveryId) {\n const { signatures } = await getRecoveryData(this.recoveryId);\n this.setRecoverySignatures(signatures);\n }\n return this.signatures;\n }\n\n getRecoveryConfig(): RecoveryConfig {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return {\n guardians: this.guardians,\n threshold: this.threshold,\n delaySeconds: this.delaySeconds,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await Promise.resolve(this.accountSigner);\n }\n\n async getEnableData(): Promise<Hex> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return encodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n [\n Object.keys(this.guardians) as Address[],\n Object.values(this.guardians),\n this.threshold,\n this.delaySeconds,\n ]\n );\n }\n\n encodeEnable(recoveryData: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"enable\",\n args: [recoveryData],\n });\n }\n\n encodeDisable(disableData: Hex = \"0x\"): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"disable\",\n args: [disableData],\n });\n }\n\n encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approve\",\n args: [callDataAndNonceHash, kernelAccountAddress],\n });\n }\n\n encodeApproveWithSig(\n callDataAndNonceHash: Hex,\n kernelAccountAddress: Address,\n sigs: Hex\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approveWithSig\",\n args: [callDataAndNonceHash, kernelAccountAddress, sigs],\n });\n }\n\n encodeVeto(callDataAndNonceHash: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"veto\",\n args: [callDataAndNonceHash],\n });\n }\n\n encodeRenew(\n guardians: Address[],\n weights: number[],\n threshold: number,\n delay: number\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"renew\",\n args: [guardians, weights, threshold, delay],\n });\n }\n\n encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex {\n return encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n }\n\n static async fetchRecoveryConfigFromContract(\n kernelAccountAddress: Address,\n publicClient: PublicClient<Transport, Chain>\n ): Promise<RecoveryConfig> {\n try {\n const [, threshold, delaySeconds, firstGuardian] =\n await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n const guardians: WeightedGuardians = {};\n\n let nextGuardian = firstGuardian;\n while (\n nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()\n ) {\n const guardianStorage = await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"guardian\",\n args: [nextGuardian, kernelAccountAddress],\n });\n guardians[nextGuardian] = guardianStorage[0];\n nextGuardian = guardianStorage[1];\n }\n return {\n threshold,\n delaySeconds,\n guardians,\n };\n } catch (error) {\n throw Error(\"Failed to fetch config from contract\");\n }\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n try {\n const kernel = getContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n publicClient: this.publicClient,\n });\n const execDetail = await kernel.read.getExecution([selector]);\n const enableData = await this.publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableData[0] ===\n Object.values(this.guardians).reduce((a, c) => a + c, 0) &&\n enableData[1] === this.threshold &&\n enableData[2] === this.delaySeconds &&\n this.isGuardiansEnabled(kernelAccountAddress)\n );\n } catch (error) {\n return false;\n }\n }\n\n async isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n const weightedValidator = getContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n publicClient: this.publicClient,\n });\n for (const [addr, weight] of Object.entries(this.guardians)) {\n const result = await weightedValidator.read.guardian([\n addr as Address,\n kernelAccountAddress,\n ]);\n if (result[0] !== weight) {\n return false;\n }\n }\n return true;\n }\n\n async getDummyUserOpSignature(): Promise<Hex> {\n let dummySignature: Hex = \"0x\";\n if (this.signatures) {\n const totalSigs = this.signatures.substring(2).length / 130;\n for (let i = 0; i < totalSigs; i++) {\n dummySignature = concatHex([dummySignature, DUMMY_ECDSA_SIG]);\n }\n // Hack - Fix this to not send original signatures\n return this.signatures;\n }\n return DUMMY_ECDSA_SIG;\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await this.accountSigner.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return fixSignedData(await this.accountSigner.signTypedData(params));\n }\n\n async signRecoveryHash(recoveryHash: Hex): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n const signer = await this.signer();\n return await signer.signTypedData({\n domain: {\n name: \"WeightedECDSAValidator\",\n version: \"0.0.1\",\n chainId: this.chain.id,\n verifyingContract: this.validatorAddress,\n },\n types: {\n Approve: [{ name: \"callDataAndNonceHash\", type: \"bytes32\" }],\n },\n message: {\n callDataAndNonceHash: recoveryHash,\n },\n primaryType: \"Approve\",\n });\n }\n\n async signUserOp(_userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return this.signatures ?? DUMMY_ECDSA_SIG;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"recovery-validator.js","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type Address,\n type Hex,\n type SmartAccountSigner,\n type UserOperationRequest,\n type SignTypedDataParams,\n} from \"@alchemy/aa-core\";\nimport {\n KernelBaseValidator,\n ValidatorMode,\n type KernelBaseValidatorParams,\n} from \"./base.js\";\nimport {\n concatHex,\n encodeAbiParameters,\n encodeFunctionData,\n getContract,\n parseAbiParameters,\n type LocalAccount,\n createWalletClient,\n type WalletClient,\n http,\n custom,\n type Transport,\n type Chain,\n type Account,\n publicActions,\n getFunctionSelector,\n type PublicClient,\n} from \"viem\";\nimport { WeightedValidatorAbi } from \"../abis/WeightedValidatorAbi.js\";\nimport { getChainId, getRecoveryData } from \"../api/index.js\";\nimport {\n CHAIN_ID_TO_NODE,\n DUMMY_ECDSA_SIG,\n RECOVERY_ACTION,\n RECOVERY_VALIDATOR_ADDRESS,\n} from \"../constants.js\";\nimport { KernelAccountAbi } from \"../abis/KernelAccountAbi.js\";\nimport { fixSignedData, getChain } from \"../utils.js\";\nimport type { EthereumProvider } from \"./types.js\";\nimport { polygonMumbai } from \"viem/chains\";\nimport { RecoveryActionAbi } from \"../abis/RecoveryActionAbi.js\";\n\ninterface WeightedGuardians {\n [guardian: Address]: number;\n}\nexport interface RecoveryValidatorParams extends KernelBaseValidatorParams {\n guardians?: WeightedGuardians;\n threshold?: number;\n delaySeconds?: number;\n accountSigner?: SmartAccountSigner;\n localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n walletClient?: WalletClient<Transport, Chain>;\n signatures?: Hex;\n recoveryId?: string;\n}\n\nexport type RecoveryConfig = Required<\n Pick<RecoveryValidatorParams, \"guardians\" | \"threshold\" | \"delaySeconds\">\n>;\n\nexport function isLocalAccount(account: any): account is LocalAccount<string> {\n return account && account.signTransaction !== undefined;\n}\n\nexport function isEthereumProvider(\n provider: any\n): provider is EthereumProvider {\n return provider && provider.request !== undefined;\n}\n\ntype WalletClientAccountType<T> = T extends LocalAccount<string>\n ? Account\n : T extends EthereumProvider\n ? undefined\n : never;\n\nexport const recoverySelector = getFunctionSelector(\n \"doRecovery(address, bytes)\"\n);\n\nexport class RecoveryValidator extends KernelBaseValidator {\n protected guardians?: WeightedGuardians;\n protected threshold?: number;\n protected delaySeconds: number;\n protected accountSigner?: SmartAccountSigner;\n protected localAccountOrProvider?: LocalAccount<string> | EthereumProvider;\n protected signatures?: Hex;\n protected recoveryId?: string;\n walletClient?: WalletClient<\n Transport,\n Chain,\n WalletClientAccountType<typeof this.localAccountOrProvider>\n >;\n\n constructor(params: RecoveryValidatorParams) {\n super(params);\n this.guardians = params.guardians;\n this.threshold = params.threshold;\n this.delaySeconds = params.delaySeconds ?? 0;\n this.accountSigner = params.accountSigner;\n this.mode = params.mode ?? ValidatorMode.plugin;\n this.localAccountOrProvider = params.localAccountOrProvider;\n this.signatures = params.signatures;\n this.validAfter = params.validAfter ?? 0;\n this.validUntil = params.validUntil ?? 0;\n this.executor = params.executor ?? RECOVERY_ACTION;\n this.selector = params.selector ?? recoverySelector;\n this.recoveryId = params.recoveryId;\n if (isLocalAccount(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n account: params.localAccountOrProvider,\n chain: this.chain ?? polygonMumbai,\n transport: http(\n this.rpcUrl ?? CHAIN_ID_TO_NODE[this.chain?.id ?? polygonMumbai.id]\n ),\n }).extend(publicActions);\n } else if (isEthereumProvider(params.localAccountOrProvider)) {\n this.walletClient = createWalletClient({\n chain: this.chain ?? polygonMumbai,\n transport: custom(params.localAccountOrProvider),\n }).extend(publicActions);\n } else if (params.walletClient) {\n this.walletClient = params.walletClient.extend(publicActions);\n } else if (params.localAccountOrProvider) {\n throw Error(\"Incorrect localAccountOrProvider type\");\n }\n }\n\n public static async init(\n params: RecoveryValidatorParams\n ): Promise<RecoveryValidator> {\n const chainId = await getChainId(params.projectId);\n if (!chainId) {\n throw new Error(\"ChainId not found\");\n }\n const chain = getChain(chainId);\n const instance = new RecoveryValidator({ ...params, chain });\n return instance;\n }\n\n getNonceKey(): bigint {\n return BigInt(this.validatorAddress);\n }\n\n setRecoverySignatures(signatures: Hex) {\n this.signatures = signatures;\n }\n\n async getRecoverySignatures(): Promise<Hex | undefined> {\n if (this.recoveryId) {\n const { signatures } = await getRecoveryData(this.recoveryId);\n this.setRecoverySignatures(signatures);\n }\n return this.signatures;\n }\n\n getRecoveryConfig(): RecoveryConfig {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return {\n guardians: this.guardians,\n threshold: this.threshold,\n delaySeconds: this.delaySeconds,\n };\n }\n\n async signer(): Promise<SmartAccountSigner> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await Promise.resolve(this.accountSigner);\n }\n\n async getEnableData(): Promise<Hex> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n return encodeAbiParameters(\n parseAbiParameters(\n \"address[] guardians, uint24[] weights, uint24 threshold, uint48 delay\"\n ),\n [\n Object.keys(this.guardians) as Address[],\n Object.values(this.guardians),\n this.threshold,\n this.delaySeconds,\n ]\n );\n }\n\n encodeEnable(recoveryData: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"enable\",\n args: [recoveryData],\n });\n }\n\n encodeDisable(disableData: Hex = \"0x\"): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"disable\",\n args: [disableData],\n });\n }\n\n encodeApprove(callDataAndNonceHash: Hex, kernelAccountAddress: Address): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approve\",\n args: [callDataAndNonceHash, kernelAccountAddress],\n });\n }\n\n encodeApproveWithSig(\n callDataAndNonceHash: Hex,\n kernelAccountAddress: Address,\n sigs: Hex\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"approveWithSig\",\n args: [callDataAndNonceHash, kernelAccountAddress, sigs],\n });\n }\n\n encodeVeto(callDataAndNonceHash: Hex): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"veto\",\n args: [callDataAndNonceHash],\n });\n }\n\n encodeRenew(\n guardians: Address[],\n weights: number[],\n threshold: number,\n delay: number\n ): Hex {\n return encodeFunctionData({\n abi: WeightedValidatorAbi,\n functionName: \"renew\",\n args: [guardians, weights, threshold, delay],\n });\n }\n\n encodeRecoveryAction(enableData: Hex, defaultValidatorAddress: Address): Hex {\n return encodeFunctionData({\n abi: RecoveryActionAbi,\n functionName: \"doRecovery\",\n args: [defaultValidatorAddress, enableData],\n });\n }\n\n static async fetchRecoveryConfigFromContract(\n kernelAccountAddress: Address,\n publicClient: PublicClient<Transport, Chain>\n ): Promise<RecoveryConfig> {\n try {\n const [, threshold, delaySeconds, firstGuardian] =\n await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n const guardians: WeightedGuardians = {};\n\n let nextGuardian = firstGuardian;\n while (\n nextGuardian.toLowerCase() !== kernelAccountAddress.toLowerCase()\n ) {\n const guardianStorage = await publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: RECOVERY_VALIDATOR_ADDRESS,\n functionName: \"guardian\",\n args: [nextGuardian, kernelAccountAddress],\n });\n guardians[nextGuardian] = guardianStorage[0];\n nextGuardian = guardianStorage[1];\n }\n return {\n threshold,\n delaySeconds,\n guardians,\n };\n } catch (error) {\n throw Error(\"Failed to fetch config from contract\");\n }\n }\n\n async isPluginEnabled(\n kernelAccountAddress: Address,\n selector: Hex\n ): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n if (!this.publicClient) {\n throw new Error(\"Validator uninitialized: PublicClient missing\");\n }\n try {\n const kernel = getContract({\n abi: KernelAccountAbi,\n address: kernelAccountAddress,\n publicClient: this.publicClient,\n });\n const execDetail = await kernel.read.getExecution([selector]);\n const enableData = await this.publicClient.readContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n functionName: \"weightedStorage\",\n args: [kernelAccountAddress],\n });\n\n return (\n execDetail.validator.toLowerCase() ===\n this.validatorAddress.toLowerCase() &&\n enableData[0] ===\n Object.values(this.guardians).reduce((a, c) => a + c, 0) &&\n enableData[1] === this.threshold &&\n enableData[2] === this.delaySeconds &&\n this.isGuardiansEnabled(kernelAccountAddress)\n );\n } catch (error) {\n return false;\n }\n }\n\n async isGuardiansEnabled(kernelAccountAddress: Address): Promise<boolean> {\n if (\n this.guardians === undefined ||\n !this.threshold ||\n Object.values(this.guardians).some((v) => v === 0) ||\n Object.values(this.guardians).reduce((a, c) => a + c, 0) < this.threshold\n ) {\n throw Error(\"Recovery config uninitialised or unexpected\");\n }\n const weightedValidator = getContract({\n abi: WeightedValidatorAbi,\n address: this.validatorAddress,\n publicClient: this.publicClient,\n });\n for (const [addr, weight] of Object.entries(this.guardians)) {\n const result = await weightedValidator.read.guardian([\n addr as Address,\n kernelAccountAddress,\n ]);\n if (result[0] !== weight) {\n return false;\n }\n }\n return true;\n }\n\n async getDummyUserOpSignature(): Promise<Hex> {\n let dummySignature: Hex = \"0x\";\n if (this.signatures) {\n const totalSigs = this.signatures.substring(2).length / 130;\n for (let i = 0; i < totalSigs; i++) {\n dummySignature = concatHex([dummySignature, DUMMY_ECDSA_SIG]);\n }\n // Hack - Fix this to not send original signatures\n return this.signatures;\n }\n return DUMMY_ECDSA_SIG;\n }\n\n async signMessage(message: string | Uint8Array): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return await this.accountSigner.signMessage(message);\n }\n\n async signTypedData(params: SignTypedDataParams): Promise<Hex> {\n if (!this.accountSigner) {\n throw Error(\"AccountSigner not set\");\n }\n return fixSignedData(await this.accountSigner.signTypedData(params));\n }\n\n async signRecoveryHash(recoveryHash: Hex): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return await this.signTypedData({\n domain: {\n name: \"WeightedECDSAValidator\",\n version: \"0.0.1\",\n chainId: this.chain.id,\n verifyingContract: this.validatorAddress,\n },\n types: {\n Approve: [{ name: \"callDataAndNonceHash\", type: \"bytes32\" }],\n },\n message: {\n callDataAndNonceHash: recoveryHash,\n },\n primaryType: \"Approve\",\n });\n }\n\n async signUserOp(_userOp: UserOperationRequest): Promise<Hex> {\n if (!this.chain) {\n throw new Error(\"Validator uninitialized\");\n }\n return this.signatures ?? DUMMY_ECDSA_SIG;\n }\n}\n"]}
|
|
@@ -17,7 +17,7 @@ export declare const DUMMY_ECDSA_SIG = "0xfffffffffffffffffffffffffffffff0000000
|
|
|
17
17
|
export declare const ERC165_SESSION_KEY_VALIDATOR_ADDRESS = "0xe149290800De29D4b0BF9dB82c508255D81902E6";
|
|
18
18
|
export declare const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
19
19
|
export declare const SESSION_KEY_VALIDATOR_ADDRESS = "0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5";
|
|
20
|
-
export declare const RECOVERY_VALIDATOR_ADDRESS = "
|
|
20
|
+
export declare const RECOVERY_VALIDATOR_ADDRESS = "0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8";
|
|
21
21
|
export declare const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
|
|
22
22
|
export declare const oneAddress = "0x0000000000000000000000000000000000000001";
|
|
23
23
|
export declare const gasTokenChainAddresses: IGasTokenAddresses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/kernel-zerodev/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,GAAG,EACR,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,KAAK,EAEV,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAuB,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,MAAM,iCAAiC,GAAG,qBAAqB,GAAG;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAChD,iCAAiC,EAAE,CAAC;AAgBtC,eAAO,MAAM,eAAe,oDAEzB,GAEF,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,cAG3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,UAG9C;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,MAAM,GACd,GAAG,GAAG,SAAS,CAKjB;AAED,eAAO,MAAM,kCAAkC,WACrC,YAAY,KACnB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/kernel-zerodev/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,GAAG,EACR,KAAK,YAAY,EAKlB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,OAAO,KAAK,EAEV,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAuB,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,MAAM,iCAAiC,GAAG,qBAAqB,GAAG;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sCAAsC,GAChD,iCAAiC,EAAE,CAAC;AAgBtC,eAAO,MAAM,eAAe,oDAEzB,GAEF,CAAC;AAEF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,cAG3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,UAG9C;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,MAAM,GACd,GAAG,GAAG,SAAS,CAKjB;AAED,eAAO,MAAM,kCAAkC,WACrC,YAAY,KACnB,kBAmBF,CAAC;AAEF,eAAO,MAAM,QAAQ,WAAY,GAAG,qBACW,CAAC;AAEhD,eAAO,MAAM,kCAAkC,WACrC,MAAM,GAAG,MAAM,KACtB,kBAmBF,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,KAAG,GAK9C,CAAC;AAEJ,eAAO,MAAM,aAAa,QAAS,GAAG,KAAG,GAaxC,CAAC;AAUF,eAAO,MAAM,QAAQ,YAAa,MAAM,KAAG,OAAO,KASjD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"recovery-validator.d.ts","sourceRoot":"","sources":["../../../../src/kernel-zerodev/validator/recovery-validator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@ export const TOKEN_ACTION = "0x2087C7FfD0d0DAE80a00EE74325aBF3449e0eaf1";
|
|
|
29
29
|
export const SESSION_KEY_VALIDATOR_ADDRESS =
|
|
30
30
|
"0x5C06CE2b673fD5E6e56076e40DD46aB67f5a72A5";
|
|
31
31
|
export const RECOVERY_VALIDATOR_ADDRESS =
|
|
32
|
-
"
|
|
32
|
+
"0xaFA369cA3432e62ACe6bd77B2886F2D588c68dA8";
|
|
33
33
|
export const RECOVERY_ACTION = "0x2f65dB8039fe5CAEE0a8680D2879deB800F31Ae1";
|
|
34
34
|
export const oneAddress = "0x0000000000000000000000000000000000000001";
|
|
35
35
|
|
|
@@ -85,7 +85,9 @@ export const convertWalletClientToAccountSigner = (
|
|
|
85
85
|
},
|
|
86
86
|
})) as `0x${string}`,
|
|
87
87
|
signTypedData: async (params: SignTypedDataParams) =>
|
|
88
|
-
|
|
88
|
+
fixSignedData(
|
|
89
|
+
await client.signTypedData({ ...params, account: client.account! })
|
|
90
|
+
),
|
|
89
91
|
};
|
|
90
92
|
};
|
|
91
93
|
|
|
@@ -104,11 +106,13 @@ export const convertEthersSignerToAccountSigner = (
|
|
|
104
106
|
if (!isWallet(signer)) {
|
|
105
107
|
throw Error("signTypedData method not implemented in signer");
|
|
106
108
|
}
|
|
107
|
-
return (
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
return fixSignedData(
|
|
110
|
+
(await signer._signTypedData(
|
|
111
|
+
params.domain!,
|
|
112
|
+
params.types as unknown as Record<string, TypedDataField[]>,
|
|
113
|
+
params.message
|
|
114
|
+
)) as Hex
|
|
115
|
+
);
|
|
112
116
|
},
|
|
113
117
|
};
|
|
114
118
|
};
|
|
@@ -404,8 +404,7 @@ export class RecoveryValidator extends KernelBaseValidator {
|
|
|
404
404
|
if (!this.chain) {
|
|
405
405
|
throw new Error("Validator uninitialized");
|
|
406
406
|
}
|
|
407
|
-
|
|
408
|
-
return await signer.signTypedData({
|
|
407
|
+
return await this.signTypedData({
|
|
409
408
|
domain: {
|
|
410
409
|
name: "WeightedECDSAValidator",
|
|
411
410
|
version: "0.0.1",
|