Skip to content

@subsquid/ponder 0.16.8-sqd.1

Choose a tag to compare

@dzhelezov dzhelezov released this 10 Jul 15:11
fcca962

@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)

  • accessList correctness — store NULL, never a fabricated []. Some Portal datasets
    (e.g. arbitrum, avalanche) don't carry the access_list column. The transform previously
    filled an empty [] for those rows; it now stores SQL NULL, 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/receipts counts and an rpc_fallback count —
    and closes with served entirely by the SQD Portal (0 JSON-RPC for history) exactly when
    rpc_fallback is 0 (otherwise N block range(s) fell back to JSON-RPC). The claim is scoped to
    the historical sync data plane; user-land readContract still uses your configured RPC.
  • Actionable persistent-throttle error instead of an unhandledRejection crash (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): the accessList honest-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/receipts counts and an rpc_fallback count, with a 0 JSON-RPC for history
    clause gated on rpcFallback === 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 the 0.16.6/0.16.7
    patches (sha256 ddd12dd5…, same 10/10 files); it applies cleanly (zero rejects), builds, and
    passes the full Portal suite on ponder@0.16.8. 0.16.7 → 0.16.8 is a realtime-only upstream
    change — it adds isAsyncExecutionChain (chainId 143/10143) in sync-realtime/index.ts +
    utils/finality.ts so async-execution chains can surface blocks before logsBloom is
    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 across ponder@0.15.17, ponder@0.16.6, ponder@0.16.7, and ponder@0.16.8
    (scripts/sync-upstream.sh <ver> --test) — grown from 302 at the 0.16.7-sqd.1 cut 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 to 0.16.6/0.16.7) plus the full suite, as for 0.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 across 0.15.17 – 0.16.8.