Skip to content

Loans Methodology

How we compute the Flowty loan book and its derived metrics.

Flowty loan data is ingested directly from Flow mainnet chain events emitted by the Flowty contract at A.5c57f79c6694797f.Flowty. Each loan begins life as a LoanListed event and progresses through LoanFunded, LoanRepaid, LoanSettled, or LoanCancelled events. We materialize one row per loan in flowty_loans, plus a chronological audit trail in flowty_loan_events. Aggregate metrics are computed by canonical Postgres RPCs — flowty_analytics_summary, flowty_analytics_timeseries, flowty_analytics_leaderboard, flowty_analytics_new_wallets, flowty_analytics_cohorts, flowty_analytics_limbo_summary, flowty_analytics_wallet_detail, and flowty_analytics_wallet_directory — backed by three views (flowty_funded_loans, flowty_limbo_loans, flowty_open_listings) so every chart and KPI in the dashboard agrees on a single source of truth. The analytics surface now includes a Sales section as a sibling — see /analytics/methodology/sales for the parallel sales pipeline.

Coverage starts at approximately Dec 29 2025, when the Flow exploit recovery spork created the earliest accessible blocks for the rebuilt Flowty contract. Pre-Dec 28 2025 history lives in pre-spork blocks and would require a custom spork-proxy backfill (planned as V2). "Pre-window loan closures" represent loans whose origination events predate our scan window — we only see their terminal events: repaid, settled, or canceled. The official Flowty Limbo Loan repayment grace period (Jan 30 – Feb 13 2026) accounts for 348 of the 1,679 pre-window terminations: 118 settlements (the actual platform-recovery number) plus 230 grace-period repayments. The rest were normal repayments during the settlement-pause window (1,127 in the pre-reopen period) or post-grace tails. 98% of pre-window activity is concentrated in 3 power-user wallets, so the cohort isn't broadly representative — it's a power-user story, not a community recovery.

principal_usd is normalized only for stablecoin loans (USDCf, USDC, FUSD, TUSDT and Dapper's dollar token, all 1:1 with USD). The 2 FLOW-denominated loans currently in our data are excluded from USD aggregates pending oracle integration. Avg APR is annualized as term_rate × (365 / term_days), not the raw rate-over-term — a 23% rate on a 77-day loan is ~110% APR, which is the more honest comparison metric. The dashboard shows both. Default rate is calculated as settled / (repaid + settled), excluding active and listed loans (they haven't had the chance to settle yet). Lifetime is currently around 4.6%; the L30 window typically reads 0% because most recent loans are still active.

lender_at_settlement tracks position transfers via HybridCustody (mostly main-wallet → child-wallet patterns) and currently flags about 23 loans, but is not surfaced in the dashboard. New-wallet acquisition compares the address sets per role per period — a wallet is counted as new in a window if its earliest funded_at across the entire history falls inside that window. Cohorts are monthly and assigned by earliest activity month; cohort cells show the % of that cohort active in month N (not strict retention — wallets can come back after a gap). Cohorts switched from quarterly to monthly because our backfill window is only ~120 days, which would otherwise collapse all activity into a single quarterly bucket.

Data sources

  • flowty_loans (Supabase) — one row per funded loan, materialized from chain events emitted by A.5c57f79c6694797f.Flowty on Flow mainnet
  • flowty_loan_events (Supabase) — full event audit trail
  • flowty_funded_loans / flowty_limbo_loans / flowty_open_listings (Supabase views) — canonical lifecycle slices consumed by the analytics RPCs
  • Flow access node block range scanner

Refresh cadence

Every 10 minutes

← Back to all methodology