Summary
This proposal seeks to deprecate all LlamaLend markets on the Sonic network. It will consist of two votes:
- Vote 1: Kill the gauges associated with the Sonic LlamaLend markets.
- Vote 2: Set the Sonic LlamaLend loan discounts to their maximum values (loan_discount = 50%).
All target addresses below:
| Market | Controller Address | Gauge Address |
|---|---|---|
| wS | 0x5eD490a9B71fa797231d2c5D9bE25bf91a953C19 | 0xaf3df70E5E5E24f85A4A93183f69CF735003a8D9 |
| stS | 0xB8C93fb97884Ea07c2Eb0eA741f78D10e8C5aF9F | 0x414243F5A72bBF355999F06f0cE70C6f9b685119 |
| scETH | 0x7547E577B3DDC23c02E10792457f8e51a225692E | 0x119710bca41aA10d6701f8e2D17ED2e2b8B99955 |
| scUSD | 0xbb7A0C558Fd34234Dc1608f4CD0a334E0075D73a | 0xf30348F8947F46aEdE57d9b9fFE42B56E4220D13 |
| wOS | 0xDC06056e208aB92bF173FF6DD662F1018ea0E483 | 0x474a58A0E75d664F450Fd9218Cb718307b25ea50 |
Abstract
This proposal initiates the deprecation of the LlamaLend markets deployed on Sonic by disabling their associated gauges on Ethereum mainnet and updating their borrowing discount parameters on Sonic. The first vote calls set_killed(True) on the five mainnet gauges linked to the Sonic LlamaLend markets. These calls are executed through the mainnet proxy owner that administers the gauges.
The second vote updates loan discounts on Sonic using the established cross-chain governance (xgov) broadcasting process. A transaction is sent from mainnet to the Sonic broadcaster contract, which relays calls to the Sonic proxy owner. For each Sonic LlamaLend market, borrowing parameters are updated to the maximum allowed discounts (50% loan discount). These parameter changes affect borrowers only when they next interact with their position, and is limited to assigning borrow power (this change will not induce liquidations).
There may be additional deprecation steps involving modification to the monetary policy and updating the user interface to reflect the deprecated status. This is the first step in a broader migration plan to make way for LlamaLend V2. We will start to deprecate more V1 markets as LlamaLend V2 becomes available on those chains and analogous markets have been deployed to allow for migration of positions.
Rationale
The LlamaLend deployments on Sonic have not achieved adoption and currently exhibit no meaningful borrowing or liquidity activity. Maintaining gauges and market parameters for inactive deployments introduces unnecessary maintenance overhead and creates the potential for emissions being directed to markets that no longer require support.
As part of the broader preparation for LlamaLend V2, inactive V1 markets will be deprecated across chains. Sonic is the first chain selected in this phased process due to its lack of usage, making the deprecation straightforward and operationally low impact. Removing these unused deployments helps maintain a clean gauge registry, prevent emissions waste, and focus resources on soon-to-launch V2 markets.
This proposal follows past governance precedent in retiring obsolete or superseded markets and ensures consistent treatment across chains.
Methodology
To ensure a smooth, predictable, and user-safe wind-down, the following coordinated actions will be taken:
1. Protocol Actions
- Kill Gauges to stop emissions and discourage further deposits.
- Set Loan Discount to 50%, reducing LTV for any new borrowing and preventing further leverage.
2. UI / Front-End Updates
- Deprecated markets will be hidden from new users.
- Only users with existing positions can access them, with all new actions disabled (no deposits, no extra collateral, no new loans).
- Users will see a clear deprecation warning and only have access to repay/withdraw/close-position/migration flows.
3. Communications
- Announcements will be shared through forums, Discord, Telegram, and Twitter, alongside in-app warning banners.
- This ensures all affected users are aware of the deprecation timeline and recommended next steps.
This combined approach provides a consistent, safe, and transparent wind-down framework that can be reused for future market deprecations.
Specification / Vote Actions
Vote 1 – Kill mainnet gauges associated with Sonic LlamaLend markets
Mainnet proxy owner: 0xff12c0df72E02ab9C1fD8b986d21FF8992a8cCEE
Gauges to be killed (all via set_killed(True)):
- wS gauge:
0xaf3df70E5E5E24f85A4A93183f69CF735003a8D9 - stS gauge:
0x414243F5A72bBF355999F06f0cE70C6f9b685119 - scETH gauge:
0x119710bca41aA10d6701f8e2D17ED2e2b8B99955 - scUSD gauge:
0xf30348F8947F46aEdE57d9b9fFE42B56E4220D13 - wOS gauge:
0x474a58A0E75d664F450Fd9218Cb718307b25ea50
PROXY = "0xff12c0df72E02ab9C1fD8b986d21FF8992a8cCEE"
ACTIONS = [
(PROXY, "set_killed", "0xaf3df70E5E5E24f85A4A93183f69CF735003a8D9", True),
(PROXY, "set_killed", "0x414243F5A72bBF355999F06f0cE70C6f9b685119", True),
(PROXY, "set_killed", "0x119710bca41aA10d6701f8e2D17ED2e2b8B99955", True),
(PROXY, "set_killed", "0xf30348F8947F46aEdE57d9b9fFE42B56E4220D13", True),
(PROXY, "set_killed", "0x474a58A0E75d664F450Fd9218Cb718307b25ea50", True),
]
Vote 2 – Set Sonic LlamaLend loan discounts to maximum values
Broadcaster (mainnet): 0x7BA33456EC00812C6B6BB6C1C3dfF579c34CC2cc
Target chainid: 146 (Sonic)
Sonic LlamaLend markets (targets on Sonic):
- wS:
0x5eD490a9B71fa797231d2c5D9bE25bf91a953C19 - stS:
0xB8C93fb97884Ea07c2Eb0eA741f78D10e8C5aF9F - scETH:
0x7547E577B3DDC23c02E10792457f8e51a225692E - scUSD:
0xbb7A0C558Fd34234Dc1608f4CD0a334E0075D73a - wOS:
0xDC06056e208aB92bF173FF6DD662F1018ea0E483
SONIC_BROADCASTER = "0x7BA33456EC00812C6B6BB6C1C3dfF579c34CC2cc"
WS = "0x5eD490a9B71fa797231d2c5D9bE25bf91a953C19"
STS = "0xB8C93fb97884Ea07c2Eb0eA741f78D10e8C5aF9F"
SCETH = "0x7547E577B3DDC23c02E10792457f8e51a225692E"
SCUSD = "0xbb7A0C558Fd34234Dc1608f4CD0a334E0075D73a"
WOS = "0xDC06056e208aB92bF173FF6DD662F1018ea0E483"
PROXY_OWNER_SONIC = "0xF5cefa8b5a4C8B958d1306A2d905b5dB7cb2796B"
LOAN_DISC = 50 * 10**16 # 50%
ws = Contract("0x5eD490a9B71fa797231d2c5D9bE25bf91a953C19")
sts = Contract("0xB8C93fb97884Ea07c2Eb0eA741f78D10e8C5aF9F")
sceth = Contract("0x7547E577B3DDC23c02E10792457f8e51a225692E")
scusd = Contract("0xbb7A0C558Fd34234Dc1608f4CD0a334E0075D73a")
wos = Contract("0xDC06056e208aB92bF173FF6DD662F1018ea0E483")
ACTIONS = [
# Set Sonic Params
(SONIC_BROADCASTER, "broadcast", 146, [
(PROXY_OWNER_SONIC, encode("set_borrowing_discounts(address,uint256,uint256)", WS, LOAN_DISC, ws.liquidation_discount())),
(PROXY_OWNER_SONIC, encode("set_borrowing_discounts(address,uint256,uint256)", STS, LOAN_DISC, sts.liquidation_discount())),
(PROXY_OWNER_SONIC, encode("set_borrowing_discounts(address,uint256,uint256)", SCETH, LOAN_DISC, sceth.liquidation_discount())),
(PROXY_OWNER_SONIC, encode("set_borrowing_discounts(address,uint256,uint256)", SCUSD, LOAN_DISC, scusd.liquidation_discount())),
(PROXY_OWNER_SONIC, encode("set_borrowing_discounts(address,uint256,uint256)", WOS, LOAN_DISC, wos.liquidation_discount())),
]),
]