@zerc20/wallet-sdk 0.4.0 → 0.5.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 (60) hide show
  1. package/README.md +1 -1
  2. package/dist/accountId.d.ts +5 -0
  3. package/dist/accountId.js +19 -0
  4. package/dist/accountId.js.map +1 -0
  5. package/dist/chain.d.ts +85 -9
  6. package/dist/chain.js +60 -33
  7. package/dist/chain.js.map +1 -1
  8. package/dist/context.d.ts +8 -2
  9. package/dist/context.js +15 -2
  10. package/dist/context.js.map +1 -1
  11. package/dist/core.d.ts +35 -5
  12. package/dist/core.js +95 -23
  13. package/dist/core.js.map +1 -1
  14. package/dist/index.d.ts +4 -2
  15. package/dist/index.js +4 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/pos.d.ts +7 -1
  18. package/dist/pos.js +213 -55
  19. package/dist/pos.js.map +1 -1
  20. package/dist/rageExit.d.ts +27 -4
  21. package/dist/rageExit.js +160 -49
  22. package/dist/rageExit.js.map +1 -1
  23. package/dist/seed.d.ts +4 -0
  24. package/dist/seed.js +13 -1
  25. package/dist/seed.js.map +1 -1
  26. package/dist/servers.d.ts +2 -0
  27. package/dist/servers.js +1 -0
  28. package/dist/servers.js.map +1 -1
  29. package/dist/services.d.ts +11 -4
  30. package/dist/services.js +26 -7
  31. package/dist/services.js.map +1 -1
  32. package/dist/spend.d.ts +30 -9
  33. package/dist/spend.js +46 -17
  34. package/dist/spend.js.map +1 -1
  35. package/dist/state.d.ts +21 -0
  36. package/dist/state.js.map +1 -1
  37. package/dist/sync.d.ts +10 -5
  38. package/dist/sync.js +49 -18
  39. package/dist/sync.js.map +1 -1
  40. package/dist/wallet.d.ts +92 -14
  41. package/dist/wallet.js +191 -56
  42. package/dist/wallet.js.map +1 -1
  43. package/package.json +2 -2
  44. package/src/accountId.ts +22 -0
  45. package/src/chain.ts +95 -49
  46. package/src/context.ts +27 -3
  47. package/src/core.ts +109 -24
  48. package/src/index.ts +15 -2
  49. package/src/pos.ts +240 -61
  50. package/src/rageExit.ts +237 -61
  51. package/src/seed.ts +24 -1
  52. package/src/servers.ts +4 -1
  53. package/src/services.ts +28 -15
  54. package/src/spend.ts +58 -23
  55. package/src/state.ts +25 -1
  56. package/src/sync.ts +54 -19
  57. package/src/wallet.ts +246 -72
  58. package/wasm/zerc20_wallet_core.d.ts +1 -1
  59. package/wasm/zerc20_wallet_core.js +1 -1
  60. package/wasm/zerc20_wallet_core_bg.wasm +0 -0
