@zerc20/wallet-sdk 0.2.0 → 0.4.0

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.
Files changed (53) hide show
  1. package/dist/burnWorker.js +6 -6
  2. package/dist/burnWorker.js.map +1 -1
  3. package/dist/context.d.ts +25 -4
  4. package/dist/context.js +36 -6
  5. package/dist/context.js.map +1 -1
  6. package/dist/core.d.ts +32 -17
  7. package/dist/core.js +253 -70
  8. package/dist/core.js.map +1 -1
  9. package/dist/errors.d.ts +2 -0
  10. package/dist/errors.js.map +1 -1
  11. package/dist/index.d.ts +3 -2
  12. package/dist/index.js +3 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/pos.js +2 -2
  15. package/dist/pos.js.map +1 -1
  16. package/dist/rageExit.js +3 -5
  17. package/dist/rageExit.js.map +1 -1
  18. package/dist/seed.d.ts +4 -0
  19. package/dist/seed.js +12 -1
  20. package/dist/seed.js.map +1 -1
  21. package/dist/spend.d.ts +1 -1
  22. package/dist/spend.js +5 -4
  23. package/dist/spend.js.map +1 -1
  24. package/dist/state.d.ts +14 -4
  25. package/dist/state.js +10 -7
  26. package/dist/state.js.map +1 -1
  27. package/dist/sync.d.ts +16 -3
  28. package/dist/sync.js +93 -25
  29. package/dist/sync.js.map +1 -1
  30. package/dist/viewKey.d.ts +14 -0
  31. package/dist/viewKey.js +45 -0
  32. package/dist/viewKey.js.map +1 -0
  33. package/dist/wallet.d.ts +39 -12
  34. package/dist/wallet.js +209 -85
  35. package/dist/wallet.js.map +1 -1
  36. package/package.json +5 -3
  37. package/src/burnWorker.ts +9 -10
  38. package/src/context.ts +51 -8
  39. package/src/core.ts +279 -87
  40. package/src/errors.ts +2 -0
  41. package/src/index.ts +4 -1
  42. package/src/pos.ts +2 -2
  43. package/src/rageExit.ts +3 -4
  44. package/src/seed.ts +13 -1
  45. package/src/spend.ts +5 -5
  46. package/src/state.ts +17 -7
  47. package/src/sync.ts +97 -24
  48. package/src/viewKey.ts +49 -0
  49. package/src/wallet.ts +270 -87
  50. package/wasm/zerc20_wallet_core.d.ts +20 -10
  51. package/wasm/zerc20_wallet_core.js +74 -37
  52. package/wasm/zerc20_wallet_core_bg.wasm +0 -0
  53. package/wasm/zerc20_wallet_core_bg.wasm.d.ts +4 -3
@@ -7,18 +7,27 @@
7
7
  */
8
8
  export function aspLeaves(bitmap: Uint8Array, first: bigint, count: number): Uint8Array;
9
9
 
10
+ export function burnAddressOf(chain_id: bigint, public_key: string, salt: string): string | undefined;
11
+
10
12
  /**
11
- * A seed's `index`-th burn address for one chain and token, with its salt: `{salt, address}`. About 2^16 hashes.
13
+ * The `index`-th burn address of `public_key` on one chain and token from `burn_key`, and its salt, if the salt's
14
+ * counter is in `from..=to`: `{salt, address}` or `undefined`. Searched in blocks of counters from 0, the result is
15
+ * the first block's hit.
12
16
  */
13
- export function burnAddress(seed: Uint8Array, chain_id: bigint, token_id: number, index: number): any;
17
+ export function burnBlock(burn_key: Uint8Array, chain_id: bigint, token_id: number, index: number, public_key: string, from: number, to: number): any;
14
18
 
15
- export function burnAddressOf(chain_id: bigint, public_key: string, salt: string): string | undefined;
19
+ /**
20
+ * A burn address of someone else's `public_key` on a chain, with its salt: the first of the `count` salts from
21
+ * `start` that has the proof of work, `{salt, address}`, or `undefined`. A random `start` makes the salt
22
+ * unguessable.
23
+ */
24
+ export function burnBlockFor(chain_id: bigint, public_key: string, start: string, count: number): any;
16
25
 
