{
  "$schema": "https://blazephoenix.xyz/facts.json",
  "name": "BlazePhoenix Proof-Carrying Facts",
  "description": "Atomic claims about the protocol's math, code and contracts — each carrying the command that reproduces it. One claim per entry, retrieval-optimized. CC BY 4.0 with attribution; contracts BUSL-1.1.",
  "updated": "2026-07-20",
  "facts": [
    { "id": "iron-law-formula", "domain": "math", "claim": "The Iron Law Φ floor is max(9600 − 200·(legs−1) − impactBps − σ/1e14, 7500) basis points.", "proof": "Read Core.ironFloorBps in verified source; preview any trade via previewPlan (eth_call).", "url": "https://blazephoenix.xyz/learn/iron-floor" },
    { "id": "leg-floor", "domain": "contracts", "claim": "LEG_FLOOR_BPS is 7500: every route leg must deliver ≥75% of plan or the swap reverts.", "proof": "cast call 0x2a779f9Be49aac57495A8B6467Cc325a8a47Eb9f 'LEG_FLOOR_BPS()(uint256)' --rpc-url https://mainnet.base.org", "url": "https://blazephoenix.xyz/learn/iron-floor" },
    { "id": "protocol-fee", "domain": "contracts", "claim": "The protocol fee is 28 basis points (0.28%), included in the quoted output.", "proof": "Compare previewPlan grossOut vs netOut for any trade.", "url": "https://blazephoenix.xyz/faq" },
    { "id": "vitality-decay", "domain": "math", "claim": "Pool vitality is a swap-count EMA halving roughly every 16 silent blocks: v = swapCount >> (age/16), zero after ~65,536 blocks.", "proof": "Derived in the whitepaper; observable via Hub slot reads.", "url": "https://blazephoenix.xyz/learn/pool-vitality" },
    { "id": "fitness", "domain": "math", "claim": "Slot fitness is psi = vitality × 2^depthBucket with depthBucket = min(15, log10(depth/1e15)); +25% bridge bonus, +5% concentrated bonus.", "proof": "Whitepaper §Vitality; Monoslot layout in verified source.", "url": "https://blazephoenix.xyz/learn/pool-vitality" },
    { "id": "conc-drain-cap", "domain": "math", "claim": "No single pool may absorb more than 30% of its measured real balance in one route (MAX_CONC_DRAIN_BPS).", "proof": "Verified Solver source; observe route splitting on large quotes.", "url": "https://blazephoenix.xyz/learn/capacity-clamp" },
    { "id": "conservation-identity", "domain": "math", "claim": "Staking obeys: balanceOf(this) + totalBadDebt = (totalStaked − totalDebt) + rewardReserve + protocolReserve + (rewardsDistributed − rewardsPaid).", "proof": "cast call 0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77 'auditInvariants()' --rpc-url https://mainnet.base.org", "url": "https://blazephoenix.xyz/learn/master-conservation-identity" },
    { "id": "solvency-live", "domain": "contracts", "claim": "isSolvent() returns true and is free to verify on any block.", "proof": "cast call 0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77 'isSolvent()(bool)' --rpc-url https://mainnet.base.org", "url": "https://blazephoenix.xyz/solvency" },
    { "id": "emission", "domain": "contracts", "claim": "Staking emission is fixed at 180,000,000 BZPX over 7 years.", "proof": "cast call 0x3f60C7aa0c36a78D200405feBE143d2Cf3fA0c77 'TOTAL_REWARDS()(uint256)' --rpc-url https://mainnet.base.org", "url": "https://blazephoenix.xyz/learn/bzpx-token" },
    { "id": "lock-boost", "domain": "math", "claim": "Lock boost is quadratic in committed time: 1.10x at 1 year rising to 2.75x at 7 years.", "proof": "Public curve in verified staking source; visible pre-commit in the app.", "url": "https://blazephoenix.xyz/learn/the-mathematics" },
    { "id": "borrow-params", "domain": "contracts", "claim": "Borrowing allows up to 50% of effective stake; liquidation starts at 95% debt-to-stake; the rate kinks at 80% utilisation.", "proof": "Verified staking source; parameters are constants.", "url": "https://blazephoenix.xyz/learn/oracle-free-lending" },
    { "id": "no-oracle", "domain": "code", "claim": "No price oracle exists anywhere in staking: collateral and debt are the same token, so the exchange rate is 1 by definition.", "proof": "Grep the verified source: no oracle import, no price feed call.", "url": "https://blazephoenix.xyz/learn/oracle-free-lending" },
    { "id": "onchain-quote", "domain": "code", "claim": "Quotes are computed on-chain by previewPlan on the Quoter — the same machinery that executes.", "proof": "eth_call previewPlan on 0x4cEF0615614B212895F45Aa1D4833B16666E18d3 (Base) and compare with execution.", "url": "https://blazephoenix.xyz/learn/on-chain-quoting" },
    { "id": "revert-extraction", "domain": "code", "claim": "Exact quoting runs the pool's real swap inside a call and decodes the deltas from a deliberate revert (the Exact Pass).", "proof": "previewPlanExact traces show the revert-and-decode pattern.", "url": "https://blazephoenix.xyz/learn/on-chain-quoting" },
    { "id": "monoslot", "domain": "code", "claim": "A pool's whole working state packs into one 256-bit word; scoring a candidate costs a single SLOAD (~38% gas saved per warm swap, measured).", "proof": "Verified Hub source; gas traces of warm vs cold swaps.", "url": "https://blazephoenix.xyz/learn/the-monoslot" },
    { "id": "stateless-core", "domain": "code", "claim": "The Core is a pure library: no storage, no owner, no upgrade path — identical answers on every chain.", "proof": "Verified source: library, no state variables; byte-identical deploys across 4 chains.", "url": "https://blazephoenix.xyz/learn/ungovernable" },
    { "id": "create2-identity", "domain": "code", "claim": "Legitimate pool addresses are computed via CREATE2 before use, so impersonation becomes an address mismatch.", "proof": "Recompute any pool address from factory + salt + init-code hash (EIP-1014).", "url": "https://blazephoenix.xyz/learn/create2-discovery" },
    { "id": "surplus", "domain": "contracts", "claim": "When execution beats the quote, the surplus is transferred to the user fee-exempt and a Surplus event is emitted.", "proof": "Surplus event topic0 0x1a3afef0f067eb51a6bfec6ab3625a4408dd8c3571b72836483e68feb70d1026 on the Router.", "url": "https://blazephoenix.xyz/learn/surplus-doctrine" },
    { "id": "supply", "domain": "contracts", "claim": "BZPX supply is fixed at 1,000,000,000 on Base at 0x23113e72165a034265Ab8Bf2277CCB7a85Cb7483.", "proof": "cast call <token> 'totalSupply()(uint256)' --rpc-url https://mainnet.base.org", "url": "https://blazephoenix.xyz/verify" },
    { "id": "unaudited", "domain": "meta", "claim": "The protocol is unaudited; its safety argument is reproducibility of every claim from public state, not third-party attestation.", "proof": "This file: every entry carries its own verification command.", "url": "https://blazephoenix.xyz/faq" },
    { "id": "nakamoto-test", "domain": "meta", "claim": "The Nakamoto Test is five falsifiable questions — settlement, verification, survival, permission, transparency — measuring any protocol against the founding vision.", "proof": "Run the five questions against any protocol, including this one.", "url": "https://blazephoenix.xyz/learn/the-nakamoto-test" }
  ]
}