package/dist/core.js CHANGED
@@ -19,25 +19,30 @@ export function initCore() {
19
19
  export const core = wasm;
20
20
  /** The `index`-th burn address of `publicKey` on a chain and token, and its salt, from `burnKey`: the wallet's own burn
21
21
  * key, or a point of sale's (`wallet_keys::derive_burn_address`). About 2^16 hashes, spread over the device's cores
22
- * (Web Workers in a browser, worker threads in Node) so that the app stays responsive; `signal` stops the search. */
23
- export const burnAddress = (burnKey, chainId, tokenId, index, publicKey, signal) => search({ burnKey, chainId, tokenId, index, publicKey }, signal);
22
+ * (Web Workers in a browser, worker threads in Node) so that the app stays responsive; `signal` stops the search. One
23
+ * that nobody waits for, made ahead, is `urgent: false`: it gives way to those someone waits for. */
24
+ export const burnAddress = (burnKey, chainId, tokenId, index, publicKey, opts = {}) => search({ burnKey, chainId, tokenId, index, publicKey }, opts.urgent ?? true, opts.signal);
24
25
  /** A burn address of someone else's `publicKey` (one they published to be paid), with a random salt that has the proof
25
26
  * of work: about 2^16 hashes too, searched the same way. Only who holds the salt finds it: the payer, and the owner once
26
27
  * told (`planSend` with `burn`). */
27
- export const burnAddressFor = (chainId, publicKey, signal) => search({ chainId, publicKey }, signal);
28
+ export const burnAddressFor = (chainId, publicKey, signal) => search({ chainId, publicKey }, true, signal);
28
29
  /** Counters per block: about 20 ms of hashing on a laptop, a few times that on a phone. */
29
30
  const BLOCK = 512;
30
- /** The address a block holds, if any. Its salts count up from a start: one the burn key derives, or for someone else's
31
- * key a random one below 2^253, so that every salt is a field element. */
32
- export function runBlock({ search: s, from, to }) {
33
- let burn;
31
+ /** A block's call. Its salts count up from a start: one the burn key derives, or for someone else's key a random one
32
+ * below 2^253, so that every salt is a field element. */
33
+ export function blockCall({ search: s, from, to }) {
34
34
  if ('burnKey' in s)
35
- burn = core.burnBlock(s.burnKey, s.chainId, s.tokenId, s.index, s.publicKey, from, to);
36
- else {
37
- const start = crypto.getRandomValues(new Uint8Array(32));
38
- start[0] = start[0] & 0x1f;
39
- burn = core.burnBlockFor(s.chainId, s.publicKey, bytesToHex(start), to - from + 1);
40
- }
35
+ return { ...s, from, to };
36
+ const start = crypto.getRandomValues(new Uint8Array(32));
37
+ start[0] = start[0] & 0x1f;
38
+ return { chainId: s.chainId, publicKey: s.publicKey, start: bytesToHex(start), count: to - from + 1 };
39
+ }
40
+ /** The address a block holds, if any. */
41
+ export function runBlock(b) {
42
+ const c = blockCall(b);
43
+ const burn = 'burnKey' in c
44
+ ? core.burnBlock(c.burnKey, c.chainId, c.tokenId, c.index, c.publicKey, c.from, c.to)
45
+ : core.burnBlockFor(c.chainId, c.publicKey, c.start, c.count);
41
46
  return burn ?? null;
42
47
  }
43
48
  /** A search in progress, in blocks `0, 1, …` of `BLOCK` counters. From a burn key, the address is the first block's
@@ -97,8 +102,17 @@ export class Search {
97
102
  this.#settle(r);
98
103
  }
99
104
  }
100
- /** Searches in progress, oldest first: blocks go to the oldest that has one to hand out. */
101
- const searches = [];
105
+ /** Searches in progress by owner (the burn key, or the key paid): those someone waits for, and those made ahead. Each
106
+ * owner in turn gets a block of its oldest search that has one, so that one owner's many searches hold up no other's,
107
+ * and each address it waits for comes as soon as its cores allow. */
108
+ // ponytail: fair per owner, so per point of sale; a merchant opening many accounts gets many turns, so cap each
109
+ // merchant's sales if that happens
110
+ const queues = { urgent: new Map(), later: new Map() };
111
+ /** One block in this many goes to the searches made ahead while some are waited for: a flood of urgent searches slows
112
+ * the making ahead, which keeps everyone else's sales from waiting, but does not stop it. */
113
+ const LATER_EVERY = 4;
114
+ /** Urgent blocks handed out in a row. */
115
+ let urgentRun = 0;
102
116
  let threads = null;
103
117
  let starting = false;
104
118
  /** Workers do not run here (a page whose CSP forbids them, a bundler that left burnWorker.js out, tests run from
@@ -108,29 +122,56 @@ let runningHere = false;
108
122
  let idle;
109
123
  /** An idle pool stops after this long, freeing a wasm instance per core. */
110
124
  const IDLE_MS = 30_000;
111
- async function search(s, signal) {
125
+ async function search(s, urgent, signal) {
112
126
  await initCore();
113
127
  signal?.throwIfAborted();
128
+ const queue = urgent ? queues.urgent : queues.later;
129
+ const owner = 'burnKey' in s ? bytesToHex(s.burnKey) : s.publicKey;
114
130
  return new Promise((resolve, reject) => {
115
131
  const abort = () => one.fail(signal.reason);
116
132
  const one = new Search(s, (r) => {
117
133
  signal?.removeEventListener('abort', abort);
118
- searches.splice(searches.indexOf(one), 1);
134
+ const mine = queue.get(owner);
135
+ mine.splice(mine.indexOf(one), 1);
136
+ if (!mine.length)
137
+ queue.delete(owner);
119
138
  if ('burn' in r)
120
139
  resolve(r.burn);
121
140
  else
122
141
  reject(r.error);
123
142
  });
124
143
  signal?.addEventListener('abort', abort, { once: true });
125
- searches.push(one);
144
+ const mine = queue.get(owner);
145
+ if (mine)
146
+ mine.push(one);
147
+ else
148
+ queue.set(owner, [one]);
126
149
  dispatch();
127
150
  });
128
151
  }
129
152
  function nextJob() {
130
- for (const search of searches) {
131
- const block = search.take();
132
- if (block !== undefined)
153
+ const order = urgentRun >= LATER_EVERY - 1 ? [queues.later, queues.urgent] : [queues.urgent, queues.later];
154
+ for (const queue of order) {
155
+ const job = takeFrom(queue);
156
+ if (!job)
157
+ continue;
158
+ urgentRun = queue === queues.urgent ? urgentRun + 1 : 0;
159
+ return job;
160
+ }
161
+ return null;
162
+ }
163
+ /** A block of the first owner in line that has one, from its oldest search that does; that owner then goes to the back
164
+ * of the line. */
165
+ function takeFrom(queue) {
166
+ for (const [owner, mine] of queue) {
167
+ for (const search of mine) {
168
+ const block = search.take();
169
+ if (block === undefined)
170
+ continue;
171
+ queue.delete(owner);
172
+ queue.set(owner, mine);
133
173
  return { search, block };
174
+ }
134
175
  }
135
176
  return null;
136
177
  }
@@ -145,9 +186,40 @@ function deliver({ search, block }, a) {
145
186
  else
146
187
  search.finish(block, a.burn);
147
188
  }
148
- /** Hands blocks to idle threads, starting the pool if it is not running. */
189
+ let runner = null;
190
+ /** Blocks the runner has and has not answered. */
191
+ const onRunner = new Set();
192
+ /** Runs every block from now on on `r`, or with null in this module's wasm again. The blocks the runner had are handed
193
+ * out again, and what it answers for them later is dropped. */
194
+ export function runBurnsOn(r) {
195
+ for (const job of onRunner)
196
+ job.search.drop(job.block);
197
+ onRunner.clear();
198
+ runner = r;
199
+ dispatch();
200
+ }
201
+ function feed(r) {
202
+ while (onRunner.size < r.slots) {
203
+ const job = nextJob();
204
+ if (!job)
205
+ return;
206
+ onRunner.add(job);
207
+ void r
208
+ .run(blockCall(blockOf(job)))
209
+ .then((burn) => ({ burn }), (e) => ({ error: e instanceof Error ? e.message : String(e) }))
210
+ .then((a) => {
211
+ if (!onRunner.delete(job))
212
+ return; // handed out again when the runner was taken away
213
+ deliver(job, a);
214
+ dispatch();
215
+ });
216
+ }
217
+ }
218
+ /** Hands blocks to the runner, or to idle threads, starting the pool if it is not running. */
149
219
  function dispatch() {
150
220
  clearTimeout(idle);
221
+ if (runner)
222
+ return feed(runner);
151
223
  if (here)
152
224
  return void runHere();
153
225
  if (!threads)
@@ -162,7 +234,7 @@ function dispatch() {
162
234
  t.busy(true);
163
235
  t.send(blockOf(job));
164
236
  }
165
- if (!searches.length && threads.every((t) => !t.job)) {
237
+ if (!queues.urgent.size && !queues.later.size && threads.every((t) => !t.job)) {
166
238
  idle = setTimeout(stop, IDLE_MS);
167
239
  idle.unref?.(); // a process need not stay up for it
168
240
  }
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export { Chain, type Referrer, type Token, MAX_REFERRAL_BPS, NATIVE, UNWRAP_INTENT } from './chain.js';
1
+ export { accountId, idAccount } from './accountId.js';
2
+ export { Chain, type Referrer, type Refund, type Token, MAX_REFERRAL_BPS, NATIVE, UNWRAP_INTENT, rpcTransport, } from './chain.js';
3
+ export { type Burn, type BurnCall, type BurnRunner, runBurnsOn } from './core.js';
2
4
  export { type ErrorCode, WalletError } from './errors.js';
3
5
  export { type AttesterTrust, type ChainConfig, type Circuit, type Network, NITRO_ROOT_SHA256, checkNetwork, networkFromJson, } from './network.js';
4
6
  export { type Payment, PointOfSale, type PosToken, type Sale, type SaleStatus } from './pos.js';
5
7
  export { accountKey, seedFromSignature } from './seed.js';
6
8
  export { viewKeyAccount } from './viewKey.js';
7
- export { type Activity, type Balance, type CoinInfo, type CoinState, type DepositInfo, type DepositStep, type FeeQuote, type OpenOptions, type Operation, type OperationKind, type OperationStatus, type PendingReason, Wallet, type WatchOptions, } from './wallet.js';
9
+ export { type Activity, type Balance, type CoinInfo, type CoinState, type DepositAddressInfo, type DepositInfo, type DepositStep, type FeeQuote, type MaxAmount, type OpenOptions, type Operation, type OperationKind, type OperationStatus, type PendingReason, Wallet, type WatchOptions, } from './wallet.js';
package/dist/index.js CHANGED
@@ -5,13 +5,15 @@
5
5
  // wallet.balances(); // spendable, and what is pending and why
6
6
  // await (await wallet.deposit({ token, amount })).wait();
7
7
  // const q = await wallet.fees({ kind: 'send', token, amount });
8
- // await (await wallet.send({ to: '0x…', token, amount, maxFee: q.fee })).wait();
8
+ // await (await wallet.send({ to: 'zerc20id1…', token, amount, maxFee: q.fee })).wait();
9
9
  // const watching = await Wallet.watch({ network, viewKey: wallet.viewKey(), persist }); // elsewhere, spends nothing
10
10
  //
11
11
  // Nothing secret leaves the device unencrypted: JoinSplit proofs are made here, a merge's by the merge prover, and the
12
12
  // attester and the prover get the witness sealed to an enclave whose measurement the wallet checks. Servers are only
13
13
  // ever asked for what every wallet downloads.
14
- export { Chain, MAX_REFERRAL_BPS, NATIVE, UNWRAP_INTENT } from './chain.js';
14
+ export { accountId, idAccount } from './accountId.js';
15
+ export { Chain, MAX_REFERRAL_BPS, NATIVE, UNWRAP_INTENT, rpcTransport, } from './chain.js';
16
+ export { runBurnsOn } from './core.js';
15
17
  export { WalletError } from './errors.js';
16
18
  export { NITRO_ROOT_SHA256, checkNetwork, networkFromJson, } from './network.js';
17
19
  export { PointOfSale } from './pos.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,uFAAuF;AACvF,4DAA4D;AAC5D,kEAAkE;AAClE,mFAAmF;AACnF,uHAAuH;AACvH,EAAE;AACF,uHAAuH;AACvH,qHAAqH;AACrH,8CAA8C;AAE9C,OAAO,EAAE,KAAK,EAA6B,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACvG,OAAO,EAAkB,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAKL,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,WAAW,EAA6C,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAaL,MAAM,GAEP,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,EAAE;AACF,gFAAgF;AAChF,2EAA2E;AAC3E,uFAAuF;AACvF,4DAA4D;AAC5D,kEAAkE;AAClE,0FAA0F;AAC1F,uHAAuH;AACvH,EAAE;AACF,uHAAuH;AACvH,qHAAqH;AACrH,8CAA8C;AAE9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACL,KAAK,EAIL,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,OAAO,EAA6C,UAAU,EAAE,MAAM,WAAW,CAAC;AAClF,OAAO,EAAkB,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAKL,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAgB,WAAW,EAA6C,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAeL,MAAM,GAEP,MAAM,aAAa,CAAC"}
package/dist/pos.d.ts CHANGED
@@ -44,7 +44,8 @@ export declare class PointOfSale {
44
44
  #private;
45
45
  private constructor();
46
46
  /** Opens the point of sale's saved state. It keeps which addresses it handed out: lose that, and it may hand one out
47
- * twice. One state, one point of sale: two open on it would hand out the same addresses. */
47
+ * twice. One state, one point of sale: two open on it would hand out the same addresses, so `close` the one before
48
+ * opening it again. */
48
49
  static open(opts: {
49
50
  network: Network;
50
51
  persist: {
@@ -58,6 +59,9 @@ export declare class PointOfSale {
58
59
  * storage, which every address it makes is under: whoever hands it a key cannot point sales at a key of its own. The
59
60
  * same key again changes nothing. Another one starts over in that lane; the sales made so far are still followed. */
60
61
  connect(merchant: Address, laneKey: Hex): Promise<void>;
62
+ /** Stops making and recording, then saves the state as it is: nothing is saved after, so the state may be opened
63
+ * again. A sale under way then fails rather than hand out an address it could not save. */
64
+ close(): Promise<void>;
61
65
  /** Readies addresses of `token` ahead of its sales: an app calls it for each token it takes, as it starts and after
62
66
  * sales. Nothing happens while enough are ready, or a refill is under way or due. */
63
67
  prepare(token: PosToken): void;
@@ -79,6 +83,8 @@ export declare class PointOfSale {
79
83
  refundTo?: Address;
80
84
  }): Promise<Sale>;
81
85
  sales(): Sale[];
86
+ /** Sale `id`. */
87
+ sale(id: Address): Sale;
82
88
  /** What reached each of sales `ids`: every transfer to its burn address, with where each stands. One pass per chain
83
89
  * for them all, reading only what every wallet downloads, so no server learns which addresses it asks about. A chain
84
90
  * that fails keeps what was read before, and its error is returned. */