NEAR Insights

A long-term investment thesis for NEAR, tested against on-chain, market and NEAR Intents revenue data, with every query open to re-run.

Color theme

Methodology

Data sources

  • CoinGecko

    Price, market cap, FDV, circulating supply and rank for NEAR and the coins ranked above it

  • Dune

    NEAR Intents volume (public and confidential), swaps, fees, fees by channel, volume by chain and by token, and NEAR Intents TVL, from the NEAR team's NEAR Intents dashboard

  • DefiLlama

    NEAR Intents revenue and buybacks, Intents volume and fees on days Dune does not have, DEX volume on NEAR, gas fees, DeFi TVL on NEAR and stablecoins, and daily BTC, ETH and NEAR prices for the lead-lag test

  • NEAR RPC

    Blocks, total supply, max issuance rate, contract gas rebate, epoch start, latest fee wallet and protocol treasury balances, House of Stake votes, validators and protocol version

  • NEAR archival RPC

    Block headers of every epoch boundary: total supply, NEAR minted and NEAR burned

  • NearBlocks

    Daily transactions, relayed transactions, active, new and relayed accounts, gas fees, supply history, daily fee wallet and protocol treasury balances, and daily transactions of the NEAR Intents contract

  • GitHub

    nearcore releases

  • CryptoPanic

    NEAR news headlines and summaries from many publishers

  • ChainCatcher

    NEAR news in English

  • Electric Capital

    Monthly active developers for NEAR, Ethereum, Solana and Bitcoin (adapted: indexed and sampled monthly)

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 field protocol_reward_rate reads [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_supply and B is the sum of balance_burnt over the chunks that block produced (height_included equal 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_reward 0). 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 RPC view_account query; 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_proposal view 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:3000
NEAR 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 yoctoNEAR
Validators, 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":[]}'
done
Fee 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"
done
NEAR 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 Windows
NEAR 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"
done
nearcore 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"