Liquity

Websitehttps://www.liquity.org
X (Twitter)https://x.com/LiquityProtocol
GitHub
Defillama
ChainEthereum

Declaration

This review has been submitted by CookingCryptos, sagaciousyves on 2024-10-23.

It was reviewed and published by the DeFi Collective team on 2024-10-23.

The review has not been updated since the initial submission.

This content is provided "as is" and "as available". Read more in our Terms.

Stage

Risks

ChainUpgradeabilityAutonomyExitWindowAccessibility

Summary

Liquity is a decentralized borrowing protocol that allows you to draw interest-free loans against Ether used as collateral. Loans are paid out in LUSD (a USD pegged stablecoin) and need to maintain a minimum collateral ratio of 110%.

In addition to the collateral, the loans are secured by a Stability Pool containing LUSD and by fellow borrowers collectively acting as guarantors of last resort. Learn more about these mechanisms under Liquidation.

Overview

Chain

The Liquity protocol is deployed on Ethereum mainnet.

Chain score: L

Upgradeability

All permissions in the system have been renounced and the protocol is fully immutable. No upgrades or changes can be made to the protocol, its functions or parameters.

Upgradeability score: L

Autonomy

Liquity relies on two external oracles, Chainlink (primary) and Tellor (fallback), but has a robust fallback mechanism in place, using the "last good price" if both oracles fail or become untrusted. This ensures the protocol can continue operating without interruption, minimizing the impact of oracle failure on its performance. Despite its reliance on external oracles, Liquity’s fallback systems mitigates the risk of disruptions.

Autonomy score: L

Exit Window

Liquity’s contracts are fully immutable, no upgrades or changes can be made, removing the need for an exit window.

Exit Window score: L

Accessibility

Multiple user interfaces exist and are operated by independent actors ensuring access to the protocol and user funds even if an interface is shutdown or censors a user's transactions.

A list of third-party frontends can be found here.

Accessibility score: L

Technical Analysis

Contracts

Permission Owners

All external permissions are revoked, the protocol is immutable 🎉

Permissions

ContractFunctionImpactOwner
ActivePoolsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: troveManager, borrowerOperations, stabilityPoolAddress and defaultPoolAddress.0x0
BorrowerOperationssetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: activePool, collSurplusPool, lusdToken, troveManager, lqtyStaking, gasPoolAddress, lqtyStakingAddress, defaultPool, priceFeed, sortedTroves and stabilityPoolAddress.0x0
TroveManagersetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: defaultPool, priceFeed, collSurplusPool, lqtyStaking, borrowerOperationsAddress, activePool, gasPoolAddress, lqtyToken, lusdToken, sortedTroves and stabilityPool.0x0
CollSurplusPoolsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: activePoolAddress, borrowerOperationsAddress, troveManagerAddress.0x0
CommunityIssuancesetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: lqtyToken, stabilityPoolAddress.0x0
DefaultPoolsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: troveManagerAddress, activePoolAddress.0x0
HintHelperssetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: troveManager, sortedTroves.0x0
LockupContractFactorysetLQTYTokenAddressThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: lqtyTokenAddress.0x0
LQTYStakingsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: lqtyToken, troveManagerAddress, borrowerOperationsAddress, activePoolAddress, lusdToken.0x0
PriceFeedsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: priceAggregator, tellorCaller.0x0
SortedTrovessetParamsThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: troveManager, borrowerOperationsAddress. And it allows to set the max size for data.0x0
StabilityPoolsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: troveManager, borrowerOperations, activePool, lusdToken, sortedTroves, priceFeed and communityIssuance.0x0
UnipoolsetAddressesThe permissioned function allows the owner of the permission to set the following addresses in order to set relationships to co-dependent smart contracts of the Liquity system: lqtyToken and uniToken.0x0

Dependencies

The only external protocol dependency is an ETH/USD price feed (the Oracle) which is used to compute the value of users’ collateral when minting LUSD, redeeming LUSD or liquidating troves.

The system relies on two different oracles: Chainlink is the primary oracle and Tellor is the fallback oracle in case the chainlink price feed is frozen or untrusted. The Chainlink price feed is deployed at 0x3D7aE7E594f2f2091Ad8798313450130d0Aba3a0, the Tellor oracle is deployed at 0xAd430500ECDa11E38C9bCB08a702274b94641112.

If both Chainlink and Tellor are frozen or untrusted the last good price is used and the system keeps operating allowing users to withdraw their assets.

Exit Window

The protocol is completely immutable, thus no exit window is required 🎉

Security Council

The protocol is completely immutable, thus no Security Council is required 🎉