Liquity v2 (Ethereum)
Takes as collateral: ether
What the ether is: 27.3% ether itself (ETH, WETH) · 72.7% staking tokens (wstETH, rETH, cbETH…) · 0.0% restaking tokens (weETH, ezETH…). Staking tokens count at their own contract rate; the market price is published beside it.
Credit secured by ether is never added to credit secured by bitcoin. An account holding both is shown as a bound in each view and added to neither.
10 of 10 criteria researched. What the criteria are →
Markets — as served, not a venue rate
One row per market, as the venue publishes them. These are market rates: combining them into a single venue rate is a weighting across this venue's markets, and choosing one here would be a methodology decision taken in a web page.
No BTC market rows are served for this venue. It runs contracts, so the absence is this dataset’s, not the venue’s.
Price
What does credit cost here, and how is the price formed?
| Rate formation | borrower_setsourceLiquity v2 on Ethereum (chain 1) — set by each borrower, per trove, and changeable by that borrower or a delegate/batch manager they appoint (BorrowerOperations.adjustTroveInterestRate, published source). ⚠ NOT a function of utilisation and not set by governance: the AddressesRegistry owner() and BOLD owner() are the zero address and the CollateralRegistry has no owner (read 2026-10-06). The redemption fee (base rate 0.42% before decay) is set by formula, not by anyone. Matches the registry's borrower_set, as for the Felix fork. |
|---|---|
| Term structure | open_endedsourceLiquity v2 on Ethereum (chain 1) — a trove carries no expiry (TroveManager.getLatestTroveData has no such field, read 2026-10-06); it persists until repaid, liquidated, redeemed against, or its branch is shut down. |
| Rate certainty | fixed_at_originationsourceLiquity v2 on Ethereum (chain 1) — each trove carries the annual rate ITS BORROWER set (TroveManager.getLatestTroveData(id).annualInterestRate, getTroveAnnualInterestRate(id)). Read 2026-10-06 at block 26133613: debt-weighted average (ActivePool aggWeightedDebtSum / aggRecordedDebt) WETH 3.37%, wstETH 2.54%, rETH 8.41%; lowest rate on each branch 0.5% (SortedTroves.getLast()), highest WETH 6.2%, wstETH 8.1%, rETH 9.4% (getFirst()). Interest ACCRUES, CHECKED on chain: the rETH trove at index 0 (rate 8.5%, recordedDebt identical at both blocks) owed 2,483.5367 BOLD at block 26083213 and 2,487.7398 at block 26133613, 4.2031 more. The protocol does not move a trove's rate. ⚠ It is fixed only until the borrower — or an interest delegate or batch manager the borrower appoints — changes it (an earlier change within 7 days costs 7 days of average interest, published constant), and a low rate has a cost the rate does not show: redemptions take the lowest-rate troves first, so others can FORCE a low-rate loan to be repaid out of its collateral. Borrowing also charges an upfront fee of 7 days' average interest. Per the published constants the rate must lie between 0.5% and 250%. |
Quality
What stands behind a position, and what can change under the reader?
| Oracle dependency | multiplesourceLiquity v2 on Ethereum (chain 1) — each branch's AddressesRegistry → priceFeed(), read 2026-10-06 at block 26133613. WETH: PriceFeed 0xCC5F8102eb670c89a4a3c567C13851260303c24F names ONE aggregator, ethUsdOracle() = Chainlink 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 ("ETH / USD", staleness limit 24 hours). wstETH: PriceFeed 0xe7Aa2Ba9E086A379d3beb224098bC634a46e314E combines Chainlink 0xCfE54B5cD566aB89272946F602D76Ea879CAb4a8 ("STETH / USD", 24 hours), the same ETH / USD feed, and the token's own rate (rateProviderAddress() = the wstETH contract 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0). rETH: PriceFeed 0x34F1E9c7dcc279ec70d3c4488EB2D80FBa8B7b2B combines Chainlink 0x536218f9E9Eb48863970252233c8F271f554C2d0 ("RETH / ETH", 48 hours), ETH / USD, and rETH's own getExchangeRate() (0xae78736Cd615f374D3085123A210448E74Fc6393); per the published source it takes the LOWER of the market and canonical prices. All three priceSource() = 0 (primary). ⚠ "multiple" here is DEPENDENCY, not redundancy: there is no second provider and no fallback oracle. Per the published source, if any source a branch uses fails (stale or invalid), the branch SHUTS DOWN and prices at ETH/USD × canonical rate or at its last good price. The WETH branch on its own would be single. Every price is ETH-denominated at root: a fall in ether moves all three branches together. |
|---|---|
| Default & liquidation | thresholdsourceLiquity v2 on Ethereum (chain 1) — read 2026-10-06 from each AddressesRegistry: minimum collateral ratio WETH 110%, wstETH 120%, rETH 120% (a trove under it can be liquidated); critical ratio 150% / 160% / 160%; shutdown ratio 110% / 120% / 120%; liquidation penalty 5% through the stability pool and 10% / 20% / 20% by redistribution. Branch ratios now WETH 228%, wstETH 282%, rETH 441%; no branch is shut down (shutdownTime() = 0 on each TroveManager). Per the published source anyone may liquidate; the branch's stability pool absorbs the debt first and the rest is redistributed to the branch's other troves. ⚠ A healthy trove can also lose collateral to REDEMPTION: CollateralRegistry.redeemCollateral exchanges BOLD at face value for collateral, LOWEST-RATE troves first, split across branches in proportion to each branch's debt not covered by its stability pool (getUnbackedPortionPriceAndRedeemability(), read: WETH 5,249,459, wstETH 11,735,188, rETH 0 BOLD — so the rETH branch is not reached by a normal redemption today). Fee getRedemptionRateWithDecay() 0.73% (floor 0.5%, published constant). ⚠ Below the shutdown ratio a branch shuts down permanently and its troves can be "urgently" redeemed at a 2% collateral bonus (published source). |
| Custody & backing | protocol_custodialsourceLiquity v2 on Ethereum (chain 1) — read 2026-10-06 at block 26133613: each branch's collateral sits in its ActivePool (token balanceOf equals the pool's own getCollBalance(): WETH 10,738.9607 in 0xeB5A8C825582965f1d84606E078620a84ab16AfE, wstETH 17,916.5716 in 0x531a8f99c70D6A56A7CEe02d6B4281650d7919a0, rETH 5,645.5320 in 0x9074D72cc82DaD1e13E454755Aa8f144c479532F); DefaultPools hold 0. NO PROXIES: no EIP-1967 implementation or admin slot is set on the CollateralRegistry, BOLD, or any branch's TroveManager, AddressesRegistry, ActivePool, BorrowerOperations or PriceFeed. AddressesRegistry.owner() and BOLD.owner() are the zero address (renounced). No administrator can move the collateral. Interest goes 75% to the stability pool and 25% to the interestRouter 0x807DEf5E7d057DF05C796F4bc75C3Fe82Bd6EeE1, Liquity's governance contract, which directs it to incentive initiatives (published constant SP_YIELD_SPLIT and manifest). ⚠ wstETH and rETH are themselves claims on Lido and Rocket Pool, whose own upgradeability was not read. |
| Recourse | non_recoursesourceLiquity v2 on Ethereum (chain 1) — per the published source (no view function states it) liability is bounded by the trove's collateral; a shortfall is absorbed by the branch's stability pool or redistributed to the branch's other troves, and nothing pursues the borrower. |
| Track record | 16 months observedsourceLiquity v2 CollateralRegistry 0xf949982B91C8c61e952B3bA942cbbfaef5386684 on Ethereum (chain 1) — first block with code at the root 22516069 (2025-05-19), found by binary search on getCode against an archive node (eth.drpc.org), matching Liquity's announcement that V2 relaunched on 2025-05-19 (liquity.org/blog/liquity-v2-redeployment). 16 full months to 2026-10-06, with live debt on all three branches now and none shut down. ⚠ The FIRST deployment (2025-01-23) was abandoned after a stability-pool bug confirmed on 2025-02-13; this record counts the relaunched contracts only. Liquidation and redemption history was not read. |
Composition
Who and what makes up this market?
| Collateral accepted | ETH branches (3): WETH, wstETH, rETHsourceLiquity v2 CollateralRegistry 0xf949982B91C8c61e952B3bA942cbbfaef5386684 on Ethereum (chain 1) — totalCollaterals() = 3, getToken(i)/getTroveManager(i) (root: https://github.com/liquity/bold/blob/main/contracts/addresses/1.json). Read 2026-10-06 at block 26133613: WETH 12,798,288 BOLD against 10,738.9607 WETH (93 active troves, 13 zombie; MCR 110%; branch ratio 228% at the feed's price); wstETH 21,457,288 BOLD against 17,916.5716 wstETH (49 active troves, 32 zombie; MCR 120%; branch ratio 282% at the feed's price); rETH 4,058,809 BOLD against 5,645.5320 rETH (12 active troves, 7 zombie; MCR 120%; branch ratio 441% at the feed's price). Collateral WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, wstETH 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0, rETH 0xae78736Cd615f374D3085123A210448E74Fc6393 (all 18 decimals). Branch debt 38,314,385 BOLD in all; BOLD 0x6440f144b7e50D6a8439336510312d2F54beB01D totalSupply() 38,313,862, within 523 BOLD of the branch debt — interest and fees accrued but not yet minted (pending interest alone 144.0287). Largest trove's share of branch debt: WETH 28.69%, wstETH 31.47%, rETH 89.56%. ⚠ NO bitcoin: no branch takes a bitcoin token, and per the published source branches are fixed at deployment (CollateralRegistry takes its tokens and TroveManagers in its constructor, totalCollaterals is immutable, and it has no function that adds one; the AddressesRegistries are renounced). ⚠ A LEGACY deployment from 2025-01-23 (CollateralRegistry 0xd99De73b95236F69A559117ECD6F519Af780F3f7, its own "Bold" 0xb01dd87B29d187F3E3a4Bf6cdAebfb97F3D9aB98) still holds 201,459 of its own Bold, 199,708 of it in 1 wstETH trove; it is not this venue and is not counted. |
|---|---|
| Book depth & concentration | disclosedsourceLiquity v2 on Ethereum (chain 1) — the book is publicly readable trove by trove: TroveManager.getTroveIdsCount() / getTroveFromTroveIdsArray(i) / getLatestTroveData(id) give every trove's debt, collateral and rate, read 2026-10-06 at block 26133613 for all 206 trove ids (154 active, 52 "zombie" — redeemed below the minimum debt; zombie debt 0). The sum of active troves' entireDebt agrees with each branch's getEntireBranchDebt() to within 13,000 wei (rounding in the aggregate accrual). Who the borrowers are is not disclosed beyond their addresses (a trove is an NFT, troveNFT()). |
| Observability | price: none — Not yet observed: registered 2026-10-06; the venue's own direct read is not built yet. As of 2026-10-06. quantity: none — Not yet observed: registered 2026-10-06; the venue's own direct read is not built yet. As of 2026-10-06. composition: none — Not yet observed: registered 2026-10-06; the venue's own direct read is not built yet. As of 2026-10-06. |
What the loans are denominated in
Not yet established for this venue — which is not the same as dollars.
Backing chain
Each link from what this venue takes as collateral down to the bitcoin it rests on, in order, with how each link was established.
How a chain is read, and what it does not claim
backing_chain: the ordered claims standing between a creditor and the coins, each link derived from a sourced fact already held and carrying it in `derived_from` — the custody cell, the venue's borrow card, or wrapper_registry.yaml for who holds the bitcoin behind a token. A `representation` link has one branch per token the venue takes; branches are alternatives, not a sequence. A link nobody has established is shown with status `incomplete` and names what is missing — it is never dropped, because a missing link omitted makes a long chain look short. `undisclosed` means the party does not publish it; `incomplete` means this dataset has not established it. NEVER SCORED AND NEVER COUNTED: no length, link count or ranking is published, and none should be derived — chain length and link transparency are orthogonal (ETP-backed margin is the longest chain here and every link of it is regulated). `recourse` is what the creditor holds beyond the chain. ⚠ Tokens are identified BY SYMBOL: the wrapper registry is not keyed by chain or address, so every `representation` link carries a `deployment` step that is incomplete — whether a token is native to the chain of the venue or a bridge receipt (one more link) is not established — and a symbol the registry knows to name a different token on a venue is shown unresolved, not given that wrapper's holders.
- contract_escrow established — the protocol contract — the collateral is escrowed and neither the operator nor the borrower can move it
source
attribute · custody_model = protocol_custodialLiquity v2 on Ethereum (chain 1) — read 2026-10-06 at block 26133613: each branch's collateral sits in its ActivePool (token balanceOf equals the pool's own getCollBalance(): WETH 10,738.9607 in 0xeB5A8C825582965f1d84606E078620a84ab16AfE, wstETH 17,916.5716 in 0x531a8f99c70D6A56A7CEe02d6B4281650d7919a0, rETH 5,645.5320 in 0x9074D72cc82DaD1e13E454755Aa8f144c479532F); DefaultPools hold 0. NO PROXIES: no EIP-1967 implementation or admin slot is set on the CollateralRegistry, BOLD, or any branch's TroveManager, AddressesRegistry, ActivePool, BorrowerOperations or PriceFeed. AddressesRegistry.owner() and BOLD.owner() are the zero address (renounced). No administrator can move the collateral. Interest goes 75% to the stability pool and 25% to the interestRouter 0x807DEf5E7d057DF05C796F4bc75C3Fe82Bd6EeE1, Liquity's governance contract, which directs it to incentive initiatives (published constant SP_YIELD_SPLIT and manifest). ⚠ wstETH and rETH are themselves claims on Lido and Rocket Pool, whose own upgradeability was not read. - representation incompleteno curated BTC representation is held for this venue (markets / metadata / collateral_asset)
source
The generic axis set
Identical for every venue, identically computed. An axis that cannot be computed here renders its reason — never silently omitted, because an omitted axis says it was not considered. A figure that covers only part of what the axis asks is marked, with what it leaves out beneath it. Collateral, debt and the borrow and lend rates are the tiles at the top of this page.
| Utilisation (venue roll-up) | unknown (this venue has no market rows in the rates payload yet) |
|---|---|
| Intermediation margin | unknown (this venue has no market rows in the rates payload yet) |
| Trailing realised average (7/30/90d) | unknown (no per-venue time series is held, so a trailing figure would be a single reading dressed as an average) |
| Rate volatility (30/90d) | unknown (no per-venue time series is held, so a trailing figure would be a single reading dressed as an average) |
| Spread to the pair aggregate | unknown (this venue has no market rows in the rates payload yet) |
| Spread to matched Treasuries | unknown (this venue has no market rows in the rates payload yet) |
| Origination flow | unknown (needs loan-level history, which is held for Morpho Blue only) |
| Repayment flow | unknown (needs loan-level history, which is held for Morpho Blue only) |
| Aggregate and distributional LTV | unknown (needs loan-level history, which is held for Morpho Blue only) |
| Residence distribution | unknown (needs loan-level history, which is held for Morpho Blue only) |
| Liquidation incidence | unknown (needs loan-level history, which is held for Morpho Blue only) |
| Top-10 concentration share | unknown (needs loan-level history, which is held for Morpho Blue only) |
There is no score on this page and none will be added. The criteria are published and versioned before any venue is measured against them, and this venue's row is produced by the same pipeline as every other.
Access routes
Unknown (not surveyed yet). No one has looked for an MCP server for this venue. That is not the same as having looked and found none, and this row will not say the second while meaning the first. The listing criteria are published.
Ask for this by machine
| REST | GET https://api.bitcoincreditstack.com/v1/market/venues/liquity_v2_ethereum |
|---|---|
| MCP | get_venue({ venue_id: "liquity_v2_ethereum", collateral: "eth" }) |
The same figures, the same names and dates. Connect your AI →
How this venue compares depends on what you'd borrow, for how long, against what. That's a question for your AI, with this data behind it.
https://mcp.bitcoincreditstack.com/mcp