@zerc20/wallet-sdk 0.1.0 → 0.3.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 (57) hide show
  1. package/dist/burnWorker.js +6 -6
  2. package/dist/burnWorker.js.map +1 -1
  3. package/dist/chain.d.ts +19 -5
  4. package/dist/chain.js +17 -11
  5. package/dist/chain.js.map +1 -1
  6. package/dist/context.d.ts +23 -4
  7. package/dist/context.js +35 -6
  8. package/dist/context.js.map +1 -1
  9. package/dist/core.d.ts +32 -17
  10. package/dist/core.js +253 -70
  11. package/dist/core.js.map +1 -1
  12. package/dist/errors.d.ts +2 -0
  13. package/dist/errors.js.map +1 -1
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.js +2 -2
  16. package/dist/index.js.map +1 -1
  17. package/dist/pos.js +2 -2
  18. package/dist/pos.js.map +1 -1
  19. package/dist/rageExit.js +3 -5
  20. package/dist/rageExit.js.map +1 -1
  21. package/dist/seed.d.ts +4 -0
  22. package/dist/seed.js +12 -1
  23. package/dist/seed.js.map +1 -1
  24. package/dist/services.d.ts +5 -5
  25. package/dist/services.js +10 -7
  26. package/dist/services.js.map +1 -1
  27. package/dist/spend.d.ts +1 -1
  28. package/dist/spend.js +5 -4
  29. package/dist/spend.js.map +1 -1
  30. package/dist/state.d.ts +14 -4
  31. package/dist/state.js +10 -7
  32. package/dist/state.js.map +1 -1
  33. package/dist/sync.d.ts +16 -3
  34. package/dist/sync.js +90 -25
  35. package/dist/sync.js.map +1 -1
  36. package/dist/wallet.d.ts +27 -13
  37. package/dist/wallet.js +125 -62
  38. package/dist/wallet.js.map +1 -1
  39. package/package.json +4 -3
  40. package/src/burnWorker.ts +9 -10
  41. package/src/chain.ts +35 -12
  42. package/src/context.ts +48 -8
  43. package/src/core.ts +279 -87
  44. package/src/errors.ts +2 -0
  45. package/src/index.ts +2 -2
  46. package/src/pos.ts +2 -2
  47. package/src/rageExit.ts +3 -4
  48. package/src/seed.ts +13 -1
  49. package/src/services.ts +18 -7
  50. package/src/spend.ts +5 -5
  51. package/src/state.ts +17 -7
  52. package/src/sync.ts +95 -24
  53. package/src/wallet.ts +159 -64
  54. package/wasm/zerc20_wallet_core.d.ts +16 -13
  55. package/wasm/zerc20_wallet_core.js +49 -42
  56. package/wasm/zerc20_wallet_core_bg.wasm +0 -0
  57. package/wasm/zerc20_wallet_core_bg.wasm.d.ts +3 -3
package/dist/wallet.js CHANGED
@@ -1,8 +1,8 @@
1
1
  // The wallet an app works with. Amounts are bigints in a token's base units.
2
2
  import { CanisterClient, codeKey, commit, decodeCode, encodeCode, lookupRecipient, nextPosLane, planDeposit, planPosLane, posKey, registeredViewKey, } from '@zerc20/storage-sdk';
3
- import { bytesToHex, formatUnits, hexToBytes, isAddress, numberToHex, } from 'viem';
4
- import { Chain, NATIVE, erc20Abi, tokenAbi } from './chain.js';
5
- import { chainCtx, chainState, spendKey, walletSees } from './context.js';
3
+ import { bytesToHex, formatUnits, hexToBytes, isAddress, numberToHex, zeroAddress, } from 'viem';
4
+ import { Chain, MAX_REFERRAL_BPS, NATIVE, erc20Abi, tokenAbi } from './chain.js';
5
+ import { chainCtx, chainState, owner, switched, walletOn, walletSees } from './context.js';
6
6
  import { burnAddressFor, core, initCore } from './core.js';
7
7
  import { WalletError, fail, guard } from './errors.js';
8
8
  import { checkNetwork } from './network.js';
@@ -10,9 +10,8 @@ import { Asp, Indexer, PAGE } from './servers.js';
10
10
  import { rageExit } from './rageExit.js';
