@subsquid/ponder 0.16.8-sqd.1
@subsquid/ponder@0.16.8-sqd.1
ponder@0.16.8 + the SQD Portal backfill layer, drop-in (bin stays ponder). This is the
first cut on ponder@0.16.8 and the newest ponder version in the fork, so it installs by
default. It carries the same Portal layer as 0.16.7-sqd.1 — the full invariant-first
re-architecture and correctness wave — grafted onto ponder@0.16.8, plus the fixes below that
landed since the 0.16.7-sqd.1 cut.
Install: npm i @subsquid/ponder, or pin exact: npm i @subsquid/ponder@0.16.8-sqd.1.
Highlights (new since 0.16.7-sqd.1)
accessListcorrectness — store NULL, never a fabricated[]. Some Portal datasets
(e.g. arbitrum, avalanche) don't carry theaccess_listcolumn. The transform previously
filled an empty[]for those rows; it now stores SQLNULL, byte-matching what an RPC node
reports for a transaction whose access list is genuinely absent — and the field is gated to the
exact EIP typed-transaction set{1,2,3,4}rather than "type ≥ 1", so a legacy tx is never
handed a spurious access list (#110, #111).- Positive Portal confirmation at default log level (closes #115). A backfill that routes
through the Portal now emits an INFO banner —Portal backfill active for <chain>: <url>— a
periodic progress ticker (blocks scanned / discovery chunks), and a completion line, and the
upstream "fetching backfill data" line is reworded to name SQD Portal on the Portal path. You
can now confirm from default logs that the Portal — not an RPC — served the history (#119). - Completion line reports Portal data-plane provenance (#131). The per-chain completion line
now carries the data-plane totals —logs/txs/receiptscounts and anrpc_fallbackcount —
and closes withserved entirely by the SQD Portal (0 JSON-RPC for history)exactly when
rpc_fallbackis0(otherwiseN block range(s) fell back to JSON-RPC). The claim is scoped to
the historical sync data plane; user-landreadContractstill uses your configured RPC. - Actionable persistent-throttle error instead of an
unhandledRejectioncrash (for #116).
A full backfill throttled (HTTP 429) by the free public Portal past its retry budget now
surfaces a clear, actionable error and holds a prefetch invariant lock, rather than exhausting
retries and crashing via an unhandled promise rejection (#118).
Portal layer
- Transform (
portal-transform.ts): theaccessListhonest-NULL fix (#110/#111) — see the
Highlights above. - Observability (
portal.ts,portal-metrics.ts): the default-level Portal banner, progress
ticker, and completion line (#119); the completion line reports data-plane provenance —
logs/txs/receiptscounts and anrpc_fallbackcount, with a0 JSON-RPC for history
clause gated onrpcFallback === 0(#131). - HTTP client (
portal-client.ts): persistent-throttle actionable error + prefetch lock (#118). - Wiring patch:
portal/wiring/0.16.8.patch. Byte-identical to the0.16.6/0.16.7
patches (sha256ddd12dd5…, same 10/10 files); it applies cleanly (zero rejects), builds, and
passes the full Portal suite onponder@0.16.8.0.16.7 → 0.16.8is a realtime-only upstream
change — it addsisAsyncExecutionChain(chainId 143/10143) insync-realtime/index.ts+
utils/finality.tsso async-execution chains can surface blocks beforelogsBloomis
execution-ready. Neither file is on the graft surface (sync-historical,runtime/historical,
sync-store,rpc,sync), so the seam is untouched and the 81 Portal realtime tests pass
unchanged.
Fixes
Everything in 0.16.7-sqd.1 (the full phantom-coverage / stream-realtime+reorg / factory-and-
account-source / bounded-warmup / HTTP-client correctness wave), plus the three items above:
accessList honest-NULL (#110, #111), default-level Portal logging (#119, closes #115), the
persistent-throttle actionable error + prefetch lock (#118, for #116), and the completion line's
Portal data-plane provenance (#131).
Compatibility
- Built + tested against
ponder@0.16.8. The full Portal property/regression suite is green:
312/312 acrossponder@0.15.17,ponder@0.16.6,ponder@0.16.7, andponder@0.16.8
(scripts/sync-upstream.sh <ver> --test) — grown from 302 at the0.16.7-sqd.1cut as the
correctness wave added coverage (incl. the #131 completion-line provenance tests). - No fresh RPC byte-diff on
0.16.8; compat rests on seam-identity (the wiring patch is
byte-identical to0.16.6/0.16.7) plus the full suite, as for0.16.7/0.15.17. - Seam verified against:
0.16.8,0.16.7,0.16.6,0.15.17(compat.tested). The seam is
stable and identical in shape across0.15.17 – 0.16.8.