Skip to main content
One row per rate update in a lending market. deposit_interest_rate and borrow_interest_rate are annual fractions. Read interest_rate_type first: it says whether a row’s rates apply from that block onward or over the interval that just closed.

Columns

ColumnTypeDescription
block_timestampTIMESTAMPTime of the block containing the rate update. Partition column.
block_numberINTEGERNumber of the block containing the rate update.
transaction_hashSTRINGHash of the transaction that emitted the rate update.
log_indexINTEGERPosition of the rate update in the block.
unique_idINTEGERRow key: fingerprint of chain_id, block_number, transaction_hash, log_index, lending_market_reserve_id. The reserve is part of the key because one rate update can apply to several reserves at once.
event_typeSTRINGConstant interest_rates; stacking key across the lending facts.
project_idSTRINGProtocol operating the market, such as aave.
app_idSTRINGDeployment of the protocol the market belongs to.
chain_idSTRINGChain the rate update happened on.
lending_market_idSTRINGMarket the rate applies to; joins dimensions.lending_markets.
lending_market_reserve_idSTRINGReserve the rate applies to; joins dimensions.lending_market_reserves.
lending_market_contract_addressSTRINGContract the market lives on; not a key.
token_idSTRINGToken the rate applies to: {token_address}-{chain_id}.
token_addressSTRINGContract address of that token.
token_symbolSTRINGSymbol of that token.
deposit_indexFLOATCumulative interest index on the supply side, starting at 1. The ratio between two rows is what a supplied balance earned between them. Where a protocol reports a realized share price rather than an accumulator (Morpho Blue), it can fall below 1 after a market absorbs bad debt, and the ratio then reads the loss as well as the interest.
borrow_indexFLOATCumulative interest index on the borrow side, starting at 1. The ratio between two rows is what a debt accrued between them. Over long gaps between rows this ratio and the annualized rate diverge, because Morpho accrues on a truncated series while quoting APY on the exponential; the index is the realized figure.
interest_rate_typeSTRINGHow to read the two rates. forward-looking means they apply from this block onward (Aave, Spark, HyperLend); backward-looking means they applied over the interval that ended at this block (Morpho Blue). Constant per protocol.
deposit_interest_rateFLOATAnnual rate paid to suppliers, as a fraction: 0.05 reads 5%.
borrow_interest_rateFLOATAnnual rate charged to borrowers, as a fraction: 0.05 reads 5%.

Sample queries

This table is large and split by day. Bound block_timestamp and filter chain_id on every query, or you read the whole table and the whole table is billed to you.
A market updates its rates whenever its utilization moves, so an active reserve has many rows in a day. deposit_interest_rate and borrow_interest_rate are annual fractions.