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.1.

Latest Version

v6.1May 8, 2026

USG extended transfer coverage

Tangent USD (USG) now has extended Ethereum mint/burn tracking from its reviewed deployment block using standard ERC-20 zero-address Transfer events.

Impact Snapshot

  • Adds USG to the extended mint/burn config registry with a reviewed deployment-block start bound
  • Captures the initial 40.02M USG zero-address mint history plus future USG supply changes through the standard Transfer decoder
  • Keeps bridge and custom-event handling unchanged; no USG bridge classifier is configured because only the Ethereum token contract is currently tracked
v6.1May 8, 2026

USG extended transfer coverage

Tangent USD (USG) now has extended Ethereum mint/burn tracking from its reviewed deployment block using standard ERC-20 zero-address Transfer events.

  • Adds USG to the extended mint/burn config registry with a reviewed deployment-block start bound
  • Captures the initial 40.02M USG zero-address mint history plus future USG supply changes through the standard Transfer decoder
  • Keeps bridge and custom-event handling unchanged; no USG bridge classifier is configured because only the Ethereum token contract is currently tracked
Details

Impact Notes

  • Adds USG to the extended mint/burn config registry with a reviewed deployment-block start bound
  • Captures the initial 40.02M USG zero-address mint history plus future USG supply changes through the standard Transfer decoder
  • Keeps bridge and custom-event handling unchanged; no USG bridge classifier is configured because only the Ethereum token contract is currently tracked
0 commits
    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