Methodology
Data sources
How each number is calculated
- Max issuance
- The NEAR RPC field
max_inflation_rate: the most the protocol can mint in a year, as a share of total supply; the projections mint total supply × this rate ÷ 12 each month. 90% goes to stakers; nearcore hard-codes the 10% treasury share, while the NEAR RPC fieldprotocol_reward_ratereads [0, 1], a fraction equal to 0. - Burn
- Measured from block headers, read from a NEAR archival RPC node (FastNEAR's by default). NEAR burned in an epoch = S(first) − S(last) + B(first), where S is a block's
total_supplyand B is the sum ofbalance_burntover the chunks that block produced (height_includedequal to its height). Each epoch is spread over the UTC days it covers in proportion to time, and only fully covered days are kept. The worker reads epochs back to 2025-10-01, newest first, as many as each run's time limit allows; a new database starts from the committed snapshot's epochs, since block headers never change. A window that reaches back before the oldest epoch stored shows —. - Issuance
- NEAR minted at the start of an epoch = S(first) − S(last block of the previous epoch) + B(first); it is the reward for the epoch before, and is spread over the days of the epoch it is minted in, the same way as the burn. The measured rate is NEAR minted over 30 or 365 days, annualized, ÷ total supply at the start of the window.
- Burn share
- NEAR burned ÷ gas fees in NEAR over the same 30 days; gas fees are DefiLlama's, converted at each day's price. The projections multiply gas fees by this share, or by 100% once the protocol pays no gas to contracts (
burnt_gas_reward0). Before protocol 87, a rebate paid part of contract-call gas to the called contract; transfers and fixed costs burned all of their gas. - Absorption
- (NEAR burned + NEAR bought) ÷ NEAR minted, all measured, over 30 days, 90 days, since 2026-02-23 and 365 days, and by calendar month. A 30-day, 90-day, since-2026-02-23 or 365-day window is shown only when NEAR minted, burned and bought each have a value on every day of it; a month the data covers only partly is marked as partial. The supply breaking point compares the last 90 days with the 90 days before, once NEAR minted, burned and bought cover all 180 days.
- NEAR bought
- DefiLlama's daily holders revenue of NEAR Intents (buyback dollars), converted to NEAR at each day's price. Buybacks started on 2026-02-23. DefiLlama counts NEAR arriving at all three fee wallets, so "NEAR bought" is spread across them and can exceed the balance of buybacks.multisignature.near alone. Bought NEAR is held in the three fee wallets, off the market; it is not burned, so it stays in total supply (CoinGecko's circulating supply still counts it).
- NEAR Intents data
- Volume (public and confidential), swaps, gross fees, fees by channel (the 100 largest channels above $10, leaving out swaps without a referral, so not total fees), volume by chain and by token, and TVL come from the NEAR team's Dune dashboard (near/near-intents). The worker reads it every 2 hours; Dune refreshes it about once a day. Volume and fees use Dune's value on each day it has one and DefiLlama's otherwise. From April to August 2026, DefiLlama counted only public swaps, leaving out confidential ones. Confidential swaps run inside a private NEAR shard; Dune counts both kinds.
- Fee chain
- Four steps, over 30 and 90 days, since 2026-02-23 and by month: NEAR Intents volume, the gross fees charged on it, the revenue kept from those fees (DefiLlama
dailyRevenue), and the buyback dollars paid from that revenue (dailyHoldersRevenue). Fee rate = gross fees ÷ volume; fees per $1M swapped = fee rate × 1,000,000. Share of fees that buys NEAR = buyback dollars ÷ gross fees; fees count from 2026-02-23, so the month buying began is not diluted. - Share of volume that buys NEAR
- Buyback dollars ÷ volume, summed over the same days, in basis points (1 bps = 0.01%): over the last 90 days against the 90 days before, and in each fee chain window and month; projections use the last 30 days and break-even each of its windows.
- Share of DEX volume
- DefiLlama's NEAR Intents volume ÷ the volume of every DEX that DefiLlama tracks on NEAR, which includes NEAR Intents, over 30 and 180 days and by month; both from DefiLlama, so they count the same swaps.
- Share of transactions
- Daily transactions of the intents.near contract (NearBlocks API v3) ÷ all NEAR transactions that day. The 30-day share divides the two 30-day sums, ending on the last day both series have.
- Chain activity
- Transactions and new accounts: the total of the last 30 days against the same 30 days a year earlier. Active accounts: the median daily count of the last 30 days against the median of the same 30 days a year earlier.
- Fee wallets
- Balances (
amount+locked) of buybacks.multisignature.near, fefundsadmin.sputnik-dao.near and 1csfundsadmin.sputnik-dao.near, read with the NEAR RPCview_accountquery; today keeps its last reading. Each finished day since 2026-02-23 is NearBlocks' end-of-day balance, which it records only on days the balance changed; a day without a record keeps the last one. The 30-day gain is the change of the three balances combined, set against the NEAR bought over the same days. Largest daily gap = for each of the 30 days, the NEAR bought since the window began − the three wallets' gain since then, the largest of those values (not below 0); the capture breaking point is reached when it exceeds 5% of the 30 days' NEAR bought. - HSP-029 status
- The
get_proposalview of vote.dao with {"proposal_id":29}: status, veNEAR for, against and abstaining, voters and deadlines. Share for = veNEAR for ÷ all veNEAR voted, abstentions included. - Break-even
- Over 30 and 90 days. Multiple = NEAR minted ÷ (NEAR burned + NEAR bought): how many times burn plus buybacks must grow. Volume needed a day = (NEAR minted − NEAR burned, not below 0) × today's price ÷ the window's share of volume that buys NEAR ÷ its days, compared with the Intents volume a day over the same window.
- Valuation
- Market cap divided by the run rate of burn plus buybacks: NEAR burned plus NEAR bought (at the prices paid) over the last 30 days, × 365 ÷ 30, valued at today's price; the yield is the run rate ÷ market cap. The growth needed is the monthly growth of NEAR bought at which burn plus buybacks match that month's issuance in month 36. It starts from the last 30 days' buyback dollars converted at today's price, holds the burn at the same 30 days' gas fees in NEAR (each day at its own price) × the share burned, and keeps today's price and max issuance rate, while supply changes by issuance minus burn. It is negative when buying already covers issuance (how far NEAR bought could fall), and None when the burn alone covers it. It compares directly with the measured growth of NEAR bought and its 95% range: the middle 95% of the growth over 9,999 draws that rebuild each 90-day window from blocks of its own days (7 days long on average, seed 20260223). The valuation breaking point holds while the whole range is at or above the growth needed, breaks while all of it is below, and is too close to call in between. The Valuation page also shows it at 24, 36, 60 months and at 0.5×, 1×, 2×, 4× today's price; at a higher price the same buyback dollars buy less NEAR. Market cap ÷ network revenue = each day's market cap ÷ (Intents revenue + gas fees over the 30 days to that day × 365 ÷ 30), from the first month with Intents revenue on every day, shown against its median. Market cap at the lowest, median and highest of those multiples = each multiple × the yearly revenue behind the latest one; it places today's market cap against its own history and is not a fair value. The model on the Valuation page lets you grow fees and buybacks separately.
- Projections
- Month by month from the last 30 days, holding today's price: buyback dollars converted at today's price, and gas fees converted to NEAR at each day's price × the share burned (all of it once mainnet pays no gas to contracts; the measured burn share before that). Scenarios: no growth, the growth needed for burn plus buybacks to match issuance in month 36, and the growth of NEAR bought in the last 90 days against the 90 days before, as a monthly rate, for 12 months, then flat. Supply outlook: today's max issuance against HSP-029's 1.6% (24-month ramp starting 90 days after the vote's timelock ends, or after the data-through day while that end is unknown or the vote has failed; once started, from today's rate over the months left), minus the burn. Usage and Revenue models: NEAR bought = Intents volume × fees ÷ volume × buyback dollars ÷ fees ÷ price, starting from the same 30 days, so at their starting values they buy what the scenarios start from; volume growth carries NEAR bought with it.
- Data windows
- Every flow window ends on one shared day: the last day that Intents volume, Intents buyback dollars, gas fees and the NEAR price all have. A figure built on other series (DEX volume, NEAR minted and burned) ends on the same day and is left out while its series do not reach it; monthly tables stop at the last day their series all have. Windows on Intents fees and revenue (fee chain, fee rate, share of fees that buys NEAR) end on the last day both have, often a day before the shared day, because the newest day of fees is still filling. Chain activity and the Intents share of transactions end on the last day their NearBlocks series have. Fee wallet and treasury gains end on the shared day, or earlier where their balances end first, and total supply growth ends on today's reading. Swaps, average swap size and the confidential share come from Dune alone, so they end on the last day Dune's swaps and confidential volume both have, at most the shared day. TVL, fees by channel and volume by chain and token end on Dune's newest stored day.
- Supply growth
- Change in on-chain total supply over 365 days, from NearBlocks' daily history to today's NEAR RPC reading. Peers: change in CoinGecko circulating supply (market cap ÷ price), the median of the newest 7 days against the median of the 7 days a year earlier, scaled to a year.
- Validator seats
- Chunk-validator seat = total stake ×
minimum_stake_ratio. Block-producer seat = the smallest stake among validators expected to produce blocks. - Live rates
- Transactions a minute = the newest finished day's NearBlocks transaction count ÷ 1,440. NearBlocks' lifetime counter moves only once a day, so it gives no rate within a day.
- Developers
- Monthly active developers (28-day window) from eco_mads.parquet; only first-of-month values are stored, and the chart indexes them to 100. Open Dev Data by Electric Capital (Electric Capital Partners, LLC), CC BY 4.0, indexed and sampled monthly by this dashboard.
- Data checks
- Each row sets two independent figures side by side: two measurements of one quantity, a measurement against what it should equal, or this dashboard's figure against a published one. Difference = A ÷ B − 1.
- Static facts
- NEAR's finality, technology milestones, NEAR Intents fee rates, NEAR account features, the gas of a simple transfer, the shard cap and the Home sector chips are fixed values with no free API. Finality and the technology milestones show their source and the date checked; THESIS.md lists the sources of the fee rates and account features.
Download the data
- model-scenariosCSV
The Valuation scenarios month by month, with the live inputs they start from
- daily_seriesCSV
Every daily series: NEAR price and longer BTC, ETH and NEAR price history, total supply, NEAR minted and burned, Intents volume and fees (each merged, Dune and DefiLlama), confidential volume, revenue, buybacks, swaps, intents.near transactions, TVL and confidential TVL, DEX volume, gas fees, NEAR transactions and relayed transactions, active, new and relayed accounts, fee wallet and treasury balances, DeFi TVL, stablecoins, developers
- intents_chain_dailyCSV
NEAR Intents volume per day, counted under each chain, public and confidential swaps (Dune)
- intents_symbol_dailyCSV
NEAR Intents volume per day, counted under each token symbol, public and confidential swaps (Dune)
- intents_fee_channelsCSV
NEAR Intents gross fees since launch by channel, for the 100 largest channels above $10 (Dune)
- live_samplesCSV
Live readings of the last 7 days: block height and chunk gas each minute
- coins_latestCSV
Latest top-100 market snapshot
- coins_dailyCSV
One market row per coin per day, read just after 00:00 UTC
- network_latestCSV
Latest NEAR network state: block height and time, protocol and nearcore version, total supply, gas price, shard count, max issuance rate, contract gas rebate, block-producer seats and minimum stake ratio
- epoch_supplyCSV
NEAR minted and burned per epoch, with total supply at its first and last block, from block headers
- governance_proposalsCSV
House of Stake vote on HSP-029: status, veNEAR for, against and abstaining, deadlines
- validator_epochsCSV
Validator stakes per epoch
- coin_supply_dailyCSV
Circulating supply per day for NEAR and each coin ranked above it
- protocol_versionsCSV
Protocol version on mainnet and testnet
- releasesCSV
nearcore releases
- news_itemsCSV
NEAR news: headline, summary, publisher, time and link
Re-run the data yourself
Run the dashboard
git clone <this repository> near-insights
cd near-insights
npm ci
pip install -r requirements.txt # curl_cffi, for the Dune reader (Python 3.10 or later)
npm run ingest # every source with its full history into data/dashboard.db; from empty about 5 minutes,
# as block headers older than snapshot/ are copied from it (about 55 minutes without it)
npm run worker # keeps every job on its schedule; each epochs run reads history for up to 8 minutes
npm run dev # http://localhost:3000NEAR minted and burned, from block headers
# NEAR minted and burned in the latest complete epoch, from block headers on an archival NEAR RPC node
curl -s https://free.rpc.fastnear.com -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"validators","params":[null]}'
E=<result.epoch_start_height>
# A block by height, or by hash written as '"<hash>"'; a height with no block answers UNKNOWN_BLOCK
block() { curl -s https://archival-rpc.mainnet.fastnear.com -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"block","params":{"block_id":'"$1"'}}'; }
block $E # the current epoch's first block: its header.prev_hash is L, the last block of the latest complete epoch
block '"<L>"' # S(last) = header.total_supply
block $((E-43200)) # near that epoch's first block F: step until header.epoch_id matches L's and F's header.prev_hash
# equals F's header.next_epoch_id. S(first) = header.total_supply,
# B(first) = sum of chunks[].balance_burnt where height_included = F
block '"<prev_hash of F>"' # the previous epoch's last block: S(previous last) = header.total_supply
# burned = S(first) − S(last) + B(first); minted = S(first) − S(previous last) + B(first), in yoctoNEARValidators, the HSP-029 vote and protocol settings
# Validators of the current epoch
curl -s https://free.rpc.fastnear.com -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"validators","params":[null]}'
# HSP-029 vote; args_base64 is {"proposal_id":29}
curl -s https://free.rpc.fastnear.com -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"query","params":{"request_type":"call_function","finality":"final","account_id":"vote.dao","method_name":"get_proposal","args_base64":"eyJwcm9wb3NhbF9pZCI6Mjl9"}}'
# result.result is the proposal as UTF-8 JSON bytes: status, votes[].total_venear (for, against, abstain), snapshot_and_state.total_venear
# Max issuance (max_inflation_rate), gas rebate (transaction_costs.burnt_gas_reward), seats and minimum stake ratio
curl -s https://free.rpc.fastnear.com -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"EXPERIMENTAL_protocol_config","params":{"finality":"final"}}'
# Latest final block (height, total supply, chunk gas) and the protocol version mainnet and testnet run
curl -s https://free.rpc.fastnear.com -H "content-type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"block","params":{"finality":"final"}}'
for rpc in https://free.rpc.fastnear.com https://rpc.testnet.fastnear.com; do
curl -s $rpc -H "content-type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"status","params":[]}'
doneFee wallet and treasury balances
# Today's balances of the three NEAR Intents fee wallets and the protocol treasury: amount + locked, in yoctoNEAR
for account in buybacks.multisignature.near fefundsadmin.sputnik-dao.near 1csfundsadmin.sputnik-dao.near treasury.near; do
curl -s https://free.rpc.fastnear.com -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"query","params":{"request_type":"view_account","finality":"final","account_id":"'"$account"'"}}'
done
# End-of-day balances on the days each balance changed (amount + amount_staked); a day without a row keeps the last one.
# treasury.near is the protocol treasury, paid its share of the NEAR minted each epoch
for account in buybacks.multisignature.near fefundsadmin.sputnik-dao.near 1csfundsadmin.sputnik-dao.near treasury.near; do
curl -s "https://api.nearblocks.io/v3/accounts/$account/stats/balance?limit=365"
doneNEAR Intents volume, swaps, fees and TVL (Dune)
# NEAR Intents volume (public and confidential), swaps, fees, fees by channel, volume by chain and token, and TVL.
# Each query's SQL and latest result are public on the NEAR team's dashboard:
# https://dune.com/near/near-intents
# https://dune.com/queries/5179085 (volume)
# https://dune.com/queries/4374089 (swaps)
# https://dune.com/queries/6162763 (fees)
# https://dune.com/queries/6162721 (feeChannels)
# https://dune.com/queries/5157527 (symbolVolume)
# https://dune.com/queries/5157565 (chainVolume)
# https://dune.com/queries/7586891 (tvl)
# The worker reads the same results with its Dune reader (curl_cffi; pip install -r requirements.txt):
echo '{"baseUrl":"https://dune.com","dashboard":{"handle":"near","slug":"near-intents"},"queries":[5179085,4374089,6162763,6162721,5157527,5157565,7586891],"known":{},"signingKey":"public-01K4W0KHXNC30MKZMRZY91HKM6","retries":3,"browsers":["chrome","safari","firefox"],"budgetSeconds":360}' \
| python3 src/ingest/sources/dune.py # python on WindowsNEAR Intents revenue and buyback dollars, DEX volume, DeFi TVL and stablecoins (DefiLlama)
# NEAR Intents volume, gross fees, revenue and buyback dollars; totalDataChart holds [unix seconds, USD] per day
# (volume and fees fill only the days Dune does not have)
curl -s "https://api.llama.fi/summary/dexs/near-intents?excludeTotalDataChartBreakdown=true"
curl -s "https://api.llama.fi/summary/fees/near-intents?dataType=dailyFees&excludeTotalDataChartBreakdown=true"
curl -s "https://api.llama.fi/summary/fees/near-intents?dataType=dailyRevenue&excludeTotalDataChartBreakdown=true"
curl -s "https://api.llama.fi/summary/fees/near-intents?dataType=dailyHoldersRevenue&excludeTotalDataChartBreakdown=true"
# Volume of every DEX on NEAR, and gas fees paid on NEAR
curl -s "https://api.llama.fi/overview/dexs/near?excludeTotalDataChartBreakdown=true"
curl -s "https://api.llama.fi/summary/fees/near?excludeTotalDataChartBreakdown=true"
# DeFi TVL and USD-pegged stablecoins on NEAR
curl -s "https://api.llama.fi/v2/historicalChainTvl/Near"
curl -s "https://stablecoins.llama.fi/stablecoincharts/Near"Chain activity and intents.near transactions (NearBlocks)
# Last day NearBlocks has finished its daily stats for
curl -s "https://api.nearblocks.io/v3/sync/status/daily-stats"
# Daily transactions, relayed transactions (meta_txns), txn_fee (NEAR); total_supply (yoctoNEAR);
# accounts acting through relayers (meta_accounts); up to 365 days
curl -s "https://api.nearblocks.io/v3/txn-stats?limit=365"
curl -s "https://api.nearblocks.io/v3/block-stats?limit=365"
curl -s "https://api.nearblocks.io/v3/address-stats?limit=365"
# Active accounts (transaction signers) and new accounts since genesis (API v1); also transactions, fees and total supply
# for the days before v3's 365
curl -s "https://api.nearblocks.io/v1/charts"
# Daily intents.near transactions
curl -s "https://api.nearblocks.io/v3/accounts/intents.near/stats/txns?limit=365"Prices, market caps and circulating supply (CoinGecko, DefiLlama)
# Price, market cap, FDV, rank and 1-year change of the top 100 coins
curl -s "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=100&page=1&price_change_percentage=1y"
# NEAR's daily price (00:00 UTC) over 365 days; every NEAR amount bought is that day's USD ÷ this price
curl -s "https://api.coingecko.com/api/v3/coins/near/market_chart?vs_currency=usd&days=365&interval=daily"
# Each coin ranked above NEAR: circulating supply each day = market_caps ÷ prices
curl -s "https://api.coingecko.com/api/v3/coins/bitcoin/market_chart?vs_currency=usd&days=365&interval=daily"
# Longer daily NEAR, BTC and ETH price history for the lead-lag test (DefiLlama coins API, from 2024-11-01,
# at most 500 days a request, one coin at a time)
for id in near bitcoin ethereum; do
curl -s "https://coins.llama.fi/chart/coingecko:$id?start=<unix seconds>&span=500&period=1d&searchWidth=600"
donenearcore releases and developers
# nearcore releases
curl -s "https://api.github.com/repos/near/nearcore/releases?per_page=50"
# Monthly active developers: the manifest names eco_mads.parquet, read with HTTP range requests
curl -s "https://data.opendevdata.org/manifest.json"