what a dollar earns onchain this week: 3.6% on aave, 4.4% on compound, and why usds on aave earns 0.15%
what a dollar earns and what borrowing one costs on aave v3, spark and compound v3 on 15 september 2026, read from the contracts at one block, with the utilization that explains every rate.
· berlin · alina schanz
- question
- the yield on a dollar, and the cost of borrowing one, on ethereum's large lending markets at one block.
- data
- seventeen asset and market pairs on aave v3, spark and compound v3, plus the sky savings rate and the dai savings rate, at block 25,982,545 on 15 september 2026, 11:24 utc.
- method
- lendrates reads the rates11 lendrates as of 15 sep 2026: my newest commit before it was 193b6db (10 sep 2026), signed with my key. the code. and the supplied and borrowed amounts from the contracts with
eth_call, then turns each protocol's rate into a yearly percentage. the command is under method. - finding
- a stablecoin dollar earned 0.15% to 4.40%, depending on the market and on how much of the pool borrowers had taken. usdc paid 4.40% on compound v3 and 3.63% on aave v3.
data
lendrates --json.| asset · market | supply | borrow | used | supplied | borrowed |
|---|---|---|---|---|---|
| usdc · compound v3# | 4.40% | 5.34% | 90% | $376m | $340m |
| usdc · aave v3# | 3.63% | 4.40% | 92% | $2.39bn | $2.20bn |
| usdc · spark# | 3.61% | 4.36% | 92% | $26.8m | $24.7m |
| usdt · spark# | 3.45% | 4.04% | 95% | $320m | $304m |
| usdt · aave v3# | 3.30% | 4.19% | 88% | $3.16bn | $2.78bn |
| usdt · compound v3# | 3.13% | 3.95% | 86% | $183m | $157m |
| dai · aave v3# | 3.12% | 4.83% | 87% | $132m | $115m |
| dai · spark# | 2.49% | 4.13% | 68% | $308m | $208m |
| usds · compound v3# | 4.38% | 5.31% | 90% | $1.8m | $1.6m |
| usds · spark# | 2.35% | 4.00% | 66% | $1.12bn | $735m |
| usds · aave v3# | 0.15% | 5.69% | 4% | $9.1m | $0.3m |
| usde · aave v3# | 0.69% | 6.55% | 14% | $657m | $94.6m |
| pyusd · aave v3# | 3.98% | 5.04% | 88% | $7.5m | $6.6m |
| pyusd · spark# | 0.86% | 4.12% | 24% | $181m | $42.8m |
| weth · aave v3# | 1.47% | 2.08% | 84% | $5.25bn | $4.40bn |
| weth · spark# | 1.42% | 1.89% | 79% | $1.40bn | $1.11bn |
| weth · compound v3# | 1.28% | 1.87% | 64% | $127m | $81.1m |
observations
each market on the list prices a loan off the share of the pool that borrowers have taken, and pays lenders that rate times the share that is working, minus the protocol's cut. usdc on compound v3 pays 4.40% at 90% utilization44 from the limits: "one block. a rate moves with every borrow and every repayment"; on aave v3 it pays 3.63% at 92%, from a pool 6 times larger. usds on aave pays 0.15% because borrowers have taken 3.7% of it: $9.1m supplied, $0.3m out. the same dollar in three markets earns rates a factor of 29 apart.
usde on aave is the other kind of pool: $657m supplied, 14% borrowed, 0.69% for the lenders and 6.55% for the few borrowers. people put usde there as collateral to borrow something else against it; the deposit and its rate are both side effects.
weth earns 1.28% to 1.47% and costs 1.87% to 2.08% to borrow: the narrowest spread on the list, on the largest pool, $5.25bn of ether on aave alone. spark holds $1.12bn of usds at 66% utilization and pays 2.35%. for comparison, sky pays 3.60% on its savings rate and 1.25% on the dai savings rate.
method
lendrates --jsonpython 3.10+, standard library, public rpcs, about thirty seconds. aave v3 and spark run the same pool code: getReserveData gives the supply and the borrow rate, and the totalSupply of each reserve's a-token and debt token gives what is supplied and what is borrowed. compound v3 is one contract per lent token: getUtilization, then getSupplyRate and getBorrowRate at that utilization. sky's ssr() and dsr() are per-second rates that governance sets. every apy compounds its rate every second, the way aave's interface shows it.
a workflow in the repository writes one row per asset and market to daily.csv at 00:33 utc, so you can follow a rate over weeks.
sources
- the aave v3 pool and the spark pool, with prices from each pool's own oracle.
- the compound v3 contracts for usdc, usdt, usds and weth. their dollar sizes use aave's oracle price for the same token.
- susds for the sky savings rate and sdai for the dai savings rate.
- a public json-rpc node: publicnode, mevblocker, drpc, tenderly or blastapi, tried in that order.
limits
- one block. a rate moves with every borrow and every repayment: six days later, at block 26,026,599, usdc paid 3.77% on compound v3 and 3.76% on aave v3.
- i leave out rewards paid in other tokens: they change weekly and live outside these contracts.
- the apy compounds every second. compound's own interface shows the apr, which reads a little lower.
- the dollar sizes use each protocol's oracle price.
revised 21 sep 2026. the note now lays out question, data, method, observations, sources and limits. the figures from 15 september did not change; the one line that cites 21 september says so. none of it is advice, and a rate describes one block. if a number differs from what the protocol's own page shows at the same block, i want to hear about it.
revised 23 sep 2026. the links to my code now point to the copies on this site, and short notes in the margin say where a figure came from. the figures and the sentences above did not change.