Skip to main content
Pharos
PHAROS

Mint/Burn Flow Changelog

Full version history of Mint/Burn Flow methodology decisions, from v1.0 to v5.1.

Latest Version

v5.1Apr 8, 2026

Canonical-chain mint/burn scope for native issuance tracking

Mint/burn coverage now follows each asset's configured issuance chain instead of assuming Ethereum-only scope, with USDai switched to native Arbitrum issuance/redemption tracking and stale non-canonical rows excluded from public aggregates.

Impact Snapshot

  • USDai mint/burn tracking now runs on Arbitrum as the canonical native issuance chain instead of Ethereum bridge-transfer noise
  • Aggregate and per-coin APIs now read only configured `(stablecoinId, chainId)` pairs so stale historical rows on non-canonical chains do not contaminate public flow metrics
  • Cron metadata, coverage helpers, status reconciliation, daily digest, and DEWS mint/burn inputs now honor chain-aware mint/burn scope
  • Admin backfill auto-selection and explicit config replay now work across the configured issuance-chain set instead of Ethereum-only
v5.1Apr 8, 2026

Canonical-chain mint/burn scope for native issuance tracking

Mint/burn coverage now follows each asset's configured issuance chain instead of assuming Ethereum-only scope, with USDai switched to native Arbitrum issuance/redemption tracking and stale non-canonical rows excluded from public aggregates.

  • USDai mint/burn tracking now runs on Arbitrum as the canonical native issuance chain instead of Ethereum bridge-transfer noise
  • Aggregate and per-coin APIs now read only configured `(stablecoinId, chainId)` pairs so stale historical rows on non-canonical chains do not contaminate public flow metrics
  • Cron metadata, coverage helpers, status reconciliation, daily digest, and DEWS mint/burn inputs now honor chain-aware mint/burn scope
  • Admin backfill auto-selection and explicit config replay now work across the configured issuance-chain set instead of Ethereum-only
Details

Impact Notes

  • USDai mint/burn tracking now runs on Arbitrum as the canonical native issuance chain instead of Ethereum bridge-transfer noise
  • Aggregate and per-coin APIs now read only configured `(stablecoinId, chainId)` pairs so stale historical rows on non-canonical chains do not contaminate public flow metrics
  • Cron metadata, coverage helpers, status reconciliation, daily digest, and DEWS mint/burn inputs now honor chain-aware mint/burn scope
  • Admin backfill auto-selection and explicit config replay now work across the configured issuance-chain set instead of Ethereum-only
