[Direct to AIP] LBTC Oracle and CAPO implementation Update

Summary

Chaos Labs recommends migrating the LBTC oracle on Aave V3 Ethereum instance from the BTC / USD Chainlink feed to a composite LBTC–BTC exchange-rate feed wrapped in a CAPO limiter. The change stems from Lombard’s activation of LBTC’s yield-bearing design on 22 July 2025. Staking rewards will be converted to LBTC and burned, causing the token’s fair value to drift above 1 BTC. If Aave continues valuing LBTC at a strict 1:1 peg with BTC, while no risk is posed to the protocol, the asset will be underpriced to its intrinsic value, hence causing a diminishing of the pool’s capital efficiency.

Similarly to LBTC, Chaos Labs recommends implementing a CAPO limiter to the eBTC exchange rate; however, the eBTC internal accountant is already expected to include LBTC yield accrual.

Motivation

LBTC

Lombard has confirmed that all BTC deposited have already been accruing Babylon staking rewards since 6 April 2025, and that on 22 July 2025, LBTC will become a yield-bearing token, passing those rewards into the asset’s price. Unlike earlier distributions, users will not harvest BABY or any other reward token, as the value will accrue gradually to LBTC, increasing its BTC-denominated exchange rate.

Lombard’s website states that in addition to the accumulated rewards since April 6, the unclaimed BABY airdrop balances will be swapped for LBTC, and the obtained tokens burned, effectively increasing its per-asset backing.

LBTC’s current design does not offer an on-chain function to determine the asset’s exchange rate, as this function is covered by a third-party proof-of-reserve oracle in collaboration with Redstone. However, Lombard recently deployed a new accounting oracle, which can be used for its Aave pricing.

The initial yield distributions are expected to be weekly; however, Lombard intends to adopt a daily distribution in the future, which will prevent drastic exchange rate movement.

Additionally, the acquisition of LBTC assets to burn is expected to be performed through the BTC market to prevent liquidity issues.

If Aave continues to value LBTC via the static BTC / USD feed once this process begins, the protocol will underprice collateral, leading to a less efficient market. However, given LBTC’s borrowability not being enabled in the Aave instance, the underpricing of collateral does not prevent a market risk.

eBTC

eBTC represents a restaked version of LBTC, and its backing is represented primarily by LBTC and, to a minor extent, by BTC wrapper to provide more responsive withdrawals. Its withdrawal process and internal accounting adopt a WBTC-anchored exchange rate; as such, any yield accrued to the underlying LBTC is expected to be properly represented in the eBTC’s internal exchange rate with respect to the underlying aggregate share of LBTC that collateralizes eBTC. However, in order to prevent a possible exchange rate manipulation, we recommend adopting a CAPO feed to wrap the internal rate.

Technical Analysis

LBTC

To determine the effective yield since the launch of the staking, we account for the combination of non-distributed airdrop and accumulated rewards as reported by the Lombard website as 59M BABY, which at the current price is valued $3.1M.

Given current LBTC marketcap of $1.73B , if no additional tokens were to be claimed, we estimate the accrued yield of LBTC to represent an increase in LBTC price of 0.18%, representing an annualized yield of 0.93% if started on April 6th.

In order to ensure a sufficient margin of error given by changes in BABY’s price and LBTC market cap prior to launch, we recommend adopting an initial maxYearlyRatioGrowthPercent of 2%.

This parameter can be adjusted following the launch of the asset and after observation of the effective yield accrued.

We additionally recommend a 7-day snapshot delay combined with a Snapshot Ratio of 30 days to protect the exchange rate from short-term yield volatility and ensure timely updates to minimize discrepancies between the exchange rate and the CAPO limiter.

eBTC

As eBTC’s backing has historically ranged between 90% and 99% LBTC, we recommend adopting a maxYearlyRatioGrowthPercent of 95% of the one recommended for LBTC, as such 1.9% is best suited to represent the expected rate of accrual of the asset.

Specifications

LBTC

Oracle Setup

Asset Current Oracle Recommended Oracle
LBTC BTC/USD Chainlink LBTC/BTC Internal Oracle * BTC/USD Chainlink

CAPO Parameters

maxYearlyRatioGrowthPercent Snapshot Ratio Snapshot Delay
2.00% 30 days 7 days

eBTC

CAPO Parameters

maxYearlyRatioGrowthPercent Snapshot Ratio Snapshot Delay
1.90% 30 days 7 days

Disclaimer

Chaos Labs has not been compensated by any third party for publishing this recommendation.

Copyright

Copyright and related rights waived via CC0

1 Like

