# Algorithm Explanations

`totalDollars`

is the total dollar value required to be raised in the Barn Raise. It is equal to `dollarPerUnripeLP() * unripeLP().totalSupply()`

. If no Farmer has forfeited Unripe LP, then `totalDollars`

is 77 million, but given that Farmer's can `chop`

their Unripe LP and forfeit the funds they have not yet been paid back, we need `totalDollars`

to decrease with the total supply of Unripe LP.**—**

`if (s.recapitalized >= totalDollars) return 0;`

A safe guard in case Beanstalk ends up in a situation where too much is raised. This is also possible if someone uses the

`chop`

function at a penalty even after the full amount has been raised.**—**

`return totalDollars.sub(s.recapitalized);`

`s.recapitalized`

is incremented every time USDC is exchanged for Fertilizer (or Unripe LP is generated through Convert), but it is equal to the dollar value that has been recapitalized. Thus, the difference between the two is the amount remaining.It is assumed that if

`|deltaB| > beanSupply / 100`

, then manipulation occurred. This isn't always true, but the ramifications if `|deltaB| > beanSupply / 100`

naturally are minimal as Beanstalk will simply mint fewer Beans/less Soil this Season.Theoretically, a multi-block MEV attack could manipulate

`deltaB`

to be any value. Multi-block MEV can only be executed on some time cadence dependent on % ownership of Ethereal stake. Therefore, the greatest vulnerability to Beanstalk is a massive one-time Bean/Soil issuance. By adding this supply cap, the maximum effect of potential manipulation can be at most 1% of supply.Last modified 1mo ago