Skip to main content
Pharos

Blacklist Tracker Changelog

Full version history of Blacklist Tracker methodology decisions, from v1.0 to v4.6.

What this controls

Blacklist Tracker Changelog version history

Use this changelog to trace how Pharos changed the related scoring, data-source, threshold, or interpretation rules over time. Entries record the contract active at each release; archived rules are retained so historical charts and citations can be read against the rules active at the time.

Latest version

v4.6Oct 20, 2026

Event-position amounts and proven mirror suppression

Historical freeze, release and wipe quantities require exact event-position evidence; preceding-block balances cannot masquerade as emitted amounts.

Impact snapshot

  • Amountless EVM actions remain unavailable across ingestion, scheduled repair, admin recovery and bounded replay without exact evidence. Earlier transfers or wipes in the same block can invalidate preceding-block balance approximations.
  • Receipt destroy amounts remain usable only when unambiguous for the affected account. Unbound burn Transfers and ambiguous wipes do not provide event quantities.
  • Deterministic EVM freeze/unfreeze event_time_unproven amounts are permanently unavailable across ingestion, scheduled repair and admin recovery, rather than occupying retry queues indefinitely. Destroy-receipt failures remain retryable; current-balance recovery has its separate evidence contract.
  • EURC mirror suppression requires emitted event-time zero proof, never historical, current or legacy-derived zero. Existing operator-evidence guards remain; previously suppressed history is not automatically restored.
v4.6Oct 20, 2026

Event-position amounts and proven mirror suppression

Historical freeze, release and wipe quantities require exact event-position evidence; preceding-block balances cannot masquerade as emitted amounts.

  • Amountless EVM actions remain unavailable across ingestion, scheduled repair, admin recovery and bounded replay without exact evidence. Earlier transfers or wipes in the same block can invalidate preceding-block balance approximations.
  • Receipt destroy amounts remain usable only when unambiguous for the affected account. Unbound burn Transfers and ambiguous wipes do not provide event quantities.
  • Deterministic EVM freeze/unfreeze event_time_unproven amounts are permanently unavailable across ingestion, scheduled repair and admin recovery, rather than occupying retry queues indefinitely. Destroy-receipt failures remain retryable; current-balance recovery has its separate evidence contract.
  • EURC mirror suppression requires emitted event-time zero proof, never historical, current or legacy-derived zero. Existing operator-evidence guards remain; previously suppressed history is not automatically restored.
Details

Impact notes

  • Amountless EVM actions remain unavailable across ingestion, scheduled repair, admin recovery and bounded replay without exact evidence. Earlier transfers or wipes in the same block can invalidate preceding-block balance approximations.
  • Receipt destroy amounts remain usable only when unambiguous for the affected account. Unbound burn Transfers and ambiguous wipes do not provide event quantities.
  • Deterministic EVM freeze/unfreeze event_time_unproven amounts are permanently unavailable across ingestion, scheduled repair and admin recovery, rather than occupying retry queues indefinitely. Destroy-receipt failures remain retryable; current-balance recovery has its separate evidence contract.
  • EURC mirror suppression requires emitted event-time zero proof, never historical, current or legacy-derived zero. Existing operator-evidence guards remain; previously suppressed history is not automatically restored.
  • Current-balance snapshots remain independent. No historical numeric backfill or Safety evaluator movement is implied. Planned release date is 2026-10-20.
