@zill-protocol/client 4.1.5 → 4.1.6
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/package.json +4 -4
- package/dist/src/syncSDK.d.ts +2 -1
- package/dist/src/syncSDK.d.ts.map +1 -1
- package/dist/src/syncSDK.js +75 -1
- package/dist/src/syncSDK.js.map +1 -1
- package/package.json +4 -4
- package/src/syncSDK.ts +85 -2
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zill-protocol/client",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"test:unit": "mocha --require ts-node/register test/** --timeout 45000 --exit"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@zill-protocol/config": "
|
|
25
|
+
"@zill-protocol/config": "workspace:^",
|
|
26
26
|
"@zill-protocol/contracts": "^4.0.2",
|
|
27
|
-
"@zill-protocol/core": "
|
|
28
|
-
"@zill-protocol/crypto": "
|
|
27
|
+
"@zill-protocol/core": "workspace:^",
|
|
28
|
+
"@zill-protocol/crypto": "workspace:^",
|
|
29
29
|
"async-mutex": "^0.4.0",
|
|
30
30
|
"big-integer": "^1.6.42",
|
|
31
31
|
"bigint-json-serialization": "^1.0.1",
|
package/dist/src/syncSDK.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { NocturneViewer } from "@zill-protocol/crypto";
|
|
2
2
|
import { NocturneDB } from "./NocturneDB";
|
|
3
3
|
import { PendingOutputRecord } from "./types";
|
|
4
|
-
import { SDKSyncAdapter, SparseMerkleProver } from "@zill-protocol/core";
|
|
4
|
+
import { IncludedNote, SDKSyncAdapter, SparseMerkleProver } from "@zill-protocol/core";
|
|
5
5
|
export interface SyncOpts {
|
|
6
6
|
endBlock?: number;
|
|
7
7
|
timeoutSeconds?: number;
|
|
@@ -14,4 +14,5 @@ export interface SyncDeps {
|
|
|
14
14
|
viewer: NocturneViewer;
|
|
15
15
|
}
|
|
16
16
|
export declare function syncSDK({ viewer }: SyncDeps, adapter: SDKSyncAdapter, db: NocturneDB, merkle: SparseMerkleProver, opts?: SyncOpts): Promise<number | undefined>;
|
|
17
|
+
export declare function normalizeIncludedNoteForSync(note: IncludedNote): IncludedNote;
|
|
17
18
|
//# sourceMappingURL=syncSDK.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncSDK.d.ts","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"syncSDK.d.ts","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuC,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAEL,YAAY,EAKZ,cAAc,EAGd,kBAAkB,EAKnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,yBAAyB,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,EAAE,KAAK,IAAI,CAAC;CACtE;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,cAAc,CAAC;CACxB;AAGD,wBAAsB,OAAO,CAC3B,EAAE,MAAM,EAAE,EAAE,QAAQ,EACpB,OAAO,EAAE,cAAc,EACvB,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,kBAAkB,EAC1B,IAAI,CAAC,EAAE,QAAQ,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8F7B;AAsND,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY,CAmB7E"}
|
package/dist/src/syncSDK.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.syncSDK = syncSDK;
|
|
4
|
+
exports.normalizeIncludedNoteForSync = normalizeIncludedNoteForSync;
|
|
5
|
+
const crypto_1 = require("@zill-protocol/crypto");
|
|
4
6
|
const core_1 = require("@zill-protocol/core");
|
|
5
7
|
// Sync SDK, returning last synced merkle index of last state diff
|
|
6
8
|
async function syncSDK({ viewer }, adapter, db, merkle, opts) {
|
|
@@ -154,7 +156,7 @@ function decryptStateDiff(viewer, { notes, nullifiers, latestCommittedMerkleInde
|
|
|
154
156
|
// if it's not encrypted, check if it's ours.
|
|
155
157
|
// if it is, then return it
|
|
156
158
|
// if it's not, return only the commitment
|
|
157
|
-
const includedNote = note;
|
|
159
|
+
const includedNote = normalizeIncludedNoteForSync(note);
|
|
158
160
|
const isOwn = viewer.isOwnAddress(includedNote.owner);
|
|
159
161
|
if (isOwn) {
|
|
160
162
|
const nullifier = core_1.NoteTrait.createNullifier(viewer, includedNote);
|
|
@@ -185,4 +187,76 @@ function decryptStateDiff(viewer, { notes, nullifiers, latestCommittedMerkleInde
|
|
|
185
187
|
totalEntityIndex,
|
|
186
188
|
};
|
|
187
189
|
}
|
|
190
|
+
function stripBigIntSuffix(value) {
|
|
191
|
+
return value.endsWith("n") ? value.slice(0, -1) : value;
|
|
192
|
+
}
|
|
193
|
+
function normalizeBigIntValue(value) {
|
|
194
|
+
if (typeof value === "bigint") {
|
|
195
|
+
return value;
|
|
196
|
+
}
|
|
197
|
+
if (typeof value === "number") {
|
|
198
|
+
return BigInt(value);
|
|
199
|
+
}
|
|
200
|
+
if (typeof value === "string") {
|
|
201
|
+
const trimmed = stripBigIntSuffix(value.trim());
|
|
202
|
+
if (!trimmed) {
|
|
203
|
+
return 0n;
|
|
204
|
+
}
|
|
205
|
+
return BigInt(trimmed);
|
|
206
|
+
}
|
|
207
|
+
throw new Error("invalid bigint value");
|
|
208
|
+
}
|
|
209
|
+
function normalizeNumberValue(value) {
|
|
210
|
+
if (typeof value === "number") {
|
|
211
|
+
return value;
|
|
212
|
+
}
|
|
213
|
+
if (typeof value === "bigint") {
|
|
214
|
+
return Number(value);
|
|
215
|
+
}
|
|
216
|
+
if (typeof value === "string") {
|
|
217
|
+
const trimmed = stripBigIntSuffix(value.trim());
|
|
218
|
+
return Number(trimmed);
|
|
219
|
+
}
|
|
220
|
+
throw new Error("invalid number value");
|
|
221
|
+
}
|
|
222
|
+
function normalizeStealthAddress(owner) {
|
|
223
|
+
if (!owner || typeof owner !== "object") {
|
|
224
|
+
throw new Error("invalid note owner");
|
|
225
|
+
}
|
|
226
|
+
const asRecord = owner;
|
|
227
|
+
if ("h1X" in asRecord &&
|
|
228
|
+
"h1Y" in asRecord &&
|
|
229
|
+
"h2X" in asRecord &&
|
|
230
|
+
"h2Y" in asRecord) {
|
|
231
|
+
return {
|
|
232
|
+
h1X: normalizeBigIntValue(asRecord.h1X),
|
|
233
|
+
h1Y: normalizeBigIntValue(asRecord.h1Y),
|
|
234
|
+
h2X: normalizeBigIntValue(asRecord.h2X),
|
|
235
|
+
h2Y: normalizeBigIntValue(asRecord.h2Y),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
if ("h1" in asRecord && "h2" in asRecord) {
|
|
239
|
+
return crypto_1.StealthAddressTrait.decompress({
|
|
240
|
+
h1: normalizeBigIntValue(asRecord.h1),
|
|
241
|
+
h2: normalizeBigIntValue(asRecord.h2),
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
throw new Error("invalid note owner shape");
|
|
245
|
+
}
|
|
246
|
+
function normalizeIncludedNoteForSync(note) {
|
|
247
|
+
const owner = normalizeStealthAddress(note.owner);
|
|
248
|
+
const asset = note.asset;
|
|
249
|
+
return {
|
|
250
|
+
...note,
|
|
251
|
+
owner,
|
|
252
|
+
nonce: normalizeBigIntValue(note.nonce),
|
|
253
|
+
value: normalizeBigIntValue(note.value),
|
|
254
|
+
merkleIndex: normalizeNumberValue(note.merkleIndex),
|
|
255
|
+
asset: {
|
|
256
|
+
assetType: normalizeNumberValue(asset.assetType),
|
|
257
|
+
assetAddr: String(asset.assetAddr),
|
|
258
|
+
id: normalizeBigIntValue(asset.id),
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
}
|
|
188
262
|
//# sourceMappingURL=syncSDK.js.map
|
package/dist/src/syncSDK.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncSDK.js","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":";;AAkCA,0BAoGC;
|
|
1
|
+
{"version":3,"file":"syncSDK.js","sourceRoot":"","sources":["../../src/syncSDK.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zill-protocol/client",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
"test:unit": "mocha --require ts-node/register test/** --timeout 45000 --exit"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@zill-protocol/config": "
|
|
25
|
+
"@zill-protocol/config": "workspace:^",
|
|
26
26
|
"@zill-protocol/contracts": "^4.0.2",
|
|
27
|
-
"@zill-protocol/core": "
|
|
28
|
-
"@zill-protocol/crypto": "
|
|
27
|
+
"@zill-protocol/core": "workspace:^",
|
|
28
|
+
"@zill-protocol/crypto": "workspace:^",
|
|
29
29
|
"async-mutex": "^0.4.0",
|
|
30
30
|
"big-integer": "^1.6.42",
|
|
31
31
|
"bigint-json-serialization": "^1.0.1",
|
package/src/syncSDK.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { NocturneViewer } from "@zill-protocol/crypto";
|
|
1
|
+
import { NocturneViewer, StealthAddressTrait, StealthAddress } from "@zill-protocol/crypto";
|
|
2
2
|
import { NocturneDB } from "./NocturneDB";
|
|
3
3
|
import { PendingOutputRecord } from "./types";
|
|
4
4
|
import {
|
|
@@ -251,7 +251,7 @@ function decryptStateDiff(
|
|
|
251
251
|
// if it's not encrypted, check if it's ours.
|
|
252
252
|
// if it is, then return it
|
|
253
253
|
// if it's not, return only the commitment
|
|
254
|
-
const includedNote = note as IncludedNote;
|
|
254
|
+
const includedNote = normalizeIncludedNoteForSync(note as IncludedNote);
|
|
255
255
|
const isOwn = viewer.isOwnAddress(includedNote.owner);
|
|
256
256
|
|
|
257
257
|
if (isOwn) {
|
|
@@ -283,3 +283,86 @@ function decryptStateDiff(
|
|
|
283
283
|
totalEntityIndex,
|
|
284
284
|
};
|
|
285
285
|
}
|
|
286
|
+
|
|
287
|
+
function stripBigIntSuffix(value: string): string {
|
|
288
|
+
return value.endsWith("n") ? value.slice(0, -1) : value;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
function normalizeBigIntValue(value: unknown): bigint {
|
|
292
|
+
if (typeof value === "bigint") {
|
|
293
|
+
return value;
|
|
294
|
+
}
|
|
295
|
+
if (typeof value === "number") {
|
|
296
|
+
return BigInt(value);
|
|
297
|
+
}
|
|
298
|
+
if (typeof value === "string") {
|
|
299
|
+
const trimmed = stripBigIntSuffix(value.trim());
|
|
300
|
+
if (!trimmed) {
|
|
301
|
+
return 0n;
|
|
302
|
+
}
|
|
303
|
+
return BigInt(trimmed);
|
|
304
|
+
}
|
|
305
|
+
throw new Error("invalid bigint value");
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
function normalizeNumberValue(value: unknown): number {
|
|
309
|
+
if (typeof value === "number") {
|
|
310
|
+
return value;
|
|
311
|
+
}
|
|
312
|
+
if (typeof value === "bigint") {
|
|
313
|
+
return Number(value);
|
|
314
|
+
}
|
|
315
|
+
if (typeof value === "string") {
|
|
316
|
+
const trimmed = stripBigIntSuffix(value.trim());
|
|
317
|
+
return Number(trimmed);
|
|
318
|
+
}
|
|
319
|
+
throw new Error("invalid number value");
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
function normalizeStealthAddress(owner: unknown): StealthAddress {
|
|
323
|
+
if (!owner || typeof owner !== "object") {
|
|
324
|
+
throw new Error("invalid note owner");
|
|
325
|
+
}
|
|
326
|
+
const asRecord = owner as Record<string, unknown>;
|
|
327
|
+
if (
|
|
328
|
+
"h1X" in asRecord &&
|
|
329
|
+
"h1Y" in asRecord &&
|
|
330
|
+
"h2X" in asRecord &&
|
|
331
|
+
"h2Y" in asRecord
|
|
332
|
+
) {
|
|
333
|
+
return {
|
|
334
|
+
h1X: normalizeBigIntValue(asRecord.h1X),
|
|
335
|
+
h1Y: normalizeBigIntValue(asRecord.h1Y),
|
|
336
|
+
h2X: normalizeBigIntValue(asRecord.h2X),
|
|
337
|
+
h2Y: normalizeBigIntValue(asRecord.h2Y),
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
if ("h1" in asRecord && "h2" in asRecord) {
|
|
341
|
+
return StealthAddressTrait.decompress({
|
|
342
|
+
h1: normalizeBigIntValue(asRecord.h1),
|
|
343
|
+
h2: normalizeBigIntValue(asRecord.h2),
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
throw new Error("invalid note owner shape");
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
export function normalizeIncludedNoteForSync(note: IncludedNote): IncludedNote {
|
|
350
|
+
const owner = normalizeStealthAddress(note.owner);
|
|
351
|
+
const asset = note.asset as unknown as {
|
|
352
|
+
assetType: unknown;
|
|
353
|
+
assetAddr: unknown;
|
|
354
|
+
id: unknown;
|
|
355
|
+
};
|
|
356
|
+
return {
|
|
357
|
+
...note,
|
|
358
|
+
owner,
|
|
359
|
+
nonce: normalizeBigIntValue(note.nonce),
|
|
360
|
+
value: normalizeBigIntValue(note.value),
|
|
361
|
+
merkleIndex: normalizeNumberValue(note.merkleIndex),
|
|
362
|
+
asset: {
|
|
363
|
+
assetType: normalizeNumberValue(asset.assetType),
|
|
364
|
+
assetAddr: String(asset.assetAddr),
|
|
365
|
+
id: normalizeBigIntValue(asset.id),
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
}
|