17
26
  /**
18
27
  * The key that owns the notes paid to a seed's `index`-th receive code for one chain and token, shaped like
19
28
  * `spendKey`.
20
29
  */
21
- export function codeKey(seed: Uint8Array, chain_id: bigint, token_id: number, index: number): any;
30
+ export function codeSpendKey(seed: Uint8Array, chain_id: bigint, token_id: number, index: number): any;
22
31
 
23
32
  /**
24
33
  * `CommitmentLedger`'s hash chain after appending a commitment with `fields` to `prev`.
@@ -65,10 +74,10 @@ export function path(i: bigint, n: bigint, chunk_leaves: Uint8Array, page_chunks
65
74
  export function pathRoot(leaf: string, i: bigint, siblings: string[]): string;
66
75
 
67
76
  /**
68
- * The `k`-th burn address a point of sale holding `lane_key` makes for `public_key` on one chain and token, with its
69
- * salt: `{salt, address}`. About 2^16 hashes.
77
+ * The public key a signing key's hash and a nullifying key make: how a view key's holder checks that the nullifying
78
+ * key it was given is the one the account's notes commit to.
70
79
  */
71
- export function posBurnAddress(lane_key: Uint8Array, chain_id: bigint, token_id: number, k: number, public_key: string): any;
80
+ export function publicKey(auth_key_hash: string, nullifying_key: string): string;
72
81
 
