PI-11: Update Convert Down Penalty Gauge and Dewhitelist Pools

Executed on July 31, 2025 at 15:34 UTC.

Summary

  1. Convert Down Penalty Gauge V1.1: Update the Convert Down Penalty such that the Convert Down Penalty ratio is 100% during positive-TWAΔP Seasons while a minimum number of Pinto has not yet been minted.
  1. Pro-Rata Convert Down Penalty: Fix the application of the Convert Down Penalty in instances where the penalty should apply to only a portion of the Deposits Converted.
  1. Dewhitelist Pools: Dewhitelist the PINTO:WSOL and PINTO:WETH pools from the Deposit Whitelist.
  1. Optimal Deposited PDV: Set the optimal percentage of Deposited PDV of PINTO:cbETH, PINTO:cbBTC and PINTO:USDC to 33.333333% each.

Links

Problems

1. Convert Down Penalty Gauge V1.1

The Dynamic Convert Down Penalty had not resulted in the protocol spending significant time above its value target.

2. Pro-Rata Convert Down Penalty

If a Pinto -> LP Convert started with a price above the Excessively High Price threshold and resulted in a price below the Excessively High Price threshold, the protocol applied the penalty to all of the value Converted instead of only the portion below the threshold.

3. Dewhitelist Pools

Whitelisted LP tokens that contain an asset without liquidity on Base that is external to the Well were unable to be Converted into other LP tokens on the Deposit Whitelist without incurring large slippage costs, creating friction for Farmers to optimize their Seeds. There was no external liquidity on Base for WSOL.

Fragmenting the ETH exposure of the protocol across two pools leads to greater slippage when interacting with the pools than if the liquidity were concentrated in a single pool.

4. Optimal Deposited PDV

The removal of the two assets from the Deposit Whitelist required resetting the optimal distribution for the remaining tokens.

Solutions

1. Convert Down Penalty Gauge V1.1

Every Season, update the Convert Down Penalty Minting Threshold based on TWAΔP. Each Season with TWAΔP < 0 adds current supply × to the main threshold while unlocked, or to a running threshold while locked. The running threshold replaces the main threshold only when it exceeds it, then resets. Above-target Seasons reset the running threshold. Reaching the minting threshold clears the main threshold and tracked mints. At zero TWAΔP these thresholds remain unchanged.

For TWAΔP < 0, add to the main threshold if unlocked, or to the running threshold if locked.

If the running threshold exceeds the main threshold, replace the main threshold with it, reset the running threshold to zero and unlock the threshold. Tracked mints are not reset by this replacement.

Where:

2. Pro-Rata Convert Down Penalty

3. Dewhitelist Pools

4. Optimal Deposited PDV

Rationale

1. Convert Down Penalty Gauge V1.1

The Dynamic Convert Down Penalty started to decrease after the first Season in which the protocol logged a TWA∆P > 0. Particularly after longer periods where the protocol has failed to log a TWA∆P > 0, the protocol should highly discourage Pinto -> LP Converts until either the protocol mints some number of Pinto or the price is significantly above the value target.

By increasing the number of Pinto minted required before the penalty can decrease the longer TWAΔP remains negative the protocol aims to ensure that it mints a healthy number of Pinto before Pinto -> LP Converts return the price to its value target, where longer extended periods below the value target justify more minting once it returns to the value target. Once the minting threshold is cleared, subsequent positive-TWAΔP Seasons increase the Blight Factor so the protocol can gradually decrease the penalty until it reaches a level at which the protocol is able to oscillate across its value target.

2. Pro-Rata Convert Down Penalty

Applying the penalty only to the portion below the penalty price avoids penalizing the part of a Convert that maintains the price above that threshold.

3. Dewhitelist Pools

There was no WSOL or SOL on Base other than in the PINTO:WSOL Well. The result was that any LP -> LP Converts to and from the pool experienced a very high amount of slippage. This resulted in a loss of value for Convertors and the protocol, and created a high degree of friction for the Seed Gauge System to work effectively.

By reducing the number of pools with ETH exposure and concentrating the exposure in cbETH, the protocol minimizes the slippage experienced by Convertors and traders in the system and increases the amount of yield received on its liquidity. The downside is that all remaining paired assets carry censorship risk from Circle/Coinbase.

4. Optimal Deposited PDV

Setting the optimal ratios of the remaining pools to be approximately 1/3 each is a reasonable distribution of liquidity, with approximately 2/3 of the target Deposited PDV exposed to the crypto market and 1/3 exposed to stablecoins.

Contract Changes

Initialization

Executed InitPI11.init() at 0x35c229daa5e9028672137854b6342b57e058fb00. Reset the Convert Down Penalty ratio and rolling counter to 0. Initialized the locked minting threshold to 15,007,159.669041 Pinto, tracked mints and running threshold to 0, and the supply scalar to 0.000416666666666667 per negative-TWAΔP Season. Retained the counter rate of 1 and cap of 12. Set the independent penalty price to $1.005, dewhitelisted PINTO:WSOL and PINTO:WETH, and set the three remaining optimal Deposited PDV percentages to 33.333333% each.

Facet Changes

