near-toll-audit / pipeline/sql/13_withdrawal_size_week.sql · raw
-- Value-weighted concentration of Intents withdrawals for one full week.-- Token prices are frozen in sql/token_prices.csv (from the public 1Click token list) so the result can be re-derived.WITH p AS (  SELECT * FROM UNNEST([{{TOKEN_PRICE_STRUCTS}}])), w AS (  SELECT event_memo AS dest, ABS(SAFE_CAST(delta_amount AS FLOAT64)) / POW(10, p.decimals) * p.price AS usd  FROM `bigquery-public-data.crypto_near_mainnet_us.ft_events` e JOIN p ON e.contract_account_id = p.token  WHERE block_date BETWEEN '2026-10-19' AND '2026-10-25' AND affected_account_id = 'intents.near'    AND cause = 'ft_burn' AND event_memo LIKE 'WITHDRAW_TO:%'    AND contract_account_id IN ({{INTENTS_TOKENS}})), each_w AS (  SELECT CASE WHEN usd < 100 THEN 'a <$100' WHEN usd < 1000 THEN 'b $100-1k' WHEN usd < 10000 THEN 'c $1k-10k'              WHEN usd < 100000 THEN 'd $10k-100k' ELSE 'e >$100k' END AS bucket, usd  FROM w), d AS (  SELECT dest, SUM(usd) AS usd, COUNT(*) AS n FROM w GROUP BY dest), r AS (  SELECT *, ROW_NUMBER() OVER (ORDER BY usd DESC) AS rk FROM d)SELECT 'bucket' AS kind, bucket AS k, COUNT(*) AS n, SUM(usd) AS usd FROM each_w GROUP BY bucketUNION ALL SELECT 'top', 'top1', 1, SUM(IF(rk <= 1, usd, 0)) FROM rUNION ALL SELECT 'top', 'top10', 10, SUM(IF(rk <= 10, usd, 0)) FROM rUNION ALL SELECT 'top', 'top100', 100, SUM(IF(rk <= 100, usd, 0)) FROM rUNION ALL SELECT 'top', 'top1000', 1000, SUM(IF(rk <= 1000, usd, 0)) FROM rUNION ALL SELECT 'top', 'all', COUNT(*), SUM(usd) FROM rORDER BY 1, 2