@zerc20/wallet-sdk 0.4.0 → 0.6.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 (73) hide show
  1. package/LICENSE +17 -20
  2. package/README.md +2 -2
  3. package/dist/accountId.d.ts +5 -0
  4. package/dist/accountId.js +19 -0
  5. package/dist/accountId.js.map +1 -0
  6. package/dist/chain.d.ts +86 -9
  7. package/dist/chain.js +61 -33
  8. package/dist/chain.js.map +1 -1
  9. package/dist/context.d.ts +8 -2
  10. package/dist/context.js +15 -2
  11. package/dist/context.js.map +1 -1
  12. package/dist/core.d.ts +35 -5
  13. package/dist/core.js +98 -25
  14. package/dist/core.js.map +1 -1
  15. package/dist/errors.d.ts +20 -3
  16. package/dist/errors.js +7 -1
  17. package/dist/errors.js.map +1 -1
  18. package/dist/index.d.ts +4 -2
  19. package/dist/index.js +4 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/network.d.ts +4 -2
  22. package/dist/network.js +3 -1
  23. package/dist/network.js.map +1 -1
  24. package/dist/pos.d.ts +10 -1
  25. package/dist/pos.js +219 -55
  26. package/dist/pos.js.map +1 -1
  27. package/dist/prove.d.ts +3 -0
  28. package/dist/prove.js +9 -0
  29. package/dist/prove.js.map +1 -1
  30. package/dist/rageExit.d.ts +27 -4
  31. package/dist/rageExit.js +160 -49
  32. package/dist/rageExit.js.map +1 -1
  33. package/dist/seed.d.ts +4 -0
  34. package/dist/seed.js +13 -1
  35. package/dist/seed.js.map +1 -1
  36. package/dist/servers.d.ts +5 -0
  37. package/dist/servers.js +2 -0
  38. package/dist/servers.js.map +1 -1
  39. package/dist/services.d.ts +14 -6
  40. package/dist/services.js +35 -14
  41. package/dist/services.js.map +1 -1
  42. package/dist/spend.d.ts +53 -11
  43. package/dist/spend.js +171 -65
  44. package/dist/spend.js.map +1 -1
  45. package/dist/state.d.ts +21 -0
  46. package/dist/state.js.map +1 -1
  47. package/dist/sync.d.ts +10 -5
  48. package/dist/sync.js +49 -18
  49. package/dist/sync.js.map +1 -1
  50. package/dist/wallet.d.ts +132 -21
  51. package/dist/wallet.js +342 -91
  52. package/dist/wallet.js.map +1 -1
  53. package/package.json +3 -3
  54. package/src/accountId.ts +22 -0
  55. package/src/chain.ts +101 -49
  56. package/src/context.ts +27 -3
  57. package/src/core.ts +112 -26
  58. package/src/errors.ts +15 -2
  59. package/src/index.ts +15 -2
  60. package/src/network.ts +6 -3
  61. package/src/pos.ts +247 -61
  62. package/src/prove.ts +10 -0
  63. package/src/rageExit.ts +237 -61
  64. package/src/seed.ts +24 -1
  65. package/src/servers.ts +9 -1
  66. package/src/services.ts +36 -22
  67. package/src/spend.ts +188 -75
  68. package/src/state.ts +25 -1
  69. package/src/sync.ts +54 -19
  70. package/src/wallet.ts +437 -109
  71. package/wasm/zerc20_wallet_core.d.ts +1 -1
  72. package/wasm/zerc20_wallet_core.js +1 -1
  73. package/wasm/zerc20_wallet_core_bg.wasm +0 -0
package/dist/rageExit.js CHANGED
@@ -1,9 +1,11 @@
1
1
  // Rage exit: a burn deposit refunded to its sender with nothing but the chain and the indexer's public pages, for
2
2
  // when the ASP, the attester or root proving stop. The ledger authenticates the deposit itself, by re-hashing the
3
- // commitments from it up to a checkpoint; a long way is walked back one transaction of commitments at a time.
4
- import { decodeEventLog, numberToHex, parseAbi } from 'viem';
5
- import { depositAddressAbi, ledgerAbi, verifierAbi } from './chain.js';
6
- import { chainCtx, spendKey, walletOn, walletSees } from './context.js';
3
+ // commitments from it up to a checkpoint; a long way is walked back one transaction of commitments at a time. A deposit
4
+ // address's refunds, the rage exit's and any other, go where its refund signer, a key of this wallet's, signs for; and
5
+ // what reaches one is deposited without the deposit relayer by a flush of its own.
6
+ import { decodeEventLog, encodeFunctionData, isAddressEqual, multicall3Abi, numberToHex, parseAbi, } from 'viem';
7
+ import { MULTICALL3, NATIVE, depositAddressAbi, depositFactoryAbi, erc20Abi, factoryArgs, ledgerAbi, refundDigest, verifierAbi, } from './chain.js';
8
+ import { chainCtx, refundAccount, spendKey, switched, walletOn, walletSees, } from './context.js';
7
9
  import { core } from './core.js';
