Skip to main content
PharosPHAROS

Blacklist Tracker Changelog

Full version history of Blacklist Tracker methodology decisions, from v1.0 to v3.1.

Jump to Version

Swipe to jump

Latest Version

v3.1Feb 25, 2026Reconstructed

API-error-aware sync cursor protection

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

Impact Snapshot

  • EVM log fetching differentiates API failures (`null`) from valid empty responses (`[]`)
  • On API failure, sync state is held and retried on the next cycle instead of advancing
  • Metadata now reports `apiErrors` for operational observability
v3.1Feb 25, 2026Reconstructed

API-error-aware sync cursor protection

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

  • EVM log fetching differentiates API failures (`null`) from valid empty responses (`[]`)
  • On API failure, sync state is held and retried on the next cycle instead of advancing
  • Metadata now reports `apiErrors` for operational observability
Details

Impact Notes

  • EVM log fetching differentiates API failures (`null`) from valid empty responses (`[]`)
  • On API failure, sync state is held and retried on the next cycle instead of advancing
  • Metadata now reports `apiErrors` for operational observability
Reconstructed from git commit history.1 commit
  • d40060a
v3.0Feb 25, 2026Reconstructed

Indexer-lag safety margins for cursor advancement

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

  • EVM no-event advancement now uses `head - safetyMargin` instead of raw head
  • Tron no-event advancement now uses `now - 15m` instead of wall-clock `now`
  • Reduces permanent event loss when explorer indexing lags chain tip
Details

Impact Notes

  • EVM no-event advancement now uses `head - safetyMargin` instead of raw head
  • Tron no-event advancement now uses `now - 15m` instead of wall-clock `now`
  • Reduces permanent event loss when explorer indexing lags chain tip
Reconstructed from git commit history.1 commit
  • e6de7eb
v2.2Feb 18, 2026Reconstructed

Precision and integrity hardening

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

  • Token amounts switched to BigInt-safe decimal conversion to avoid large-value precision loss
  • Malformed EVM logs (invalid block/timestamp) are discarded instead of being inserted
  • Sync now emits structured run metadata (`itemCount`, `contractsSkipped`, budget usage)
Details

Impact Notes

  • Token amounts switched to BigInt-safe decimal conversion to avoid large-value precision loss
  • Malformed EVM logs (invalid block/timestamp) are discarded instead of being inserted
  • Sync now emits structured run metadata (`itemCount`, `contractsSkipped`, budget usage)
Reconstructed from git commit history.3 commits
  • c6c1391
  • 7bc5361
  • e950f76
v2.1Feb 18, 2026Reconstructed

Pre-block balance sampling and zero-amount recovery

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

  • Balance enrichment samples `blockNumber - 1` for blacklist, unblacklist, and destroy
  • Backfill now re-attempts rows with `amount = 0` for blacklist events
  • Reduces same-block ordering artifacts that previously produced false zeros
Details

Impact Notes

  • Balance enrichment samples `blockNumber - 1` for blacklist, unblacklist, and destroy
  • Backfill now re-attempts rows with `amount = 0` for blacklist events
  • Reduces same-block ordering artifacts that previously produced false zeros
Reconstructed from git commit history.1 commit
  • d7e0ad4
v2.0Feb 12, 2026Reconstructed

L2 balance reliability and budgeted full-scan loop

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

  • Introduced shared per-run subrequest budgeting with least-synced-first config ordering
  • L2 balance sourcing evolved from Etherscan-only to RPC/dRPC archive-aware historical balance fetches
  • Backfill moved ahead of incremental scan and EVM head caching reduced redundant rescans
Details

Impact Notes

  • Introduced shared per-run subrequest budgeting with least-synced-first config ordering
  • L2 balance sourcing evolved from Etherscan-only to RPC/dRPC archive-aware historical balance fetches
  • Backfill moved ahead of incremental scan and EVM head caching reduced redundant rescans
Reconstructed from git commit history.6 commits
  • 58c4f05
  • 77dad70
  • 28a7ead
  • add68dc
  • fb7e7d6
  • 7d9e677
v1.2Feb 11, 2026Reconstructed

Coverage expansion: USDT0 and gold contract families

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

  • Added USDT0 event signatures and indexed-address parsing for upgraded Tether contracts
  • Added PAXG and XAUT contract/event support with contract-specific mappings
  • Per-contract decimals and Tron `0x -> 41` address normalization improved amount fidelity
Details

Impact Notes

  • Added USDT0 event signatures and indexed-address parsing for upgraded Tether contracts
  • Added PAXG and XAUT contract/event support with contract-specific mappings
  • Per-contract decimals and Tron `0x -> 41` address normalization improved amount fidelity
Reconstructed from git commit history.5 commits
  • b257569
  • 9281531
  • eeb92e9
  • 2fd5065
  • 29a4759
v1.1Feb 11, 2026Reconstructed

Ingestion-time enrichment and backfill foundation

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

  • Blacklist/unblacklist rows are enriched with token balances before insert
  • Backfill pipeline introduced for historical rows missing amount values
  • Set groundwork for later destroy-event amount recovery hardening
Details

Impact Notes

  • Blacklist/unblacklist rows are enriched with token balances before insert
  • Backfill pipeline introduced for historical rows missing amount values
  • Set groundwork for later destroy-event amount recovery hardening
Reconstructed from git commit history.1 commit
  • 1dec7aa
v1.0Feb 9, 2026Reconstructed

Initial Blacklist Tracker release

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

  • Initial incremental EVM + Tron event sync for major fiat-backed stablecoins
  • Introduced `blacklist_events` and `blacklist_sync_state` tables
  • Exposed tracker data through `/api/blacklist` and frontend event views
Details

Impact Notes

  • Initial incremental EVM + Tron event sync for major fiat-backed stablecoins
  • Introduced `blacklist_events` and `blacklist_sync_state` tables
  • Exposed tracker data through `/api/blacklist` and frontend event views
Reconstructed from git commit history.4 commits
  • 093c11e
  • ea9dbab
  • 5158601
  • ac0d823