Note that due to the Snapshot character limit, the Snapshot version of BIP-44 that follows is significantly abridged and includes many references to the complete BIP-44 proposal on Arweave that should be read here:
https://arweave.net/WihXw6umtynJUpNmnrbKe77lodtEef62djpRfObucO4
Proposer
Beanstalk Farms, Ben Weintraub, Brendan Sanderson
Proposer Wallet: 0x9e0cb69ae6a5ad4eb870eb18d051efe642ed7db4
Summary
- Implement the Seed Gauge System;
- Implement the ability to set a target number of Seasons for a new Deposit with an average number of Seeds to catch up to the average Grown Stalk per BDV of existing Deposits at the time of Deposit (i.e., a target Grown Stalk inflation rate);
- Introduce the ability to set an optimal distribution of Deposited LP BDV amongst whitelisted LP tokens; and
- Introduce the ability to change the distribution of Grown Stalk to various whitelisted assets each Season in attempt to return to ideal equilibrium:
- Change the distribution of Grown Stalk between Deposited Beans and LP tokens based on the Bean to Max LP Ratio (i.e., the ratio of Grown Stalk issuance between 1 Bean and 1 BDV of the LP token with the highest Gauge Points (defined below) per BDV); and
- Change the distribution of Grown Stalk between various whitelisted LP tokens based on their current and optimal distributions;
- Initialize the Seed Gauge System;
- Set the target number of Seasons for a new Deposit with an average number of Seeds to catch up to the average Grown Stalk per BDV to 4320 Seasons (~6 months);
- Set the minimum Bean to Max LP Ratio to 1:2 (i.e., at most, 1 BDV of an LP token Deposit will receive twice as much Grown Stalk per Season as a 1 Bean Deposit);
- Set the maximum Bean to Max LP Ratio to 1:1 (i.e., at most, a 1 Bean Deposit will receive as much Grown Stalk per Season as 1 BDV of an LP token Deposit with the highest Grown Stalk per BDV.);
- Initialize the Bean to Max LP Ratio to 1:1.5 (i.e., a 1.5 Bean Deposit will receive as much Grown Stalk per Season as 1 BDV of an LP token Deposit with the highest Grown Stalk per BDV.);
- Set the optimal target distribution of Deposited LP BDV to 100% BEANETH;
- Initialize BEANETH's Gauge Points (which determine Grown Stalk issuance across various LP tokens) to 100; and
- Implement a default Gauge Point function that increments or decrements the Gauge Points of a whitelisted LP token based on whether the current Deposited BDV is lower or higher than optimal;
- Upgrade the case system (how Beanstalk evaluates its position and current state with respect to ideal equilibrium) to Cases V2:
- Add a fourth axis on which Beanstalk evaluates itself, the Liquidity to Supply Ratio (L2SR) in addition to (1) price, (2) Pod Rate and (3) change in demand for Soil;
- Include support for only factoring in a portion of liquidity in a whitelisted pool into the L2SR calculation (i.e., liquidity weight);
- Set the liquidity weight for BEANETH to 100% (i.e., do not discount the liquidity);
- Implement an excessively high Bean price case at P > 1.05;
- Add support for changing the Maximum Temperature in response to the cases in a relative manner;
- Add support for changing the Bean to Max LP Scalar (which determines the Bean to Max LP Ratio) in response to the cases in a relative and absolute manner;
- Change the absolute Maximum Temperature changes for the P < 1 and increasing/steady demand for Soil cases; and
- Initialize the relative Maximum Temperature changes and both the relative and absolute Bean to Max LP Scalar changes by case;
- Implement the second step in a two step process to track Deposited BDV that has not migrated to Silo V3;
- Support Unripe λ → λ Conversions in the Silo;
- Remove BEAN3CRV from the Deposit and Minting Whitelists;
- Remove the BEAN → BEAN3CRV Conversion from the Convert Whitelist;
- Update Flood to occur in the whitelisted Well with the most liquidity;
- Implement Germination, which introduces a 2 Season delay in receiving Earned Beans after Deposit; and
- Increase the max
gm reward during the first available block from 100 to 250 Beans.
Note: BIP-42 was cancelled due to a bug that was found during the Voting Period. A BCM Signer indicated that the transaction should be cancelled by signing a verified message on Etherscan. As such, BIP-42 was removed from Snapshot. The fix for the reported bug was reviewed by Cyfrin.
Links
Context and Problem
See the full Arweave upload of BIP-44 to read the Context and Problem sections, which are very helpful for understanding the Seed Gauge System outlined in the remainder of the BIP.
Proposed Solution
Seed Gauge System
See the full Arweave upload of BIP-44 to read the Seed Gauge System section.
Cases V2
See the full Arweave upload of BIP-44 to read the Cases V2, Liquidity to Supply Ratio, Locked Beans and P > Q sections.
Maximum Temperature and Bean To Max LP Scalar Changes
Cases V2 updates the Maximum Temperature ($T$) and the Bean to Max LP Scalar ($L$) for the next Season $s + 1$ like so (where $m_T$ and $b_T$ are the relative and absolute changes to $T$, and $m_L$ and $b_L$ are the relative and absolute changes to $L$):
$$ T_{s+1} = max(m_T * T_s + b_T, 1) $$
$$ L_{s+1} = min(max(m_L * L_s + b_L, 0), 1) $$
The Maximum Temperature has a minimum of 1%, and range of the Bean to Max LP Scalar is $[0, 1]$.
144 Cases to Rule Them All
In all 144 cases,mT and mL are set to 1, i.e., there are no proposed relative adjustments to Maximum Temperature or the Bean to Max LP Scalar. As a result, each cell in the following tables strictly includes [bT, bL], i.e., the absolute change in Maximum Temperature followed by the absolute change in the Bean to Max LP Scalar.
We propose the following absolute Maximum Temperature and Bean to Max LP Scalar changes in each case:




See the full Arweave upload of BIP-44 to read the Silo V3 Unmigrated BDV, Unripe λ → λ Conversions, Dewhitelist BEAN3CRV, Flood Update, Germination and Increase Max gm Reward sections.
Technical Rationale
See the full Arweave upload of BIP-44 to read the Technical Rationale section.
Economic Rationale
See the full Arweave upload of BIP-44 to read the Economic Rationale section.
Contract Changes
See the full Arweave upload of BIP-44 to read the Contract Changes section.
Beans Minted
None.
Audit
The commit hash of this BIP is cbef4ff3330ed2642081e35a9e2435f442e628ae.
Cyfrin performed an audit of the initial version of the Seed Gauge system. The audit report can be read here.
After significant changes, such as the Germination update, an audit competition of the Seed Gauge System was held via Codehawks using commit hash a3658861af8f5126224718af494d02352fbb3ea5. The final report can be read here.
Audit remediations were committed in PRs #819, #829 and #831.
Post Audit Changes
The following changes have been made to the Seed Gauge System code, but have not been audited.
PR #836, which skips updating the Bean to Max LP Scalar if the Chainlink oracle fails.
PR #837, which updates the Germination events.
PR #843, which adds the getLockedBeansFromTwaReserves view function.
BIP-42 Bug Fix
PR #854 fixed the Locked Bean calculation issue that was found during the BIP-42 Voting Period. The fix was reviewed by Cyfrin.
Effective
Immediately upon commitment.