Open full version archive
Commit provenance not recorded
    v4.5Oct 19, 2026

    External-backing denominator for Upstream exposure

    Excludes the coin's own token and its own wrappers/savings shares from both sides of the strict >50% Upstream reserve test. Self legs are not external backing; the test now aligns with the reserve card's external-asset look-through.

    • After splitting LP/basket rows by constituent value, remove self legs from both the qualifying numerator and the denominator. Measure issuer/custodian exposure against the remaining external backing, rather than allowing own-token legs to dilute that exposure.
    • This replaces v4.4's denominator-only treatment of self legs. Reserve-card valuation already looks through crvUSD YieldBasis LPs to their external BTC backing; FreezeWatch now uses the same external-backing scope.
    • The threshold remains strictly greater than 50%. CDP/lending books remain debt-weighted; other reserve-backed tokens use published composition. Qualifying collateral counts categorically when its exposure terminates in issuer/custodian control; DAO-only controls remain excluded, custodied commodities count, different same-issuer tokens retain their own status, and unmeasurable reserves never establish Upstream.
    • Five active coins change from No to Upstream: crvUSD (crvusd-curve), DOLA (dola-inverse-finance), sDOLA (sdola-inverse-finance), reUSD (reusd-resupply) and sreUSD (sreusd-resupply). The changes include the newly qualifying external backing and its downstream parent/collateral claims.
    Details

    Impact notes

    • After splitting LP/basket rows by constituent value, remove self legs from both the qualifying numerator and the denominator. Measure issuer/custodian exposure against the remaining external backing, rather than allowing own-token legs to dilute that exposure.
    • This replaces v4.4's denominator-only treatment of self legs. Reserve-card valuation already looks through crvUSD YieldBasis LPs to their external BTC backing; FreezeWatch now uses the same external-backing scope.
    • The threshold remains strictly greater than 50%. CDP/lending books remain debt-weighted; other reserve-backed tokens use published composition. Qualifying collateral counts categorically when its exposure terminates in issuer/custodian control; DAO-only controls remain excluded, custodied commodities count, different same-issuer tokens retain their own status, and unmeasurable reserves never establish Upstream.
    • Five active coins change from No to Upstream: crvUSD (crvusd-curve), DOLA (dola-inverse-finance), sDOLA (sdola-inverse-finance), reUSD (reusd-resupply) and sreUSD (sreusd-resupply). The changes include the newly qualifying external backing and its downstream parent/collateral claims.
    • Across 396 active coins, the buckets move from 212 Yes / 56 Upstream / 109 Possible / 19 No to 212 Yes / 61 Upstream / 109 Possible / 14 No. No direct Yes or Possible classification changes.
    Open full version archive
    Commit provenance not recorded

      Earlier versions

      Compact summaries retain historical citation targets. Open a version archive for its full evidence and commit provenance.

      1. v4.4 · Evidence-led FreezeWatch exposure decision procedure

        Oct 19, 2026

        Codifies the ordered Yes, Possible, Upstream and No decision procedure and applies it in a full-dataset FreezeWatch re-review, separating current holder-targeted powers from mutable direct controls and measured issuer/custodian exposure.

      2. v4.3 · Canonical freeze identities and evidence-qualified totals

        Oct 10, 2026

        FreezeWatch counts canonical accounts and logs once, separates caught-up coverage from bounded scan progress, and preserves unavailable USD valuations rather than reporting them as zero. Historical amount repair requires event-time quote attribution; current prices cannot value an old freeze event.

      3. v4.2 · Confirmed Tron transaction ordering

        Sep 29, 2026

        Resolves same-block Tron state transitions using confirmed block transaction positions, while retaining explicit uncertainty when chain evidence is unavailable.

      4. v4.1 · Execution-order state and durable malformed-log quarantine

        Sep 27, 2026

        Orders EVM state transitions by block-global log position and explicitly withholds ambiguous Tron state. Malformed required fields receive three scan observations before durable quarantine.

      5. v4.0 · Canonical reviewed exposure status

        Aug 11, 2026

        Makes the sourced blacklistability review the sole product-level FreezeWatch status authority, removing the parallel authored override and runtime inference path without changing current classifications.

      6. v3.9973 · Majority-threshold upstream exposure

        Aug 10, 2026

        Changes FreezeWatch upstream classification from any matched reserve path to a strict majority rule: reserve exposure must exceed 50% and may aggregate Yes, Upstream, and Possible upstream assets or rails.

      7. v3.9972 · Actionable data-quality warning scope

        Jul 1, 2026

        Scopes FreezeWatch data-quality warnings to actionable degraded conditions instead of treating permanent historical limitations, deferred coverage inventory, or old resolved ledger snapshots as stale failures.

      8. v3.9971 · Legacy derived-zero retry ceiling

        Jun 23, 2026

        Bounds historical amount recovery for legacy derived-zero EVM rows so unrecoverable rows stop consuming provider backfill budget every sync-blacklist run.

      9. v3.997 · Same-cycle freeze snapshot capture

        Jun 6, 2026

        Captures freeze-ledger snapshots for blacklist events seen in the same cron batch even when a later unblacklist event is also ingested.

      10. v3.996 · Fresh price-cache valuation gate

        Jun 6, 2026

        Requires non-USD blacklist ledger USD conversions to use a fresh price-cache row instead of silently reusing stale cached prices.

      11. v3.995 · Full unfreezable set re-audit

        May 25, 2026

        Re-audits every active stablecoin that resolved to `No` after the four-status FreezeWatch migration, correcting direct freeze, possible-control, and upstream reserve/redemption exposure.

      12. v3.994 · Four-status FreezeWatch exposure model

        May 24, 2026

        Removes the Dilutable bucket from FreezeWatch so the surface reports holder-freeze, upstream-block, possible-control, and no-resolved-freeze exposure only. Privileged mint authority remains available through the separate Mint Authority review.

      13. v3.993 · FreezeWatch rebrand and primary-nav promotion

        May 12, 2026

        Promotes the Blacklist Tracker surface to a primary navigation hero under the FreezeWatch name, adding three issuer-sovereignty visualizations (Freezable Supply Meter, Intervention Seismograph, Sovereignty Lattice) above the existing intervention ledger. Event ingestion, status resolution, and the underlying coverage manifest are unchanged.

      14. v3.992 · Public contract clarification

        May 11, 2026

        Clarifies the public blacklist contract without changing event ingestion: `/blacklist` status charts use the five-status model, CSV export covers the currently loaded table page, `/api/blacklist-summary` distinguishes legacy active-state fields from tracked freeze-ledger fields, coverage counts are manifest-derived, and chain identifiers are documented as `chainId` response/join fields rather than the `chain` display-name filter.

      15. v3.991 · Public transparency and snapshot semantics

        May 5, 2026

        Clarifies public API artifacts, UI provenance, and freeze-ledger snapshot semantics without changing event ingestion. `/api/blacklist` integration examples now use uppercase tracker symbols, frozen totals are labeled as last-known successful snapshots, and Tron missing-balance behavior is documented as provider-missing rather than false zero.

      16. v3.99 · Same-run Tron ledger reconciliation

        Apr 21, 2026

        Reapplies the Tron freeze-ledger mirror after current-balance cache writes so newly ingested Tron blacklist rows resolve in the same `sync-blacklist` cycle, and aligns admin recovery guidance away from destructive sync resets for generic amount-gap warnings.

      17. v3.98 · USDA destroy-event correction

        Apr 20, 2026

        Narrows Avalon USDa event tracking to the two events its verified contract actually emits: AddedBlackList(address) and RemovedBlackList(address). USDa remains directly freezable and role-burnable, but it no longer subscribes to Tether's DestroyedBlackFunds(address,uint256) topic because the verified USDa ABI/source does not expose that event.

      18. v3.97 · Status amount-gap tolerance

        Apr 19, 2026

        Keeps isolated recent blacklist amount gaps below the incident threshold so a single unresolved provider/parser miss among thousands of events remains visible in diagnostics without degrading `/status` or `/admin` health.

      19. v3.96 · Gentle amount-gap recovery acceleration

        Apr 18, 2026

        Unblocks the EVM amount recovery lane by excluding Tron rows that are owned by the separate Tron ledger mirror, and raises the per-run recovery cap from 50 to 100 rows while staying inside the 6-hour sync cadence, D1 batch helper, rate limiters, and 900-subrequest run budget.

      20. v3.95 · Tier-1 coverage expansion

        Apr 17, 2026

        Adds eleven new tracked stablecoins across four new event families and six existing families. TUSD joins through a new TRUEUSD_EVENT_FAMILY that discriminates blacklist vs unblacklist via the bool at data slot 0 through the new BlacklistEventDef.eventTypeFromDataBoolIndex extension. JPYC adds CENTRE_BLOCKLISTED_FAMILY (Blocklisted/UnBlocklisted), FRXUSD adds FRAX_FREEZE_FAMILY (AccountFrozen/AccountThawed with non-indexed address), EURCV adds SOCGEN_FREEZE_FAMILY (batch AddressesFrozen/AddressesUnFrozen), NUSD adds NEUTRL_DENYLIST_FAMILY, and FIDD adds FIDELITY_RESTRICTION_FAMILY (TransferRestrictionImposed/Removed). USDA joins through legacy AddedBlackList/RemovedBlackList signatures, while USAT, AEUR, XUSD, and XAUM reuse existing families. Several BSC/Avalanche/Base deployments remain deferred pending block-explorer API access, and apxUSD is intentionally deferred because the verified ABI exposes no direction discriminator.

      21. v3.94 · Correctness + efficiency + minor coverage gaps

        Apr 17, 2026

        Worker correctness fixes (Gnosis dRPC 9k-block scan cap, dual-index-freeze family split from WLFI destroy events, TronGrid failure propagation to the circuit breaker, EURC mirror-zero rows locked to permanently_unavailable, address[] expansion capped, Tron maxBlock cursor init), five D1 migrations (derived-row reset, sync_state dedup, EURC mirror-zero stamp, blacklist_events index adjustments, amount-status backfill), summary endpoint rewritten to aggregate in SQL with post-fetch counters inlined, frontend polish (data-driven stats strip, amount-status badge, per-coin stat border, CSV column split, page-clamp + filter-reset coverage), and minor chain-coverage additions (Polygon USDQ, Arbitrum AID, Polygon TGBP; Base AID plus Base/BSC TGBP remain deferred).

      22. v3.93 · Backlog-safe scanner guardrails

        Apr 16, 2026

        Keeps EVM sync cursors pinned when the subrequest budget is exhausted before every configured event topic is scanned, marks budget-exhausted runs as degraded, and lowers the duplicate-row check chunk below D1's practical SQL-variable ceiling.

      23. v3.92 · Amount attribution: Tron ledger mirror + derived-zero recovery

        Apr 16, 2026

        Introduces current_balance_snapshot amount source for Tron freeze-ledger mirroring, widens backfill to include legacy derived-zero EVM rows, and adds provenance badge for snapshot-sourced amounts.

      24. v3.91 · Coverage quality + USDP addition

        Apr 16, 2026

        Extends wlfi-freeze family with FrozenAccountDrained/FrozenFundsReallocated destroy events (USD1/U/FDUSD/EURI), adds USDP Paxos coverage on Ethereum, and corrects Arbitrum FDUSD/AUSD/BUIDL startBlocks.

      25. v3.9 · Direct EVM coverage wave

        Apr 15, 2026

        Adds direct EVM blacklist/freeze coverage for FDUSD, BRZ, AUSD, MNEE, EURI, USDQ, USDO, USDX, AID, TGBP, and EURC, plus BUIDL seize-only tracking. Introduces indexed amount-topic parsing, explicit data-slot extraction for omnibus seize events, EURC mirror-zero suppression, and expanded non-USD valuation.

      26. v3.8 · First-wave CeFi coverage expansion

        Apr 15, 2026

        Expands blacklist/freeze tracking to first-wave centralized issuers with verified event surfaces: USDG, RLUSD, U, USDtb, and A7A5. Adds batch address-array parsing and non-USD A7A5 price-cache valuation while keeping clawback, allowlist/KYC, and non-EVM surfaces out of this release.

      27. v3.7 · Balance recovery accuracy and provider resilience

        Apr 8, 2026

        Remediates 16 audit findings across the balance recovery pipeline, freeze-ledger cache, and aggregation layer. Eliminates silent wrong-data paths, adds Ethereum mainnet dRPC/chain-RPC fallback, and fixes gold stablecoin USD conversion in all enrichment paths.

      28. v3.6 · Freeze-ledger quarter attribution for the public chart

        Mar 27, 2026

        The public blacklist chart now buckets the persistent freeze ledger by blacklist quarter instead of summing raw event-time blacklist rows, so the quarterly bars explain the same tracked frozen total shown in the summary cards.

      29. v3.5 · Persistent freeze-ledger snapshots and bootstrap reconciliation

        Mar 27, 2026

        The public frozen-total summary now uses a persistent freeze ledger instead of treating snapshot balances as a live current-state cache. Historical ETH/USDC, ETH/USDT, and TRON/USDT freeze rows were reconciled from the kyc.rip / stables.rip bootstrap so seized-and-burned balances remain visible after later unblacklist or destroy actions.

      30. v3.4 · Active frozen-total ledger and Tron current-balance separation

        Mar 27, 2026

        Blacklist summary now distinguishes event-time amounts from active frozen balances, adds a dedicated current-balance cache for active blacklist records, and stops treating legacy Tron derived event amounts as authoritative history.

      31. v3.3 · pyUSD and USD1 blacklist tracking coverage

        Mar 24, 2026

        Extended blacklist tracker to cover pyUSD (PayPal/Paxos) on Ethereum and Arbitrum, and USD1 (World Liberty Financial) on Ethereum, BSC, and Tron. Introduced configurable address topic index for two-indexed-address events.

      32. v3.2 · Provenance-aware rows and explicit amount semantics

        Mar 24, 2026

        Blacklist rows now persist emitting-contract provenance and explicit native/USD amount status fields so reprocessing and public consumers no longer rely on implicit inference.

      33. v3.1 · API-error-aware sync cursor protection

        Feb 25, 2026

        EVM scanning now distinguishes API failure from genuine no-event ranges so cursors do not advance on unreliable reads.

      34. v3.0 · Indexer-lag safety margins for cursor advancement

        Feb 25, 2026

        Head advancement added explicit safety buffers to prevent permanently skipping late-indexed explorer events.

      35. v2.2 · Precision and integrity hardening

        Feb 18, 2026

        Amount math and log parsing were hardened to reduce silent corruption and improve sync telemetry.

      36. v2.1 · Pre-block balance sampling and zero-amount recovery

        Feb 18, 2026

        Balance attribution moved to pre-event block semantics, and backfill began explicitly reprocessing suspicious zero blacklist amounts.

      37. v2.0 · L2 balance reliability and budgeted full-scan loop

        Feb 12, 2026

        Major tracking architecture shift for L2 correctness and deterministic scan coverage under strict subrequest budgets.

      38. v1.2 · Coverage expansion: USDT0 and gold contract families

        Feb 11, 2026

        Expanded event coverage beyond legacy USDT/USDC patterns and fixed multiple cross-chain parsing mismatches.

      39. v1.1 · Ingestion-time enrichment and backfill foundation

        Feb 11, 2026

        Blacklist rows began storing balance context during ingestion, with a companion path for retroactive recovery of missing amounts.

      40. v1.0 · Initial Blacklist Tracker release

        Feb 9, 2026

        Launched multi-chain blacklist event ingestion, persistence schema, public API, and dashboard surface.