@dynamic-labs-wallet/node-evm 0.0.0-beta.3 → 0.0.0-beta.304.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs.js +34 -9
- package/index.esm.js +34 -9
- package/package.json +4 -4
- package/src/client/client.d.ts +12 -6
- package/src/client/client.d.ts.map +1 -1
package/index.cjs.js
CHANGED
|
@@ -55,6 +55,10 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
55
55
|
}
|
|
56
56
|
async createWalletAccount({ thresholdSignatureScheme, password = undefined, onError }) {
|
|
57
57
|
try {
|
|
58
|
+
let ceremonyCeremonyCompleteResolver;
|
|
59
|
+
const ceremonyCompletePromise = new Promise((resolve)=>{
|
|
60
|
+
ceremonyCeremonyCompleteResolver = resolve;
|
|
61
|
+
});
|
|
58
62
|
// Generate key shares for given threshold signature scheme (TSS)
|
|
59
63
|
const { rawPublicKey, externalServerKeyShares } = await this.keyGen({
|
|
60
64
|
chainName: this.chainName,
|
|
@@ -70,8 +74,18 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
70
74
|
thresholdSignatureScheme,
|
|
71
75
|
externalServerKeySharesBackupInfo: node.getExternalServerKeyShareBackupInfo()
|
|
72
76
|
});
|
|
77
|
+
this.logger.debug('walletMap updated for wallet', {
|
|
78
|
+
context: {
|
|
79
|
+
accountAddress,
|
|
80
|
+
walletId,
|
|
81
|
+
walletMap: this.walletMap
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
ceremonyCeremonyCompleteResolver(undefined);
|
|
73
85
|
}
|
|
74
86
|
});
|
|
87
|
+
// Wait for the ceremony to complete before proceeding
|
|
88
|
+
await ceremonyCompletePromise;
|
|
75
89
|
if (!rawPublicKey || !externalServerKeyShares) {
|
|
76
90
|
throw new Error(ERROR_KEYGEN_FAILED);
|
|
77
91
|
}
|
|
@@ -79,12 +93,13 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
79
93
|
const { accountAddress, publicKeyHex } = deriveAccountAddress({
|
|
80
94
|
rawPublicKey: rawPublicKey
|
|
81
95
|
});
|
|
82
|
-
|
|
96
|
+
await this.storeEncryptedBackupByWalletWithRetry({
|
|
83
97
|
accountAddress,
|
|
84
98
|
externalServerKeyShares,
|
|
85
99
|
password
|
|
86
100
|
});
|
|
87
101
|
return {
|
|
102
|
+
walletId: this.walletMap[accountAddress].walletId,
|
|
88
103
|
accountAddress,
|
|
89
104
|
rawPublicKey,
|
|
90
105
|
publicKeyHex,
|
|
@@ -95,7 +110,7 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
95
110
|
throw new Error(ERROR_CREATE_WALLET_ACCOUNT);
|
|
96
111
|
}
|
|
97
112
|
}
|
|
98
|
-
async signMessage({ message, accountAddress, password = undefined }) {
|
|
113
|
+
async signMessage({ message, accountAddress, password = undefined, externalServerKeyShares }) {
|
|
99
114
|
await this.verifyPassword({
|
|
100
115
|
accountAddress,
|
|
101
116
|
password,
|
|
@@ -116,7 +131,8 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
116
131
|
message: formattedMessage,
|
|
117
132
|
accountAddress: accountAddress,
|
|
118
133
|
chainName: this.chainName,
|
|
119
|
-
password
|
|
134
|
+
password,
|
|
135
|
+
externalServerKeyShares
|
|
120
136
|
});
|
|
121
137
|
// Serialize the signature
|
|
122
138
|
const serializedSignature = serializeECDSASignature(signatureEcdsa);
|
|
@@ -143,7 +159,7 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
143
159
|
throw new Error(ERROR_VERIFY_MESSAGE_SIGNATURE);
|
|
144
160
|
}
|
|
145
161
|
}
|
|
146
|
-
async signTransaction({ senderAddress, transaction, password = undefined }) {
|
|
162
|
+
async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId, externalServerKeyShares }) {
|
|
147
163
|
await this.verifyPassword({
|
|
148
164
|
accountAddress: senderAddress,
|
|
149
165
|
password,
|
|
@@ -159,7 +175,8 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
159
175
|
message: serializedTxBytes,
|
|
160
176
|
accountAddress: senderAddress,
|
|
161
177
|
chainName: this.chainName,
|
|
162
|
-
password
|
|
178
|
+
password,
|
|
179
|
+
externalServerKeyShares
|
|
163
180
|
});
|
|
164
181
|
if (!('r' in signatureEcdsa && 's' in signatureEcdsa && 'v' in signatureEcdsa)) {
|
|
165
182
|
throw new Error('Invalid signature format returned from MPC signing');
|
|
@@ -180,7 +197,7 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
180
197
|
throw error;
|
|
181
198
|
}
|
|
182
199
|
}
|
|
183
|
-
async exportPrivateKey({ accountAddress, password = undefined }) {
|
|
200
|
+
async exportPrivateKey({ accountAddress, password = undefined, externalServerKeyShares }) {
|
|
184
201
|
await this.verifyPassword({
|
|
185
202
|
accountAddress,
|
|
186
203
|
password,
|
|
@@ -189,7 +206,8 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
189
206
|
const { derivedPrivateKey } = await this.exportKey({
|
|
190
207
|
accountAddress,
|
|
191
208
|
chainName: this.chainName,
|
|
192
|
-
password
|
|
209
|
+
password,
|
|
210
|
+
externalServerKeyShares
|
|
193
211
|
});
|
|
194
212
|
return {
|
|
195
213
|
derivedPrivateKey
|
|
@@ -205,7 +223,11 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
205
223
|
derivedPrivateKey
|
|
206
224
|
};
|
|
207
225
|
}
|
|
208
|
-
async importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password = undefined, onError }) {
|
|
226
|
+
async importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password = undefined, onError, signedSessionId }) {
|
|
227
|
+
let ceremonyCeremonyCompleteResolver;
|
|
228
|
+
const ceremonyCompletePromise = new Promise((resolve)=>{
|
|
229
|
+
ceremonyCeremonyCompleteResolver = resolve;
|
|
230
|
+
});
|
|
209
231
|
// TODO: validate private key for EVM
|
|
210
232
|
const { rawPublicKey, externalServerKeyShares } = await this.importRawPrivateKey({
|
|
211
233
|
chainName,
|
|
@@ -222,15 +244,18 @@ class DynamicEvmWalletClient extends node.DynamicWalletClient {
|
|
|
222
244
|
thresholdSignatureScheme,
|
|
223
245
|
externalServerKeySharesBackupInfo: node.getExternalServerKeyShareBackupInfo()
|
|
224
246
|
});
|
|
247
|
+
ceremonyCeremonyCompleteResolver(undefined);
|
|
225
248
|
}
|
|
226
249
|
});
|
|
250
|
+
// Wait for the ceremony to complete before proceeding
|
|
251
|
+
await ceremonyCompletePromise;
|
|
227
252
|
if (!rawPublicKey || !externalServerKeyShares) {
|
|
228
253
|
throw new Error('Error creating wallet account');
|
|
229
254
|
}
|
|
230
255
|
const { accountAddress, publicKeyHex } = deriveAccountAddress({
|
|
231
256
|
rawPublicKey: rawPublicKey
|
|
232
257
|
});
|
|
233
|
-
|
|
258
|
+
await this.storeEncryptedBackupByWalletWithRetry({
|
|
234
259
|
accountAddress,
|
|
235
260
|
externalServerKeyShares,
|
|
236
261
|
password
|
package/index.esm.js
CHANGED
|
@@ -53,6 +53,10 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
53
53
|
}
|
|
54
54
|
async createWalletAccount({ thresholdSignatureScheme, password = undefined, onError }) {
|
|
55
55
|
try {
|
|
56
|
+
let ceremonyCeremonyCompleteResolver;
|
|
57
|
+
const ceremonyCompletePromise = new Promise((resolve)=>{
|
|
58
|
+
ceremonyCeremonyCompleteResolver = resolve;
|
|
59
|
+
});
|
|
56
60
|
// Generate key shares for given threshold signature scheme (TSS)
|
|
57
61
|
const { rawPublicKey, externalServerKeyShares } = await this.keyGen({
|
|
58
62
|
chainName: this.chainName,
|
|
@@ -68,8 +72,18 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
68
72
|
thresholdSignatureScheme,
|
|
69
73
|
externalServerKeySharesBackupInfo: getExternalServerKeyShareBackupInfo()
|
|
70
74
|
});
|
|
75
|
+
this.logger.debug('walletMap updated for wallet', {
|
|
76
|
+
context: {
|
|
77
|
+
accountAddress,
|
|
78
|
+
walletId,
|
|
79
|
+
walletMap: this.walletMap
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
ceremonyCeremonyCompleteResolver(undefined);
|
|
71
83
|
}
|
|
72
84
|
});
|
|
85
|
+
// Wait for the ceremony to complete before proceeding
|
|
86
|
+
await ceremonyCompletePromise;
|
|
73
87
|
if (!rawPublicKey || !externalServerKeyShares) {
|
|
74
88
|
throw new Error(ERROR_KEYGEN_FAILED);
|
|
75
89
|
}
|
|
@@ -77,12 +91,13 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
77
91
|
const { accountAddress, publicKeyHex } = deriveAccountAddress({
|
|
78
92
|
rawPublicKey: rawPublicKey
|
|
79
93
|
});
|
|
80
|
-
|
|
94
|
+
await this.storeEncryptedBackupByWalletWithRetry({
|
|
81
95
|
accountAddress,
|
|
82
96
|
externalServerKeyShares,
|
|
83
97
|
password
|
|
84
98
|
});
|
|
85
99
|
return {
|
|
100
|
+
walletId: this.walletMap[accountAddress].walletId,
|
|
86
101
|
accountAddress,
|
|
87
102
|
rawPublicKey,
|
|
88
103
|
publicKeyHex,
|
|
@@ -93,7 +108,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
93
108
|
throw new Error(ERROR_CREATE_WALLET_ACCOUNT);
|
|
94
109
|
}
|
|
95
110
|
}
|
|
96
|
-
async signMessage({ message, accountAddress, password = undefined }) {
|
|
111
|
+
async signMessage({ message, accountAddress, password = undefined, externalServerKeyShares }) {
|
|
97
112
|
await this.verifyPassword({
|
|
98
113
|
accountAddress,
|
|
99
114
|
password,
|
|
@@ -114,7 +129,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
114
129
|
message: formattedMessage,
|
|
115
130
|
accountAddress: accountAddress,
|
|
116
131
|
chainName: this.chainName,
|
|
117
|
-
password
|
|
132
|
+
password,
|
|
133
|
+
externalServerKeyShares
|
|
118
134
|
});
|
|
119
135
|
// Serialize the signature
|
|
120
136
|
const serializedSignature = serializeECDSASignature(signatureEcdsa);
|
|
@@ -141,7 +157,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
141
157
|
throw new Error(ERROR_VERIFY_MESSAGE_SIGNATURE);
|
|
142
158
|
}
|
|
143
159
|
}
|
|
144
|
-
async signTransaction({ senderAddress, transaction, password = undefined }) {
|
|
160
|
+
async signTransaction({ senderAddress, transaction, password = undefined, signedSessionId, externalServerKeyShares }) {
|
|
145
161
|
await this.verifyPassword({
|
|
146
162
|
accountAddress: senderAddress,
|
|
147
163
|
password,
|
|
@@ -157,7 +173,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
157
173
|
message: serializedTxBytes,
|
|
158
174
|
accountAddress: senderAddress,
|
|
159
175
|
chainName: this.chainName,
|
|
160
|
-
password
|
|
176
|
+
password,
|
|
177
|
+
externalServerKeyShares
|
|
161
178
|
});
|
|
162
179
|
if (!('r' in signatureEcdsa && 's' in signatureEcdsa && 'v' in signatureEcdsa)) {
|
|
163
180
|
throw new Error('Invalid signature format returned from MPC signing');
|
|
@@ -178,7 +195,7 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
178
195
|
throw error;
|
|
179
196
|
}
|
|
180
197
|
}
|
|
181
|
-
async exportPrivateKey({ accountAddress, password = undefined }) {
|
|
198
|
+
async exportPrivateKey({ accountAddress, password = undefined, externalServerKeyShares }) {
|
|
182
199
|
await this.verifyPassword({
|
|
183
200
|
accountAddress,
|
|
184
201
|
password,
|
|
@@ -187,7 +204,8 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
187
204
|
const { derivedPrivateKey } = await this.exportKey({
|
|
188
205
|
accountAddress,
|
|
189
206
|
chainName: this.chainName,
|
|
190
|
-
password
|
|
207
|
+
password,
|
|
208
|
+
externalServerKeyShares
|
|
191
209
|
});
|
|
192
210
|
return {
|
|
193
211
|
derivedPrivateKey
|
|
@@ -203,7 +221,11 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
203
221
|
derivedPrivateKey
|
|
204
222
|
};
|
|
205
223
|
}
|
|
206
|
-
async importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password = undefined, onError }) {
|
|
224
|
+
async importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password = undefined, onError, signedSessionId }) {
|
|
225
|
+
let ceremonyCeremonyCompleteResolver;
|
|
226
|
+
const ceremonyCompletePromise = new Promise((resolve)=>{
|
|
227
|
+
ceremonyCeremonyCompleteResolver = resolve;
|
|
228
|
+
});
|
|
207
229
|
// TODO: validate private key for EVM
|
|
208
230
|
const { rawPublicKey, externalServerKeyShares } = await this.importRawPrivateKey({
|
|
209
231
|
chainName,
|
|
@@ -220,15 +242,18 @@ class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
220
242
|
thresholdSignatureScheme,
|
|
221
243
|
externalServerKeySharesBackupInfo: getExternalServerKeyShareBackupInfo()
|
|
222
244
|
});
|
|
245
|
+
ceremonyCeremonyCompleteResolver(undefined);
|
|
223
246
|
}
|
|
224
247
|
});
|
|
248
|
+
// Wait for the ceremony to complete before proceeding
|
|
249
|
+
await ceremonyCompletePromise;
|
|
225
250
|
if (!rawPublicKey || !externalServerKeyShares) {
|
|
226
251
|
throw new Error('Error creating wallet account');
|
|
227
252
|
}
|
|
228
253
|
const { accountAddress, publicKeyHex } = deriveAccountAddress({
|
|
229
254
|
rawPublicKey: rawPublicKey
|
|
230
255
|
});
|
|
231
|
-
|
|
256
|
+
await this.storeEncryptedBackupByWalletWithRetry({
|
|
232
257
|
accountAddress,
|
|
233
258
|
externalServerKeyShares,
|
|
234
259
|
password
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-wallet/node-evm",
|
|
3
|
-
"version": "0.0.0-beta.
|
|
3
|
+
"version": "0.0.0-beta.304.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@dynamic-labs-wallet/node": "0.0.0-beta.
|
|
6
|
+
"@dynamic-labs-wallet/node": "0.0.0-beta.304.1"
|
|
7
7
|
},
|
|
8
8
|
"publishConfig": {
|
|
9
9
|
"access": "public"
|
|
@@ -26,13 +26,13 @@
|
|
|
26
26
|
"main": "./index.cjs.js",
|
|
27
27
|
"module": "./index.esm.js",
|
|
28
28
|
"types": "./index.esm.d.ts",
|
|
29
|
+
"type": "module",
|
|
29
30
|
"exports": {
|
|
30
31
|
"./package.json": "./package.json",
|
|
31
32
|
".": {
|
|
32
33
|
"types": "./index.esm.d.ts",
|
|
33
34
|
"import": "./index.esm.js",
|
|
34
|
-
"require": "./index.cjs.js"
|
|
35
|
-
"default": "./index.cjs.js"
|
|
35
|
+
"require": "./index.cjs.js"
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
}
|
package/src/client/client.d.ts
CHANGED
|
@@ -14,27 +14,32 @@ export declare class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
14
14
|
}): Promise<{
|
|
15
15
|
accountAddress: string;
|
|
16
16
|
publicKeyHex: string;
|
|
17
|
-
rawPublicKey: EcdsaPublicKey | Uint8Array | undefined;
|
|
17
|
+
rawPublicKey: EcdsaPublicKey | Uint8Array | string | undefined;
|
|
18
18
|
externalServerKeyShares: ServerKeyShare[];
|
|
19
|
+
walletId: string;
|
|
19
20
|
}>;
|
|
20
|
-
signMessage({ message, accountAddress, password, }: {
|
|
21
|
+
signMessage({ message, accountAddress, password, externalServerKeyShares, }: {
|
|
21
22
|
message: string;
|
|
22
23
|
accountAddress: string;
|
|
23
24
|
password?: string;
|
|
25
|
+
externalServerKeyShares: ServerKeyShare[];
|
|
24
26
|
}): Promise<`0x${string}`>;
|
|
25
27
|
verifyMessageSignature({ accountAddress, message, signature, }: {
|
|
26
28
|
accountAddress: string;
|
|
27
29
|
message: SignableMessage;
|
|
28
30
|
signature: any;
|
|
29
31
|
}): Promise<boolean>;
|
|
30
|
-
signTransaction({ senderAddress, transaction, password, }: {
|
|
32
|
+
signTransaction({ senderAddress, transaction, password, signedSessionId, externalServerKeyShares, }: {
|
|
31
33
|
senderAddress: string;
|
|
32
34
|
transaction: TransactionSerializable;
|
|
33
35
|
password?: string;
|
|
36
|
+
signedSessionId: string;
|
|
37
|
+
externalServerKeyShares: ServerKeyShare[];
|
|
34
38
|
}): Promise<string>;
|
|
35
|
-
exportPrivateKey({ accountAddress, password, }: {
|
|
39
|
+
exportPrivateKey({ accountAddress, password, externalServerKeyShares, }: {
|
|
36
40
|
accountAddress: string;
|
|
37
41
|
password?: string;
|
|
42
|
+
externalServerKeyShares: ServerKeyShare[];
|
|
38
43
|
}): Promise<{
|
|
39
44
|
derivedPrivateKey: string | undefined;
|
|
40
45
|
}>;
|
|
@@ -44,16 +49,17 @@ export declare class DynamicEvmWalletClient extends DynamicWalletClient {
|
|
|
44
49
|
}): Promise<{
|
|
45
50
|
derivedPrivateKey: string | undefined;
|
|
46
51
|
}>;
|
|
47
|
-
importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password, onError, }: {
|
|
52
|
+
importPrivateKey({ privateKey, chainName, thresholdSignatureScheme, password, onError, signedSessionId, }: {
|
|
48
53
|
privateKey: string;
|
|
49
54
|
chainName: string;
|
|
50
55
|
thresholdSignatureScheme: ThresholdSignatureScheme;
|
|
51
56
|
password?: string;
|
|
52
57
|
onError?: (error: Error) => void;
|
|
58
|
+
signedSessionId: string;
|
|
53
59
|
}): Promise<{
|
|
54
60
|
accountAddress: string;
|
|
55
61
|
publicKeyHex: string;
|
|
56
|
-
rawPublicKey: EcdsaPublicKey | Uint8Array | undefined;
|
|
62
|
+
rawPublicKey: EcdsaPublicKey | Uint8Array | string | undefined;
|
|
57
63
|
externalServerKeyShares: ServerKeyShare[];
|
|
58
64
|
}>;
|
|
59
65
|
getEvmWallets(): Promise<any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EAEd,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EAGzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,KAAK,EAEV,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAE7B,MAAM,MAAM,CAAC;AAed,qBAAa,sBAAuB,SAAQ,mBAAmB;IAC7D,QAAQ,CAAC,SAAS,SAAS;gBAEf,EACV,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,KAAK,GACN,EAAE,wBAAwB;IAS3B,sBAAsB,CAAC,EACrB,KAAK,EACL,MAAM,GACP,EAAE;QACD,KAAK,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,YAAY;IAOV,mBAAmB,CAAC,EACxB,wBAAwB,EACxB,QAAoB,EACpB,OAAO,GACR,EAAE;QACD,wBAAwB,EAAE,wBAAwB,CAAC;QACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC,GAAG,OAAO,CAAC;QACV,cAAc,EAAE,MAAM,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|