@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.
- package/LICENSE +17 -20
- package/README.md +2 -2
- package/dist/accountId.d.ts +5 -0
- package/dist/accountId.js +19 -0
- package/dist/accountId.js.map +1 -0
- package/dist/chain.d.ts +86 -9
- package/dist/chain.js +61 -33
- package/dist/chain.js.map +1 -1
- package/dist/context.d.ts +8 -2
- package/dist/context.js +15 -2
- package/dist/context.js.map +1 -1
- package/dist/core.d.ts +35 -5
- package/dist/core.js +98 -25
- package/dist/core.js.map +1 -1
- package/dist/errors.d.ts +20 -3
- package/dist/errors.js +7 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/network.d.ts +4 -2
- package/dist/network.js +3 -1
- package/dist/network.js.map +1 -1
- package/dist/pos.d.ts +10 -1
- package/dist/pos.js +219 -55
- package/dist/pos.js.map +1 -1
- package/dist/prove.d.ts +3 -0
- package/dist/prove.js +9 -0
- package/dist/prove.js.map +1 -1
- package/dist/rageExit.d.ts +27 -4
- package/dist/rageExit.js +160 -49
- package/dist/rageExit.js.map +1 -1
- package/dist/seed.d.ts +4 -0
- package/dist/seed.js +13 -1
- package/dist/seed.js.map +1 -1
- package/dist/servers.d.ts +5 -0
- package/dist/servers.js +2 -0
- package/dist/servers.js.map +1 -1
- package/dist/services.d.ts +14 -6
- package/dist/services.js +35 -14
- package/dist/services.js.map +1 -1
- package/dist/spend.d.ts +53 -11
- package/dist/spend.js +171 -65
- package/dist/spend.js.map +1 -1
- package/dist/state.d.ts +21 -0
- package/dist/state.js.map +1 -1
- package/dist/sync.d.ts +10 -5
- package/dist/sync.js +49 -18
- package/dist/sync.js.map +1 -1
- package/dist/wallet.d.ts +132 -21
- package/dist/wallet.js +342 -91
- package/dist/wallet.js.map +1 -1
- package/package.json +3 -3
- package/src/accountId.ts +22 -0
- package/src/chain.ts +101 -49
- package/src/context.ts +27 -3
- package/src/core.ts +112 -26
- package/src/errors.ts +15 -2
- package/src/index.ts +15 -2
- package/src/network.ts +6 -3
- package/src/pos.ts +247 -61
- package/src/prove.ts +10 -0
- package/src/rageExit.ts +237 -61
- package/src/seed.ts +24 -1
- package/src/servers.ts +9 -1
- package/src/services.ts +36 -22
- package/src/spend.ts +188 -75
- package/src/state.ts +25 -1
- package/src/sync.ts +54 -19
- package/src/wallet.ts +437 -109
- package/wasm/zerc20_wallet_core.d.ts +1 -1
- package/wasm/zerc20_wallet_core.js +1 -1
- package/wasm/zerc20_wallet_core_bg.wasm +0 -0
package/dist/pos.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// (`Wallet.posKey`), records them there ahead of need, hands out one per sale, and follows what reaches each from what
|
|
3
3
|
// every wallet downloads. Stolen, it gives away which addresses are the merchant's, and nothing else: the merchant's
|
|
4
4
|
// wallet alone spends what they receive, merges it and withdraws it.
|
|
5
|
-
import { BURN_BLOCK, CanisterClient, lookupRecipient,
|
|
5
|
+
import { BURN_BLOCK, CanisterClient, MAX_POS_BLOCKS, lookupRecipient, writePosBlocks } from '@zerc20/storage-sdk';
|
|
6
6
|
import { bytesToHex, getAddress, hexToBytes, isAddress, isHex, numberToHex, zeroAddress, } from 'viem';
|
|
7
7
|
import { Chain } from './chain.js';
|
|
8
8
|
import { burnAddress, core, initCore } from './core.js';
|
|
9
|
-
import { fail } from './errors.js';
|
|
9
|
+
import { WalletError, fail } from './errors.js';
|
|
10
10
|
import { checkNetwork } from './network.js';
|
|
11
11
|
import { scan } from './scan.js';
|
|
12
12
|
import { Asp, Indexer } from './servers.js';
|
|
@@ -15,38 +15,75 @@ import { applyHits, commitmentFields, commitmentTx, dropReorged, readDecisions,
|
|
|
15
15
|
/** The longest a refill waits once a token's addresses run low: a write at a random time after the sale that drew
|
|
16
16
|
* them down, not right after it, so that the write's time does not mark that sale. */
|
|
17
17
|
const REFILL_WITHIN_MS = 10 * 60_000;
|
|
18
|
+
/** How long what a pass over the chains read may go unsaved: lost, it is read from the chains again. */
|
|
19
|
+
const PASS_SAVED_WITHIN_MS = 60_000;
|
|
18
20
|
/** JSON with bigints, which `JSON` itself has no form for. */
|
|
19
21
|
const encode = (v) => new TextEncoder().encode(JSON.stringify(v, (_, x) => (typeof x === 'bigint' ? { $n: `${x}` } : x)));
|
|
20
22
|
const decode = (b) => JSON.parse(new TextDecoder().decode(b), (_, x) => x && typeof x === 'object' && typeof x.$n === 'string' ? BigInt(x.$n) : x);
|
|
21
23
|
const same = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
22
24
|
const pairOf = (token) => `${token.chainId}:${token.tokenId}`;
|
|
25
|
+
const madeOf = (pool) => pool.made.length * BURN_BLOCK;
|
|
26
|
+
const passes = new Map();
|
|
27
|
+
function passOf(indexer) {
|
|
28
|
+
let pass = passes.get(indexer.url);
|
|
29
|
+
if (!pass) {
|
|
30
|
+
const read = indexer.status().then((status) => ({ status, tags: new Map() }));
|
|
31
|
+
const done = () => void (passes.get(indexer.url) === read && passes.delete(indexer.url));
|
|
32
|
+
read.then(done, done);
|
|
33
|
+
passes.set(indexer.url, (pass = read));
|
|
34
|
+
}
|
|
35
|
+
return pass;
|
|
36
|
+
}
|
|
23
37
|
export class PointOfSale {
|
|
24
38
|
#network;
|
|
25
39
|
#state;
|
|
26
40
|
#persist;
|
|
27
41
|
#refillWithinMs;
|
|
28
42
|
#chains = new Map();
|
|
29
|
-
/**
|
|
30
|
-
#
|
|
43
|
+
/** Sales by lowercase id. */
|
|
44
|
+
#byId = new Map();
|
|
45
|
+
/** The block each token is making ahead: one at a time, beside those made for a sale that waits. */
|
|
46
|
+
#making = new Map();
|
|
47
|
+
/** The write each token has under way: one at a time. */
|
|
48
|
+
#recording = new Map();
|
|
49
|
+
/** The write each token waits to do, at a random time. */
|
|
31
50
|
#timers = new Map();
|
|
51
|
+
/** How many sales of each token wait for an address. */
|
|
52
|
+
#waiting = new Map();
|
|
53
|
+
/** The searches of the lane connected now: another lane, or closing, stops them. */
|
|
54
|
+
#searches = new AbortController();
|
|
32
55
|
#storage;
|
|
33
56
|
#queue = Promise.resolve();
|
|
34
57
|
#saving = Promise.resolve();
|
|
58
|
+
#passSave;
|
|
59
|
+
#closed = false;
|
|
35
60
|
constructor(network, state, persist, refillWithinMs) {
|
|
36
61
|
this.#network = network;
|
|
37
62
|
this.#state = state;
|
|
38
63
|
this.#persist = persist;
|
|
39
64
|
this.#refillWithinMs = refillWithinMs;
|
|
65
|
+
for (const s of state.sales)
|
|
66
|
+
this.#byId.set(s.id.toLowerCase(), s);
|
|
40
67
|
}
|
|
41
68
|
/** Opens the point of sale's saved state. It keeps which addresses it handed out: lose that, and it may hand one out
|
|
42
|
-
* twice. One state, one point of sale: two open on it would hand out the same addresses
|
|
69
|
+
* twice. One state, one point of sale: two open on it would hand out the same addresses, so `close` the one before
|
|
70
|
+
* opening it again. */
|
|
43
71
|
static async open(opts) {
|
|
44
72
|
checkNetwork(opts.network);
|
|
45
73
|
await initCore();
|
|
46
74
|
const saved = await opts.persist.load();
|
|
47
75
|
const state = saved?.length ? decode(saved) : { connection: null, sales: [], seen: {}, txs: {} };
|
|
76
|
+
// a state saved before addresses were made ahead
|
|
77
|
+
for (const pool of Object.values(state.connection?.pools ?? {}))
|
|
78
|
+
pool.made ??= [];
|
|
48
79
|
return new PointOfSale(opts.network, state, opts.persist, opts.refillWithinMs ?? REFILL_WITHIN_MS);
|
|
49
80
|
}
|
|
81
|
+
/** Whether `merchant` registered for private payments in storage, as `connect` needs: a server may ask before it keeps
|
|
82
|
+
* anything for an account, since storage admits registrations at a bounded rate and accounts cost nothing. */
|
|
83
|
+
static async registered(network, merchant) {
|
|
84
|
+
const client = await CanisterClient.connect(network.storage.host, network.storage.canisterId);
|
|
85
|
+
return (await lookupRecipient(client, hexToBytes(merchant))) !== null;
|
|
86
|
+
}
|
|
50
87
|
get connected() {
|
|
51
88
|
return this.#state.connection !== null;
|
|
52
89
|
}
|
|
@@ -65,10 +102,7 @@ export class PointOfSale {
|
|
|
65
102
|
const recipient = await lookupRecipient(await this.#client(), hexToBytes(merchant));
|
|
66
103
|
if (!recipient)
|
|
67
104
|
fail('invalid', `${merchant} has not registered for private payments: open its wallet once`);
|
|
68
|
-
|
|
69
|
-
clearTimeout(t);
|
|
70
|
-
this.#timers.clear();
|
|
71
|
-
this.#fills.clear();
|
|
105
|
+
this.#stop();
|
|
72
106
|
this.#state.connection = {
|
|
73
107
|
merchant: getAddress(merchant),
|
|
74
108
|
publicKey: bytesToHex(recipient.publicKey),
|
|
@@ -79,11 +113,19 @@ export class PointOfSale {
|
|
|
79
113
|
await this.#save();
|
|
80
114
|
});
|
|
81
115
|
}
|
|
116
|
+
/** Stops making and recording, then saves the state as it is: nothing is saved after, so the state may be opened
|
|
117
|
+
* again. A sale under way then fails rather than hand out an address it could not save. */
|
|
118
|
+
async close() {
|
|
119
|
+
this.#stop();
|
|
120
|
+
const last = this.#save();
|
|
121
|
+
this.#closed = true;
|
|
122
|
+
await last;
|
|
123
|
+
}
|
|
82
124
|
/** Readies addresses of `token` ahead of its sales: an app calls it for each token it takes, as it starts and after
|
|
83
125
|
* sales. Nothing happens while enough are ready, or a refill is under way or due. */
|
|
84
126
|
prepare(token) {
|
|
85
127
|
chainOf(this.#network, token.chainId);
|
|
86
|
-
this.#
|
|
128
|
+
this.#supply(token);
|
|
87
129
|
}
|
|
88
130
|
/** How many addresses of `token` are recorded and wait for a sale. */
|
|
89
131
|
ready(token) {
|
|
@@ -95,10 +137,23 @@ export class PointOfSale {
|
|
|
95
137
|
const { token } = opts;
|
|
96
138
|
const c = chainOf(this.#network, token.chainId);
|
|
97
139
|
this.#connection();
|
|
98
|
-
const
|
|
140
|
+
const pair = pairOf(token);
|
|
141
|
+
// counted from the start, so that the sales that come at once have their addresses made at once
|
|
142
|
+
this.#waiting.set(pair, (this.#waiting.get(pair) ?? 0) + 1);
|
|
99
143
|
let burnAddress;
|
|
100
|
-
|
|
101
|
-
|
|
144
|
+
let from;
|
|
145
|
+
try {
|
|
146
|
+
({ commitmentsFinal: from } = await new Indexer(c.indexer).status());
|
|
147
|
+
while (!(burnAddress = this.#pool(token).ready.shift()))
|
|
148
|
+
await this.#record(token);
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
const left = this.#waiting.get(pair) - 1;
|
|
152
|
+
if (left)
|
|
153
|
+
this.#waiting.set(pair, left);
|
|
154
|
+
else
|
|
155
|
+
this.#waiting.delete(pair);
|
|
156
|
+
}
|
|
102
157
|
// saved as taken before the deposit relayer is asked: a sale that fails half-way never hands it out again
|
|
103
158
|
const sale = {
|
|
104
159
|
id: burnAddress,
|
|
@@ -114,9 +169,10 @@ export class PointOfSale {
|
|
|
114
169
|
};
|
|
115
170
|
const watch = { key: tag(token.tokenId, burnAddress), from, scannedTo: from };
|
|
116
171
|
this.#state.sales.push(sale);
|
|
172
|
+
this.#byId.set(burnAddress.toLowerCase(), sale);
|
|
117
173
|
this.#state.seen[burnAddress] = { address: burnAddress, watches: [{ tokenId: token.tokenId, watch }], found: [] };
|
|
118
174
|
await this.#save();
|
|
119
|
-
this.#
|
|
175
|
+
this.#supply(token);
|
|
120
176
|
return opts.via === 'deposit' ? this.#exclusive(() => this.#register(sale, opts.refundTo)) : sale;
|
|
121
177
|
}
|
|
122
178
|
/** Registers a deposit address in front of sale `id`, for the underlying asset; the deposit relayer watches it for 7
|
|
@@ -135,7 +191,9 @@ export class PointOfSale {
|
|
|
135
191
|
return sale;
|
|
136
192
|
return fail('invalid', `sale ${sale.id} already has a deposit address, refunding to ${sale.refundTo}`);
|
|
137
193
|
}
|
|
138
|
-
const { depositAddress, fee } = await registerDeposit(this.#chain(sale.chainId), sale.token, sale.burnAddress,
|
|
194
|
+
const { depositAddress, fee } = await registerDeposit(this.#chain(sale.chainId), sale.token, sale.burnAddress, {
|
|
195
|
+
address: to,
|
|
196
|
+
});
|
|
139
197
|
Object.assign(sale, { depositAddress, depositFee: fee, refundTo: to });
|
|
140
198
|
await this.#save();
|
|
141
199
|
return sale;
|
|
@@ -143,6 +201,10 @@ export class PointOfSale {
|
|
|
143
201
|
sales() {
|
|
144
202
|
return [...this.#state.sales];
|
|
145
203
|
}
|
|
204
|
+
/** Sale `id`. */
|
|
205
|
+
sale(id) {
|
|
206
|
+
return this.#sale(id);
|
|
207
|
+
}
|
|
146
208
|
/** What reached each of sales `ids`: every transfer to its burn address, with where each stands. One pass per chain
|
|
147
209
|
* for them all, reading only what every wallet downloads, so no server learns which addresses it asks about. A chain
|
|
148
210
|
* that fails keeps what was read before, and its error is returned. */
|
|
@@ -152,7 +214,7 @@ export class PointOfSale {
|
|
|
152
214
|
const errors = [];
|
|
153
215
|
const chains = [...new Set(sales.map((s) => s.chainId))];
|
|
154
216
|
await Promise.all(chains.map((chainId) => this.#refreshChain(chainId, sales.filter((s) => s.chainId === chainId)).catch((e) => void errors.push(e))));
|
|
155
|
-
|
|
217
|
+
this.#saveSoon();
|
|
156
218
|
return { sales: sales.map((s) => this.#statusOf(s)), errors };
|
|
157
219
|
});
|
|
158
220
|
}
|
|
@@ -171,9 +233,15 @@ export class PointOfSale {
|
|
|
171
233
|
const c = chainOf(this.#network, chainId);
|
|
172
234
|
const indexer = new Indexer(c.indexer);
|
|
173
235
|
const seen = sales.map((s) => this.#state.seen[s.id]);
|
|
174
|
-
const status = await indexer
|
|
236
|
+
const { status, tags } = await passOf(indexer);
|
|
237
|
+
const page = (p) => {
|
|
238
|
+
let read = tags.get(p);
|
|
239
|
+
if (!read)
|
|
240
|
+
tags.set(p, (read = indexer.page('tags', p)));
|
|
241
|
+
return read;
|
|
242
|
+
};
|
|
175
243
|
const watches = seen.flatMap((r) => r.watches.map((w) => w.watch));
|
|
176
|
-
const hits = await scan(watches, 4,
|
|
244
|
+
const hits = await scan(watches, 4, page, status.commitmentsFinal, status.commitments);
|
|
177
245
|
applyHits([], seen, hits);
|
|
178
246
|
dropReorged(seen, status.commitmentsFinal);
|
|
179
247
|
await readTransfers(commitmentFields(indexer), seen);
|
|
@@ -207,65 +275,149 @@ export class PointOfSale {
|
|
|
207
275
|
const received = payments.filter((p) => p.state !== 'confirming').reduce((s, p) => s + p.amount, 0n);
|
|
208
276
|
return { sale, payments, received };
|
|
209
277
|
}
|
|
210
|
-
/**
|
|
211
|
-
*
|
|
212
|
-
#
|
|
278
|
+
/** How many addresses of a token to keep made, and recorded, ahead: twice its sales of the last `refillWithinMs`, so
|
|
279
|
+
* that they last through the wait for a refill as sales pick up; in whole blocks, at least one, at most one write. */
|
|
280
|
+
#low(pair) {
|
|
281
|
+
const sales = this.#state.sales;
|
|
282
|
+
const since = Date.now() - this.#refillWithinMs;
|
|
283
|
+
let recent = 0;
|
|
284
|
+
// sales are kept in the order they were made
|
|
285
|
+
for (let i = sales.length - 1; i >= 0 && sales[i].createdMs >= since; i--)
|
|
286
|
+
if (pairOf(sales[i]) === pair)
|
|
287
|
+
recent++;
|
|
288
|
+
return BURN_BLOCK * Math.min(MAX_POS_BLOCKS, Math.max(1, Math.ceil((2 * recent) / BURN_BLOCK)));
|
|
289
|
+
}
|
|
290
|
+
/** Keeps `token` supplied. Its addresses are recorded once fewer than `#low` are ready: right away when none is,
|
|
291
|
+
* otherwise at a random time within `refillWithinMs`, so that the time of a write does not mark the sale that drew
|
|
292
|
+
* them down. They are made ahead, which shows nobody anything, until `#low` are made. */
|
|
293
|
+
#supply(token) {
|
|
294
|
+
if (!this.#state.connection || this.#closed)
|
|
295
|
+
return;
|
|
296
|
+
const pair = pairOf(token);
|
|
297
|
+
const pool = this.#pool(token);
|
|
298
|
+
const low = this.#low(pair);
|
|
299
|
+
if (pool.ready.length < low && !this.#recording.has(pair) && !this.#timers.has(pair)) {
|
|
300
|
+
// a write that fails is tried again by the next sale, which tells why
|
|
301
|
+
if (pool.ready.length === 0)
|
|
302
|
+
void this.#record(token).catch(() => undefined);
|
|
303
|
+
else
|
|
304
|
+
this.#later(token);
|
|
305
|
+
}
|
|
306
|
+
if (madeOf(pool) < low)
|
|
307
|
+
void this.#ahead(token).catch(() => undefined);
|
|
308
|
+
}
|
|
309
|
+
/** The block `token` is making ahead, begun if there is none; the next follows while fewer than `#low` are made. */
|
|
310
|
+
#ahead(token) {
|
|
213
311
|
const pair = pairOf(token);
|
|
214
|
-
const
|
|
215
|
-
if (
|
|
312
|
+
const running = this.#making.get(pair);
|
|
313
|
+
if (running)
|
|
314
|
+
return running;
|
|
315
|
+
const run = this.#make(token, false).finally(() => {
|
|
316
|
+
if (this.#making.get(pair) === run)
|
|
317
|
+
this.#making.delete(pair);
|
|
318
|
+
});
|
|
319
|
+
this.#making.set(pair, run);
|
|
320
|
+
// one that fails is made again by the next sale, or the next pass's `prepare`
|
|
321
|
+
run.then(() => this.#supply(token), () => undefined);
|
|
322
|
+
return run;
|
|
323
|
+
}
|
|
324
|
+
/** Makes `token`'s next block of addresses. Its counters are taken as it starts, so that blocks made side by side
|
|
325
|
+
* never share one; a block that fails, or ends after the lane changed, leaves a gap in the counters, which no reader
|
|
326
|
+
* minds. What is made is saved with the next save: lost, it is made again from the same counters, to the same
|
|
327
|
+
* addresses, none of which a sale has had. */
|
|
328
|
+
async #make(token, urgent) {
|
|
329
|
+
const c = this.#connection();
|
|
330
|
+
const pool = this.#pool(token);
|
|
331
|
+
const first = pool.next;
|
|
332
|
+
pool.next += BURN_BLOCK;
|
|
333
|
+
const laneKey = hexToBytes(c.laneKey);
|
|
334
|
+
const signal = this.#searches.signal;
|
|
335
|
+
const burns = await Promise.all(Array.from({ length: BURN_BLOCK }, (_, i) => burnAddress(laneKey, token.chainId, token.tokenId, first + i, c.publicKey, { signal, urgent })));
|
|
336
|
+
if (this.#state.connection !== c)
|
|
216
337
|
return;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (left === 0)
|
|
220
|
-
return fill();
|
|
221
|
-
const timer = setTimeout(() => {
|
|
222
|
-
this.#timers.delete(pair);
|
|
223
|
-
fill();
|
|
224
|
-
}, Math.random() * this.#refillWithinMs);
|
|
225
|
-
timer.unref?.(); // a process need not stay up for it
|
|
226
|
-
this.#timers.set(pair, timer);
|
|
338
|
+
pool.made.push({ first, burns });
|
|
339
|
+
this.#saveSoon();
|
|
227
340
|
}
|
|
228
|
-
/**
|
|
229
|
-
* a time per token
|
|
230
|
-
|
|
341
|
+
/** Records made addresses of `token` in the lane, in one write, and readies them: as many blocks as the sales that
|
|
342
|
+
* wait and the low mark ask for. One write at a time per token: a sale that finds none ready waits for the one under
|
|
343
|
+
* way. A pool with none ready has the blocks its waiting sales need, one at least, made side by side and ahead of
|
|
344
|
+
* every search made ahead, since the next sale waits for them. A timer that finds none made waits again: writing
|
|
345
|
+
* right after the making would mark the sale that began it. */
|
|
346
|
+
#record(token) {
|
|
231
347
|
const pair = pairOf(token);
|
|
232
|
-
const running = this.#
|
|
348
|
+
const running = this.#recording.get(pair);
|
|
233
349
|
if (running)
|
|
234
350
|
return running;
|
|
235
351
|
clearTimeout(this.#timers.get(pair));
|
|
236
352
|
this.#timers.delete(pair);
|
|
237
353
|
const run = (async () => {
|
|
238
354
|
const c = this.#connection();
|
|
239
|
-
const pool = (
|
|
240
|
-
const
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
355
|
+
const pool = this.#pool(token);
|
|
356
|
+
const waiting = Math.ceil((this.#waiting.get(pair) ?? 0) / BURN_BLOCK);
|
|
357
|
+
if (pool.ready.length === 0) {
|
|
358
|
+
const short = Math.max(waiting, 1) - pool.made.length;
|
|
359
|
+
await Promise.all(Array.from({ length: Math.max(0, short) }, () => this.#make(token, true)));
|
|
360
|
+
}
|
|
361
|
+
else if (pool.made.length === 0)
|
|
362
|
+
return this.#later(token);
|
|
363
|
+
if (this.#state.connection !== c)
|
|
364
|
+
return;
|
|
365
|
+
const short = Math.ceil((this.#low(pair) - pool.ready.length) / BURN_BLOCK);
|
|
366
|
+
const blocks = pool.made.slice(0, Math.min(MAX_POS_BLOCKS, Math.max(waiting, short, 1)));
|
|
367
|
+
if (!blocks.length)
|
|
368
|
+
return;
|
|
369
|
+
const chain = `${token.chainId}`;
|
|
370
|
+
const slot = await writePosBlocks(await this.#client(), hexToBytes(c.laneKey), blocks.map((b) => ({
|
|
244
371
|
chainId: token.chainId,
|
|
245
372
|
tokenId: token.tokenId,
|
|
246
|
-
first:
|
|
247
|
-
salts: burns.map((
|
|
248
|
-
};
|
|
249
|
-
const chain = `${token.chainId}`;
|
|
250
|
-
const slot = await writePosBlock(await this.#client(), laneKey, block, c.slots[chain] ?? 0);
|
|
373
|
+
first: b.first,
|
|
374
|
+
salts: b.burns.map((burn) => hexToBytes(burn.salt)),
|
|
375
|
+
})), c.slots[chain] ?? 0);
|
|
251
376
|
if (this.#state.connection !== c)
|
|
252
|
-
return;
|
|
377
|
+
return;
|
|
253
378
|
c.slots[chain] = Math.max(c.slots[chain] ?? 0, slot);
|
|
254
|
-
|
|
255
|
-
pool.
|
|
379
|
+
// what is made is only ever added to, after these
|
|
380
|
+
pool.made.splice(0, blocks.length);
|
|
381
|
+
pool.ready.push(...blocks.flatMap((b) => b.burns.map((burn) => burn.address)));
|
|
256
382
|
await this.#save();
|
|
257
383
|
})().finally(() => {
|
|
258
|
-
if (this.#
|
|
259
|
-
this.#
|
|
384
|
+
if (this.#recording.get(pair) === run)
|
|
385
|
+
this.#recording.delete(pair);
|
|
260
386
|
});
|
|
261
|
-
this.#
|
|
387
|
+
this.#recording.set(pair, run);
|
|
388
|
+
// what was made ahead is recorded now: make the next, and record again if still short
|
|
389
|
+
run.then(() => this.#supply(token), () => undefined);
|
|
262
390
|
return run;
|
|
263
391
|
}
|
|
392
|
+
/** Records `token`'s addresses at a random time within `refillWithinMs`. */
|
|
393
|
+
#later(token) {
|
|
394
|
+
const pair = pairOf(token);
|
|
395
|
+
const timer = setTimeout(() => {
|
|
396
|
+
this.#timers.delete(pair);
|
|
397
|
+
void this.#record(token).catch(() => undefined);
|
|
398
|
+
}, Math.random() * this.#refillWithinMs);
|
|
399
|
+
timer.unref?.(); // a process need not stay up for it
|
|
400
|
+
this.#timers.set(pair, timer);
|
|
401
|
+
}
|
|
402
|
+
/** Stops the searches, timers and writes of the lane connected now. Those under way finish, and drop what they
|
|
403
|
+
* bring, since the lane is no longer the one connected or the point of sale is closed. */
|
|
404
|
+
#stop() {
|
|
405
|
+
this.#searches.abort();
|
|
406
|
+
this.#searches = new AbortController();
|
|
407
|
+
for (const t of this.#timers.values())
|
|
408
|
+
clearTimeout(t);
|
|
409
|
+
this.#timers.clear();
|
|
410
|
+
this.#making.clear();
|
|
411
|
+
this.#recording.clear();
|
|
412
|
+
}
|
|
264
413
|
#connection() {
|
|
265
414
|
return this.#state.connection ?? fail('invalid', "not connected: connect the merchant's wallet first");
|
|
266
415
|
}
|
|
416
|
+
#pool(token) {
|
|
417
|
+
return (this.#connection().pools[pairOf(token)] ??= { next: 0, made: [], ready: [] });
|
|
418
|
+
}
|
|
267
419
|
#sale(id) {
|
|
268
|
-
return this.#
|
|
420
|
+
return this.#byId.get(id.toLowerCase()) ?? fail('invalid', `no sale ${id}`);
|
|
269
421
|
}
|
|
270
422
|
#chain(chainId) {
|
|
271
423
|
let c = this.#chains.get(chainId);
|
|
@@ -288,12 +440,24 @@ export class PointOfSale {
|
|
|
288
440
|
return run;
|
|
289
441
|
}
|
|
290
442
|
/** Saves the state as it is when the save runs, after every save asked for before: an older state never lands last,
|
|
291
|
-
* which would hand out again an address taken since. */
|
|
443
|
+
* which would hand out again an address taken since. Closed, it saves nothing and fails. */
|
|
292
444
|
#save() {
|
|
445
|
+
if (this.#closed)
|
|
446
|
+
return Promise.reject(new WalletError('unavailable', 'the point of sale is closed'));
|
|
447
|
+
clearTimeout(this.#passSave);
|
|
448
|
+
this.#passSave = undefined;
|
|
293
449
|
const run = this.#saving.then(() => this.#persist.save(encode(this.#state)));
|
|
294
450
|
this.#saving = run.catch(() => undefined);
|
|
295
451
|
return run;
|
|
296
452
|
}
|
|
453
|
+
/** Saves within `PASS_SAVED_WITHIN_MS`, for what can be read or made again: a pass's findings, addresses made. */
|
|
454
|
+
// ponytail: the whole state on every save; split it once a merchant has some 10k sales
|
|
455
|
+
#saveSoon() {
|
|
456
|
+
if (this.#passSave || this.#closed)
|
|
457
|
+
return;
|
|
458
|
+
this.#passSave = setTimeout(() => void this.#save().catch(() => undefined), PASS_SAVED_WITHIN_MS);
|
|
459
|
+
this.#passSave.unref?.(); // a process need not stay up for it
|
|
460
|
+
}
|
|
297
461
|
}
|
|
298
462
|
function chainOf(network, chainId) {
|
|
299
463
|
return network.chains.find((c) => c.chainId === chainId) ?? fail('invalid', `the network has no chain ${chainId}`);
|
package/dist/pos.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pos.js","sourceRoot":"","sources":["../src/pos.ts"],"names":[],"mappings":"AAAA,8GAA8G;AAC9G,uHAAuH;AACvH,qHAAqH;AACrH,qEAAqE;AAErE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjG,OAAO,EAGL,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,WAAW,EACX,WAAW,GACZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,KAAK,EAAc,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAkC,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAEjH;sFACsF;AACtF,MAAM,gBAAgB,GAAG,EAAE,GAAG,MAAM,CAAC;AAmErC,8DAA8D;AAC9D,MAAM,MAAM,GAAG,CAAC,CAAU,EAAE,EAAE,CAC5B,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/G,MAAM,MAAM,GAAG,CAAC,CAAa,EAAS,EAAE,CACtC,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAkB,EAAE,EAAE,CAChE,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACjE,CAAC;AAEb,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3E,MAAM,MAAM,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;AAExE,MAAM,OAAO,WAAW;IACb,QAAQ,CAAU;IAClB,MAAM,CAAQ;IACd,QAAQ,CAA6C;IACrD,eAAe,CAAS;IACxB,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC5C,iEAAiE;IACxD,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC1C,OAAO,GAAG,IAAI,GAAG,EAAyC,CAAC;IACpE,QAAQ,CAAsC;IAC9C,MAAM,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7C,OAAO,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE9C,YACE,OAAgB,EAChB,KAAY,EACZ,OAAmD,EACnD,cAAsB;QAEtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;IACxC,CAAC;IAED;gGAC4F;IAC5F,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAIjB;QACC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,QAAQ,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAU,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;QACxG,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,cAAc,IAAI,gBAAgB,CAAC,CAAC;IACrG,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC;IACzC,CAAC;IAED;;yHAEqH;IACrH,OAAO,CAAC,QAAiB,EAAE,OAAY;QACrC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YACtG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;gBAAE,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC,CAAC;YAC5F,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;YACjC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC;gBAAE,OAAO;YACxE,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACpF,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,gEAAgE,CAAC,CAAC;YAC7G,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAAE,YAAY,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG;gBACvB,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC;gBAC9B,SAAS,EAAE,UAAU,CAAC,SAAU,CAAC,SAAS,CAAC;gBAC3C,OAAO,EAAE,OAAO,CAAC,WAAW,EAAS;gBACrC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,EAAE;aACV,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;yFACqF;IACrF,OAAO,CAAC,KAAe;QACrB,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAED,sEAAsE;IACtE,KAAK,CAAC,KAAe;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IACzE,CAAC;IAED;4GACwG;IACxG,KAAK,CAAC,IAAI,CAAC,IAAuF;QAChG,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACvB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;QACzE,IAAI,WAAgC,CAAC;QACrC,OAAO,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAAE,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxG,0GAA0G;QAC1G,MAAM,IAAI,GAAS;YACjB,EAAE,EAAE,WAAW;YACf,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,WAAW;YACX,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;YAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QAClH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpG,CAAC;IAED;;;mHAG+G;IAC/G,eAAe,CAAC,EAAW,EAAE,OAA+B,EAAE;QAC5D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAU,EAAE,QAA6B;QACvD,MAAM,EAAE,GAAG,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC;YAC5D,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,iCAAiC,CAAC,CAAC;QACjE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAS,EAAE,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC1C,OAAO,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,CAAC,EAAE,gDAAgD,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzG,CAAC;QACD,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;2EAEuE;IACvE,OAAO,CAAC,GAAc;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;YAChC,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACzF,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACrB,IAAI,CAAC,aAAa,CAChB,OAAO,EACP,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAC3C,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC7C,CACF,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,KAAK,CAAC,MAAM,CAAC,EAAW;QACtB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,UAAU,CAAC,EAAW;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAe,EAAE,KAAa;QAChD,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACjH,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;QACrD,MAAM,aAAa,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1C,kHAAkH;QAClH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAC5B,MAAM,OAAO,CAAC,GAAG,CACf,IAAI;aACD,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACvB,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACf,MAAM,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,EAAE,CAAC;gBAAE,OAAO;YACpC,MAAM,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC7F,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO;YAC7B,IAAI,EAAE,EAAE,IAAI;gBAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;;gBAC3B,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;IAED,SAAS,CAAC,IAAU;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK;aAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAW,EAAE,CAAC,CAAC;YACpB,MAAM,EAAE,CAAC,CAAC,MAAO;YACjB,MAAM,EAAE,CAAC,CAAC,MAAiB;YAC3B,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;YACxE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI;SAC9D,CAAC,CAAC,CAAC;QACN,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC;IAED;2BACuB;IACvB,MAAM,CAAC,KAAe;QACpB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACpE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC7G,uEAAuE;QACvE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,IAAI,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC;QACT,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,KAAgC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,oCAAoC;QACjF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;2DACuD;IACvD,KAAK,CAAC,KAAe;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAkB,CAAC,KAAK,IAAI,EAAE;YACrC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;YACpB,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC1C,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CACvE,CACF,CAAC;YACF,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,KAAK,EAAE,CAAC;gBACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;aAC5C,CAAC;YACF,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,KAAK,CAAC;gBAAE,OAAO,CAAC,sCAAsC;YAChF,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;YACrD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,UAAU,CAAC;YAC3B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG;gBAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3B,OAAO,GAAG,CAAC;IACb,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE,oDAAoD,CAAC,CAAC;IACzG,CAAC;IAED,KAAK,CAAC,EAAW;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,+FAA+F;IAC/F,OAAO;QACL,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;YACtF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,MAAM,CAAC,CAAC;QACV,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kDAAkD;IAClD,UAAU,CAAI,CAAmB;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC;IAED;4DACwD;IACxD,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED,SAAS,OAAO,CAAC,OAAgB,EAAE,OAAe;IAChD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,4BAA4B,OAAO,EAAE,CAAC,CAAC;AACrH,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,OAAgB,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"pos.js","sourceRoot":"","sources":["../src/pos.ts"],"names":[],"mappings":"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"}
|
package/dist/prove.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { Circuit } from './network.js';
|
|
2
2
|
/** A URL's bytes; `file:` URLs from disk, for Node. */
|
|
3
3
|
export declare function readUrl(url: string): Promise<Uint8Array>;
|
|
4
|
+
/** Fetches and checks `circuit`'s artifacts, and loads snarkjs, ahead of its first proof, which then waits for neither:
|
|
5
|
+
* a proof shares the fetch under way. A failed fetch is tried again by the proof, which reports it. */
|
|
6
|
+
export declare function preload(circuit: Circuit): Promise<void>;
|
|
4
7
|
/** `Verifier.Groth16Proof`, with pB in the order the Solidity verifier takes. */
|
|
5
8
|
export interface Groth16 {
|
|
6
9
|
pA: [bigint, bigint];
|
package/dist/prove.js
CHANGED
|
@@ -29,6 +29,15 @@ function artifact(url, sha) {
|
|
|
29
29
|
}
|
|
30
30
|
return p;
|
|
31
31
|
}
|
|
32
|
+
/** Fetches and checks `circuit`'s artifacts, and loads snarkjs, ahead of its first proof, which then waits for neither:
|
|
33
|
+
* a proof shares the fetch under way. A failed fetch is tried again by the proof, which reports it. */
|
|
34
|
+
export async function preload(circuit) {
|
|
35
|
+
await Promise.all([
|
|
36
|
+
artifact(circuit.wasm, circuit.wasmSha256),
|
|
37
|
+
artifact(circuit.zkey, circuit.zkeySha256),
|
|
38
|
+
import('snarkjs'),
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
32
41
|
export async function prove(circuit, input) {
|
|
33
42
|
const [wasm, zkey] = await Promise.all([
|
|
34
43
|
artifact(circuit.wasm, circuit.wasmSha256),
|
package/dist/prove.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prove.js","sourceRoot":"","sources":["../src/prove.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prove.js","sourceRoot":"","sources":["../src/prove.ts"],"names":[],"mappings":"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"}
|
package/dist/rageExit.d.ts
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
|
-
import { type Hex } from 'viem';
|
|
1
|
+
import { type Address, type Hex, type WalletClient } from 'viem';
|
|
2
2
|
import { type Ctx } from './context.js';
|
|
3
|
-
import type { DepositRecord } from './state.js';
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
import type { DepositAddressReceipt, DepositRecord } from './state.js';
|
|
4
|
+
type Fields = [bigint, bigint, bigint, bigint];
|
|
5
|
+
/** The `checkpointBefore` calls that walk back from the checkpoint at `end` to one at most a segment after `index`,
|
|
6
|
+
* the nearest the checkpoint first, and the checkpoint they end at. Each records the hash chain before its segment as
|
|
7
|
+
* the checkpoint the next one ends at. `list[k]` is the commitment at `index + k` and `before[k]` the chain before it. */
|
|
8
|
+
export declare function walkBack(index: number, end: number, list: Fields[], before: Hex[]): {
|
|
9
|
+
calls: [bigint, bigint, Fields[]][];
|
|
10
|
+
end: number;
|
|
11
|
+
};
|
|
12
|
+
/** Who sends a refund's transactions and pays their gas (null: the account's own wallet), and where a refund from one
|
|
13
|
+
* of this wallet's deposit addresses goes. */
|
|
14
|
+
export interface Route {
|
|
15
|
+
from: WalletClient | null;
|
|
16
|
+
to: Address;
|
|
17
|
+
}
|
|
18
|
+
/** Refunds the deposit at `index` of `record` to its sender, sent by `route.from` or the account's own wallet, which
|
|
19
|
+
* pays the gas. A deposit address sends it on in the same transaction (Multicall3), so that nothing is left on it
|
|
20
|
+
* between two: one of this wallet's to `route.to`, a point of sale's to the refund address its payer named. */
|
|
21
|
+
export declare function rageExit(ctx: Ctx, record: DepositRecord, index: number, route: Route): Promise<Hex[]>;
|
|
22
|
+
/** Sends what `record`'s deposit address `address` holds of `asset` to `route.to` (to its refund address, if it names
|
|
23
|
+
* one), sent by `route.from` or the account's own wallet. */
|
|
24
|
+
export declare function refundDepositAddress(ctx: Ctx, record: DepositRecord, address: Address, asset: Address, route: Route): Promise<Hex>;
|
|
25
|
+
/** Deposits what deposit address `receipt.depositAddress` holds, as the deposit relayer would, by a flush with all its
|
|
26
|
+
* receipt says it was registered with, sent by `from`. */
|
|
27
|
+
export declare function flushDepositAddress(ctx: Ctx, receipt: DepositAddressReceipt, from: WalletClient): Promise<Hex>;
|
|
28
|
+
export {};
|