73
82
  /**
74
83
  * Seals a merge witness (JSON) to the merge prover's key, padded with spaces to `pad_to` bytes. Take the key from
@@ -123,9 +132,10 @@ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembl
123
132
  export interface InitOutput {
124
133
  readonly memory: WebAssembly.Memory;
125
134
  readonly aspLeaves: (a: number, b: number, c: bigint, d: number) => [number, number, number, number];
126
- readonly burnAddress: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number];
127
135
  readonly burnAddressOf: (a: bigint, b: number, c: number, d: number, e: number) => [number, number, number, number];
128
- readonly codeKey: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number];
136
+ readonly burnBlock: (a: number, b: number, c: bigint, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number];
137
+ readonly burnBlockFor: (a: bigint, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
138
+ readonly codeSpendKey: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number];
129
139
  readonly hashChain: (a: number, b: number, c: number, d: number) => [number, number, number, number];
130
140
  readonly leaf: (a: number, b: number) => [number, number, number, number];
131
141
  readonly leaves: (a: number, b: number) => [number, number, number, number];
@@ -134,7 +144,7 @@ export interface InitOutput {
134
144
  readonly nullifier: (a: bigint, b: bigint, c: number, d: number) => [number, number, number, number];
135
145
  readonly path: (a: bigint, b: bigint, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => [number, number, number, number];
136
146
  readonly pathRoot: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number, number];
137
- readonly posBurnAddress: (a: number, b: number, c: bigint, d: number, e: number, f: number, g: number) => [number, number, number];
147
+ readonly publicKey: (a: number, b: number, c: number, d: number) => [number, number, number, number];
138
148
  readonly sealMergeWitness: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
139
149
  readonly sealWitness: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
140
150
  readonly signMerge: (a: number, b: number, c: number, d: number) => [number, number, number, number];
@@ -20,24 +20,6 @@ export function aspLeaves(bitmap, first, count) {
20
20
  return v2;
21
21
  }
22
22
 
23
- /**
24
- * A seed's `index`-th burn address for one chain and token, with its salt: `{salt, address}`. About 2^16 hashes.
25
- * @param {Uint8Array} seed
26
- * @param {bigint} chain_id
27
- * @param {number} token_id
28
- * @param {number} index
29
- * @returns {any}
30
- */
31
- export function burnAddress(seed, chain_id, token_id, index) {
32
- const ptr0 = passArray8ToWasm0(seed, wasm.__wbindgen_malloc);
33
- const len0 = WASM_VECTOR_LEN;
34
- const ret = wasm.burnAddress(ptr0, len0, chain_id, token_id, index);
35
- if (ret[2]) {
36
- throw takeFromExternrefTable0(ret[1]);
37
- }
38
- return takeFromExternrefTable0(ret[0]);
39
- }
40
-
41
23
  /**
42
24
  * @param {bigint} chain_id
43
25
  * @param {string} public_key
@@ -61,6 +43,53 @@ export function burnAddressOf(chain_id, public_key, salt) {
61
43
  return v3;
62
44
  }
63
45
 
46
+ /**
47
+ * The `index`-th burn address of `public_key` on one chain and token from `burn_key`, and its salt, if the salt's
48
+ * counter is in `from..=to`: `{salt, address}` or `undefined`. Searched in blocks of counters from 0, the result is
49
+ * the first block's hit.
50
+ * @param {Uint8Array} burn_key
51
+ * @param {bigint} chain_id
52
+ * @param {number} token_id
53
+ * @param {number} index
54
+ * @param {string} public_key
55
+ * @param {number} from
56
+ * @param {number} to
57
+ * @returns {any}
58
+ */
59
+ export function burnBlock(burn_key, chain_id, token_id, index, public_key, from, to) {
60
+ const ptr0 = passArray8ToWasm0(burn_key, wasm.__wbindgen_malloc);
61
+ const len0 = WASM_VECTOR_LEN;
62
+ const ptr1 = passStringToWasm0(public_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
63
+ const len1 = WASM_VECTOR_LEN;
64
+ const ret = wasm.burnBlock(ptr0, len0, chain_id, token_id, index, ptr1, len1, from, to);
65
+ if (ret[2]) {
66
+ throw takeFromExternrefTable0(ret[1]);
67
+ }
68
+ return takeFromExternrefTable0(ret[0]);
69
+ }
70
+
71
+ /**
72
+ * A burn address of someone else's `public_key` on a chain, with its salt: the first of the `count` salts from
73
+ * `start` that has the proof of work, `{salt, address}`, or `undefined`. A random `start` makes the salt
74
+ * unguessable.
75
+ * @param {bigint} chain_id
76
+ * @param {string} public_key
77
+ * @param {string} start
78
+ * @param {number} count
79
+ * @returns {any}
80
+ */
81
+ export function burnBlockFor(chain_id, public_key, start, count) {
82
+ const ptr0 = passStringToWasm0(public_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
83
+ const len0 = WASM_VECTOR_LEN;
84
+ const ptr1 = passStringToWasm0(start, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
85
+ const len1 = WASM_VECTOR_LEN;
86
+ const ret = wasm.burnBlockFor(chain_id, ptr0, len0, ptr1, len1, count);
87
+ if (ret[2]) {
88
+ throw takeFromExternrefTable0(ret[1]);
89
+ }
90
+ return takeFromExternrefTable0(ret[0]);
91
+ }
92
+
64
93
  /**
65
94
  * The key that owns the notes paid to a seed's `index`-th receive code for one chain and token, shaped like
66
95
  * `spendKey`.
@@ -70,10 +99,10 @@ export function burnAddressOf(chain_id, public_key, salt) {
70
99
  * @param {number} index
71
100
  * @returns {any}
72
101
  */
73
- export function codeKey(seed, chain_id, token_id, index) {
102
+ export function codeSpendKey(seed, chain_id, token_id, index) {
74
103
  const ptr0 = passArray8ToWasm0(seed, wasm.__wbindgen_malloc);
75
104
  const len0 = WASM_VECTOR_LEN;
76
- const ret = wasm.codeKey(ptr0, len0, chain_id, token_id, index);
105
+ const ret = wasm.codeSpendKey(ptr0, len0, chain_id, token_id, index);
77
106
  if (ret[2]) {
78
107
  throw takeFromExternrefTable0(ret[1]);
79
108
  }
@@ -296,25 +325,33 @@ export function pathRoot(leaf, i, siblings) {
296
325
  }
297
326
 
298
327
  /**
299
- * The `k`-th burn address a point of sale holding `lane_key` makes for `public_key` on one chain and token, with its
300
- * salt: `{salt, address}`. About 2^16 hashes.
301
- * @param {Uint8Array} lane_key
302
- * @param {bigint} chain_id
303
- * @param {number} token_id
304
- * @param {number} k
305
- * @param {string} public_key
306
- * @returns {any}
328
+ * The public key a signing key's hash and a nullifying key make: how a view key's holder checks that the nullifying
329
+ * key it was given is the one the account's notes commit to.
330
+ * @param {string} auth_key_hash
331
+ * @param {string} nullifying_key
332
+ * @returns {string}
307
333
  */
308
- export function posBurnAddress(lane_key, chain_id, token_id, k, public_key) {
309
- const ptr0 = passArray8ToWasm0(lane_key, wasm.__wbindgen_malloc);
310
- const len0 = WASM_VECTOR_LEN;
311
- const ptr1 = passStringToWasm0(public_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
312
- const len1 = WASM_VECTOR_LEN;
313
- const ret = wasm.posBurnAddress(ptr0, len0, chain_id, token_id, k, ptr1, len1);
314
- if (ret[2]) {
315
- throw takeFromExternrefTable0(ret[1]);
334
+ export function publicKey(auth_key_hash, nullifying_key) {
335
+ let deferred4_0;
336
+ let deferred4_1;
337
+ try {
338
+ const ptr0 = passStringToWasm0(auth_key_hash, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
339
+ const len0 = WASM_VECTOR_LEN;
340
+ const ptr1 = passStringToWasm0(nullifying_key, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
341
+ const len1 = WASM_VECTOR_LEN;
342
+ const ret = wasm.publicKey(ptr0, len0, ptr1, len1);
343
+ var ptr3 = ret[0];
344
+ var len3 = ret[1];
345
+ if (ret[3]) {
346
+ ptr3 = 0; len3 = 0;
347
+ throw takeFromExternrefTable0(ret[2]);
348
+ }
349
+ deferred4_0 = ptr3;
350
+ deferred4_1 = len3;
351
+ return getStringFromWasm0(ptr3, len3);
352
+ } finally {
353
+ wasm.__wbindgen_free(deferred4_0, deferred4_1, 1);
316
354
  }
317
- return takeFromExternrefTable0(ret[0]);
318
355
  }
319
356
 
320
357
  /**
Binary file
@@ -2,9 +2,10 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const aspLeaves: (a: number, b: number, c: bigint, d: number) => [number, number, number, number];
5
- export const burnAddress: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number];
6
5
  export const burnAddressOf: (a: bigint, b: number, c: number, d: number, e: number) => [number, number, number, number];
7
- export const codeKey: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number];
6
+ export const burnBlock: (a: number, b: number, c: bigint, d: number, e: number, f: number, g: number, h: number, i: number) => [number, number, number];
7
+ export const burnBlockFor: (a: bigint, b: number, c: number, d: number, e: number, f: number) => [number, number, number];
8
+ export const codeSpendKey: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number];
8
9
  export const hashChain: (a: number, b: number, c: number, d: number) => [number, number, number, number];
9
10
  export const leaf: (a: number, b: number) => [number, number, number, number];
10
11
  export const leaves: (a: number, b: number) => [number, number, number, number];
@@ -13,7 +14,7 @@ export const noteTag: (a: number, b: number, c: number) => [number, number, numb
13
14
  export const nullifier: (a: bigint, b: bigint, c: number, d: number) => [number, number, number, number];
14
15
  export const path: (a: bigint, b: bigint, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => [number, number, number, number];
15
16
  export const pathRoot: (a: number, b: number, c: bigint, d: number, e: number) => [number, number, number, number];
16
- export const posBurnAddress: (a: number, b: number, c: bigint, d: number, e: number, f: number, g: number) => [number, number, number];
17
+ export const publicKey: (a: number, b: number, c: number, d: number) => [number, number, number, number];
17
18
  export const sealMergeWitness: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
18
19
  export const sealWitness: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
19
20
  export const signMerge: (a: number, b: number, c: number, d: number) => [number, number, number, number];