FacetActionPrevious ImplementationNew Implementation
ConvertFacetReplace0xdfa197784879926e2358a7c71c6a0bd487f919fd0x9e090554525af3e39b7191bcefaed4a594bfdf24
ConvertGettersFacetReplace0xe0b8fca80b1a7060fea44c6f823b221ec9d7217c0xc2eddd1cfb0ac4aab93a6aaedc097b8ccc114710
PipelineConvertFacetReplace0xc54cd71bfa5d0fe05d887eabbec4dbbc94cf74ba0x68206dab632667e293589078800a9a7ccca39b63
GaugeFacetReplace0x046c76aee5d109fba8708ee58a50d76eea1f98dc0xb054a1348d2a9fd5ba1eaa51ef1aee2d6ad402ed
ApprovalFacetReplace0xa7c95ed70be8f91f8d8af91de193710fa7ab32bb0x463edf62ff627351518dcf0ac015c1e98562412f
SeasonFacetReplace0x9c74f623d22c4132211c9a8c605de7d2cda017000x0c5aa699e1979493e172d114193ee75c6a5afb39
ClaimFacetReplace0xd38c3e61bf08734cd808aca15c944389968612e00x8bbcc20eaf03191f1970ed5d93567ab76034f44d
SiloGettersFacetReplace0xadfd7fbe59ca2624cec1b04f9bc65c7f90efed360x954fba56a8356e7439f41a39579c7be59791d92f
GaugeGettersFacetReplace0x0f97cb8bb44d3d7a0afaeac24bbfe152215e3c5a0x889d0183c752b89e8d6cd62870b4f8eb70d10893
OracleFacetReplace0x7256fad9eb704173afe2185d1a44edf826ff6c860x5d8e457dd58f443237e105c2f27dc2c75133976c
SeasonGettersFacetReplace0xebaa2c95efc7f1cef1a57dfb5fe05f8935d7390e0x47246b05945031432f30becbf602d2d7dc6fece0

The cut replaced 179 selectors, removed downPenalizedGrownStalk(address,uint256,uint256) (0x527ec6ba), and added its four-argument replacement and getMaxAmountInAtRate(address,address,uint256). The seven supporting facets were redeployed without changes to their own source files. Replacement alone does not imply every getter changed.

Other Contract / Parameter Changes

The following externally linked libraries were redeployed. Only LibConvert and LibPipelineConvert changed their own source files relative to their previous deployments. Other library source files were unchanged, although some compiled dependencies changed.

LibraryPrevious ImplementationNew ImplementationUsed By
LibConvert0x71e8ab0a025c0b96d64c34759880e6ba2ba0baa00x98b7efa3ceb5076a59aa54256657114dba4401a1ConvertFacet
LibPipelineConvert0xa4a2d1e394faac3e60297a55cdceeb38c0b6ca180xdd7f09a5c4ea7d742a6a2916509e968faffd22a5ConvertFacet, PipelineConvertFacet
LibSilo0xefa4e6492966228a7af3d5d9045bd9c9e5dc72bf0xb8d171d90bbcd178b594b69b7c3f510775eeaf46ConvertFacet, PipelineConvertFacet, ClaimFacet
LibTokenSilo0xf2a0e7fb0e9b1189b14274418e4ac78ae449b4ed0x8013c1b3d6d63741c6fefb05b4106f330cf18118ConvertFacet, PipelineConvertFacet, ClaimFacet
LibEvaluate0x1687f3eccced54e4ea4d98ffa13e2108954501e50xe3de9e4f8cfd5f52522e2a6ace70787c880dbf89SeasonFacet
LibGauge0xfa27f1b255a02a929a7a4e668066ce76cadcc09c0x72a5e9f867dda828473b19f1f9e5c2f0d72b99b2SeasonFacet
LibIncentive0xb3f71bf8362cbaafebb99e1e5fac02c85e1ecfcc0x20ad7475af48004993a9b0da582155b0c15c6fbaSeasonFacet
LibShipping0x166ab367e077e65f1a4f273f05d8c25a3c3ea3980x3d71794eb70bea52681b8bce8e9c7af33fbdbad1SeasonFacet
LibWellMintingSeasonFacet: 0xd76d2011647f57071cca0d182f0d524abeaee84e; SeasonGettersFacet: 0x6dd836e7fe603bd73532bf6b5cbb188b7fcc7fa90x795381dfec56fda5a423080f6d7b446c3172974cSeasonFacet, SeasonGettersFacet
LibFlood0x20a9aeac56fee169dec4d8a5c454e818b55fa8af0xaba142b51d6684e5471537379cead55afe2f1202SeasonFacet
LibGerminate0xaedabcc13a7c44d612cb3776b6a2f3a81fd3d9320x46a29a054861fa5eba24ed262c4215cc3e2365f1SeasonFacet
LibWeather0x82e2cfe47cf2ddd23755f81abb1349bdd96b5bfe0x9f0e6b3e54a91d677e30ce180dbe193cc65c388dSeasonFacet

The old penalty used the $1.025 Excessively High Price threshold. PI-11 used a separate $1.005 convertDownPenaltyRate without changing the existing evaluation parameters. The new minting-threshold fields had no prior equivalents. Dewhitelisting set Gauge Points and optimal Deposited PDV percentages to 0, set stalkEarnedPerSeason to the minimum raw value of 1, and preserved isSoppable for previous Flood claims. Optimal Deposited PDV changed from 12.5% to 33.333333% for PINTO:cbETH, from 25% to 33.333333% each for PINTO:cbBTC and PINTO:USDC, from 12.5% to 0 for PINTO:WETH, and from 25% to 0 for PINTO:WSOL. The three remaining raw percentages sum to 99.999999%, with normalization in the Seed Gauge calculation.

Function Changes

Event Changes