@valve-tech/tx-tracker 0.10.1 → 0.11.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/CHANGELOG.md +72 -0
- package/README.md +256 -15
- package/dist/events.d.ts +11 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +1 -0
- package/dist/events.js.map +1 -1
- package/dist/observations.d.ts.map +1 -1
- package/dist/observations.js +40 -13
- package/dist/observations.js.map +1 -1
- package/dist/selectors.d.ts +17 -0
- package/dist/selectors.d.ts.map +1 -1
- package/dist/selectors.js +21 -0
- package/dist/selectors.js.map +1 -1
- package/dist/tracker.d.ts +31 -0
- package/dist/tracker.d.ts.map +1 -1
- package/dist/tracker.js +127 -25
- package/dist/tracker.js.map +1 -1
- package/package.json +2 -2
- package/skills/tx-tracker-integration/SKILL.md +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,78 @@ this file.
|
|
|
6
6
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
7
7
|
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
8
8
|
|
|
9
|
+
## [0.11.0] — 2026-05-11
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
- `TxTracker.ready(): Promise<void>` — resolves when the
|
|
14
|
+
durable-subscription rehydration triggered by the most recent
|
|
15
|
+
`start()` has completed. Indexer / relay consumers should
|
|
16
|
+
`await tracker.ready()` before assuming the tracked-set is fully
|
|
17
|
+
restored from the store. Resolves cleanly even on listDurable
|
|
18
|
+
errors (which are routed through `onError`).
|
|
19
|
+
- `CreateTxTrackerOptions.retentionBlocks?: number` — default `64`,
|
|
20
|
+
spec §10. How many blocks past a terminal state (`replaced-by` or
|
|
21
|
+
`unseen-for-N-blocks` emitted) the tracker keeps a record before
|
|
22
|
+
emitting `Stopped({ reason: 'retention-expired' })` and dropping
|
|
23
|
+
it. Pass the same value to your store implementation so persisted
|
|
24
|
+
retention matches in-memory.
|
|
25
|
+
- `TxStatus.terminalAtBlockNumber: bigint | null` — populated when a
|
|
26
|
+
hash reaches a terminal-and-finalized state. Anchors the retention
|
|
27
|
+
countdown per spec §10. Null while the hash is still in flight.
|
|
28
|
+
- `findBulkSubBySelector(bulkSubs, selector)` exported from the
|
|
29
|
+
package root (extracted from the tracker's runBulkOnBlock /
|
|
30
|
+
Mempool path; pure, unit-tested in isolation).
|
|
31
|
+
|
|
32
|
+
### Fixed
|
|
33
|
+
|
|
34
|
+
- **Durable subscriptions are now rehydrated on start() (audit #1).**
|
|
35
|
+
Records persisted via `subscribe(hash, cb, { durable: true })` are
|
|
36
|
+
re-registered against the source when a fresh tracker starts up
|
|
37
|
+
against the same store — fixes silent data loss across process
|
|
38
|
+
restart for indexer / relay consumers. Previously, the write side
|
|
39
|
+
of durable persistence worked but the read side was missing
|
|
40
|
+
entirely.
|
|
41
|
+
- **Retention enforcement now actually fires (audit #2).** The
|
|
42
|
+
`'retention-expired'` reason on `Stopped` was declared but never
|
|
43
|
+
emitted; durable records grew unbounded in both `tracked` and the
|
|
44
|
+
store. Records past `terminalAtBlockNumber + retentionBlocks` are
|
|
45
|
+
now reaped on each block tick with `Stopped({ reason:
|
|
46
|
+
'retention-expired' })` emitted to per-hash subs + globalSubs,
|
|
47
|
+
followed by `store.delete`.
|
|
48
|
+
- **Bulk subscriptions are torn down cleanly on tracker.stop()
|
|
49
|
+
(audit #3 lock-in).** Bulks' `stopped` flag is set during stop,
|
|
50
|
+
making their async iterators yield `done: true` on the next
|
|
51
|
+
`next()`. Most of the original audit-#3 concern about leaked
|
|
52
|
+
per-hash subscriptions is subsumed by the retention fix (audit
|
|
53
|
+
#2): auto-tracked records now reach retention-expired cleanup
|
|
54
|
+
rather than persisting forever.
|
|
55
|
+
- **`replaced-by` no longer fires twice for one logical replacement
|
|
56
|
+
(audit #4).** Previously the mempool side emitted with
|
|
57
|
+
`replacementBlockNumber: null`, then the block side re-emitted
|
|
58
|
+
with the inclusion block. The block path now patches status with
|
|
59
|
+
the now-known blockNumber but suppresses the duplicate event when
|
|
60
|
+
the replacement hash matches what mempool already surfaced.
|
|
61
|
+
- **Receipt-poll-fallback identity race (audit #6).** Records
|
|
62
|
+
unsubscribed AND re-subscribed (under the same hash) while
|
|
63
|
+
`getReceipt` was in-flight no longer leak phantom `seen-in-block`
|
|
64
|
+
events onto `subscribeAll`. Post-await check now compares record
|
|
65
|
+
identity (`tracked.get(hash) === record`), not just presence
|
|
66
|
+
(`tracked.has(hash)`).
|
|
67
|
+
- **Defensive null-on-miss in bulk-sub lookup (audit #7
|
|
68
|
+
hardening).** `findBulkSubBySelector` returns `null` instead of
|
|
69
|
+
throwing when the registry is mutated mid-fanout. Currently
|
|
70
|
+
unreachable from the public API (matchSubs has no sync
|
|
71
|
+
subscribers), but a future internal change that adds one would
|
|
72
|
+
otherwise crash the entire emit loop.
|
|
73
|
+
|
|
74
|
+
### Documented
|
|
75
|
+
|
|
76
|
+
- `subscribeAll` callbacks deliberately survive `stop()`/`start()`
|
|
77
|
+
cycles (audit #8 lock-in). Long-lived analytics consumers wire
|
|
78
|
+
one callback at construction and continue receiving events across
|
|
79
|
+
restart. Comment added in `stop()`; behavior locked in by test.
|
|
80
|
+
|
|
9
81
|
## [0.10.1] — 2026-05-08
|
|
10
82
|
|
|
11
83
|
Synchronized release — no changes to this package. Republished at
|
package/README.md
CHANGED
|
@@ -11,22 +11,10 @@ See
|
|
|
11
11
|
[`docs/tx-tracker-spec.md`](https://github.com/valve-tech/evm-toolkit/blob/main/docs/tx-tracker-spec.md)
|
|
12
12
|
for the full design contract.
|
|
13
13
|
|
|
14
|
-
```ts
|
|
15
|
-
import { createChainSource } from '@valve-tech/chain-source'
|
|
16
|
-
import { createTxTracker } from '@valve-tech/tx-tracker'
|
|
17
|
-
|
|
18
|
-
const source = createChainSource({ client })
|
|
19
|
-
const tracker = createTxTracker({ source, chainId: 1 })
|
|
20
|
-
source.start(); tracker.start()
|
|
21
|
-
|
|
22
|
-
for await (const event of tracker.track('0xabc...')) {
|
|
23
|
-
if (event.kind === 'seen-in-block' && event.confirmations >= 6) break
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
27
14
|
## Why this exists
|
|
28
15
|
|
|
29
16
|
Tx-tracking on EVM is unforgiving:
|
|
17
|
+
|
|
30
18
|
- **Three different consumer shapes** (wallet UI, indexer, relay) want
|
|
31
19
|
the same underlying observations but very different consumption
|
|
32
20
|
ergonomics.
|
|
@@ -38,7 +26,9 @@ Tx-tracking on EVM is unforgiving:
|
|
|
38
26
|
- **No silent downgrade** — a tracker that says "your tx is mined"
|
|
39
27
|
when the WS dropped and the receipt poll happens to still see the
|
|
40
28
|
old block is lying. Every event in this package carries a `source`
|
|
41
|
-
discriminator
|
|
29
|
+
discriminator (`'subscription'` / `'block-poll'` /
|
|
30
|
+
`'mempool-snapshot'` / `'receipt-poll'`) so consumers know how
|
|
31
|
+
authoritative it is.
|
|
42
32
|
|
|
43
33
|
This package handles all of it as one push-based core with three thin
|
|
44
34
|
adapters (callback / async iterator / snapshot).
|
|
@@ -49,15 +39,266 @@ adapters (callback / async iterator / snapshot).
|
|
|
49
39
|
yarn add @valve-tech/tx-tracker @valve-tech/chain-source viem
|
|
50
40
|
```
|
|
51
41
|
|
|
42
|
+
`@valve-tech/chain-source` is a runtime dependency — the tracker
|
|
43
|
+
consumes its block + mempool stream rather than re-implementing the
|
|
44
|
+
poll loop. `viem ^2.0.0` is the only external peer.
|
|
45
|
+
|
|
46
|
+
## Quick start
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import { createPublicClient, http } from 'viem'
|
|
50
|
+
import { mainnet } from 'viem/chains'
|
|
51
|
+
import { createChainSource } from '@valve-tech/chain-source'
|
|
52
|
+
import { createTxTracker } from '@valve-tech/tx-tracker'
|
|
53
|
+
|
|
54
|
+
const client = createPublicClient({ chain: mainnet, transport: http() })
|
|
55
|
+
const source = createChainSource({ client })
|
|
56
|
+
const tracker = createTxTracker({ source, chainId: 1 })
|
|
57
|
+
|
|
58
|
+
source.start(); tracker.start()
|
|
59
|
+
|
|
60
|
+
// Async iterator — recommended for new code:
|
|
61
|
+
for await (const event of tracker.track('0xabc...')) {
|
|
62
|
+
if (event.kind === 'seen-in-block' && event.confirmations >= 6) break
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Three consumption shapes
|
|
67
|
+
|
|
68
|
+
All three back the same internal `Subscriptions<TxEvent>` per hash, so
|
|
69
|
+
they see consistent state. Pick whichever fits the call site.
|
|
70
|
+
|
|
71
|
+
### 1. Snapshot — sub-millisecond, returns `null` if not tracked
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
const status = tracker.getTxStatus(hash)
|
|
75
|
+
if (status?.lastSeenInBlock?.confirmations >= 6) {
|
|
76
|
+
// do confirmed-thing
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2. Callback — returns an unsubscribe handle
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
const unsub = tracker.subscribe(hash, (event) => {
|
|
84
|
+
if (event.kind === 'seen-in-block') showConfirmation(event)
|
|
85
|
+
if (event.kind === 'replaced-by') showReplacement(event)
|
|
86
|
+
if (event.kind === 'unseen-for-N-blocks' && event.blocks >= 30) showStuckHint()
|
|
87
|
+
})
|
|
88
|
+
// later
|
|
89
|
+
unsub()
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 3. Async iterator — recommended for new code
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
for await (const event of tracker.track(hash)) {
|
|
96
|
+
switch (event.kind) {
|
|
97
|
+
case 'seen-in-block':
|
|
98
|
+
if (event.confirmations >= 6) return // exits the loop
|
|
99
|
+
break
|
|
100
|
+
case 'replaced-by':
|
|
101
|
+
reportReplacement(event.replacementHash)
|
|
102
|
+
return
|
|
103
|
+
case 'stopped':
|
|
104
|
+
return // tracker shut down or retention expired
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
The iterator stops cleanly on tracker shutdown, retention expiry, or
|
|
110
|
+
explicit `unsubscribe`. No event-listener leaks — `for await` cleanup
|
|
111
|
+
runs the iterator's `return()` automatically when the loop exits.
|
|
112
|
+
|
|
113
|
+
## What you'll likely want to do
|
|
114
|
+
|
|
115
|
+
### "Confirm a tx"
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
for await (const event of tracker.track(hash)) {
|
|
119
|
+
if (event.kind === 'seen-in-block' && event.confirmations >= confirmsRequired) {
|
|
120
|
+
return event // confirmed
|
|
121
|
+
}
|
|
122
|
+
if (event.kind === 'replaced-by' || event.kind === 'unseen-for-N-blocks') {
|
|
123
|
+
throw new Error(`tx didn't confirm: ${event.kind}`)
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`waitForTransaction(hash, { confirmations, source })` ships as a
|
|
129
|
+
one-shot helper if you don't need the per-event control:
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
import { waitForTransaction } from '@valve-tech/tx-tracker'
|
|
133
|
+
|
|
134
|
+
const event = await waitForTransaction(hash, { source, chainId: 1, confirmations: 6 })
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### "Detect a stuck tx and prompt the user to bump"
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
const unsub = tracker.subscribe(hash, (event) => {
|
|
141
|
+
if (event.kind === 'unseen-for-N-blocks' && event.blocks >= 30) {
|
|
142
|
+
promptUserToBump() // 30 blocks ≈ 6 min on Ethereum
|
|
143
|
+
}
|
|
144
|
+
})
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`unseenThresholdBlocks` (default 30) controls when the
|
|
148
|
+
`unseen-for-N-blocks` event fires. Tune lower for fast L2s, higher
|
|
149
|
+
for slow chains.
|
|
150
|
+
|
|
151
|
+
### "Watch all txs from an address (indexer-style bulk)"
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
const sub = tracker.trackFromAddress(treasuryAddress, { durable: true })
|
|
155
|
+
|
|
156
|
+
// Raw match stream:
|
|
157
|
+
for await (const m of sub.events()) {
|
|
158
|
+
console.log('match', m.hash, m.bucket)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Per-hash event stream (auto-tracked by default):
|
|
162
|
+
sub.subscribe((event) => {
|
|
163
|
+
if (event.kind === 'seen-in-block') ingestConfirmed(event)
|
|
164
|
+
})
|
|
165
|
+
|
|
166
|
+
sub.stop() // stops match stream; does NOT stop already-auto-tracked per-hash subs
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
`trackFromAddress` / `trackToAddress` / `trackPredicate` — capped at
|
|
170
|
+
`maxBulkSubscriptions: 16` by default. Per-hash auto-tracking can be
|
|
171
|
+
disabled via `{ autoTrack: false }` for replay-only consumers.
|
|
172
|
+
|
|
173
|
+
### "Detect a replacement (speed-up / cancel)"
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
for await (const event of tracker.track(hash)) {
|
|
177
|
+
if (event.kind === 'replaced-by') {
|
|
178
|
+
// event.replacementHash is the new tx; event.replacementBlockNumber
|
|
179
|
+
// is null until the replacement itself mines.
|
|
180
|
+
console.log(`replaced by ${event.replacementHash}`)
|
|
181
|
+
break
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
Replacement detection runs nonce-watching on the same sender + nonce.
|
|
187
|
+
Works for both speed-up (same nonce, higher tip) and cancel
|
|
188
|
+
(self-send to clear the slot).
|
|
189
|
+
|
|
190
|
+
## Configuration patterns
|
|
191
|
+
|
|
192
|
+
| Setting | Default | Tune up for | Tune down for |
|
|
193
|
+
|---|---|---|---|
|
|
194
|
+
| `reorgDepthBlocks` | 12 | Weak-finality chains (PoW, small validator sets) | High-finality chains; only care about shallow reorgs |
|
|
195
|
+
| `unseenThresholdBlocks` | 30 | Slow chains (Ethereum: ~6 min) | Fast L2s |
|
|
196
|
+
| `lostSignalPolicy` | `'emit-uncertain'` | (default — loud is correct) | `'silent'` for wallets that don't want capability-churn UI flicker |
|
|
197
|
+
| `createInMemoryStore({ retentionBlocks })` | 64 | Indexers replaying long windows | Wallet UIs |
|
|
198
|
+
| `createInMemoryStore({ eventLogCapacity })` | 256 | Heavy catch-up on restart | Memory-constrained mobile / edge |
|
|
199
|
+
|
|
200
|
+
`reorgDepthBlocks` and retention are in **block-units, not seconds** —
|
|
201
|
+
reorg safety is a depth invariant. See spec §10.1.
|
|
202
|
+
|
|
203
|
+
## Composing with `@valve-tech/gas-oracle`
|
|
204
|
+
|
|
205
|
+
One `ChainSource` shared across both — one upstream RPC poll cycle:
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
import { createChainSource } from '@valve-tech/chain-source'
|
|
209
|
+
import { createGasOracle } from '@valve-tech/gas-oracle'
|
|
210
|
+
import { createTxTracker } from '@valve-tech/tx-tracker'
|
|
211
|
+
|
|
212
|
+
const source = createChainSource({ client })
|
|
213
|
+
const oracle = createGasOracle({ source, chainId: 1 })
|
|
214
|
+
const tracker = createTxTracker({ source, chainId: 1 })
|
|
215
|
+
|
|
216
|
+
source.start(); oracle.start(); tracker.start()
|
|
217
|
+
// ↑ ONE upstream poll cycle. Two derived views.
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Each surface owns its own lifecycle — `oracle.stop()` does not stop
|
|
221
|
+
the source or the tracker. The owner of the source (whoever called
|
|
222
|
+
`createChainSource`) calls `source.stop()` when the process shuts
|
|
223
|
+
down.
|
|
224
|
+
|
|
225
|
+
For React in-flight tx UIs, `@valve-tech/tx-flight-react` wraps
|
|
226
|
+
tracker + wallet-adapter into a Provider + headless components, so
|
|
227
|
+
you don't have to wire any of this by hand for the UI side.
|
|
228
|
+
|
|
229
|
+
## Capability disclosure (the no-silent-downgrade rule)
|
|
230
|
+
|
|
231
|
+
`tracker.capabilities()` forwards the source's snapshot:
|
|
232
|
+
|
|
233
|
+
```ts
|
|
234
|
+
{
|
|
235
|
+
newHeads: 'subscription' | 'poll-only' | 'unavailable'
|
|
236
|
+
newPendingTransactions: 'subscription' | 'poll-only' | 'unavailable'
|
|
237
|
+
txpoolContent: 'available' | 'gated'
|
|
238
|
+
receiptByHash: 'available' | 'unavailable'
|
|
239
|
+
reprobeOnReconnect: boolean
|
|
240
|
+
}
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
When capabilities change mid-tracking (WS dropped, txpool gated, etc.),
|
|
244
|
+
the tracker emits `signal-degraded` / `signal-recovered` per affected
|
|
245
|
+
key. Consumers that need hard inclusion guarantees filter to
|
|
246
|
+
`event.source === 'subscription'`. Consumers that just want "best
|
|
247
|
+
available" data ignore the discriminator.
|
|
248
|
+
|
|
249
|
+
`lostSignalPolicy: 'emit-uncertain'` (the default) is the loud-is-right
|
|
250
|
+
choice — UI consumers want to surface "we lost push to the chain;
|
|
251
|
+
falling back to poll" so the user knows the bar might be lagging.
|
|
252
|
+
Switch to `'silent'` when you genuinely don't care about capability
|
|
253
|
+
churn (some indexers, server-side relays).
|
|
254
|
+
|
|
255
|
+
## Wire format
|
|
256
|
+
|
|
257
|
+
All numeric fields are `bigint` (block numbers, fees, timestamps).
|
|
258
|
+
`JSON.stringify(event)` will throw without hex-encoding at the wire
|
|
259
|
+
boundary. Durable store implementers MUST hex-encode (`'0x' +
|
|
260
|
+
n.toString(16)`) on write and decode on read. The default in-memory
|
|
261
|
+
store keeps `bigint` end-to-end.
|
|
262
|
+
|
|
263
|
+
## Examples
|
|
264
|
+
|
|
265
|
+
Runnable scripts (live under the gas-oracle examples directory — the
|
|
266
|
+
toolkit hosts shared examples there):
|
|
267
|
+
|
|
268
|
+
- `examples/07-tx-tracker.ts` — minimal tracker, no oracle (async iterator)
|
|
269
|
+
- `examples/08-tx-tracker-with-oracle.ts` — shared `ChainSource` between gas-oracle + tracker
|
|
270
|
+
- `examples/09-bulk-from-address.ts` — indexer-style bulk subscription
|
|
271
|
+
|
|
272
|
+
Run with `yarn tsx examples/07-tx-tracker.ts`.
|
|
273
|
+
|
|
52
274
|
## For AI agents
|
|
53
275
|
|
|
54
|
-
This package ships an [`AGENTS.md`](AGENTS.md) reference
|
|
276
|
+
This package ships an [`AGENTS.md`](AGENTS.md) reference (full surface
|
|
277
|
+
in tabular form, capability matrix, every event variant) and a
|
|
55
278
|
[`skills/`](skills/) directory for Claude Code / Cursor skill files
|
|
56
279
|
shipped in the npm tarball. After install, both are reachable at:
|
|
57
280
|
|
|
58
281
|
- `node_modules/@valve-tech/tx-tracker/AGENTS.md`
|
|
59
282
|
- `node_modules/@valve-tech/tx-tracker/skills/tx-tracker-integration/SKILL.md`
|
|
60
283
|
|
|
284
|
+
The skill triggers on imports of `@valve-tech/tx-tracker` and on
|
|
285
|
+
phrases like "track this transaction", "watch tx hash", "detect stuck
|
|
286
|
+
transactions", "watch for replaced txs". It includes a decision tree
|
|
287
|
+
for picking among the three consumption shapes, anti-patterns to flag
|
|
288
|
+
in user code, and the canonical composition pattern with gas-oracle.
|
|
289
|
+
|
|
290
|
+
## Verifying provenance
|
|
291
|
+
|
|
292
|
+
v0.6.0+ ships with SLSA provenance attestation:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
npm view @valve-tech/tx-tracker@latest --json | jq .dist.attestations
|
|
296
|
+
npm audit signatures
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
The attestation links the published tarball to the GitHub Actions
|
|
300
|
+
workflow run that built it.
|
|
301
|
+
|
|
61
302
|
## License
|
|
62
303
|
|
|
63
304
|
MIT
|
package/dist/events.d.ts
CHANGED
|
@@ -238,6 +238,17 @@ export interface TxStatus {
|
|
|
238
238
|
firstObservedAtBlock: bigint | null;
|
|
239
239
|
/** Most recent observation block number — used by retention. */
|
|
240
240
|
lastObservedAtBlock: bigint | null;
|
|
241
|
+
/**
|
|
242
|
+
* Block at which this hash reached a terminal-and-finalized state
|
|
243
|
+
* (`replaced-by` emitted, or `unseen-for-N-blocks` emitted). Null
|
|
244
|
+
* while the hash is still in flight. Retention countdown starts
|
|
245
|
+
* here per spec §10 — the tracker drops records and emits
|
|
246
|
+
* `Stopped({ reason: 'retention-expired' })` once
|
|
247
|
+
* `currentBlock > terminalAtBlockNumber + retentionBlocks`. Null
|
|
248
|
+
* means the record is still in flight and is not subject to
|
|
249
|
+
* retention-driven cleanup.
|
|
250
|
+
*/
|
|
251
|
+
terminalAtBlockNumber: bigint | null;
|
|
241
252
|
/** Capabilities at the most recent emit. */
|
|
242
253
|
capabilities: Capabilities;
|
|
243
254
|
}
|
package/dist/events.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/events.js
CHANGED
package/dist/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAuQH;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAC,KAAe,EAAY,EAAE,CAAC,CAAC;IACnD,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE;CACzE,CAAC,CAAA;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAAgD,EAChC,EAAE,CAAC,CAAC;IACpB,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,SAAS;IACf,YAAY,EAAE,KAAK,CAAC,YAAY;CACjC,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAA6D,EACvC,EAAE,CAAC,CAAC;IAC1B,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,EAAE,EAAE,KAAK,CAAC,EAAE;CACb,CAAC,CAAA;AAEF,oCAAoC;AACpC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAe,EAAsB,EAAE,CAAC,CAAC;IACxE,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,cAAc;CACrB,CAAC,CAAA;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,KAMC,EACmB,EAAE,CAAC,CAAC;IACxB,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,eAAe;IACrB,SAAS,EAAE,KAAK,CAAC,SAAS;IAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;IAC9B,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;IACxC,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;CACnE,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAIC,EACyB,EAAE;IAC5B,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,4DAA4D;YAC1D,sDAAsD,CACzD,CAAA;IACH,CAAC;IACD,OAAO;QACL,GAAG,YAAY,CAAC,KAAK,CAAC;QACtB,IAAI,EAAE,qBAAqB;QAC3B,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAA;AACH,CAAC,CAAA;AAED,mCAAmC;AACnC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAGC,EACkB,EAAE,CAAC,CAAC;IACvB,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,aAAa;IACnB,eAAe,EAAE,KAAK,CAAC,eAAe;IACtC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;CACrD,CAAC,CAAA;AAEF,4CAA4C;AAC5C,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAAoC,EACX,EAAE,CAAC,CAAC;IAC7B,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,qBAAqB;IAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;CACrB,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,KAGC,EACsB,EAAE,CAAC,CAAC;IAC3B,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,iBAAiB;IACvB,cAAc,EAAE,KAAK,CAAC,cAAc;IACpC,cAAc,EAAE,KAAK,CAAC,cAAc;CACrC,CAAC,CAAA;AAEF,wCAAwC;AACxC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAA4D,EACpC,EAAE,CAAC,CAAC;IAC5B,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,kBAAkB;IACxB,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;CAC7C,CAAC,CAAA;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,KAEC,EACe,EAAE,CAAC,CAAC;IACpB,GAAG,YAAY,CAAC,KAAK,CAAC;IACtB,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,KAAK,CAAC,MAAM;CACrB,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAIlC,EAAY,EAAE,CAAC,CAAC;IACf,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,eAAe,EAAE,IAAI;IACrB,iBAAiB,EAAE,IAAI;IACvB,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,IAAI;IAChB,YAAY,EAAE,CAAC;IACf,oBAAoB,EAAE,IAAI;IAC1B,mBAAmB,EAAE,IAAI;IACzB,qBAAqB,EAAE,IAAI;IAC3B,YAAY,EAAE,KAAK,CAAC,YAAY;CACjC,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../src/observations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAEtF,OAAO,EAML,KAAK,EAAE,EACP,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;AAEpB;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,QAAQ,CAAA;IAChB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAChD,qBAAqB,EAAE,OAAO,CAAA;IAC9B,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC9B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,uEAAuE;IACvE,cAAc,EAAE,OAAO,GAAG,IAAI,CAAA;CAC/B;AAaD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,qBAAqB,CAAA;IAC7B,SAAS,EAAE,IAAI,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IAC5B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,EAAE,CAAA;IACZ;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;CAC3D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,qBAAqB,KAC3B,
|
|
1
|
+
{"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../src/observations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAEtF,OAAO,EAML,KAAK,EAAE,EACP,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;AAEpB;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAA;IACV,MAAM,EAAE,QAAQ,CAAA;IAChB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAChD,qBAAqB,EAAE,OAAO,CAAA;IAC9B,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC9B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAA;IACnC,uEAAuE;IACvE,cAAc,EAAE,OAAO,GAAG,IAAI,CAAA;CAC/B;AAaD;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,qBAAqB,CAAA;IAC7B,SAAS,EAAE,IAAI,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;IAC5B,GAAG,EAAE,aAAa,CAAC,KAAK,CAAC,CAAA;IACzB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,EAAE,CAAA;IACZ;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAA;CAC3D;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,sBAAsB,GACjC,OAAO,qBAAqB,KAC3B,iBAuKF,CAAA;AAMD;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,qBAAqB,CAAA;IAC7B,QAAQ,EAAE;QAAE,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;QAAC,EAAE,EAAE,KAAK,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5D;;;;;OAKG;IACH,oBAAoB,EAAE,KAAK,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,WAAW,CAAA;IACxB,QAAQ,EAAE,EAAE,CAAA;IACZ;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,GACnC,OAAO,uBAAuB,KAC7B,iBA4FF,CAAA;AAMD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,GACjC,UAAU;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACzC,cAAc,IAAI,EAClB,KAAK,aAAa,CAAC,KAAK,CAAC,KACxB,KAAK,GAAG,IAUV,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC/C,IAAI,KAAK,KACR,aAAa,GAAG,IAIlB,CAAA"}
|
package/dist/observations.js
CHANGED
|
@@ -124,24 +124,36 @@ export const decideBlockObservation = (input) => {
|
|
|
124
124
|
inMempoolPatch: null,
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
|
-
// Path 3: replacement detection
|
|
127
|
+
// Path 3: replacement detection. When the mempool path already
|
|
128
|
+
// detected the same replacement (status.replacedBy.hash matches),
|
|
129
|
+
// patch status with the now-known blockNumber but do NOT re-fire
|
|
130
|
+
// `replaced-by` — the consumer already received the event from
|
|
131
|
+
// the mempool side and the replacement is one logical event.
|
|
132
|
+
// Mirrors the `!record.status.replacedBy` gate the mempool path
|
|
133
|
+
// uses to avoid duplicate emits in the other direction.
|
|
128
134
|
if (record.identity) {
|
|
129
135
|
const replacement = findReplacementInBlock(record.identity, record.hash, txs);
|
|
130
136
|
if (replacement && replacement.hash) {
|
|
137
|
+
const isNewReplacement = record.status.replacedBy?.hash !== replacement.hash;
|
|
131
138
|
return {
|
|
132
|
-
events:
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
events: isNewReplacement
|
|
140
|
+
? [
|
|
141
|
+
buildReplacedBy({
|
|
142
|
+
hash: record.hash,
|
|
143
|
+
chainId,
|
|
144
|
+
source: eventSource,
|
|
145
|
+
at: envelope,
|
|
146
|
+
replacementHash: replacement.hash,
|
|
147
|
+
replacementBlockNumber: blockNumber,
|
|
148
|
+
}),
|
|
149
|
+
]
|
|
150
|
+
: [],
|
|
142
151
|
statusPatch: {
|
|
143
152
|
replacedBy: { hash: replacement.hash, blockNumber },
|
|
144
153
|
lastObservedAtBlock: blockNumber,
|
|
154
|
+
// Terminal: replacement included on-chain. Retention
|
|
155
|
+
// countdown starts from this block (audit #2).
|
|
156
|
+
terminalAtBlockNumber: record.status.terminalAtBlockNumber ?? blockNumber,
|
|
145
157
|
},
|
|
146
158
|
identityPatch: null,
|
|
147
159
|
inMempoolPatch: null,
|
|
@@ -154,7 +166,8 @@ export const decideBlockObservation = (input) => {
|
|
|
154
166
|
return EMPTY_RESULT;
|
|
155
167
|
}
|
|
156
168
|
const nextStreak = record.status.unseenStreak + 1;
|
|
157
|
-
const
|
|
169
|
+
const reachedTerminal = nextStreak === record.unseenThresholdBlocks;
|
|
170
|
+
const events = reachedTerminal
|
|
158
171
|
? [
|
|
159
172
|
buildUnseenForNBlocks({
|
|
160
173
|
hash: record.hash,
|
|
@@ -167,7 +180,14 @@ export const decideBlockObservation = (input) => {
|
|
|
167
180
|
: [];
|
|
168
181
|
return {
|
|
169
182
|
events,
|
|
170
|
-
statusPatch: {
|
|
183
|
+
statusPatch: {
|
|
184
|
+
unseenStreak: nextStreak,
|
|
185
|
+
// Terminal: unseen-for-N-blocks emitted at this block.
|
|
186
|
+
// Retention countdown starts here (audit #2).
|
|
187
|
+
...(reachedTerminal && record.status.terminalAtBlockNumber === null
|
|
188
|
+
? { terminalAtBlockNumber: blockNumber }
|
|
189
|
+
: {}),
|
|
190
|
+
},
|
|
171
191
|
identityPatch: null,
|
|
172
192
|
inMempoolPatch: null,
|
|
173
193
|
};
|
|
@@ -236,6 +256,13 @@ export const decideMempoolObservation = (input) => {
|
|
|
236
256
|
statusPatch = {
|
|
237
257
|
...statusPatch,
|
|
238
258
|
replacedBy: { hash: replacementInMempool.hash, blockNumber: null },
|
|
259
|
+
// Terminal: replacement seen in mempool. Retention countdown
|
|
260
|
+
// starts from the current poll's block (audit #2). The block
|
|
261
|
+
// path may later patch this with the replacement's inclusion
|
|
262
|
+
// block, but the terminal anchor stays at the first observation.
|
|
263
|
+
...(record.status.terminalAtBlockNumber === null
|
|
264
|
+
? { terminalAtBlockNumber: envelope.blockNumber }
|
|
265
|
+
: {}),
|
|
239
266
|
};
|
|
240
267
|
events.push(buildReplacedBy({
|
|
241
268
|
hash: record.hash,
|
package/dist/observations.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observations.js","sourceRoot":"","sources":["../src/observations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,GAKtB,MAAM,aAAa,CAAA;AAsCpB,MAAM,YAAY,GAAsB;IACtC,MAAM,EAAE,EAAE;IACV,WAAW,EAAE,EAAE;IACf,aAAa,EAAE,IAAI;IACnB,cAAc,EAAE,IAAI;CACrB,CAAA;AAuCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAA4B,EACT,EAAE;IACrB,MAAM,EACJ,MAAM,EACN,SAAS,EACT,WAAW,EACX,SAAS,EACT,GAAG,EACH,OAAO,EACP,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,kBAAkB,GACnB,GAAG,KAAK,CAAA;IAET,MAAM,kBAAkB,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAErD,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAA;QAClD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,6DAA6D;YAC7D,+DAA+D;YAC/D,OAAO,YAAY,CAAA;QACrB,CAAC;QACD,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACxC,MAAM,gBAAgB,GACpB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,SAAS,KAAK,SAAS,CAAA;QACxD,MAAM,aAAa,GAAG,gBAAgB;YACpC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,eAAgB,CAAC,aAAa,CAAA;QAChD,MAAM,eAAe,GAAG;YACtB,SAAS;YACT,WAAW;YACX,gBAAgB;YAChB,aAAa;YACb,MAAM,EAAE,WAAW;SACpB,CAAA;QACD,MAAM,OAAO,GAAG,gBAAgB;YAC9B,CAAC,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACtC,CAAC,CAAC,SAAS,CAAA;QACb,MAAM,MAAM,GAAc,gBAAgB;YACxC,CAAC,CAAC;gBACE,gBAAgB,CAAC;oBACf,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;oBACP,MAAM,EAAE,WAAW;oBACnB,EAAE,EAAE,QAAQ;oBACZ,SAAS;oBACT,WAAW;oBACX,gBAAgB;oBAChB,aAAa;oBACb,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC9C,CAAC;aACH;YACH,CAAC,CAAC,EAAE,CAAA;QACN,OAAO;YACL,MAAM;YACN,WAAW,EAAE;gBACX,eAAe;gBACf,YAAY,EAAE,CAAC;gBACf,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,IAAI,WAAW;gBACvE,mBAAmB,EAAE,WAAW;aACjC;YACD,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;YACjD,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;IAED,yEAAyE;IACzE,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa,GAAG,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG;YACd,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe;YAChC,aAAa,EAAE,MAAM;SACtB,CAAA;QACD,OAAO;YACL,MAAM,EAAE;gBACN,gBAAgB,CAAC;oBACf,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO;oBACP,MAAM,EAAE,WAAW;oBACnB,EAAE,EAAE,QAAQ;oBACZ,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,aAAa,EAAE,MAAM;iBACtB,CAAC;aACH;YACD,WAAW,EAAE;gBACX,eAAe,EAAE,OAAO;gBACxB,mBAAmB,EAAE,WAAW;aACjC;YACD,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"observations.js","sourceRoot":"","sources":["../src/observations.ts"],"names":[],"mappings":"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"}
|
package/dist/selectors.d.ts
CHANGED
|
@@ -75,4 +75,21 @@ export declare const matchAll: (txs: ReadonlyArray<RawTx>, compiled: ReadonlyArr
|
|
|
75
75
|
* running an indexer-shaped store rather than the in-memory default.
|
|
76
76
|
*/
|
|
77
77
|
export declare const defaultMaxBulkSubscriptions = 16;
|
|
78
|
+
/**
|
|
79
|
+
* Reverse-lookup: find the bulk subscription whose compiled selector
|
|
80
|
+
* is the same reference as `selector`. Returns `null` on miss.
|
|
81
|
+
*
|
|
82
|
+
* Pure / data-flow only — exported here so the tracker's
|
|
83
|
+
* runBulkOn{Block,Mempool} paths can resolve match→bulk without
|
|
84
|
+
* exposing the bulk registry, and so the defensive null-on-miss
|
|
85
|
+
* branch is unit-testable (audit #7 hardening). The current public
|
|
86
|
+
* API can't reach a miss in fanout (matchSubs has no sync subscribers,
|
|
87
|
+
* so a sub can't be deleted between the `compiled` snapshot and the
|
|
88
|
+
* lookup), but future internal changes that add synchronous matchSubs
|
|
89
|
+
* subscribers, or any other path that mutates the registry mid-fanout,
|
|
90
|
+
* would otherwise crash the entire emit loop.
|
|
91
|
+
*/
|
|
92
|
+
export declare const findBulkSubBySelector: <T extends {
|
|
93
|
+
compiled: CompiledSelector;
|
|
94
|
+
}>(bulkSubs: ReadonlyMap<string, T>, selector: BulkSelector) => T | null;
|
|
78
95
|
//# sourceMappingURL=selectors.d.ts.map
|
package/dist/selectors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAAA;IACtC,QAAQ,EAAE,YAAY,CAAA;IACtB,EAAE,EAAE,KAAK,CAAA;CACV;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,OAAO,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,YAAY,KAAG,gBAwCxD,CAAA;AAeD;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GACnB,KAAK,aAAa,CAAC,KAAK,CAAC,EACzB,UAAU,aAAa,CAAC,gBAAgB,CAAC,KACxC,gBAAgB,EAelB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAA"}
|
|
1
|
+
{"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,IAAI,CAAA;IACV,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,WAAW,CAAA;IACtC,QAAQ,EAAE,YAAY,CAAA;IACtB,EAAE,EAAE,KAAK,CAAA;CACV;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,YAAY,CAAA;IACtB,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,OAAO,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,UAAU,YAAY,KAAG,gBAwCxD,CAAA;AAeD;;;;;;;;;GASG;AACH,eAAO,MAAM,QAAQ,GACnB,KAAK,aAAa,CAAC,KAAK,CAAC,EACzB,UAAU,aAAa,CAAC,gBAAgB,CAAC,KACxC,gBAAgB,EAelB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS;IAAE,QAAQ,EAAE,gBAAgB,CAAA;CAAE,EAC5E,UAAU,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAChC,UAAU,YAAY,KACrB,CAAC,GAAG,IAKN,CAAA"}
|
package/dist/selectors.js
CHANGED
|
@@ -116,4 +116,25 @@ export const matchAll = (txs, compiled) => {
|
|
|
116
116
|
* running an indexer-shaped store rather than the in-memory default.
|
|
117
117
|
*/
|
|
118
118
|
export const defaultMaxBulkSubscriptions = 16;
|
|
119
|
+
/**
|
|
120
|
+
* Reverse-lookup: find the bulk subscription whose compiled selector
|
|
121
|
+
* is the same reference as `selector`. Returns `null` on miss.
|
|
122
|
+
*
|
|
123
|
+
* Pure / data-flow only — exported here so the tracker's
|
|
124
|
+
* runBulkOn{Block,Mempool} paths can resolve match→bulk without
|
|
125
|
+
* exposing the bulk registry, and so the defensive null-on-miss
|
|
126
|
+
* branch is unit-testable (audit #7 hardening). The current public
|
|
127
|
+
* API can't reach a miss in fanout (matchSubs has no sync subscribers,
|
|
128
|
+
* so a sub can't be deleted between the `compiled` snapshot and the
|
|
129
|
+
* lookup), but future internal changes that add synchronous matchSubs
|
|
130
|
+
* subscribers, or any other path that mutates the registry mid-fanout,
|
|
131
|
+
* would otherwise crash the entire emit loop.
|
|
132
|
+
*/
|
|
133
|
+
export const findBulkSubBySelector = (bulkSubs, selector) => {
|
|
134
|
+
for (const sub of bulkSubs.values()) {
|
|
135
|
+
if (sub.compiled.selector === selector)
|
|
136
|
+
return sub;
|
|
137
|
+
}
|
|
138
|
+
return null;
|
|
139
|
+
};
|
|
119
140
|
//# sourceMappingURL=selectors.js.map
|
package/dist/selectors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"selectors.js","sourceRoot":"","sources":["../src/selectors.ts"],"names":[],"mappings":"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"}
|
package/dist/tracker.d.ts
CHANGED
|
@@ -139,6 +139,17 @@ export interface CreateTxTrackerOptions {
|
|
|
139
139
|
unseenThresholdBlocks?: number;
|
|
140
140
|
/** Cap on simultaneous bulk subscriptions (spec §11.3). */
|
|
141
141
|
maxBulkSubscriptions?: number;
|
|
142
|
+
/**
|
|
143
|
+
* How many blocks past a terminal-and-finalized state (`replaced-by`
|
|
144
|
+
* or `unseen-for-N-blocks` emitted) before the tracker drops a
|
|
145
|
+
* record and emits `Stopped({ reason: 'retention-expired' })`.
|
|
146
|
+
* Default `64` (spec §10). Pass the same value to your store
|
|
147
|
+
* implementation so persisted retention matches in-memory.
|
|
148
|
+
* Records still in flight (no terminal observation) are not subject
|
|
149
|
+
* to retention; they live until their last subscriber leaves AND
|
|
150
|
+
* they have no durable subscription (cleanupRecord path).
|
|
151
|
+
*/
|
|
152
|
+
retentionBlocks?: number;
|
|
142
153
|
onError?: (method: string, err: unknown) => void;
|
|
143
154
|
lifecycle?: 'eager' | 'lazy';
|
|
144
155
|
}
|
|
@@ -174,6 +185,26 @@ export interface TxGroupSubscription {
|
|
|
174
185
|
export interface TxTracker {
|
|
175
186
|
start(): void;
|
|
176
187
|
stop(): void;
|
|
188
|
+
/**
|
|
189
|
+
* Promise that resolves when durable-subscription rehydration
|
|
190
|
+
* triggered by the most recent `start()` has completed. For
|
|
191
|
+
* in-memory stores this typically resolves on the next microtask;
|
|
192
|
+
* for cross-process restart with Redis / SQLite / etc, this is the
|
|
193
|
+
* gate indexer / relay consumers should `await` before assuming
|
|
194
|
+
* the tracked-set is fully restored:
|
|
195
|
+
*
|
|
196
|
+
* tracker.start()
|
|
197
|
+
* await tracker.ready()
|
|
198
|
+
* // safe to begin processing — durable records from previous run
|
|
199
|
+
* // are now registered against the source.
|
|
200
|
+
*
|
|
201
|
+
* Returns an already-resolved promise when `start()` has not been
|
|
202
|
+
* called or the previous rehydration already finished. Resolves to
|
|
203
|
+
* `void` — errors during rehydration are routed through `onError`
|
|
204
|
+
* and don't reject this promise (one bad store call shouldn't
|
|
205
|
+
* crash consumer flow that's waiting for ready).
|
|
206
|
+
*/
|
|
207
|
+
ready(): Promise<void>;
|
|
177
208
|
getTxStatus(hash: Hash): TxStatus | null;
|
|
178
209
|
track(hash: Hash, options?: TrackOptions): AsyncIterable<TxEvent>;
|
|
179
210
|
subscribe(hash: Hash, cb: (event: TxEvent) => void, options?: TrackOptions): () => void;
|
package/dist/tracker.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,YAAY,EAGZ,KAAK,EAEN,MAAM,0BAA0B,CAAA;AAIjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,OAAO,EAQL,KAAK,OAAO,EACZ,KAAK,EAAE,EACP,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,KAAK,QAAQ,EACd,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/tracker.js
CHANGED
|
@@ -40,7 +40,7 @@ import { createTxGroup } from './group.js';
|
|
|
40
40
|
import { buildSeenInBlock, buildSignalDegraded, buildSignalRecovered, buildStarted, buildStopped, buildVanishedFromBlock, buildInitialStatus, } from './events.js';
|
|
41
41
|
import { decideBlockObservation, decideMempoolObservation, } from './observations.js';
|
|
42
42
|
import { appendBlock, defaultReorgDepthBlocks, detectDivergences, } from './reorg.js';
|
|
43
|
-
import { compileSelector, defaultMaxBulkSubscriptions, matchAll, } from './selectors.js';
|
|
43
|
+
import { compileSelector, defaultMaxBulkSubscriptions, findBulkSubBySelector, matchAll, } from './selectors.js';
|
|
44
44
|
import { computeRetentionExpiry, createInMemoryStore, defaultRetentionBlocks, } from './store.js';
|
|
45
45
|
// -----------------------------------------------------------------
|
|
46
46
|
// Internals
|
|
@@ -117,7 +117,7 @@ const mempoolEventSource = (caps) => caps.newPendingTransactions === 'subscripti
|
|
|
117
117
|
* }
|
|
118
118
|
*/
|
|
119
119
|
export const createTxTracker = (options) => {
|
|
120
|
-
const { source, chainId, store = createInMemoryStore(), lostSignalPolicy: defaultLostSignalPolicy = 'emit-uncertain', reorgDepthBlocks = defaultReorgDepthBlocks, unseenThresholdBlocks = DEFAULT_UNSEEN_THRESHOLD_BLOCKS, maxBulkSubscriptions = defaultMaxBulkSubscriptions, onError, lifecycle = 'eager', } = options;
|
|
120
|
+
const { source, chainId, store = createInMemoryStore(), lostSignalPolicy: defaultLostSignalPolicy = 'emit-uncertain', reorgDepthBlocks = defaultReorgDepthBlocks, unseenThresholdBlocks = DEFAULT_UNSEEN_THRESHOLD_BLOCKS, maxBulkSubscriptions = defaultMaxBulkSubscriptions, retentionBlocks = defaultRetentionBlocks, onError, lifecycle = 'eager', } = options;
|
|
121
121
|
const tracked = new Map();
|
|
122
122
|
const bulkSubs = new Map();
|
|
123
123
|
const globalSubs = new Subscriptions();
|
|
@@ -164,9 +164,14 @@ export const createTxTracker = (options) => {
|
|
|
164
164
|
};
|
|
165
165
|
/**
|
|
166
166
|
* Project an internal `TrackedRecord` onto the persisted shape.
|
|
167
|
-
* Retention expiry is
|
|
168
|
-
*
|
|
169
|
-
*
|
|
167
|
+
* Retention expiry is anchored on `terminalAtBlockNumber` (audit #2)
|
|
168
|
+
* — the spec block at which the record reached a terminal state. For
|
|
169
|
+
* records still in flight (terminal === null), expiry rolls with
|
|
170
|
+
* `lastObservedAtBlock` so a long-lived hash that keeps moving
|
|
171
|
+
* stays in the store rather than getting GC'd mid-flight; once the
|
|
172
|
+
* record goes terminal, the anchor is fixed and the chain advancing
|
|
173
|
+
* past `terminal + retentionBlocks` triggers cleanup via the
|
|
174
|
+
* enforcement loop in `onBlock`.
|
|
170
175
|
*/
|
|
171
176
|
const toRecord = (record) => {
|
|
172
177
|
const lastBlock = record.status.lastObservedAtBlock ??
|
|
@@ -174,13 +179,14 @@ export const createTxTracker = (options) => {
|
|
|
174
179
|
latestTip?.number ??
|
|
175
180
|
0n;
|
|
176
181
|
const firstBlock = record.status.firstObservedAtBlock ?? latestTip?.number ?? 0n;
|
|
182
|
+
const expiryAnchor = record.status.terminalAtBlockNumber ?? lastBlock;
|
|
177
183
|
return {
|
|
178
184
|
chainId,
|
|
179
185
|
hash: record.hash,
|
|
180
186
|
status: record.status,
|
|
181
187
|
firstSeenBlockNumber: firstBlock,
|
|
182
188
|
lastObservedBlockNumber: lastBlock,
|
|
183
|
-
retentionExpiresAtBlockNumber: computeRetentionExpiry(
|
|
189
|
+
retentionExpiresAtBlockNumber: computeRetentionExpiry(expiryAnchor, retentionBlocks),
|
|
184
190
|
subscriptions: record.persisted,
|
|
185
191
|
};
|
|
186
192
|
};
|
|
@@ -294,9 +300,14 @@ export const createTxTracker = (options) => {
|
|
|
294
300
|
if (existingBlock && existingBlock.blockNumber >= receiptBlockNumber) {
|
|
295
301
|
return;
|
|
296
302
|
}
|
|
297
|
-
// Record was unsubscribed
|
|
298
|
-
// than emit on an orphaned
|
|
299
|
-
|
|
303
|
+
// Record was unsubscribed (and possibly re-subscribed) while
|
|
304
|
+
// getReceipt was in-flight; bail rather than emit on an orphaned
|
|
305
|
+
// record. Identity check, not presence — re-subscribe under the
|
|
306
|
+
// same hash creates a new TrackedRecord, and emitting via the old
|
|
307
|
+
// closure would fire a phantom event on globalSubs that the new
|
|
308
|
+
// per-hash subscribers never see (silent inconsistency between
|
|
309
|
+
// global and per-hash streams). Audit finding #6.
|
|
310
|
+
if (tracked.get(record.hash) !== record)
|
|
300
311
|
return;
|
|
301
312
|
emit(record, buildSeenInBlock({
|
|
302
313
|
hash: record.hash,
|
|
@@ -455,6 +466,37 @@ export const createTxTracker = (options) => {
|
|
|
455
466
|
for (const event of result.events)
|
|
456
467
|
emit(record, event);
|
|
457
468
|
}
|
|
469
|
+
// Retention enforcement (spec §10, audit #2). Records that have
|
|
470
|
+
// reached a terminal state (`replaced-by` or `unseen-for-N-blocks`
|
|
471
|
+
// emitted) carry `terminalAtBlockNumber`. Once the chain has
|
|
472
|
+
// moved `retentionBlocks` past that point, drop the record and
|
|
473
|
+
// emit `Stopped({ reason: 'retention-expired' })`. Records still
|
|
474
|
+
// in flight (terminalAtBlockNumber === null) are NOT subject to
|
|
475
|
+
// retention here — they live until cleanupRecord drops them
|
|
476
|
+
// (no subs + no durable persistence). Iterates a snapshot so
|
|
477
|
+
// emit + delete during the walk is safe.
|
|
478
|
+
const expired = [];
|
|
479
|
+
for (const record of tracked.values()) {
|
|
480
|
+
const t = record.status.terminalAtBlockNumber;
|
|
481
|
+
if (t !== null && blockNumber > t + BigInt(retentionBlocks)) {
|
|
482
|
+
expired.push(record);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
for (const record of expired) {
|
|
486
|
+
const stoppedEvent = buildStopped({
|
|
487
|
+
hash: record.hash,
|
|
488
|
+
chainId,
|
|
489
|
+
source: blockEventSource(source.capabilities()),
|
|
490
|
+
at: buildAt(),
|
|
491
|
+
reason: 'retention-expired',
|
|
492
|
+
});
|
|
493
|
+
emit(record, stoppedEvent);
|
|
494
|
+
tracked.delete(record.hash);
|
|
495
|
+
blocksSinceLastReceiptPoll.delete(record.hash);
|
|
496
|
+
void store.delete(chainId, record.hash).catch((err) => {
|
|
497
|
+
onError?.('store.delete', err);
|
|
498
|
+
});
|
|
499
|
+
}
|
|
458
500
|
// Receipt-poll-fallback: dispatch non-blocking per-record receipt
|
|
459
501
|
// fetches. These run AFTER the synchronous block-observation loop
|
|
460
502
|
// so any block-poll inclusion emitted above is already reflected in
|
|
@@ -685,24 +727,18 @@ export const createTxTracker = (options) => {
|
|
|
685
727
|
const txs = [...byHash.values()].map((v) => v.tx);
|
|
686
728
|
fanOutBulkMatches(matchAll(txs, compiled), 'mempool-snapshot');
|
|
687
729
|
};
|
|
688
|
-
/**
|
|
689
|
-
* Reverse-lookup: given a compiled selector reference, find its
|
|
690
|
-
* owning bulk sub. The `compiled.selector` reference is the same
|
|
691
|
-
* object the consumer registered, and every sub in `bulkSubs`
|
|
692
|
-
* carries it — so a miss here would mean the registry was
|
|
693
|
-
* mutated mid-fanout, which doesn't happen.
|
|
694
|
-
*/
|
|
695
|
-
const findBulkSubBySelector = (selector) => {
|
|
696
|
-
for (const sub of bulkSubs.values()) {
|
|
697
|
-
if (sub.compiled.selector === selector)
|
|
698
|
-
return sub;
|
|
699
|
-
}
|
|
700
|
-
/* c8 ignore next */
|
|
701
|
-
throw new Error('tx-tracker: invariant violated — selector ref missing from bulkSubs');
|
|
702
|
-
};
|
|
703
730
|
const fanOutBulkMatches = (matches, matchSource) => {
|
|
704
731
|
for (const match of matches) {
|
|
705
|
-
|
|
732
|
+
// findBulkSubBySelector is a pure helper from `selectors.ts`;
|
|
733
|
+
// its defensive null-on-miss branch covers audit #7 and is
|
|
734
|
+
// unit-tested in selectors.test.ts. The current public API
|
|
735
|
+
// can't reach a miss in fanout (matchSubs has no synchronous
|
|
736
|
+
// subscribers that could mutate `bulkSubs` between the
|
|
737
|
+
// `compiled` snapshot and this lookup), so we assert non-null
|
|
738
|
+
// here. A future internal change that adds a sync matchSubs
|
|
739
|
+
// subscriber + stops the bulk during emit would need to add a
|
|
740
|
+
// defensive null check back here.
|
|
741
|
+
const sub = findBulkSubBySelector(bulkSubs, match.selector);
|
|
706
742
|
const event = {
|
|
707
743
|
kind: 'matched',
|
|
708
744
|
hash: match.hash,
|
|
@@ -920,11 +956,68 @@ export const createTxTracker = (options) => {
|
|
|
920
956
|
// -------------------------------------------------------------
|
|
921
957
|
// Lifecycle
|
|
922
958
|
// -------------------------------------------------------------
|
|
959
|
+
/**
|
|
960
|
+
* Rehydrate durable subscriptions from the store on start. Spec
|
|
961
|
+
* §13.1 + audit #1: any record persisted with `durable: true`
|
|
962
|
+
* (whether the persistence happened in the current process or a
|
|
963
|
+
* prior one — Redis / SQLite / etc. cross-process restart) must
|
|
964
|
+
* be re-registered against the source on `tracker.start()`. The
|
|
965
|
+
* pre-fix code wrote durable records to the store but never read
|
|
966
|
+
* them back, silently abandoning indexer/relay state across
|
|
967
|
+
* restarts.
|
|
968
|
+
*
|
|
969
|
+
* Async because the store interface is Promise-typed (must support
|
|
970
|
+
* Redis et al). `start()` itself stays synchronous and kicks off
|
|
971
|
+
* the rehydration; production consumers (indexers, relays) that
|
|
972
|
+
* need to be sure rehydration completed before they begin
|
|
973
|
+
* processing should `await tracker.ready()`. Block / mempool
|
|
974
|
+
* handlers do **not** await this — synchronous test patterns
|
|
975
|
+
* (`source.emitBlock(...); expect(events)...`) need to keep
|
|
976
|
+
* working. The trade-off: an in-memory store that resolves on the
|
|
977
|
+
* next microtask, plus a block emitted in the same sync stack as
|
|
978
|
+
* `start()`, may miss the rehydrated record for that one block;
|
|
979
|
+
* subsequent observations see it. That's an acceptable race for
|
|
980
|
+
* the in-memory case (no cross-process state anyway). For
|
|
981
|
+
* cross-process restart with Redis et al, `ready()` is the right
|
|
982
|
+
* gate.
|
|
983
|
+
*/
|
|
984
|
+
let rehydrationPromise = null;
|
|
985
|
+
const doRehydration = async () => {
|
|
986
|
+
let durableRecords;
|
|
987
|
+
try {
|
|
988
|
+
durableRecords = await store.listDurable(chainId);
|
|
989
|
+
}
|
|
990
|
+
catch (err) {
|
|
991
|
+
onError?.('store.listDurable', err);
|
|
992
|
+
return;
|
|
993
|
+
}
|
|
994
|
+
for (const persisted of durableRecords) {
|
|
995
|
+
// Skip if a fresh subscribe under the same hash already
|
|
996
|
+
// re-created the record between start() and rehydration
|
|
997
|
+
// resolving.
|
|
998
|
+
if (tracked.has(persisted.hash))
|
|
999
|
+
continue;
|
|
1000
|
+
const record = {
|
|
1001
|
+
hash: persisted.hash,
|
|
1002
|
+
status: persisted.status,
|
|
1003
|
+
subs: new Subscriptions(),
|
|
1004
|
+
identity: null, // re-established by subsequent observations
|
|
1005
|
+
inLastMempoolSnapshot: false,
|
|
1006
|
+
unseenThresholdBlocks,
|
|
1007
|
+
lostSignalPolicy: null,
|
|
1008
|
+
hasDurableSub: true,
|
|
1009
|
+
persisted: persisted.subscriptions,
|
|
1010
|
+
withReceipts: false,
|
|
1011
|
+
};
|
|
1012
|
+
tracked.set(persisted.hash, record);
|
|
1013
|
+
}
|
|
1014
|
+
};
|
|
923
1015
|
const start = () => {
|
|
924
1016
|
if (started)
|
|
925
1017
|
return;
|
|
926
1018
|
started = true;
|
|
927
1019
|
lastCaps = source.capabilities();
|
|
1020
|
+
rehydrationPromise = doRehydration();
|
|
928
1021
|
unsubBlocks = source.subscribeBlocks(onBlock);
|
|
929
1022
|
unsubMempool = source.subscribeMempool(onMempool);
|
|
930
1023
|
};
|
|
@@ -959,6 +1052,14 @@ export const createTxTracker = (options) => {
|
|
|
959
1052
|
receiptPollGateWarned = false;
|
|
960
1053
|
// Reset withReceipts gate so a subsequent start() begins clean.
|
|
961
1054
|
withReceiptsGateWarned = false;
|
|
1055
|
+
// Drop the rehydration handle so a subsequent start() re-reads
|
|
1056
|
+
// the store (audit #1).
|
|
1057
|
+
rehydrationPromise = null;
|
|
1058
|
+
// NOTE: globalSubs is deliberately NOT reset. Long-lived analytics /
|
|
1059
|
+
// logging consumers that wire `subscribeAll` once at construction
|
|
1060
|
+
// continue receiving events across stop()/start() cycles. Locked
|
|
1061
|
+
// in by tracker.test.ts:'subscribeAll callbacks survive
|
|
1062
|
+
// stop()/start() cycle (audit #8 lock-in)'.
|
|
962
1063
|
};
|
|
963
1064
|
// Eager lifecycle: subscribe immediately on construction. Lazy
|
|
964
1065
|
// waits for the first track/getStatus call. The capability probe
|
|
@@ -970,6 +1071,7 @@ export const createTxTracker = (options) => {
|
|
|
970
1071
|
const trackerSurface = {
|
|
971
1072
|
start,
|
|
972
1073
|
stop,
|
|
1074
|
+
ready: () => rehydrationPromise ?? Promise.resolve(),
|
|
973
1075
|
getTxStatus: (hash) => {
|
|
974
1076
|
const record = tracked.get(hash);
|
|
975
1077
|
return record ? record.status : null;
|
package/dist/tracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../src/tracker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@valve-tech/tx-tracker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Per-tx state machine for EVM chains: emits neutral observations (`seen-in-mempool`, `seen-in-block`, `replaced-by`, `vanished-from-block`, `unseen-for-N-blocks`, etc.) so wallet UIs, indexers, and relays can write their own interpretations on top. Three consumption shapes (callback, async iterator, snapshot) over one push-based core. Per-method capability detection — works on HTTP, WS, both, or neither. Part of the valve-tech/evm-toolkit synchronized release line — implementation lands in subsequent 0.3.x releases per docs/tx-tracker-spec.md.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://github.com/valve-tech/evm-toolkit/tree/main/packages/tx-tracker#readme",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"prepare": "yarn build"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@valve-tech/chain-source": "^0.
|
|
52
|
+
"@valve-tech/chain-source": "^0.11.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"viem": "^2.0.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tx-tracker-integration
|
|
3
|
-
description: Integrate `@valve-tech/tx-tracker` into a wallet UI, indexer, or relay. Use when the user wants to "track this transaction," "watch tx hash," "know when my tx confirms," "detect stuck transactions," "watch for replaced txs," "follow this address's txs," or asks about reorg / replacement / dropped-tx detection on EVM. Also use when seeing imports from `@valve-tech/tx-tracker` and the user asks for help with `createTxTracker`, `track`, `subscribe`, `getTxStatus`, `trackFromAddress` / `trackToAddress` / `trackPredicate`, `TxEvent`, `TxTrackerStore`, `createInMemoryStore`, `lostSignalPolicy`, or capability disclosure (`subscription` / `block-poll` / `mempool-snapshot` / `receipt-poll` event sources). Also applies when the user asks how to compose tx-tracker with `@valve-tech/gas-oracle` via a shared `ChainSource`.
|
|
3
|
+
description: Integrate `@valve-tech/tx-tracker` into a wallet UI, indexer, or relay. Use when the user wants to "track this transaction," "watch tx hash," "know when my tx confirms," "detect stuck transactions," "watch for replaced txs," "follow this address's txs," or asks about reorg / replacement / dropped-tx detection on EVM. Also use when seeing imports from `@valve-tech/tx-tracker` and the user asks for help with `createTxTracker`, `track`, `subscribe`, `getTxStatus`, `trackFromAddress` / `trackToAddress` / `trackPredicate`, `TxEvent`, `TxTrackerStore`, `createInMemoryStore`, `lostSignalPolicy`, or capability disclosure (`subscription` / `block-poll` / `mempool-snapshot` / `receipt-poll` event sources). Also applies when the user asks how to compose tx-tracker with `@valve-tech/gas-oracle` via a shared `ChainSource`. Skip when the user only wants gas-tier math without per-tx state (delegate to gas-oracle-integration), only wants the raw block/mempool stream with no per-tx logic (delegate to chain-source-integration), or wants a React UI strip for in-flight txs (delegate to tx-flight-react-integration — that package wraps tx-tracker for React consumers).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Integrating `@valve-tech/tx-tracker`
|