@dynamic-labs/ethereum-aa 3.0.0-alpha.26 → 3.0.0-alpha.28

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/CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
1
 
2
+ ## [3.0.0-alpha.28](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.27...v3.0.0-alpha.28) (2024-07-25)
3
+
4
+ ## [3.0.0-alpha.27](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.26...v3.0.0-alpha.27) (2024-07-24)
5
+
6
+
7
+ ### Features
8
+
9
+ * add ability to use a different ecdsa validator ([#6407](https://github.com/dynamic-labs/DynamicAuth/issues/6407)) ([a3e99e1](https://github.com/dynamic-labs/DynamicAuth/commit/a3e99e1b2cdcadbce35ff0cacfb8fb82778c0216))
10
+
2
11
  ## [3.0.0-alpha.26](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.25...v3.0.0-alpha.26) (2024-07-24)
3
12
 
4
13
  ## [3.0.0-alpha.25](https://github.com/dynamic-labs/DynamicAuth/compare/v3.0.0-alpha.24...v3.0.0-alpha.25) (2024-07-24)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum-aa",
3
- "version": "3.0.0-alpha.26",
3
+ "version": "3.0.0-alpha.28",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/dynamic-labs/dynamic-auth.git",
@@ -28,15 +28,16 @@
28
28
  "dependencies": {
29
29
  "@dynamic-labs/sdk-api-core": "0.0.497",
30
30
  "@zerodev/ecdsa-validator": "5.3.1",
31
+ "@zerodev/multi-chain-validator": "5.3.3",
31
32
  "@zerodev/sdk": "5.3.4",
32
33
  "permissionless": "^0.1.20",
33
- "@dynamic-labs/ethereum": "3.0.0-alpha.26",
34
- "@dynamic-labs/logger": "3.0.0-alpha.26",
35
- "@dynamic-labs/types": "3.0.0-alpha.26",
36
- "@dynamic-labs/utils": "3.0.0-alpha.26",
37
- "@dynamic-labs/viem-utils": "3.0.0-alpha.26",
38
- "@dynamic-labs/wallet-book": "3.0.0-alpha.26",
39
- "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.26"
34
+ "@dynamic-labs/ethereum": "3.0.0-alpha.28",
35
+ "@dynamic-labs/logger": "3.0.0-alpha.28",
36
+ "@dynamic-labs/types": "3.0.0-alpha.28",
37
+ "@dynamic-labs/utils": "3.0.0-alpha.28",
38
+ "@dynamic-labs/viem-utils": "3.0.0-alpha.28",
39
+ "@dynamic-labs/wallet-book": "3.0.0-alpha.28",
40
+ "@dynamic-labs/wallet-connector-core": "3.0.0-alpha.28"
40
41
  },
41
42
  "peerDependencies": {
42
43
  "viem": "^2.7.6"
@@ -4,9 +4,11 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../_virtual/_tslib.cjs');
7
+ var multiChainValidator = require('@zerodev/multi-chain-validator');
7
8
  var viem = require('viem');
8
9
  var utils$1 = require('permissionless/utils');
9
10
  var constants = require('@zerodev/sdk/constants');
11
+ var ecdsaValidator = require('@zerodev/ecdsa-validator');
10
12
  var sdkApiCore = require('@dynamic-labs/sdk-api-core');
11
13
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
12
14
  var viemUtils = require('@dynamic-labs/viem-utils');
@@ -18,7 +20,7 @@ var createEcsdaKernelAccountClient = require('./utils/createEcsdaKernelAccountCl
18
20
 
19
21
  class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
20
22
  constructor(opts) {
21
- var _a, _b, _c;
23
+ var _a, _b, _c, _d;
22
24
  super(opts);
23
25
  this.connectedChain = 'EVM';
24
26
  this.supportedChains = ['ETH', 'EVM'];
@@ -42,6 +44,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
42
44
  this.evmNetworks = utils.parseEvmNetworks(opts.evmNetworks);
43
45
  this.entryPoint = this.getEntryPoint((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion);
44
46
  this.kernelVersion = this.getKernelVersion((_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.kernelVersion);
47
+ this.ecdsaProviderType = (_d = opts.apiProviders.zerodev) === null || _d === void 0 ? void 0 : _d.ecdsaProviderType;
45
48
  }
46
49
  getEntryPoint(entryPoint) {
47
50
  if (entryPoint === undefined ||
@@ -75,6 +78,17 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
75
78
  return constants.KERNEL_V3_1;
76
79
  }
77
80
  }
81
+ getEcdsaValidator(ecdsaProviderType) {
82
+ if (ecdsaProviderType === 'zerodev_signer_to_ecdsa') {
83
+ return ecdsaValidator.signerToEcdsaValidator;
84
+ }
85
+ else if (ecdsaProviderType === 'zerodev_multi_chain') {
86
+ return multiChainValidator.toMultiChainECDSAValidator;
87
+ }
88
+ else {
89
+ return ecdsaValidator.signerToEcdsaValidator;
90
+ }
91
+ }
78
92
  getEOAConnector() {
79
93
  return this.eoaConnector;
80
94
  }
@@ -109,6 +123,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
109
123
  const kernelClient = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
110
124
  bundlerRpc: ZeroDevConnector.bundlerRpc,
111
125
  chain: yield fetchChain.fetchChain(this.projectId),
126
+ ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
112
127
  entryPointAddress: this.entryPoint,
113
128
  kernelVersion: this.kernelVersion,
114
129
  paymaster: 'NONE',
@@ -152,6 +167,7 @@ class ZeroDevConnector extends walletConnectorCore.WalletConnectorBase {
152
167
  this.kernelClientWithSponsorship = yield createEcsdaKernelAccountClient.createEcdsaKernelAccountClient({
153
168
  bundlerRpc: ZeroDevConnector.bundlerRpc,
154
169
  chain: yield fetchChain.fetchChain(this.projectId),
170
+ ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
155
171
  entryPointAddress: this.entryPoint,
156
172
  kernelVersion: this.kernelVersion,
157
173
  paymaster: 'SPONSOR',
@@ -1,9 +1,11 @@
1
1
  import { KernelAccountClient } from '@zerodev/sdk/clients';
2
2
  import { KernelSmartAccount } from '@zerodev/sdk/accounts';
3
+ import { toMultiChainECDSAValidator } from '@zerodev/multi-chain-validator';
3
4
  import { Account, PublicClient, Transport, WalletClient } from 'viem';
4
5
  import { type Chain as ViemChain } from 'viem/chains';
5
6
  import { EntryPoint } from 'permissionless/types';
6
7
  import { KERNEL_VERSION_TYPE } from '@zerodev/sdk/types';
8
+ import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator';
7
9
  import { Provider, ProviderEnum } from '@dynamic-labs/sdk-api-core';
8
10
  import { Chain, IAccountAbstractionWalletConnector, ISendBalanceWalletConnector, WalletConnector, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
9
11
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
@@ -31,6 +33,7 @@ export declare class ZeroDevConnector extends WalletConnectorBase implements IZe
31
33
  isEmbeddedWallet: boolean;
32
34
  entryPoint: EntryPoint;
33
35
  kernelVersion: KERNEL_VERSION_TYPE;
36
+ ecdsaProviderType: string | undefined;
34
37
  static bundlerProvider: BundlerProvider | undefined;
35
38
  static bundlerRpc: string | undefined;
36
39
  static paymasterRpc: string | undefined;
@@ -53,6 +56,7 @@ export declare class ZeroDevConnector extends WalletConnectorBase implements IZe
53
56
  constructor(opts: ZeroDevConnectorProps);
54
57
  getEntryPoint(entryPoint: string | undefined): "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789" | "0x0000000071727De22E5E9d8BAf0edAc6f37da032";
55
58
  getKernelVersion(kernelVersion: string | undefined): KERNEL_VERSION_TYPE;
59
+ getEcdsaValidator(ecdsaProviderType: string | undefined): typeof signerToEcdsaValidator | typeof toMultiChainECDSAValidator;
56
60
  getEOAConnector(): WalletConnector | undefined;
57
61
  getAccountAbstractionProvider({ withSponsorship, }?: {
58
62
  withSponsorship?: boolean;
@@ -1,8 +1,10 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../_virtual/_tslib.js';
3
+ import { toMultiChainECDSAValidator } from '@zerodev/multi-chain-validator';
3
4
  import { publicActions, custom, createWalletClient, isHex, fromHex, formatEther } from 'viem';
4
5
  import { ENTRYPOINT_ADDRESS_V07, ENTRYPOINT_ADDRESS_V06, walletClientToSmartAccountSigner } from 'permissionless/utils';
5
6
  import { KERNEL_V3_1, KERNEL_V3_0, KERNEL_V2_4 } from '@zerodev/sdk/constants';
7
+ import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator';
6
8
  import { ProviderEntryPointVersionEnum, ProviderKernelVersionEnum } from '@dynamic-labs/sdk-api-core';
7
9
  import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
8
10
  import { confirmationTransport, chainsMap, unFormatTransaction, createViemUiTransaction } from '@dynamic-labs/viem-utils';
@@ -14,7 +16,7 @@ import { createEcdsaKernelAccountClient } from './utils/createEcsdaKernelAccount
14
16
 
15
17
  class ZeroDevConnector extends WalletConnectorBase {
16
18
  constructor(opts) {
17
- var _a, _b, _c;
19
+ var _a, _b, _c, _d;
18
20
  super(opts);
19
21
  this.connectedChain = 'EVM';
20
22
  this.supportedChains = ['ETH', 'EVM'];
@@ -38,6 +40,7 @@ class ZeroDevConnector extends WalletConnectorBase {
38
40
  this.evmNetworks = parseEvmNetworks(opts.evmNetworks);
39
41
  this.entryPoint = this.getEntryPoint((_b = opts.apiProviders.zerodev) === null || _b === void 0 ? void 0 : _b.entryPointVersion);
40
42
  this.kernelVersion = this.getKernelVersion((_c = opts.apiProviders.zerodev) === null || _c === void 0 ? void 0 : _c.kernelVersion);
43
+ this.ecdsaProviderType = (_d = opts.apiProviders.zerodev) === null || _d === void 0 ? void 0 : _d.ecdsaProviderType;
41
44
  }
42
45
  getEntryPoint(entryPoint) {
43
46
  if (entryPoint === undefined ||
@@ -71,6 +74,17 @@ class ZeroDevConnector extends WalletConnectorBase {
71
74
  return KERNEL_V3_1;
72
75
  }
73
76
  }
77
+ getEcdsaValidator(ecdsaProviderType) {
78
+ if (ecdsaProviderType === 'zerodev_signer_to_ecdsa') {
79
+ return signerToEcdsaValidator;
80
+ }
81
+ else if (ecdsaProviderType === 'zerodev_multi_chain') {
82
+ return toMultiChainECDSAValidator;
83
+ }
84
+ else {
85
+ return signerToEcdsaValidator;
86
+ }
87
+ }
74
88
  getEOAConnector() {
75
89
  return this.eoaConnector;
76
90
  }
@@ -105,6 +119,7 @@ class ZeroDevConnector extends WalletConnectorBase {
105
119
  const kernelClient = yield createEcdsaKernelAccountClient({
106
120
  bundlerRpc: ZeroDevConnector.bundlerRpc,
107
121
  chain: yield fetchChain(this.projectId),
122
+ ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
108
123
  entryPointAddress: this.entryPoint,
109
124
  kernelVersion: this.kernelVersion,
110
125
  paymaster: 'NONE',
@@ -148,6 +163,7 @@ class ZeroDevConnector extends WalletConnectorBase {
148
163
  this.kernelClientWithSponsorship = yield createEcdsaKernelAccountClient({
149
164
  bundlerRpc: ZeroDevConnector.bundlerRpc,
150
165
  chain: yield fetchChain(this.projectId),
166
+ ecdsaValidator: this.getEcdsaValidator(this.ecdsaProviderType),
151
167
  entryPointAddress: this.entryPoint,
152
168
  kernelVersion: this.kernelVersion,
153
169
  paymaster: 'SPONSOR',
@@ -4,7 +4,6 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var _tslib = require('../../_virtual/_tslib.cjs');
7
- var ecdsaValidator = require('@zerodev/ecdsa-validator');
8
7
  var accounts = require('@zerodev/sdk/accounts');
9
8
  var clients = require('@zerodev/sdk/clients');
10
9
  var viem = require('viem');
@@ -24,13 +23,13 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
24
23
  return rpc;
25
24
  };
26
25
  const isERC20 = (value) => viem.isAddress(value);
27
- const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, }) {
26
+ const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, ecdsaValidator, }) {
28
27
  const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
29
28
  const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
30
29
  const publicClient = viem.createPublicClient({
31
30
  transport: viem.http(resolvedBundlerRpc),
32
31
  });
33
- const ecdsaValidator$1 = yield ecdsaValidator.signerToEcdsaValidator(publicClient, {
32
+ const validator = yield ecdsaValidator(publicClient, {
34
33
  entryPoint: entryPointAddress,
35
34
  kernelVersion,
36
35
  signer,
@@ -40,7 +39,7 @@ const createEcdsaKernelAccountClient = (_a) => _tslib.__awaiter(void 0, [_a], vo
40
39
  index,
41
40
  kernelVersion,
42
41
  plugins: {
43
- sudo: ecdsaValidator$1,
42
+ sudo: validator,
44
43
  },
45
44
  });
46
45
  const zerodevPaymaster = clients.createZeroDevPaymasterClient({
@@ -9,7 +9,7 @@ export type ERC20Paymaster = Address;
9
9
  export type PaymasterType = 'NONE' | 'SPONSOR' | ERC20Paymaster;
10
10
  export declare const getZeroDevBundlerRPC: (projectId: string, provider?: BundlerProvider) => string;
11
11
  export declare const getZeroDevPaymasterRPC: (projectId: string, provider?: BundlerProvider) => string;
12
- export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPoint, TChain extends Chain | undefined = Chain | undefined, TSource extends string = "custom", TAddress extends `0x${string}` = `0x${string}`>({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster, entryPointAddress, kernelVersion, }: {
12
+ export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPoint, TChain extends Chain | undefined = Chain | undefined, TSource extends string = "custom", TAddress extends `0x${string}` = `0x${string}`>({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster, entryPointAddress, kernelVersion, ecdsaValidator, }: {
13
13
  bundlerRpc?: string;
14
14
  chain: TChain;
15
15
  projectId: string;
@@ -20,4 +20,5 @@ export declare const createEcdsaKernelAccountClient: <entryPoint extends EntryPo
20
20
  provider?: BundlerProvider;
21
21
  index?: bigint;
22
22
  kernelVersion: GetKernelVersion<entryPoint>;
23
+ ecdsaValidator: any;
23
24
  }) => Promise<KernelAccountClient<entryPoint, HttpTransport, TChain, KernelSmartAccount<entryPoint, HttpTransport, TChain>>>;
@@ -1,6 +1,5 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../_virtual/_tslib.js';
3
- import { signerToEcdsaValidator } from '@zerodev/ecdsa-validator';
4
3
  import { createKernelAccount } from '@zerodev/sdk/accounts';
5
4
  import { createZeroDevPaymasterClient, createKernelAccountClient } from '@zerodev/sdk/clients';
6
5
  import { createPublicClient, http, isAddress } from 'viem';
@@ -20,13 +19,13 @@ const getZeroDevPaymasterRPC = (projectId, provider) => {
20
19
  return rpc;
21
20
  };
22
21
  const isERC20 = (value) => isAddress(value);
23
- const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, }) {
22
+ const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, function* ({ bundlerRpc, chain, paymasterRpc, projectId, signer, provider, index, paymaster = 'SPONSOR', entryPointAddress, kernelVersion, ecdsaValidator, }) {
24
23
  const resolvedBundlerRpc = bundlerRpc !== null && bundlerRpc !== void 0 ? bundlerRpc : getZeroDevBundlerRPC(projectId, provider);
25
24
  const resolvedPaymasterRpc = paymasterRpc !== null && paymasterRpc !== void 0 ? paymasterRpc : getZeroDevPaymasterRPC(projectId, provider);
26
25
  const publicClient = createPublicClient({
27
26
  transport: http(resolvedBundlerRpc),
28
27
  });
29
- const ecdsaValidator = yield signerToEcdsaValidator(publicClient, {
28
+ const validator = yield ecdsaValidator(publicClient, {
30
29
  entryPoint: entryPointAddress,
31
30
  kernelVersion,
32
31
  signer,
@@ -36,7 +35,7 @@ const createEcdsaKernelAccountClient = (_a) => __awaiter(void 0, [_a], void 0, f
36
35
  index,
37
36
  kernelVersion,
38
37
  plugins: {
39
- sudo: ecdsaValidator,
38
+ sudo: validator,
40
39
  },
41
40
  });
42
41
  const zerodevPaymaster = createZeroDevPaymasterClient({