@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 +9 -0
- package/package.json +9 -8
- package/src/ZeroDevConnector.cjs +17 -1
- package/src/ZeroDevConnector.d.ts +4 -0
- package/src/ZeroDevConnector.js +17 -1
- package/src/utils/createEcsdaKernelAccountClient.cjs +3 -4
- package/src/utils/createEcsdaKernelAccountClient.d.ts +2 -1
- package/src/utils/createEcsdaKernelAccountClient.js +3 -4
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.
|
|
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.
|
|
34
|
-
"@dynamic-labs/logger": "3.0.0-alpha.
|
|
35
|
-
"@dynamic-labs/types": "3.0.0-alpha.
|
|
36
|
-
"@dynamic-labs/utils": "3.0.0-alpha.
|
|
37
|
-
"@dynamic-labs/viem-utils": "3.0.0-alpha.
|
|
38
|
-
"@dynamic-labs/wallet-book": "3.0.0-alpha.
|
|
39
|
-
"@dynamic-labs/wallet-connector-core": "3.0.0-alpha.
|
|
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"
|
package/src/ZeroDevConnector.cjs
CHANGED
|
@@ -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;
|
package/src/ZeroDevConnector.js
CHANGED
|
@@ -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
|
|
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:
|
|
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
|
|
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:
|
|
38
|
+
sudo: validator,
|
|
40
39
|
},
|
|
41
40
|
});
|
|
42
41
|
const zerodevPaymaster = createZeroDevPaymasterClient({
|