LlamaRisk supports the change to LBTC oracle setup and the implementation of CAPO for both LBTC and eBTC as Lombard turns LBTC into a yield-bearing token. This change will help Aave price the tokens accurately.

Lombard announced on July 15, 2025 that yield-bearing LBTC will launch on July 22. This follows the Babylon Genesis Event, which introduced the BABY token. Previously, Babylon staking yield was distributed as points now convertible to BABY tokens, claimable until July 22 by users who staked using Lombard before April 6, 2025. Any unclaimed BABY will be converted by Lombard into LBTC and distributed as yield. This transition streamlines the process and makes LBTC a non-rebasing yield-bearing token.

LBTC Oracle

Lombard has deployed an on-chain accounting oracle, the StakedLBTCOracle contract, to publish the reserve ratio of LBTC. The getRate() function can be used alongside the existing Chainlink BTC/USD feed to price LBTC in Aave markets. Rather than computing the ratio in real-time, the oracle is designed to report a reserve ratio periodically updated by a trusted entity via the publishNewRatio() function.

This trusted entity is a Notary Consortium, a 12-of-16 threshold set of EOAs, that collectively agree on a new LBTC: BTC ratio and a future switchTime. The contract implements a dual-ratio system to manage price transitions: prevRatio holds the currently active exchange rate, while currRatio stores the upcoming rate that becomes active at the specified switchTime. To constrain abrupt changes, the oracle includes a ratioThreshold() parameter, currently set to 1,000,000, which limits the maximum allowed price change to 0.1% over 24 hours (approximately 44% when compounded annually). LBTC’s yield, reflected in its oracle exchange rate via periodic updates, does not pose a risk to Aave or LBTC stakers, as atomic arbitrage is prevented by the 7–9 day unstaking period and the low yield makes such strategies economically unviable. While minor DEX arbitrage may occur, it presents no bad debt risk to Aave from LBTC borrows due to the minimal daily price appreciation.

The identity of the validator set used by the Consortium could not be confirmed, but it is likely comprised of the Lombard team. The owner of the oracle contract is the LombardTimeLock, configured with a minimum delay of 3,601 seconds (~1 hour). The Consortium contract itself is governed by a 3-of-5 Safe multisig, also possibly under the control of the Lombard team.

As the oracle contract is relatively new, no formal smart contract audits were available at the time of writing to publicly validate its security.

eBTC Pricing

On Aave, eBTC is priced using the AccountantWithRateProviders contract, which provides an internal exchange rate relative to a base asset, combined with the Chainlink BTC/USD price feed. The exchange rate between eBTC and LBTC is derived from the getRateInQuote() function, where LBTC is used as the quote (base) asset. Currently, approximately 89% of eBTC on Ethereum is backed by LBTC. Given this high exposure, applying 95% of LBTC’s maxGrowth CAPO parameter to eBTC is reasonable for setting an upper bound constraint.

Disclaimer

This review was independently prepared by LlamaRisk, a community-led decentralized organization funded in part by the Aave DAO. LlamaRisk is not directly affiliated with the protocol(s) reviewed in this assessment and did not receive any compensation from the protocol(s) or their affiliated entities for this work.

The information provided should not be construed as legal, financial, tax, or professional advice.

LBTC yield-bearing upgrade: technical analysis


Summary

Lombard is upgrading LBTC into a yield-bearing asset launching on August 11, 2025. Therefore, we believe it is important to analyze the changes and propose a pricing strategy that reflects the asset’s new infrastructure profile, as well as LRTs backed by LBTC, such as eBTC.


The key change is the LBTC transition from being 1:1 BTC-priced to becoming yield-bearing:

  • The LBTC/BTC ratio can increase via the burning of LBTC on the Lombard Ledger - a process directly tied to staking rewards earned through Babylon’s BSN. These rewards are converted into LBTC and then burned, reducing the token’s circulating supply.
    Alternatively, the ratio also improves when the Lombard team deposits additional BTC into specific (non-user) backing accounts of the protocol.
  • The LBTC/BTC ratio is calculated via the Lombard Ledger consortium of Tier‑1 institutions. The consortium calculates the total amount of BTC in the custody of Lombard and the LBTC’s total supply across all deployed chains. After consensus calculation of the new ratio, the consortium members sign it, and the new value is updated in the StakedLBTCOracle.
  • It’s essential to note that the underlying BTC is subject to slashing risk on Babylon, which may affect the LBTC/BTC exchange rate. However, slashing is limited - Babylon enforces a hard cap of 10 bps per slashing event, and unstaking automatically initiates after the first slashing to prevent further losses.