0 commits
    v5.0Apr 8, 2026

    Bridge-transfer flow exclusion for omnichain tokens

    Bridge-aware classification now excludes bridge-transfer mints as well as burns, starting with USDai's LayerZero OFT path, and replay/backfill runs can repair previously inserted rows.

    • LayerZero OFT transfers now mark both the mint-side and burn-side event rows as `flowType='bridge_transfer'` so they drop out of counted economic-flow aggregates
    • USDai's Ethereum tracker now recognizes the documented USDai OAdapter / LayerZero packet flow instead of treating equal-sized bridge mints and burns as issuance activity
    • Bridge classification now runs after all parsed rows are assembled for the config chunk, so mint-side bridge rows are visible to the classifier
    • Replay and backfill persistence now updates `flow_type` on existing rows, allowing post-deploy repair of previously ingested bridge-transfer noise
    Details

    Impact Notes

    • LayerZero OFT transfers now mark both the mint-side and burn-side event rows as `flowType='bridge_transfer'` so they drop out of counted economic-flow aggregates
    • USDai's Ethereum tracker now recognizes the documented USDai OAdapter / LayerZero packet flow instead of treating equal-sized bridge mints and burns as issuance activity
    • Bridge classification now runs after all parsed rows are assembled for the config chunk, so mint-side bridge rows are visible to the classifier
    • Replay and backfill persistence now updates `flow_type` on existing rows, allowing post-deploy repair of previously ingested bridge-transfer noise
    0 commits
      v4.9Mar 24, 2026

      Deterministic repair loops and adapter provenance disclosures

      Mint/burn repair and coverage semantics were tightened through historical-first valuation repair, deterministic cleanup backlogs, aligned FTQ classification, and explicit adapter provenance on public coverage metadata.

      • Historical price repair now values events from event-day `supply_history` instead of current `price_cache` snapshots
      • NULL-price healing and atomic-roundtrip sweeping now use deterministic ordered backlog queries
      • The daily digest now shares the same report-card-cache FTQ classification semantics as `/api/mint-burn-flows`
      • Per-coin coverage now exposes `adapterKinds`, `startBlockSource`, and `startBlockConfidence` so blanket start-block defaults are visible in the API
      Details

      Impact Notes

      • Historical price repair now values events from event-day `supply_history` instead of current `price_cache` snapshots
      • NULL-price healing and atomic-roundtrip sweeping now use deterministic ordered backlog queries
      • The daily digest now shares the same report-card-cache FTQ classification semantics as `/api/mint-burn-flows`
      • Per-coin coverage now exposes `adapterKinds`, `startBlockSource`, and `startBlockConfidence` so blanket start-block defaults are visible in the API
      0 commits
        v4.8Mar 24, 2026

        Ethereum coverage wave for long-tail mint/burn tracking

        Mint/burn flow coverage expanded materially by restoring and adding long-tail Ethereum ERC-20 configs that can be tracked with the standard zero-address Transfer path.

        • Added 40 additional Ethereum transfer-based configs for previously uncovered tracked assets
        • Extended flow coverage now includes more long-tail fiat, non-USD, commodity, and yield-bearing assets where shared metadata already exposes an Ethereum contract
        • Coverage scope increased from 84 contract configs / 83 stablecoin IDs to 124 contract configs / 123 stablecoin IDs while preserving the existing critical-lane set
        Details

        Impact Notes

        • Added 40 additional Ethereum transfer-based configs for previously uncovered tracked assets
        • Extended flow coverage now includes more long-tail fiat, non-USD, commodity, and yield-bearing assets where shared metadata already exposes an Ethereum contract
        • Coverage scope increased from 84 contract configs / 83 stablecoin IDs to 124 contract configs / 123 stablecoin IDs while preserving the existing critical-lane set
        0 commits
          v4.7Mar 10, 2026

          Closed-day baseline, fixed aggregate 24h semantics, and coverage disclosures

          Pressure Shift now compares live 24-hour flows against trailing fully closed daily baselines, aggregate API 24h fields are fixed regardless of chart window, and the product now exposes Ethereum-only scope plus coverage/freshness metadata.

          • Pressure Shift baseline now excludes the current UTC day and uses the last 30 fully closed daily buckets
          • Aggregate `/api/mint-burn-flows?hours=N` now keeps coin-level 24h fields fixed to the canonical 24h window while only the hourly series respects `hours`
          • Aggregate flow API now exposes `scope`, `sync`, `windowHours`, and per-coin `coverage` metadata
          • The `/flows` page now labels the feature as Ethereum-only and visually marks partial-history or lagging coverage states
          Details

          Impact Notes

          • Pressure Shift baseline now excludes the current UTC day and uses the last 30 fully closed daily buckets
          • Aggregate `/api/mint-burn-flows?hours=N` now keeps coin-level 24h fields fixed to the canonical 24h window while only the hourly series respects `hours`
          • Aggregate flow API now exposes `scope`, `sync`, `windowHours`, and per-coin `coverage` metadata
          • The `/flows` page now labels the feature as Ethereum-only and visually marks partial-history or lagging coverage states
          • Flow freshness headers now follow successful sync timestamps instead of latest event timestamps, avoiding false staleness during quiet periods
          1 commit
          • unreleased
          v4.6Mar 9, 2026

          Safe-frontier ingestion and counted event-history alignment

          Mint/burn ingestion now advances only to a shared safe coverage frontier under partial scans, and product event-history surfaces now default to counted economic-flow rows.

          • Partial event-definition coverage no longer advances sync state past uncovered log ranges
          • Missing block timestamps now cap advancement at the earliest unresolved block instead of silently skipping rows forever
          • The event API now exposes `flowType` and supports `scope=counted` for rows that participate in aggregates
          • Detail-page flow history now excludes bridge burns, review-required burns, and atomic roundtrips by default
          Details

          Impact Notes

          • Partial event-definition coverage no longer advances sync state past uncovered log ranges
          • Missing block timestamps now cap advancement at the earliest unresolved block instead of silently skipping rows forever
          • The event API now exposes `flowType` and supports `scope=counted` for rows that participate in aggregates
          • Detail-page flow history now excludes bridge burns, review-required burns, and atomic roundtrips by default
          • Unpriced event rows now render native token amounts instead of false dollar values
          • `minAmount` filtering is now strictly USD-only when `amountUsd` is available
          1 commit
          • unreleased
          v4.5Mar 9, 2026

          Data quality: noise filtering, auto-heal, and activity gating

          Improves flow data reliability by excluding flash-loan roundtrips from aggregation, auto-healing missing USD prices, and gating pressure shift for low-activity coins.

          • Transactions containing both mint and burn for the same token (flash loans, atomic arb) are now flagged as atomic_roundtrip and excluded from all flow aggregates
          • Events synced without USD price are now automatically backfilled within 48h by the sync cron
          • Coins with less than $50K absolute 24h flow now return NR instead of a potentially misleading pressure shift score
          • New observability counters in cron metadata: atomicRoundtripsDetected, nullPricesHealed
          Details

          Impact Notes

          • Transactions containing both mint and burn for the same token (flash loans, atomic arb) are now flagged as atomic_roundtrip and excluded from all flow aggregates
          • Events synced without USD price are now automatically backfilled within 48h by the sync cron
          • Coins with less than $50K absolute 24h flow now return NR instead of a potentially misleading pressure shift score
          • New observability counters in cron metadata: atomicRoundtripsDetected, nullPricesHealed
          1 commit
          • unreleased
          v4.4Mar 7, 2026Reconstructed

          Two-signal flow semantics and baseline-aware interpretation

          Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift while preserving the underlying formula.

          • Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift
          • API now exposes canonical `pressureShiftScore` and interpretation fields while retaining `flowIntensity` as a deprecated alias
          • Frontend printer and shredder visuals now key off actual net flow direction instead of score sign
          • Methodology and product copy now distinguish current direction from pressure-versus-baseline context
          Details

          Impact Notes

          • Per-coin flow UI now separates raw 24h net flow from baseline-relative pressure shift
          • API now exposes canonical `pressureShiftScore` and interpretation fields while retaining `flowIntensity` as a deprecated alias
          • Frontend printer and shredder visuals now key off actual net flow direction instead of score sign
          • Methodology and product copy now distinguish current direction from pressure-versus-baseline context
          Reconstructed from git commit history.1 commit
          • unreleased
          v4.3Mar 4, 2026Reconstructed

          NR gating for no-activity flow windows

          Coins with no mint/burn activity in the active 24h window now publish NR flow intensity and are excluded from gauge weighting.

          • Removed synthetic neutral intensity fallback for sparse no-activity windows
          • No-activity windows now return `flowIntensity = null` (NR) instead of `0`
          • Bank Run Gauge now excludes those NR windows from the market-cap-weighted composite
          • Frontend flow-intensity UI now displays NR explicitly for null values
          Details

          Impact Notes

          • Removed synthetic neutral intensity fallback for sparse no-activity windows
          • No-activity windows now return `flowIntensity = null` (NR) instead of `0`
          • Bank Run Gauge now excludes those NR windows from the market-cap-weighted composite
          • Frontend flow-intensity UI now displays NR explicitly for null values
          Reconstructed from git commit history.1 commit
          • unreleased
          v4.2Mar 4, 2026Reconstructed

          Signed zero-baseline flow-intensity semantics

          Flow Intensity Score and Bank Run Gauge moved from midpoint semantics to canonical signed outputs centered at zero baseline.

          • Flow Intensity Score now emits signed values via `clamp(-100, 100, z * 50)`
          • Gauge score now uses signed -100 to +100 output with neutral baseline at 0
          • Band thresholds were remapped around zero while retaining existing band labels
          • Frontend midpoint conversion shim was removed; UI now consumes canonical signed API values directly
          Details

          Impact Notes

          • Flow Intensity Score now emits signed values via `clamp(-100, 100, z * 50)`
          • Gauge score now uses signed -100 to +100 output with neutral baseline at 0
          • Band thresholds were remapped around zero while retaining existing band labels
          • Frontend midpoint conversion shim was removed; UI now consumes canonical signed API values directly
          Reconstructed from git commit history.1 commit
          • unreleased
          v4.1Mar 4, 2026Reconstructed

          Reliability remediation and controlled backfill recovery

          Ingestion moved to a reliability-first runtime policy with degraded/error health signaling and operator-grade recovery controls.

          • Added run-state rotation plus per-chain quotas so coverage remains balanced under budget pressure
          • Added degraded/error escalation from sustained low coverage or repeated API failures
          • Introduced authenticated chunked backfill endpoint (`/api/backfill-mint-burn`) reusing ingestion parsing and aggregation
          Details

          Impact Notes

          • Added run-state rotation plus per-chain quotas so coverage remains balanced under budget pressure
          • Added degraded/error escalation from sustained low coverage or repeated API failures
          • Introduced authenticated chunked backfill endpoint (`/api/backfill-mint-burn`) reusing ingestion parsing and aggregation
          Reconstructed from git commit history.1 commit
          • 20f56c3
          v4.0Mar 4, 2026Reconstructed

          reUSD deposit amount scale correction

          Fixed a scale mismatch in reUSD mint decoding that overstated deposit-side mint volume.

          • reUSD `Deposited` events now decode with 18 decimals instead of 6
          • Removed artificial inflation in reUSD mint flow and related aggregates
          • Added regression test validating a known on-chain `Deposited` payload decodes to 10 tokens
          Details

          Impact Notes

          • reUSD `Deposited` events now decode with 18 decimals instead of 6
          • Removed artificial inflation in reUSD mint flow and related aggregates
          • Added regression test validating a known on-chain `Deposited` payload decodes to 10 tokens
          Reconstructed from git commit history.1 commit
          • a49abfa
          v3.2Mar 3, 2026Reconstructed

          Event-time USD valuation for flow amounts

          Flow USD amounts moved from run-time spot pricing to event-time historical price attribution when available.

          • Event valuation now prefers daily historical prices from `supply_history` at event day
          • Price provenance persisted per event (`price_used`, `price_timestamp`, `price_source`)
          • Row-drop accounting added for malformed/dust logs to improve data quality observability
          Details

          Impact Notes

          • Event valuation now prefers daily historical prices from `supply_history` at event day
          • Price provenance persisted per event (`price_used`, `price_timestamp`, `price_source`)
          • Row-drop accounting added for malformed/dust logs to improve data quality observability
          Reconstructed from git commit history.1 commit
          • 89ef4fa
          v3.1Mar 3, 2026Reconstructed

          Alchemy migration and chain-aware scan controls

          Mint/burn ingestion migrated to Alchemy JSON-RPC with chain-specific scan behavior and stronger timestamp resolution guarantees.

          • Replaced Etherscan log ingestion with Alchemy `eth_getLogs`
          • Block timestamps now resolved in batch via `eth_getBlockByNumber`, with retry-on-missing semantics
          • Scan ranges and safety margins calibrated per chain (including Optimism support)
          Details

          Impact Notes

          • Replaced Etherscan log ingestion with Alchemy `eth_getLogs`
          • Block timestamps now resolved in batch via `eth_getBlockByNumber`, with retry-on-missing semantics
          • Scan ranges and safety margins calibrated per chain (including Optimism support)
          Reconstructed from git commit history.3 commits
          • 32f1e37
          • 8193ab3
          • 3b66c98
          v3.0Mar 2, 2026Reconstructed

          reUSD multi-chain coverage and per-coin dedup correction

          Coverage expanded to Re Protocol reUSD across four chains, then corrected aggregate dedup logic to avoid multi-contract over-weighting.

          • Added reUSD mint and redemption event tracking on Ethereum, Arbitrum, Base, and Avalanche
          • Added nth-data-slot amount decoding for non-standard event payload layouts
          • Aggregate flow loop now deduplicates by stablecoin ID to prevent duplicated rows and weighted overcounts
          Details

          Impact Notes

          • Added reUSD mint and redemption event tracking on Ethereum, Arbitrum, Base, and Avalanche
          • Added nth-data-slot amount decoding for non-standard event payload layouts
          • Aggregate flow loop now deduplicates by stablecoin ID to prevent duplicated rows and weighted overcounts
          Reconstructed from git commit history.2 commits
          • 34893a5
          • aa2bcb8
          v2.1Mar 1, 2026Reconstructed

          Grade-aware flight-to-quality classification

          Flight-to-quality shifted from static safe-haven lists to report-card score buckets, with fallback only when grade data is stale or missing.

          • Safe/risky FTQ buckets now derive from report-card scores (safe >= 65, risky < 50, neutral ignored)
          • Static safe-haven sets are now fallback-only for unavailable or stale report-card cache
          • Largest-event attribution aligned to requested window semantics in aggregate mode
          Details

          Impact Notes

          • Safe/risky FTQ buckets now derive from report-card scores (safe >= 65, risky < 50, neutral ignored)
          • Static safe-haven sets are now fallback-only for unavailable or stale report-card cache
          • Largest-event attribution aligned to requested window semantics in aggregate mode
          Reconstructed from git commit history.2 commits
          • dcdefde
          • c1c1839
          v2.0Mar 1, 2026Reconstructed

          USDT treasury-event capture and partial-data gauge support

          Coverage and scoring robustness were upgraded to capture USDT treasury mint/burn events and keep the gauge active during early-history ramp.

          • Added `startBlock` per config for near-history initialization instead of scanning from genesis
          • USDT now tracks `Issue` and `Redeem` events that do not emit standard `Transfer` mints/burns
          • Gauge now computes from available non-null FIS inputs instead of returning null when any coin lacks sufficient history
          Details

          Impact Notes

          • Added `startBlock` per config for near-history initialization instead of scanning from genesis
          • USDT now tracks `Issue` and `Redeem` events that do not emit standard `Transfer` mints/burns
          • Gauge now computes from available non-null FIS inputs instead of returning null when any coin lacks sufficient history
          Reconstructed from git commit history.2 commits
          • 2144236
          • 1eddad0
          v1.0Mar 1, 2026Reconstructed

          Initial Mint/Burn Flow release

          Launched baseline mint/burn flow tracking, scoring primitives, and public API surfaces for aggregate and per-coin analysis.

          • Introduced phase-1 contract coverage for 10 tracked stablecoins
          • Shipped FIS formula, seven-band Bank Run Gauge mapping, and flight-to-quality detection thresholds
          • Deployed incremental sync cron with `/api/mint-burn-flows` and `/api/mint-burn-events`
          Details

          Impact Notes

          • Introduced phase-1 contract coverage for 10 tracked stablecoins
          • Shipped FIS formula, seven-band Bank Run Gauge mapping, and flight-to-quality detection thresholds
          • Deployed incremental sync cron with `/api/mint-burn-flows` and `/api/mint-burn-events`
          Reconstructed from git commit history.4 commits
          • 06ad0d9
          • e36a0c1
          • 2473c86
          • fea681c