8
10
  import { fail, guard } from './errors.js';
9
11
  import { prove } from './prove.js';
@@ -11,10 +13,10 @@ import { PAGE } from './servers.js';
11
13
  /** Commitments per transaction: about a thousand fit in the 128 KB transaction size limit. */
12
14
  const SEGMENT = 900;
13
15
  const checkpointEvent = parseAbi(['event CheckpointRecorded(uint64 indexed index, uint256 hashChain)']);
14
- /** Commitments `[from, to)` and the hash chain before `from`, from the indexer's pages. */
16
+ /** Commitments `[from, to)`, each with the hash chain before it, from the indexer's pages. */
15
17
  async function commitments(c, from, to) {
16
18
  const list = [];
17
- let prev = null;
19
+ const before = [];
18
20
  for (let p = Math.floor(from / PAGE); p * PAGE < to; p++) {
19
21
  const { hashChainBefore, entries } = await c.indexer.commitments(p);
20
22
  let chain = hashChainBefore;
@@ -23,18 +25,29 @@ async function commitments(c, from, to) {
23
25
  if (i >= to)
24
26
  break;
25
27
  const fields = [0, 1, 2, 3].map((f) => BigInt(`0x${hexOf(entries.subarray(j * 128 + 32 * f, j * 128 + 32 * (f + 1)))}`));
26
- if (i === from)
27
- prev = chain;
28
- if (i >= from)
28
+ if (i >= from) {
29
29
  list.push(fields);
30
+ before.push(chain);
31
+ }
30
32
  chain = core.hashChain(chain, fields.map((x) => numberToHex(x, { size: 32 })));
31
33
  }
32
34
  }
33
- if (prev === null || list.length !== to - from)
35
+ if (list.length !== to - from)
34
36
  return fail('unavailable', `the indexer does not serve commitments ${from}..${to} yet`);
35
- return { prev, list };
37
+ return { list, before };
36
38
  }
37
39
  const hexOf = (b) => Array.from(b, (x) => x.toString(16).padStart(2, '0')).join('');
40
+ /** The `checkpointBefore` calls that walk back from the checkpoint at `end` to one at most a segment after `index`,
41
+ * the nearest the checkpoint first, and the checkpoint they end at. Each records the hash chain before its segment as
42
+ * the checkpoint the next one ends at. `list[k]` is the commitment at `index + k` and `before[k]` the chain before it. */
43
+ export function walkBack(index, end, list, before) {
44
+ const calls = [];
45
+ for (; end - index > SEGMENT; end -= SEGMENT) {
46
+ const start = end - SEGMENT - index;
47
+ calls.push([BigInt(end), BigInt(before[start]), list.slice(start, end - index)]);
48
+ }
49
+ return { calls, end };
50
+ }
38
51
  /** The first index after `index` the ledger has a checkpoint at: a proved root's size, else a fresh reservation. */
