Liquid Buybacks: NEST execution with LDO/wstETH liquidity

Ahead of the NEST onchain vote, expected after Vote #203, this post shares remaining parameters and an intent of a change to the launch plan.

tl;dr

  • The team proposes that the launch mode is treasury-only, not LP. Snapshot vote approved launching in LP mode, but challenges that surfaced during development put that path in question, so the Aragon vote will propose launching in treasury-only mode, with backed LDO transferred directly to Treasury.
  • The Curve LDO/wstETH pool is deployed. Parameters published below, per the LIP-36 commitment.
  • LDO/wstETH pool potential EMA deadlock was mitigated via NEST implementation, with poolBootstrapMinTvlUsd set to $250,000.

Details

1. LDO/wstETH pool deployment

Despite the shifting market, the workgroup kept both directions open until the DAO vote: the pool was deployed as committed in LIP-36. Enabling LP mode later needs no additional deployments.

The Curve LDO/wstETH TwoCrypto-NG pool is deployed with following params:

Parameter Value
Pool address 0xD7f1dA0a28E39dd0dB70E6Acdc2B49846AD22760
Name / symbol Curve.fi LDO/wstETH · LDOwstETH-f
Coins LDO (0x5A98…1B32) / wstETH (0x7f39…2Ca0)
A 400000
gamma 145000000000000 (0.000145)
mid_fee 500000 (0.005%)
out_fee 5000000 (0.05%)
fee_gamma 230000000000000 (0.00023)
allowed_extra_profit 2000000000000
adjustment_step 146000000000000
ma_time 601 (seconds)
initial_price 8075081795329464726918 (~8,075.08 LDO per wstETH)
Factory 0x98EE851a00abeE0d95D08cF4CA2BdCE32aeaAF7F
Pool implementation 0x934791f7F391727db92BFF94cd789c4623d14c52
Math implementation 0x1Fd8Af16DC4BEBd950521308D55d0543b6cDF4A1
Views implementation 0x07CdEBF81977E111B08C126DEFA07818d0045b80
Factory admin 0x97aA696e37659Fb4f0B53824246d802Df40E980A
Fee receiver 0xa2Bcd1a4Efbd04B63cd03f5aFf2561106ebCCE00

2. LDO/wstETH pool EMA deadlock mitigation

The pool starts empty, so its EMA price oracle stays fixed at the deployed initial_price until trades happen. NEST normally blocks LP deposits if this EMA diverges too far from the Chainlink-based OracleRouter rate.

That can deadlock an empty pool (no liquidity → no trades → no EMA updates). To break the loop, the divergence check is disabled until TVL reaches poolBootstrapMinTvlUsd ($250,000). TVL is measured in USD at oracle prices, and deposits are bounded by minDepositValueUsd/maxDepositValueUsd, so the maximum unguarded exposure during bootstrap is the threshold plus one capped deposit. This only matters in LP mode and is inactive at launch.

3. Launch mode: treasury-only

NEST sells a limited amount of DAO-owned stETH to acquire LDO (via Stonks v2 / CoW Swap) and then either

  1. Treasury mode: routes 50% of the surplus in acquired LDO to the treasury
  2. LP mode: split 50% of surplus into LDO and deposit it into the LDO/wstETH Curve v2 pool. It is a rules-based mechanism for surplus conversion and improving liquidity depth.

Snapshot approved and launching in LP mode, but development issues surfaced that make it a poor default for day one. We therefore propose launching NEST in treasury-only mode while keeping LP mode ready for later enablement.

Enabling LP mode later is a single onchain action: point the executor to the LP-mode Stonks instance via BuybackExecutor.setStonks (no redeployments).

The issues fall into two buckets:

  1. Current Market
    Further modeling has weakened the case for LP mode at launch. The workgroup concluded that pool-deepening liquidity occurs only in a specific scenario: a sustained joint uptrend in LDO and wstETH. Also, the pool is small relative to existing LDO trading venues. With the upside this conditional and this thin, the launch-configuration choice is no longer a settled call for LPs.
  2. Security consideration
    There is no audit report covering the exact version of Curve TwoCrypto-NG code deployed onchain. Launching in treasury-only mode keeps DAO funds out of the pool until this is resolved, while still allowing the buyback mechanism to run. For scale, all ~1k bytecode-identical pools that live today hold about $5M in combined TVL, less than NEST’s $10M yearly cap.

4. Sizing and guard parameters

LIP-36 committed to publishing minSpendPerCallUSD, the pool guards, and the order and deposit bounds before the onchain vote:

Parameter Value
minSpendPerCallUSD $1,000
minAllowedOrderAmount / maxAllowedOrderAmount 1 / 20 stETH
poolPriceDivergenceToleranceBps 200 (2%)
poolBootstrapMinTvlUsd $250,000
minDepositValueUsd / maxDepositValueUsd $1,000 / $50,000

The pool guards and deposit bounds apply only under LP mode and stay dormant at launch.

Next steps

  • The final audit report of the NEST contracts will be published in this thread as soon as possible.
  • List of onchain vote items will be published to this thread as well.
  • Onchain vote to launch NEST in treasury-only mode, targeted after the Staking Router v3 release.

сс: @cp0x @Kuzmich @batuX @Leuts @Lanski @polar Please, let us know if you have any concerns on launching parameters, including Treasury mode.

11 Likes