We’ve conducted a technical review of the exchange rate oracles provided by Lombard.

StakedLBTCOracle


The StakedLBTCOracle is the source of the price ratio between LBTC/BTC on EVM chains. The exchange rate can be updated by providing the new rate data and proof signed by the Consortium members. It’s an upgradable Transparent Proxy.

During the update, the contract ensures that the new rate does not deviate more than the threshold, which is adjusted linearly based on the update interval, with a maximum threshold of 0.1% for a 1-day interval update. Then, the proof provided is checked against the Lombard Consortium contract, and if it is valid, the rate is updated.

The getRate() method provides the actual exchange rate of LBTC <> BTC, and has a switch time feature that allows rates to be set up to 1 minute in the future. The rationale for the switch time is that the consortium agreed on and signed the correct new rate at the right time. This gives more consistent LBTC rates, updating at the same time across all chains, even though the transaction could take slightly longer to be processed on each chain.

Mainnet

Permission owner functions Criticality Risk
proxyAdmin1-day Timelock upgradeTo CRITICAL :green_circle:
owner: 1-day Timelock changeConsortium, changeMaxAheadInterval, updateRatioThreshold HIGH :green_circle:
permissionless (needs Consortium signed proof) publishNewRatio CRITICAL -

Base

Permission owner functions Criticality Risk
proxyAdmin1-day Timelock upgradeTo CRITICAL :green_circle:
owner: 1-day Timelock changeConsortium, changeMaxAheadInterval, updateRatioThreshold HIGH :green_circle:
permissionless (needs Consortium signed proof) publishNewRatio CRITICAL -

Miscellaneous


  • The system has undergone security reviews by OpenZeppelin and Sherlock, which can be found here.
  • Following our discussion with the Lombard team, we recommended transferring ownership of both the ProxyAdmin and the owner to a timelock, which provides additional time to review the implementation during upgrades. They agreed with the recommendation and implemented the changes shortly afterward.

Pricing Strategy


Considering the new asset’s yield-bearing LST nature, we recommend switching from the current BTC/USD oracle to use an LST CAPO that combines the asset’s exchange rate with its underlying (LBTC/BTC) and utilizes a Chainlink price feed to convert the underlying to USD (BTC/USD).

The exchange rate will be retrieved from getRate(), which, as explained earlier, features a switch time that allows the rate to be set up to 1 minute in advance. It’s important to mention that users will experience a maximum 1-minute delay in the rate to keep it consistent across both mainnet and base. The maximum percentage change in the rate is 0.1%, meaning that if the rate increases by 0.1%, there should be no issues with underpricing the asset temporarily. On the other hand, if the rate drops by 0.1%, the overcollateralization risk parameters should be conservative to prevent any problems for users.

We believe this new pricing strategy will stay aligned with the inclusion of LBTC in the yield-bearing asset class.

LRTs depending on LBTC


Currently, eBTC is backed by LBTC, which also affects its price. On Aave, the eBTC price strategy uses a CAPO adapter, with the maxYearlyRatioGrowthPercent set to 0% because no yield has been generated before.

As we highlighted in the eBTC price strategy, this change should be re-evaluated as a new rate provider will be addressed for the eBTC <> LBTC exchange rate, meaning that the eBTC CAPO adapter parameters should reflect the upgrade:

  • Our CAPO adapter uses the Accountant contract to retrieve the eBTC/BTC exchange rate. Internally, the Accountant currently pegs its underlying components to 1 because they don’t earn rewards.
  • With the yield generated from LBTC, the Accountant will set up the rate provider through the GenericRateProviderWithDecimalScaling contract, which calls the same getRate() function from the LBTC Oracle.
  • This rate will be applied to the eBTC system for all upcoming LBTC deposits. The Accountant references an off-chain calculated eBTC/BTC exchange rate, which aggregates all BTC-pegged underlying assets - including non-yield-bearing (wBTC, cbBTC) - and incorporates the yield from LBTC.

This approach aligns with our recommended setup for pricing LBTC on Aave, updating the price of both assets simultaneously whenever the Consortium provides a new rate in the LBTC Oracle. With that said, we don’t see any problems with updating the eBTC CAPO adapter parameters (maxYearlyRatioGrowthPercent and snapshots) suggested by Chaos Labs.

Conclusion


We believe LBTC and eBTC have no issues in adjusting their price strategy to reflect the yield from LBTC stake rewards, where:

  • LBTC price strategy will be upgraded from a BTC/USD CL feed to the CAPO adapter detailed in the pricing strategy section.
  • eBTC CAPO adapter parameters will be updated to reflect the yield generated from LBTC.
1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.