39
52
  async function checkpointAfter(ctx, c, index, send) {
40
53
  const ledger = await c.chain.ledger();
@@ -54,7 +67,7 @@ async function checkpointAfter(ctx, c, index, send) {
54
67
  if (roots.length < PAGE)
55
68
  break;
56
69
  }
57
- const receipt = await send(ledger, ledgerAbi, 'reserveHashChain', []);
70
+ const receipt = await send({ address: ledger, abi: ledgerAbi, functionName: 'reserveHashChain', args: [] });
58
71
  for (const log of receipt.logs) {
59
72
  try {
60
73
  const ev = decodeEventLog({ abi: checkpointEvent, data: log.data, topics: log.topics });
@@ -64,17 +77,12 @@ async function checkpointAfter(ctx, c, index, send) {
64
77
  }
65
78
  return fail('unavailable', 'reserveHashChain recorded no checkpoint');
66
79
  }
67
- /** Refunds the deposit at `index` of `record` to its sender, from the account's own wallet (it pays the gas). */
68
- export async function rageExit(ctx, record, index) {
69
- const c = chainCtx(ctx, record.chainId);
70
- const found = record.found.find((f) => f.index === index) ?? fail('invalid', `no deposit at ${index}`);
71
- if (found.spent)
72
- fail('invalid', 'the deposit is already spent');
73
- const wc = await walletOn(ctx, record.chainId);
74
- const account = ctx.account;
75
- const hashes = [];
76
- const send = async (address, abi, functionName, args) => {
77
- const hash = await guard(wc.writeContract({ account, chain: null, address, abi: abi, functionName: functionName, args: args }));
80
+ /** Sends from `from`, or from the account's own wallet, and waits for each transaction to land; `hashes` collects them. */
81
+ async function sender(ctx, c, from, hashes) {
82
+ const wc = from ? await switched(from, c.config.chainId) : await walletOn(ctx, c.config.chainId);
83
+ const account = from?.account ?? ctx.account;
84
+ const send = async ({ address, abi, functionName, args }) => {
85
+ const hash = await guard(wc.writeContract({ account, chain: null, address, abi: abi, functionName, args }));
78
86
  hashes.push(hash);
79
87
  const receipt = await c.chain.client.waitForTransactionReceipt({ hash });
80
88
  if (receipt.status !== 'success')
@@ -82,16 +90,59 @@ export async function rageExit(ctx, record, index) {
82
90
  await walletSees(wc, hash);
83
91
  return receipt;
84
92
  };
85
- let end = await checkpointAfter(ctx, c, index, send);
86
- const { prev, list } = await commitments(c, index, end);
87
- const ledger = await c.chain.ledger();
88
- // walk a long way back first: each step records the chain before its segment as a new checkpoint
89
- while (end - index > SEGMENT) {
90
- const start = end - SEGMENT;
91
- const before = list.slice(0, start - index).reduce((chain, f) => core.hashChain(chain, f.map((x) => numberToHex(x, { size: 32 }))), prev);
92
- await send(ledger, ledgerAbi, 'checkpointBefore', [BigInt(end), BigInt(before), list.slice(start - index)]);
93
- end = start;
93
+ return { send, account };
94
+ }
95
+ /** The call that sends on what `address` holds of `asset`, if it is a deposit address of `token` into `record`'s burn
96
+ * address, and where it goes: to `to`, signed by `record`'s refund signer, from one that names it; to its refund
97
+ * address, from one that names one. Null for anything else, a deposit address that names another signer included. */
98
+ async function refundCall(ctx, c, record, address, token, asset, to) {
99
+ const refund = await c.chain.depositAddressRefund(address, token, record.address);
100
+ if (!refund)
101
+ return null;
102
+ if ('address' in refund) {
103
+ return {
104
+ call: { address, abi: depositAddressAbi, functionName: 'refund', args: [asset] },
105
+ recipient: refund.address,
106
+ };
94
107
  }
108
+ // only the burn addresses of this wallet's own lane have refund signers
109
+ if (record.burnIndex < 0)
110
+ return null;
111
+ const signer = refundAccount(ctx, { chainId: record.chainId, tokenId: record.tokenId, index: record.burnIndex });
112
+ if (signer.address.toLowerCase() !== refund.signer.toLowerCase())
113
+ return null;
114
+ // long enough for any wallet's confirmation; sent again before it, the signature moves only more to the same `to`
115
+ const deadline = BigInt(Math.floor(Date.now() / 1000) + 86_400);
116
+ const signature = await signer.signMessage({
117
+ message: { raw: refundDigest(c.config.chainId, address, asset, to, deadline) },
118
+ });
119
+ return {
120
+ call: { address, abi: depositAddressAbi, functionName: 'refundTo', args: [asset, to, deadline, signature] },
121
+ recipient: to,
122
+ };
123
+ }
124
+ const call3 = ({ address, abi, functionName, args }) => ({
125
+ target: address,
126
+ allowFailure: false,
127
+ callData: encodeFunctionData({ abi, functionName, args }),
128
+ });
129
+ /** Refunds the deposit at `index` of `record` to its sender, sent by `route.from` or the account's own wallet, which
130
+ * pays the gas. A deposit address sends it on in the same transaction (Multicall3), so that nothing is left on it
131
+ * between two: one of this wallet's to `route.to`, a point of sale's to the refund address its payer named. */
132
+ export async function rageExit(ctx, record, index, route) {
133
+ const c = chainCtx(ctx, record.chainId);
134
+ const found = record.found.find((f) => f.index === index) ?? fail('invalid', `no deposit at ${index}`);
135
+ if (found.spent)
136
+ fail('invalid', 'the deposit is already spent');
137
+ const hashes = [];
138
+ const { send, account } = await sender(ctx, c, route.from, hashes);
139
+ const after = await checkpointAfter(ctx, c, index, send);
140
+ const { list, before } = await commitments(c, index, after);
141
+ const prev = before[0];
142
+ const ledger = await c.chain.ledger();
143
+ const { calls, end } = walkBack(index, after, list, before);
144
+ for (const args of calls)
145
+ await send({ address: ledger, abi: ledgerAbi, functionName: 'checkpointBefore', args });
95
146
  const segment = list.slice(0, end - index);
96
147
  // checked first, so a wrong page from the indexer costs no gas
97
148
  await c.chain.client.readContract({
@@ -109,36 +160,96 @@ export async function rageExit(ctx, record, index) {
109
160
  auth_key_hash: key.authKeyHash,
110
161
  burn_salt: record.salt,
111
162
  });
112
- const nullifier = signals[0];
113
- await send(c.config.verifier, verifierAbi, 'rageExit', [
114
- { checkpointIndex: BigInt(end), prevHashChain: BigInt(prev), commitments: segment, nullifier, proof },
115
- ]);
116
- found.spent = true;
117
- // a deposit address's refund lands on the address itself; forward it to the address's refund address: this account,
118
- // or for a point of sale's sale the payer's or the merchant's. A point of sale registers its deposit addresses without
119
- // telling this wallet, and a record restored from storage no longer knows its own, so the sender is checked on chain.
120
- const token = (await c.chain.tokens()).find((t) => t.tokenId === found.tokenId);
121
- // the deposit's commitment, which the ledger just authenticated: `tag, sender, burn address, amount`
163
+ const request = {
164
+ checkpointIndex: BigInt(end),
165
+ prevHashChain: BigInt(prev),
166
+ commitments: segment,
167
+ nullifier: signals[0],
168
+ proof,
169
+ };
170
+ const exit = { address: c.config.verifier, abi: verifierAbi, functionName: 'rageExit', args: [request] };
171
+ // the deposit's commitment, which the ledger just authenticated: `tag, sender, burn address, amount`. A point of sale
172
+ // registers its deposit addresses without telling this wallet, and a record restored from storage no longer knows
173
+ // its own, so whether the sender is one is read on chain.
122
174
  const [, from, , amount] = list[0];
123
- const sender = numberToHex(from, { size: 20 });
124
- const refundTo = await c.chain.depositAddressRefund(sender, token.address, record.address);
125
- // for every device of the wallet, written by the next sync; kept now, before the forward, which may fail
175
+ const depositor = numberToHex(from, { size: 20 });
176
+ const token = (await c.chain.tokens()).find((t) => t.tokenId === found.tokenId);
177
+ const forward = await refundCall(ctx, c, record, depositor, token.address, token.address, route.to);
178
+ if (forward) {
179
+ // alone first, so that a failing rage exit says why rather than that the batch failed
180
+ await c.chain.client.simulateContract({
181
+ account,
182
+ address: c.config.verifier,
183
+ abi: verifierAbi,
184
+ functionName: 'rageExit',
185
+ args: [request],
186
+ });
187
+ await send({
188
+ address: MULTICALL3,
189
+ abi: multicall3Abi,
190
+ functionName: 'aggregate3',
191
+ args: [[call3(exit), call3(forward.call)]],
192
+ });
193
+ }
194
+ else {
195
+ await send(exit);
196
+ }
197
+ found.spent = true;
198
+ // for every device of the wallet, written by the next sync
126
199
  ctx.state.receipts.push({
127
200
  kind: 'returned',
128
201
  chainId: record.chainId,
129
202
  tokenId: found.tokenId,
130
203
  burnAddress: record.address.toLowerCase(),
131
204
  index,
132
- recipient: (refundTo ?? sender).toLowerCase(),
205
+ recipient: (forward?.recipient ?? depositor).toLowerCase(),
133
206
  amount,
134
207
  txHash: hashes.at(-1),
135
208
  atMs: Date.now(),
136
209
  unwritten: true,
137
210
  });
138
211
  await ctx.save();
139
- if (refundTo)
140
- await send(sender, depositAddressAbi, 'refund', [token.address]);
141
- await ctx.save();
142
212
  return hashes;
143
213
  }
214
+ /** Sends what `record`'s deposit address `address` holds of `asset` to `route.to` (to its refund address, if it names
215
+ * one), sent by `route.from` or the account's own wallet. */
216
+ export async function refundDepositAddress(ctx, record, address, asset, route) {
217
+ const c = chainCtx(ctx, record.chainId);
218
+ const token = (await c.chain.tokens()).find((t) => t.tokenId === record.tokenId);
219
+ const refund = (await refundCall(ctx, c, record, address, token.address, asset, route.to)) ??
220
+ fail('invalid', `${address} is not deployed yet, or not one of this wallet's deposit addresses: it deploys on its first flush`);
221
+ const hashes = [];
222
+ const { send } = await sender(ctx, c, route.from, hashes);
223
+ await send(refund.call);
224
+ return hashes[0];
225
+ }
226
+ /** Deposits what deposit address `receipt.depositAddress` holds, as the deposit relayer would, by a flush with all its
227
+ * receipt says it was registered with, sent by `from`. */
228
+ export async function flushDepositAddress(ctx, receipt, from) {
229
+ const { depositAddress } = receipt;
230
+ const registered = receipt.args ??
231
+ fail('invalid', `${depositAddress}'s receipt does not say what it was registered with: only the relayer flushes it`);
232
+ const c = chainCtx(ctx, receipt.chainId);
233
+ const token = (await c.chain.tokens()).find((t) => t.tokenId === receipt.tokenId);
234
+ const { fee, feeRecipient, refundSigner, referrer, referralBps } = registered;
235
+ const args = factoryArgs(token.address, receipt.burnAddress, { signer: refundSigner }, feeRecipient, fee, referrer, referralBps);
236
+ // the flush takes the very arguments checked here: others make another address, empty
237
+ if (!isAddressEqual(await c.chain.predictDepositAddress(args), depositAddress))
238
+ fail('invalid', `${depositAddress} is not the factory's address for what its receipt says`);
239
+ const held = token.underlying.toLowerCase() === NATIVE.toLowerCase()
240
+ ? await c.chain.client.getBalance({ address: depositAddress })
241
+ : await c.chain.client.readContract({
242
+ address: token.underlying,
243
+ abi: erc20Abi,
244
+ functionName: 'balanceOf',
245
+ args: [depositAddress],
246
+ });
247
+ // its flush would revert: nothing reached it since, or the relayer flushed it first
248
+ if (held <= fee)
249
+ fail('insufficient-funds', `${depositAddress} holds ${held}, not more than its fee of ${fee}`);
250
+ const hashes = [];
251
+ const { send } = await sender(ctx, c, from, hashes);
252
+ await send({ address: c.config.depositAddressFactory, abi: depositFactoryAbi, functionName: 'flush', args });
253
+ return hashes[0];
254
+ }
144
255
  //# sourceMappingURL=rageExit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rageExit.js","sourceRoot":"","sources":["../src/rageExit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rageExit.js","sourceRoot":"","sources":["../src/rageExit.ts"],"names":[],"mappings":"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"}
package/dist/seed.d.ts CHANGED
@@ -3,6 +3,10 @@ import { type Hex, type WalletClient } from 'viem';
3
3
  * phrase (the seed as 24 BIP-39 words) by the standard derivation, BIP-44's m/44'/60'/0'/0/0. Any wallet given the
4
4
  * phrase opens the same account, so its public funds stay reachable without this app. */
5
5
  export declare function accountKey(seed: Uint8Array): Hex;
6
+ /** The private key that signs where the refunds of the deposit address handed out with burn address `index` of
7
+ * `tokenId` on `chainId` go (`DepositAddress.refundTo`). One per address, so that the addresses name neither one another
8
+ * nor the account; from the seed itself, not the view key, since whoever holds it moves those refunds. */
9
+ export declare function refundKey(seed: Uint8Array, chainId: bigint, tokenId: number, index: number): Hex;
6
10
  /** The seed, a fingerprint to check later derivations against (store it; it reveals nothing about the seed), and the
7
11
  * canonical signature it comes from, which proves the seed is this account's. */
8
12
  export declare function seedFromSignature(walletClient: WalletClient, expectedFingerprint?: Hex): Promise<{
package/dist/seed.js CHANGED
@@ -6,7 +6,7 @@
6
6
  import { secp256k1 } from '@noble/curves/secp256k1.js';
7
7
  import { entropyToMnemonic } from '@scure/bip39';
8
8
  import { wordlist } from '@scure/bip39/wordlists/english.js';
9
- import { bytesToHex, hexToBytes, keccak256 } from 'viem';
9
+ import { bytesToHex, encodeAbiParameters, hexToBytes, keccak256, parseAbiParameters, } from 'viem';
10
10
  import { mnemonicToAccount } from 'viem/accounts';
11
11
  import { fail, guard } from './errors.js';
12
12
  /** The private key of the account a seed's own app holds its public funds in: the first account of the seed's recovery
@@ -16,6 +16,18 @@ export function accountKey(seed) {
16
16
  const key = mnemonicToAccount(entropyToMnemonic(seed, wordlist)).getHdKey().privateKey;
17
17
  return bytesToHex(key ?? fail('invalid', 'the seed derives no account key'));
18
18
  }
19
+ /** The private key that signs where the refunds of the deposit address handed out with burn address `index` of
20
+ * `tokenId` on `chainId` go (`DepositAddress.refundTo`). One per address, so that the addresses name neither one another
21
+ * nor the account; from the seed itself, not the view key, since whoever holds it moves those refunds. */
22
+ export function refundKey(seed, chainId, tokenId, index) {
23
+ return keccak256(encodeAbiParameters(parseAbiParameters('string, bytes32, uint64, uint32, uint32'), [
24
+ 'zerc20/wallet/refund-signer/v1',
25
+ bytesToHex(seed),
26
+ chainId,
27
+ tokenId,
28
+ index,
29
+ ]));
30
+ }
19
31
  const message = (address) => [
20
32
  'zERC20 wallet seed',
21
33
  'WARNING: signing this gives control of your private zERC20 funds.',
package/dist/seed.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAC5G,mHAAmH;AACnH,oHAAoH;AACpH,sHAAsH;AACtH,6FAA6F;AAE7F,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAA+B,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE1C;;yFAEyF;AACzF,MAAM,UAAU,UAAU,CAAC,IAAgB;IACzC,MAAM,GAAG,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC;IACvF,OAAO,UAAU,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,iCAAiC,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,OAAY,EAAE,EAAE,CAC/B;IACE,oBAAoB;IACpB,mEAAmE;IACnE,gDAAgD;IAChD,YAAY,OAAO,CAAC,WAAW,EAAE,EAAE;IACnC,4BAA4B;CAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf;iFACiF;AACjF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,YAA0B,EAC1B,mBAAyB;IAEzB,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9G,8EAA8E;IAC9E,IAAI,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;IACxE,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/C,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;QACnB,GAAG,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAC3B,IAAI,UAAU,CAAC,CAAC,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,mCAAmC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAC5F,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAQ,CAAC;IACtB,IAAI,mBAAmB,IAAI,mBAAmB,KAAK,WAAW,EAAE,CAAC;QAC/D,IAAI,CACF,SAAS,EACT,gHAAgH,CACjH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;AACjE,CAAC"}
1
+ {"version":3,"file":"seed.js","sourceRoot":"","sources":["../src/seed.ts"],"names":[],"mappings":"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"}
package/dist/servers.d.ts CHANGED
@@ -23,6 +23,11 @@ export interface IndexerStatus {
23
23
  } | null;
24
24
  /** The newest block whose entries cannot reorg, the one the final counts stand at. */
25
25
  finalBlock: number | null;
26
+ /** The last block it has indexed. Read after the counts: they may stand before it. */
27
+ cursor: number;
28
+ /** How long a commitment usually waits for a proved root to cover it, in seconds, as measured on chain: anyone may
29
+ * prove roots, at any pace. Null until measured, and from an indexer that does not measure it. */
30
+ settleSecs: number | null;
26
31
  }
27
32
  export declare class Indexer {
28
33
  readonly url: string;
package/dist/servers.js CHANGED
@@ -54,6 +54,8 @@ export class Indexer {
54
54
  : null,
55
55
  mismatch: s.mismatch ? { size: s.mismatch.index, root: s.mismatch.root } : null,
56
56
  finalBlock: s.indexer.final_block,
57
+ cursor: s.indexer.cursor,
58
+ settleSecs: s.settle_secs ?? null,
57
59
  };
58
60
  }
59
61
  /** Page `p` of a list of fixed-size entries: 4096 entries, fewer while it fills. */
@@ -1 +1 @@
1
- {"version":3,"file":"servers.js","sourceRoot":"","sources":["../src/servers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"servers.js","sourceRoot":"","sources":["../src/servers.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { type Address, type Hex } from 'viem';
2
- import type { Chain, Referrer } from './chain.js';
2
+ import { type Chain, type Referrer, type Refund } from './chain.js';
3
3
  import { WalletError } from './errors.js';
4
4
  import { type AttesterTrust, type ChainConfig, type Network } from './network.js';
5
5
  /** The key the attester's enclave opens witnesses with, once its attestation checks out. */
@@ -21,11 +21,14 @@ export interface RelayerFees {
21
21
  export declare function relayerFees(c: ChainConfig): Promise<RelayerFees>;
22
22
  export interface Relayed {
23
23
  txHash: Hex;
24
+ /** The block it was mined in. */
25
+ block: number;
24
26
  noteIndex1: number | null;
25
27
  noteIndex2: number | null;
26
28
  }
27
- /** What `relay` reports when it cannot say whether the transaction landed. */
28
- export declare class RelayUnknown extends WalletError {
29
+ /** What `relay` reports while the relayer is relaying a request with the same nullifiers: the request already there
30
+ * gets the answer, and one after it finds the transaction landed. */
31
+ export declare class Relaying extends WalletError {
29
32
  }
30
33
  /** Has the relayer submit `request`. A 400 means the call reverts, which includes "already landed". */
31
34
  export declare const relay: (c: ChainConfig, request: object, feeNote?: {
@@ -37,6 +40,7 @@ export declare const relay: (c: ChainConfig, request: object, feeNote?: {
37
40
  /** Has the relayer submit a merge's `request`, as `relay` does a JoinSplit's. Answers the merged note's index. */
38
41
  export declare const relayMerge: (c: ChainConfig, request: object) => Promise<{
39
42
  txHash: Hex;
43
+ block: number;
40
44
  noteIndex: number | null;
41
45
  } | {
42
46
  reverted: string;
@@ -52,10 +56,14 @@ export declare function proofOf(p: MergeProver, noteHash: Hex): Promise<{
52
56
  proof?: Hex;
53
57
  error?: string;
54
58
  } | null>;
59
+ /** Has the deposit relayer watch `depositAddress` for another 7 days, at the fee it was registered with, which the
60
+ * address fixes: the fee the relayer names. */
61
+ export declare function rewatchDeposit(chain: Chain, depositAddress: Address): Promise<bigint>;
55
62
  /** A deposit address that flushes whatever reaches it into `burnAddress`, less `fee` paid to `feeRecipient` and the
56
- * referrer's share of the rest each time; refunds go to `refundAddress`. What the relayer says is checked against the
57
- * factory: an address of its own would take the funds, and the fee it names is the one the address takes. */
58
- export declare function registerDeposit(chain: Chain, token: Address, burnAddress: Hex, refundAddress: Address, referrer?: Referrer): Promise<{
63
+ * referrer's share of the rest each time; refunds go as `refund` says. What the relayer says is checked against the
64
+ * factory: an address of its own would take the funds, and the fee it names is the one the address takes. The address
65
+ * comes back checksummed, as every other address the SDK gives does: the relayer writes it in lower case. */
66
+ export declare function registerDeposit(chain: Chain, token: Address, burnAddress: Hex, refund: Refund, referrer?: Referrer): Promise<{
59
67
  depositAddress: Address;
60
68
  feeRecipient: Address;
61
69
  fee: bigint;
package/dist/services.js CHANGED
@@ -1,7 +1,8 @@
1
1
  // The attester, the merge prover and the relayers. Each sees only what it must: the attester's and the prover's hosts
2
2
  // see the public statement and a witness sealed to their enclave, the transact-relayer a finished request, the
3
3
  // deposit-relayer a burn address.
4
- import { bytesToHex, hexToBytes, zeroAddress } from 'viem';
4
+ import { bytesToHex, getAddress, hexToBytes, zeroAddress } from 'viem';
5
+ import { factoryArgs } from './chain.js';
5
6
  import { core } from './core.js';
6
7
  import { WalletError, fail } from './errors.js';
7
8
  import { LOCAL_CHAIN_ID } from './network.js';
@@ -77,23 +78,25 @@ export async function relayerFees(c) {
77
78
  const fees = new Map(Object.entries(r.body.fees).map(([t, f]) => [Number(t), { fee: BigInt(f.fee) }]));
78
79
  return { relayer: r.body.relayer, publicKey: r.body.publicKey, fees };
79
80
  }
80
- /** What `relay` reports when it cannot say whether the transaction landed. */
81
- export class RelayUnknown extends WalletError {
81
+ /** What `relay` reports while the relayer is relaying a request with the same nullifiers: the request already there
82
+ * gets the answer, and one after it finds the transaction landed. */
83
+ export class Relaying extends WalletError {
82
84
  }
83
85
  /** Has the relayer submit `request`. A 400 means the call reverts, which includes "already landed". */
84
86
  export const relay = (c, request, feeNote) => relayed(`${c.transactRelayer}/transact`, { request, feeNote });
85
87
  /** Has the relayer submit a merge's `request`, as `relay` does a JoinSplit's. Answers the merged note's index. */
86
88
  export const relayMerge = (c, request) => relayed(`${c.transactRelayer}/merge`, { request });
87
89
  async function relayed(url, body) {
88
- // the relayer answers once mined, after fee bumping if need be
89
- const r = await post(url, body, 15 * 60_000).catch((e) => {
90
- throw new RelayUnknown('unavailable', `transact-relayer: ${e.message}`);
91
- });
90
+ // the relayer answers once mined, after fee bumping if need be. Without an answer it may have sent it all the same:
91
+ // the same request goes again next sync, and lands at most once
92
+ const r = await post(url, body, 15 * 60_000);
92
93
  if (typeof r.body !== 'string')
93
94
  return r.body;
94
95
  if (r.status === 400)
95
96
  return { reverted: r.body };
96
- throw new RelayUnknown('unavailable', `transact-relayer: HTTP ${r.status}: ${r.body}`);
97
+ if (r.status === 409)
98
+ throw new Relaying('unavailable', `transact-relayer: ${r.body}`);
99
+ return fail('unavailable', `transact-relayer: HTTP ${r.status}: ${r.body}`);
97
100
  }
98
101
  /** Sends a merge's witness (JSON, of `inputs` inputs) sealed to the merge prover's enclave, to prove `statement` (the
99
102
  * attester's `Merge`). Proving takes minutes: `proofOf` tells when it is done. */
@@ -114,18 +117,36 @@ export async function proofOf(p, noteHash) {
114
117
  return fail('unavailable', `merge prover: ${r.body}`);
115
118
  return r.body;
116
119
  }
120
+ /** Has the deposit relayer watch `depositAddress` for another 7 days, at the fee it was registered with, which the
121
+ * address fixes: the fee the relayer names. */
122
+ export async function rewatchDeposit(chain, depositAddress) {
123
+ const r = await post(`${chain.config.depositRelayer}/rewatch`, { depositAddress });
124
+ if (typeof r.body === 'string')
125
+ return fail('unavailable', `deposit-relayer: ${r.body}`);
126
+ return BigInt(r.body.fee);
127
+ }
117
128
  /** A deposit address that flushes whatever reaches it into `burnAddress`, less `fee` paid to `feeRecipient` and the
118
- * referrer's share of the rest each time; refunds go to `refundAddress`. What the relayer says is checked against the
119
- * factory: an address of its own would take the funds, and the fee it names is the one the address takes. */
120
- export async function registerDeposit(chain, token, burnAddress, refundAddress, referrer = { address: zeroAddress, bps: 0 }) {
121
- const r = await post(`${chain.config.depositRelayer}/register`, { token, burnAddress, refundAddress, referrer: referrer.address, referralBps: referrer.bps });
129
+ * referrer's share of the rest each time; refunds go as `refund` says. What the relayer says is checked against the
130
+ * factory: an address of its own would take the funds, and the fee it names is the one the address takes. The address
131
+ * comes back checksummed, as every other address the SDK gives does: the relayer writes it in lower case. */
132
+ export async function registerDeposit(chain, token, burnAddress, refund, referrer = { address: zeroAddress, bps: 0 }) {
133
+ const r = await post(`${chain.config.depositRelayer}/register`, {
134
+ token,
135
+ burnAddress,
136
+ ...('address' in refund ? { refundAddress: refund.address } : { refundSigner: refund.signer }),
137
+ referrer: referrer.address,
138
+ referralBps: referrer.bps,
139
+ });
122
140
  if (typeof r.body === 'string')
123
141
  return fail('unavailable', `deposit-relayer: ${r.body}`);
124
142
  const { depositAddress, feeRecipient } = r.body;
125
143
  const fee = BigInt(r.body.fee);
126
- const expected = await chain.predictDepositAddress(token, burnAddress, refundAddress, feeRecipient, fee, referrer.address, referrer.bps);
144
+ // no balance exceeds such a fee, and storage holds values below 2^248 only
145
+ if (fee >= 1n << 248n)
146
+ fail('unavailable', `deposit-relayer: a fee of ${fee}`);
147
+ const expected = await chain.predictDepositAddress(factoryArgs(token, burnAddress, refund, feeRecipient, fee, referrer.address, referrer.bps));
127
148
  if (depositAddress.toLowerCase() !== expected.toLowerCase())
128
149
  fail('indexer-mismatch', `the deposit relayer gave ${depositAddress}, not the factory's ${expected}`);
129
- return { depositAddress, feeRecipient, fee };
150
+ return { depositAddress: getAddress(depositAddress), feeRecipient, fee };
130
151
  }
131
152
  //# sourceMappingURL=services.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}