Skip to main content
Pharos
PHAROSlive stablecoin signals

Mint/Burn Flow Changelog

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

Latest Version

v6.0Apr 17, 2026

Bridge classifier parity, LayerZero endpoint-only signal, canonical-chain gauge weighting

Bridge classification now tags both mint and burn rows for CCIP/CCTP transactions, the LayerZero classifier recognizes endpoint-only fingerprints, and the Bank Run Gauge weights coins by their tracked-chain circulating supply rather than global supply. Atomic-roundtrip detection now requires mint/burn totals to match within 0.5%, and custom-event counterparty extraction supports unindexed address parameters.

Impact Snapshot

  • CCIP and CCTP bridge mints now tag as `flow_type='bridge_transfer'` (previously leaked into economic mint flow for USDC, EURC, USDO, USD1, avUSD, ZCHF)
  • LayerZero classifier accepts endpoint-emitter signal alone, catching Executor-only mint patterns previously missed on USDai-Arbitrum
  • Bank Run Gauge weights each coin's intensity by its circulating supply on tracked-chain scope only (e.g., USDC weighted by Ethereum supply, not global $36B+ total)
  • Atomic-roundtrip detection requires sum(mint) and sum(burn) to match within 0.5% — partial same-tx mix is preserved as economic flow rather than erased
v6.0Apr 17, 2026

Bridge classifier parity, LayerZero endpoint-only signal, canonical-chain gauge weighting

Bridge classification now tags both mint and burn rows for CCIP/CCTP transactions, the LayerZero classifier recognizes endpoint-only fingerprints, and the Bank Run Gauge weights coins by their tracked-chain circulating supply rather than global supply. Atomic-roundtrip detection now requires mint/burn totals to match within 0.5%, and custom-event counterparty extraction supports unindexed address parameters.

  • CCIP and CCTP bridge mints now tag as `flow_type='bridge_transfer'` (previously leaked into economic mint flow for USDC, EURC, USDO, USD1, avUSD, ZCHF)
  • LayerZero classifier accepts endpoint-emitter signal alone, catching Executor-only mint patterns previously missed on USDai-Arbitrum
  • Bank Run Gauge weights each coin's intensity by its circulating supply on tracked-chain scope only (e.g., USDC weighted by Ethereum supply, not global $36B+ total)
  • Atomic-roundtrip detection requires sum(mint) and sum(burn) to match within 0.5% — partial same-tx mix is preserved as economic flow rather than erased
Details

Impact Notes

  • CCIP and CCTP bridge mints now tag as `flow_type='bridge_transfer'` (previously leaked into economic mint flow for USDC, EURC, USDO, USD1, avUSD, ZCHF)
  • LayerZero classifier accepts endpoint-emitter signal alone, catching Executor-only mint patterns previously missed on USDai-Arbitrum
  • Bank Run Gauge weights each coin's intensity by its circulating supply on tracked-chain scope only (e.g., USDC weighted by Ethereum supply, not global $36B+ total)
  • Atomic-roundtrip detection requires sum(mint) and sum(burn) to match within 0.5% — partial same-tx mix is preserved as economic flow rather than erased
  • Custom-event counterparty extraction now supports unindexed address parameters (reUSD `Deposited` user address no longer null)
  • Historical rows reclassified via `/api/backfill-mint-burn` replay and `/api/reclassify-atomic-roundtrips` after deploy
0 commits
    v5.2Apr 14, 2026

    GYD retirement from active mint/burn coverage

    GYD was removed from active mint/burn flow tracking after its cross-chain contract incident left the token functionally dead and moved it to the cemetery dataset.

    • Mint/burn flow configs no longer scan the Ethereum GYD token after the asset moved out of the active stablecoin registry
    • Public flow coverage counts and stablecoin registry totals now exclude GYD from active surfaces
    • Historical rows remain in D1 if previously ingested, but current API scope is driven by the active config registry
    Details

    Impact Notes

    • Mint/burn flow configs no longer scan the Ethereum GYD token after the asset moved out of the active stablecoin registry
    • Public flow coverage counts and stablecoin registry totals now exclude GYD from active surfaces
    • Historical rows remain in D1 if previously ingested, but current API scope is driven by the active config registry
    0 commits
      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