11
11
  import { registerDeposit, relayerFees } from './services.js';
12
12
  import { advanceSpend, chosenSettling, coins, grossed, inputsOf, landed, maxPayment, mergePool, mergeRound, payWith, planStep, roundsToMerge, settling, withdrawalOf, } from './spend.js';
13
- import { emptyWalletState, openState, sealState, } from './state.js';
14
- import { WAIT_MS, commitmentTx, recordBurn, storageState, syncAll, takeRefresh, tokenIds, topUpBurns, unusedBurn, } from './sync.js';
15
- const DAY_MS = 86_400_000;
13
+ import { emptyWalletState, openState, sealState, stateKey, unspent, } from './state.js';
14
+ import { WAIT_MS, commitmentTx, keyAll, nextBurn, recordBurn, storageState, syncAll, takeRefresh, tokenIds, topUpBurns, unusedBurn, } from './sync.js';
16
15
  /** The ledger's bound outside an emergency. */
17
16
  const NO_BOUND = 2n ** 64n - 1n;
18
17
  export class Wallet {
@@ -23,9 +22,12 @@ export class Wallet {
23
22
  /** Calls running or queued. */
24
23
  #busy = 0;
25
24
  #release = () => { };
25
+ #referrer;
26
+ #unlock;
26
27
  #closed = new AbortController();
27
- constructor(ctx) {
28
+ constructor(ctx, unlock) {
28
29
  this.#ctx = ctx;
30
+ this.#unlock = unlock;
29
31
  }
30
32
  /** Lets this wallet open again: in another tab, or here for another account. This object is done with: what is
31
33
  * queued fails with `wallet-closed`, a burn address search stops, and the wallet is let go once the task under way
@@ -39,21 +41,34 @@ export class Wallet {
39
41
  }
40
42
  /** Opens the wallet. The first time on this address, registers it for payments: one signature. */
41
43
  static async open(opts) {
42
- await initCore();
43
44
  checkNetwork(opts.network);
44
- if (opts.seed.length !== 32)
45
+ // the factory refuses these, which the relayer would report as its own failure
46
+ const r = opts.referrer;
47
+ if (r) {
48
+ if (!isAddress(r.address, { strict: false }) || r.address.toLowerCase() === zeroAddress)
49
+ fail('invalid', `the referrer ${r.address} is not an address to pay`);
50
+ if (!Number.isInteger(r.bps) || r.bps < 0 || r.bps > MAX_REFERRAL_BPS)
51
+ fail('invalid', `a referrer takes 0 to ${MAX_REFERRAL_BPS} bps, not ${r.bps}`);
52
+ }
53
+ if (!opts.account === !opts.walletClient)
54
+ fail('invalid', 'give an account or a wallet client, one of the two');
55
+ const account = opts.account ?? opts.walletClient.account ?? fail('invalid', 'the wallet client has no account');
56
+ // asked once the options are checked, and before anything is waited on: a browser shows a passkey prompt only in
57
+ // the click that opened
58
+ const seed = typeof opts.seed === 'function' ? await opts.seed() : opts.seed;
59
+ if (seed.length !== 32)
45
60
  fail('invalid', 'the seed is 32 bytes');
46
- const account = opts.walletClient.account ?? fail('invalid', 'the wallet client has no account');
61
+ await initCore();
47
62
  const release = await lockWallet(account.address);
48
63
  try {
49
- return await Wallet.#open(opts, account, release);
64
+ return await Wallet.#open(opts, seed, account, release);
50
65
  }
51
66
  catch (e) {
52
67
  release();
53
68
  throw e;
54
69
  }
55
70
  }
56
- static async #open(opts, account, release) {
71
+ static async #open(opts, seed, account, release) {
57
72
  const address = account.address;
58
73
  const chains = opts.network.chains.map((config) => ({
59
74
  config,
@@ -65,15 +80,18 @@ export class Wallet {
65
80
  // an EIP-7702 delegated account is still an EOA that signs
66
81
  if (code && code !== '0x' && !code.startsWith('0xef0100'))
67
82
  fail('unsupported-account', 'contract accounts cannot sign for a wallet');
68
- const signer = async (message) => hexToBytes(await guard(opts.walletClient.signMessage({ account, message })));
83
+ const signer = async (message) => hexToBytes(await guard(account.type === 'local'
84
+ ? account.signMessage({ message })
85
+ : opts.walletClient.signMessage({ account, message })));
69
86
  const storage = await CanisterClient.connect(opts.network.storage.host, opts.network.storage.canisterId);
70
- const publicKey = hexToBytes(core.spendKey(opts.seed).publicKey);
87
+ const publicKey = hexToBytes(core.spendKey(seed).publicKey);
71
88
  const saved = await opts.persist.load();
72
89
  // registered already: used before, here or on another device, so its past is looked for
73
90
  // ponytail: from genesis (~4 MB per million commitments); ask for a birthday once the chain has many
74
91
  const restoring = !saved?.length && opts.birthday === undefined && !!(await storage.registration(hexToBytes(address)));
75
- const view = await registeredViewKey(storage, opts.seed, signer, hexToBytes(address), publicKey);
76
- const loaded = saved?.length ? openState(opts.seed, saved) : null;
92
+ const view = await registeredViewKey(storage, seed, signer, hexToBytes(address), publicKey);
93
+ const key = stateKey(seed);
94
+ const loaded = saved?.length ? openState(key, saved) : null;
77
95
  // never started over in place: the first save would overwrite what it held, operations in flight included
78
96
  if (saved?.length && !loaded) {
79
97
  fail('invalid', 'the saved state does not open with this seed (another seed, a newer version, or damaged): clear it to start over, which finds what it held again');
@@ -83,26 +101,60 @@ export class Wallet {
83
101
  const state = loaded ?? emptyWalletState(address);
84
102
  const ctx = {
85
103
  network: opts.network,
86
- seed: opts.seed,
104
+ seed,
105
+ owners: new Map(),
87
106
  address,
88
- walletClient: opts.walletClient,
107
+ account,
108
+ walletClient: opts.walletClient ?? null,
89
109
  storage,
90
110
  view,
91
111
  chains,
92
112
  state,
93
- save: () => opts.persist.save(sealState(opts.seed, state)),
113
+ save: () => opts.persist.save(sealState(key, state)),
94
114
  lastFullRefreshMs: 0,
95
115
  };
96
116
  if (!loaded)
97
117
  await start(ctx, restoring ? 0n : opts.birthday);
98
- const wallet = new Wallet(ctx);
118
+ const wallet = new Wallet(ctx, typeof opts.seed === 'function' ? opts.seed : undefined);
99
119
  wallet.#release = release;
120
+ wallet.#referrer = opts.referrer;
100
121
  // a saved state names its tokens by id, and its coins stand by the chains' roots: read both now, so balances, coins
101
122
  // and history work before the first sync
102
123
  const [tokens] = await Promise.all([Promise.all(chains.map((c) => c.chain.tokens())), wallet.#readRoots()]);
103
124
  wallet.#tokens = tokens.flat();
125
+ keyAll(ctx, wallet.#tokens);
104
126
  return wallet;
105
127
  }
128
+ /** Holds `seed`, asked of `#unlock`, once it is checked to be this wallet's. */
129
+ #hold(seed) {
130
+ if (core.spendKey(seed).publicKey !== owner(this.#ctx).publicKey)
131
+ fail('invalid', "the seed given is another wallet's");
132
+ this.#ctx.seed = seed;
133
+ keyAll(this.#ctx, this.#tokens);
134
+ }
135
+ /** Within a task: the seed held, asked of `#unlock` if need be. */
136
+ async #seed() {
137
+ if (!this.#ctx.seed)
138
+ this.#hold(await this.#unlock());
139
+ }
140
+ /** At the end of a sync: lets the seed go when it was opened with a function for it, nothing waits behind the sync,
141
+ * and no payment, withdrawal or consolidation is in flight, as each may sign again (a JoinSplit that reverts is
142
+ * proved again, and every merge round is signed). */
143
+ #dropSeed() {
144
+ if (!this.#unlock || this.#busy > 1)
145
+ return;
146
+ if (this.#ctx.state.ops.some((o) => o.status === 'pending' && o.kind !== 'deposit'))
147
+ return;
148
+ this.#ctx.seed = null;
149
+ }
150
+ /** `#exclusive` for a call that `needs` the seed: held first, asked of `#unlock` if need be before the call waits on
151
+ * anything else (a browser shows a passkey prompt only in the click that asked), and queued in the step that took it,
152
+ * so that a sync ending meanwhile does not let it go. */
153
+ async #seeded(f, needs = true) {
154
+ if (needs && !this.#ctx.seed)
155
+ this.#hold(await this.#unlock());
156
+ return this.#exclusive(f);
157
+ }
106
158
  /** Runs `f` after everything queued before it: one state, changed by one task at a time. */
107
159
  #exclusive(f) {
108
160
  this.#busy++;
@@ -135,13 +187,14 @@ export class Wallet {
135
187
  }
136
188
  /** Catches up: new notes, deposits, spends and roots, then advances every operation in flight. A chain or server that
137
189
  * fails holds back only what needs it, and the first error is thrown once the rest is done. Settles before the burn
138
- * addresses are topped up, which can take a phone tens of seconds. */
190
+ * addresses are topped up, which can take a phone some seconds. */
139
191
  sync() {
140
192
  return new Promise((resolve, reject) => {
141
193
  this.#exclusive(async () => {
142
194
  await this.#catchUp().then(resolve, reject);
143
195
  // still this task's: a deposit queued meanwhile finds the one recorded ahead, rather than writing at handout
144
196
  await topUpBurns(this.#ctx, this.#closed.signal).catch(() => { }); // tried again after the next sync
197
+ this.#dropSeed();
145
198
  }).catch(reject); // closed before it ran
146
199
  });
147
200
  }
@@ -183,7 +236,7 @@ export class Wallet {
183
236
  if (errors.length > 0)
184
237
  throw errors[0];
185
238
  }
186
- /** Syncs on its own: every 15 s while something is under way, every 5 min otherwise. Returns a stop function. */
239
+ /** Syncs on its own: every 3 s while something is under way, every 10 s otherwise. Returns a stop function. */
187
240
  autoSync(onChange, onError) {
188
241
  let stopped = false;
189
242
  let timer;
@@ -198,7 +251,7 @@ export class Wallet {
198
251
  if (stopped || this.#closed.signal.aborted)
199
252
  return;
200
253
  const busy = this.#ctx.state.ops.some((o) => o.status === 'pending' && Date.now() - o.createdMs < WAIT_MS * 4);
201
- timer = setTimeout(tick, busy ? 15_000 : 300_000);
254
+ timer = setTimeout(tick, busy ? 3_000 : 10_000);
202
255
  };
203
256
  void tick();
204
257
  return () => {
@@ -216,15 +269,16 @@ export class Wallet {
216
269
  }
217
270
  balances() {
218
271
  const coins = this.coins();
272
+ // storage says which notes to look for, not that they come: a payer writes its notes there before its JoinSplit
273
+ // leaves, and one that never lands leaves them behind. So a note counts once it is a coin (its commitment read);
274
+ // before that, only a note this device's own operation under way is making counts, as incoming. A zero-value
275
+ // change, there to carry its payment's receipt, never counts
276
+ const making = new Set(this.#ctx.state.ops.flatMap((o) => o.status === 'pending' && o.kind !== 'deposit' ? (o.data.changes ?? []) : []));
219
277
  return this.#tokens.map((token) => {
220
278
  const { chainId, tokenId } = token;
221
279
  const b = { token, spendable: 0n, pending: [], blocked: 0n };
222
- // a merge that never landed (another device spent an input first) stops counting after a day; a zero-value
223
- // change, there to carry its payment's receipt, never counts. A note is a coin once its commitment is read, so
224
- // until then it is incoming, as a payment's change is between its relay and the next sync
225
- for (const n of this.#ctx.state.notes.filter((n) => n.chainId === chainId && n.tokenId === tokenId && n.value > 0n)) {
226
- const stale = n.receipt?.kind === 'merged' && n.atNs !== null && Date.now() - Number(n.atNs / 1000000n) > DAY_MS;
227
- if (!n.found.some((f) => f.confirmed) && !stale)
280
+ for (const n of this.#ctx.state.notes.filter((n) => n.chainId === chainId && n.tokenId === tokenId && n.value > 0n && making.has(n.salt))) {
281
+ if (!n.found.some((f) => f.confirmed))
228
282
  b.pending.push({ amount: n.value, reason: 'incoming' });
229
283
  }
230
284
  for (const c of coins.filter((c) => c.token === token)) {
@@ -239,20 +293,21 @@ export class Wallet {
239
293
  });
240
294
  }
241
295
  /** Every unspent note and deposit on chain, and where each stands, as of opening or the last sync. A note announced
242
- * but not on chain yet is not one: `balances()` counts it as incoming. */
296
+ * but not read on chain yet is not one: `balances()` counts it as incoming if this device's operation is making it. */
243
297
  coins() {
244
298
  const size = (chainId) => this.#status.get(chainId)?.latestRoot?.size ?? 0;
245
299
  const unproved = (chainId) => (this.#status.get(chainId)?.halted ? 'roots-halted' : 'awaiting-root');
246
300
  const spending = new Set(this.#ctx.state.ops.flatMap((o) => inputsOf(o).map((c) => `${o.chainId}:${c.index}`)));
247
- // spent by a JoinSplit in a block, which waits only to be final: gone, as activity() counts it (a reorg that drops
248
- // it brings them back as spending, and the operation relays it again)
301
+ // spent by a JoinSplit in a block, which waits only to be final: gone, as activity() counts it. Sync sees it by its
302
+ // nullifier (`unspent`); this device's own is gone already from its relay on (a reorg that drops it brings them
303
+ // back as spending, and the operation relays it again)
249
304
  const landed = new Set(this.#ctx.state.ops.flatMap((o) => o.kind !== 'deposit' && o.data.step?.stage === 'relayed'
250
305
  ? inputsOf(o).map((c) => `${o.chainId}:${c.index}`)
251
306
  : []));
252
307
  const out = [];
253
308
  // a zero-value change carries its payment's receipt, and is no coin
254
309
  for (const n of this.#ctx.state.notes.filter((n) => n.value > 0n)) {
255
- for (const f of n.found.filter((f) => !f.spent)) {
310
+ for (const f of n.found.filter(unspent)) {
256
311
  const id = `${n.chainId}:${f.index}`;
257
312
  // a 4-byte tag alone matches someone else's now and then: a coin once its commitment is read
258
313
  if (!f.confirmed || landed.has(id))
@@ -271,7 +326,7 @@ export class Wallet {
271
326
  }
272
327
  for (const d of this.#ctx.state.deposits) {
273
328
  // a coin once its commitment is read, which names the amount
274
- for (const f of d.found.filter((f) => !f.spent && f.amount !== null)) {
329
+ for (const f of d.found.filter((f) => unspent(f) && f.amount !== null)) {
275
330
  const id = `${d.chainId}:${f.index}`;
276
331
  if (landed.has(id))
277
332
  continue;
@@ -508,7 +563,7 @@ export class Wallet {
508
563
  /** Refunds deposit `id` to its sender without the ASP, the attester or a proved root: for a deposit the ASP
509
564
  * rejected, or when those services stop. The account's wallet sends the transactions and pays their gas. */
510
565
  rageExit(id) {
511
- return this.#exclusive(async () => {
566
+ return this.#seeded(async () => {
512
567
  const [chain, index] = id.split(':');
513
568
  const record = this.#ctx.state.deposits.find((d) => `${d.chainId}` === chain && d.found.some((f) => `${f.index}` === index)) ??
514
569
  fail('invalid', `no deposit ${id}`);
@@ -605,18 +660,21 @@ export class Wallet {
605
660
  * With `wrapped`, it pays from the account's zERC20 itself, as a withdrawal pays out, rather than its underlying
606
661
  * asset: a plain transfer into the burn address, with no wrap and no approval.
607
662
  *
663
+ * With `from`, another wallet of the user's (a browser wallet) pays instead of the account: its balance is checked,
664
+ * it approves and wraps, and an exit refunds it there. The account pays nothing and signs nothing.
665
+ *
608
666
  * Returns once the wrap is sent: the operation is done once it is mined, which `wait()` or the next sync finds.
609
667
  * `onStep` hears what it waits on meanwhile, for an app to show. */
610
- deposit(opts) {
668
+ async deposit(opts) {
669
+ if (opts.amount <= 0n)
670
+ fail('invalid', 'the amount must be positive');
671
+ const payer = opts.from ? (opts.from.account ?? fail('invalid', 'the wallet client has no account')) : null;
611
672
  const step = opts.onStep ?? (() => { });
612
673
  if (this.#busy > 0)
613
674
  step('queued');
614
675
  return this.#exclusive(async () => {
615
676
  const { token, amount } = opts;
616
- if (amount <= 0n)
617
- fail('invalid', 'the amount must be positive');
618
- const wc = this.#ctx.walletClient;
619
- const account = wc.account;
677
+ const account = payer ?? this.#ctx.account;
620
678
  const client = chainCtx(this.#ctx, token.chainId).chain.client;
621
679
  const { wrapped } = opts;
622
680
  const native = !wrapped && token.underlying.toLowerCase() === NATIVE.toLowerCase();
@@ -631,7 +689,7 @@ export class Wallet {
631
689
  });
632
690
  if (held < amount) {
633
691
  const of = wrapped ? token.symbol : `${token.symbol}'s underlying asset`;
634
- fail('insufficient-funds', `the account holds ${formatUnits(held, token.decimals)} of ${of}, less than ${formatUnits(amount, token.decimals)}`);
692
+ fail('insufficient-funds', `${payer ? 'the wallet' : 'the account'} holds ${formatUnits(held, token.decimals)} of ${of}, less than ${formatUnits(amount, token.decimals)}`);
635
693
  }
636
694
  const address = opts.to
637
695
  ? await this.#burnFor(token, amount, opts.to, () => step('burn-address'))
@@ -639,8 +697,7 @@ export class Wallet {
639
697
  const op = this.#newOp('deposit', token, amount, opts.to ? { burnAddress: address, to: opts.to } : { burnAddress: address });
640
698
  await this.#ctx.save();
641
699
  try {
642
- if ((await wc.getChainId()) !== Number(token.chainId))
643
- await guard(wc.switchChain({ id: Number(token.chainId) }));
700
+ const wc = opts.from ? await switched(opts.from, token.chainId) : await walletOn(this.#ctx, token.chainId);
644
701
  if (!native && !wrapped) {
645
702
  const allowance = await client.readContract({
646
703
  address: token.underlying,
@@ -725,8 +782,8 @@ export class Wallet {
725
782
  }
726
783
  /** An address that takes `token`'s underlying asset from anywhere (an exchange withdrawal, another wallet) and
727
784
  * deposits it privately, less `fee` (in the underlying's base units) to the deposit relayer each time: what arrives
728
- * must exceed it. Watched for 7 days by the deposit relayer; refunds go back to this account. `onStep` hears what it
729
- * waits on (`queued`, `burn-address`). */
785
+ * must exceed it. A wallet opened with a `referrer` also pays it its `bps` of the rest. Watched for 7 days by the
786
+ * deposit relayer; refunds go back to this account. `onStep` hears what it waits on (`queued`, `burn-address`). */
730
787
  depositAddress(token, opts = {}) {
731
788
  const step = opts.onStep ?? (() => { });
732
789
  if (this.#busy > 0)
@@ -734,7 +791,7 @@ export class Wallet {
734
791
  return this.#exclusive(async () => {
735
792
  const c = chainCtx(this.#ctx, token.chainId);
736
793
  const record = await this.#burnAddress(token, null, () => step('burn-address'));
737
- const { depositAddress, fee } = await registerDeposit(c.chain, token.address, record.address, this.address);
794
+ const { depositAddress, fee } = await registerDeposit(c.chain, token.address, record.address, this.address, this.#referrer);
738
795
  record.depositAddress = depositAddress;
739
796
  // for the wallet's other devices, to show what comes through it: written by the next sync
740
797
  const burnAddress = record.address.toLowerCase();
@@ -757,17 +814,22 @@ export class Wallet {
757
814
  * nothing; it names neither this address nor its public key. Anyone who gets the code can pay it, and see what its
758
815
  * other payers paid privately: give each payer its own. It is checksummed text (bech32m, `zerc201…`). */
759
816
  receiveCode(token) {
760
- return this.#exclusive(async () => {
761
- const ctx = this.#ctx;
817
+ const ctx = this.#ctx;
818
+ const code = (index) => ({ chainId: token.chainId, tokenId: token.tokenId, index });
819
+ // the seed is asked for only past the codes derived ahead
820
+ const derived = !!owner(ctx, code(nextBurn(ctx, token.chainId, token.tokenId)));
821
+ return this.#seeded(async () => {
762
822
  const { burnIndex, address } = await this.#burnAddress(token);
823
+ if (!owner(ctx, code(burnIndex)))
824
+ await this.#seed(); // calls queued before took the next ones
763
825
  return encodeCode({
764
826
  chainId: token.chainId,
765
827
  tokenId: token.tokenId,
766
828
  burnAddress: hexToBytes(address),
767
- publicKey: hexToBytes(spendKey(ctx, { chainId: token.chainId, tokenId: token.tokenId, index: burnIndex }).publicKey),
829
+ publicKey: hexToBytes(owner(ctx, code(burnIndex)).publicKey),
768
830
  key: codeKey(ctx.view.seed, token.chainId, token.tokenId, burnIndex),
769
831
  });
770
- });
832
+ }, !derived);
771
833
  }
772
834
  /** What a send or withdrawal of `amount` would cost now, or a consolidation of what the wallet holds. A send or
773
835
  * withdrawal no single JoinSplit can pay now throws as it would (`needs-consolidation`, `funds-settling`,
@@ -822,11 +884,12 @@ export class Wallet {
822
884
  * what is spendable now, or it fails here: `needs-consolidation`, `funds-settling` or `insufficient-funds`.
823
885
  * `amount` is what the recipient gets, and `maxFee` caps what it pays on top, `fees({ kind: 'send' }).fee`: the
824
886
  * relayer names its fee, so a quote the user saw is the cap. */
825
- send(opts) {
826
- return this.#exclusive(async () => {
827
- const { token, amount } = opts;
828
- if (amount <= 0n)
829
- fail('invalid', 'the amount must be positive');
887
+ async send(opts) {
888
+ const { token, amount } = opts;
889
+ if (amount <= 0n)
890
+ fail('invalid', 'the amount must be positive');
891
+ // the JoinSplit is proved by a later sync, which holds the seed until the payment is done
892
+ return this.#seeded(async () => {
830
893
  let to;
831
894
  if (isAddress(opts.to)) {
832
895
  const recipient = await lookupRecipient(this.#ctx.storage, hexToBytes(opts.to));
@@ -856,7 +919,7 @@ export class Wallet {
856
919
  * touched; one still settling is waited for. `maxFee` caps the fees of every merge together,
857
920
  * `fees({ kind: 'consolidate' }).fee`. */
858
921
  consolidate(opts) {
859
- return this.#exclusive(async () => {
922
+ return this.#seeded(async () => {
860
923
  if (!this.#ctx.network.mergeProver)
861
924
  fail('invalid', 'this network has no merge prover');
862
925
  const to = { kind: 'self' };
@@ -885,12 +948,12 @@ export class Wallet {
885
948
  /** Withdraws `amount` publicly to `to`, as zERC20 or with `unwrap` the underlying asset itself, so `to` needs no gas
886
949
  * to unwrap. One JoinSplit, as `send`, and as there `to` gets all of `amount` and `maxFee` caps what is paid on top
887
950
  * (`fees({ kind: 'withdraw' }).fee`). */
888
- withdraw(opts) {
889
- return this.#exclusive(async () => {
890
- if (!isAddress(opts.to))
891
- fail('invalid', `${String(opts.to)} is not an address`);
892
- if (opts.amount <= 0n)
893
- fail('invalid', 'the amount must be positive');
951
+ async withdraw(opts) {
952
+ if (!isAddress(opts.to))
953
+ fail('invalid', `${String(opts.to)} is not an address`);
954
+ if (opts.amount <= 0n)
955
+ fail('invalid', 'the amount must be positive');
956
+ return this.#seeded(async () => {
894
957
  const to = { kind: 'public', address: opts.to, unwrap: opts.unwrap };
895
958
  return this.#newPayment('withdraw', opts.token, opts.amount, { to, maxFee: opts.maxFee, step: null, paid: 0n });
896
959
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}