FeedProjects
Developers
Settings
๐ŸŽ‰ A new chapter begins: Boardroom has joined Agora
Learn more
protocol logo
Explore / Projects
Beanstalk DAO

Proposals

Members

Information

Create Proposal

Beanstalk DAO

ProposalsMembersInformation
Proposal
Back to Proposals
closedEnded a year ago ยท Snapshot (Offchain)

BIP-50: Reseed Beanstalk

By 0x47a4...Ad6888

Note that due to the Snapshot character limit, the Snapshot version of BIP-50 that follows is significantly abridged and includes many references to the complete BIP-50 proposal on Arweave that should be read here:

https://arweave.net/1QIJ2oHnaTcb3jqY3T7bC92KAS--CVLJmZlL5j_gI6s

Proposer

Beanstalk Farms, Ben Weintraub, Brendan Sanderson

Proposer Wallet: 0xf9d183af486a973b7921ceb5fdc9908d12aab440

Summary

  1. Upgrade Beanstalk to include the following major features:
    • Secure Beanstalk, which implements function modifiers that maintain protocol wide invariants and adds them to most write functions in Beanstalk;
    • Generalized Convert, which introduces a new Convert function that uses Pipeline to Convert a set of arbitrary (non-Unripe) Deposits to 1 Deposit (including LP โ†’ LP Converts);
    • Generalized Flood, which implements Flood in a generalized fashion such that Flood can occur in multiple Wells at once;
    • Shipments, which introduces a generalized system for allocating new Bean mints to various components of Beanstalk; and
    • Tractor, which is a peer-to-peer transaction marketplace that allows third party operators to perform Beanstalk actions on behalf of a Farmer;
  2. Upgrade Beanstalk to include the following various quality of life improvements:
    • Upgrade the Solidity version from v0.7.6 to v0.8.20;
    • Implement a generalized whitelist system that supports custom oracles, Gauge Point functions and Liquidity Weight functions that do not require a diamond cut to change for a given whitelisted asset;
      • Implement a generalized Chainlink oracle system such that a Well that has a non-Bean asset whose USD price can be queried via Chainlink can be whitelisted without a diamond cut;
      • Implement a generalized Uniswap V3 oracle system such that a Well that has a non-Bean asset whose price can be queried via Uniswap V3 can be whitelisted without a diamond cut, provided that the other token in the oracle pool has a Chainlink feed (e.g., WBTC/USDC on Uniswap V3 * USDC/USD Chainlink feed);
    • Change the control variable in the Morning Auction from 2 to 0.1 to slow down the increase in the Temperature;
    • Update the default Gauge Point function (used by all whitelisted LP tokens) to adjust the Gauge Points more aggressively the farther away the current % BDV distribution is away from optimal;
    • Update the Bean to Max LP Ratio to its minimum value upon Rain;
    • Add several view functions for getting Farmerโ€™s balances;
    • Redesign App Storage to improve developer experience and future proof new additions to contract storage;
    • Move several constants that have the potential to change into contract state;
    • Redesign reentrancy protection to support Pipeline and Depot;
    • Increase Stalk decimal precision by 1e6 to prevent micro Stalk from being lost;
    • Add a TokenTransferred event with data on sender and receiver addresses of Farm balance transfers;
  3. Migrate Beanstalk from Ethereum mainnet to Arbitrum:
    • Pause Beanstalk on L1 mainnet;
    • Remove all L1 facets except for the DiamondCutFacet, DiamondLoupeFacet, OwnershipFacet and PauseFacet;
    • Upgrade L1 Beanstalk with a new TokenFacet and L2MigrationFacet that allows Circulating Beans to be migrated to L2;
    • Run initialization scripts that transfer whitelisted LP tokens from Beanstalk to the L1 BCM to be unwrapped and bridged to L2 BCM (BEAN:3CRV is migrated to BEAN:USDC on Arbitrum);
    • Deploy L2 Beanstalk;
    • Update L2 Beanstalk with the L1 state;
    • Deploy, add liquidity to and whitelist the following Wells (see Proposed Solution for details):
      • BEAN:USDC;
      • BEAN:USDT;
      • BEAN:WBTC;
      • BEAN:wstETH;
      • BEAN:WETH; and
      • BEAN:weETH;
    • Add all facets that include the upgrades described above (excluding FundraiserFacet, LegacyClaimWithdrawalFacet, CurveFacet and MigrationFacet) to L2 Beanstalk; and
    • Unpause L2 Beanstalk.
  4. Update various processes and documentation such as Hypernative, Immunefi and the Disclosures to reflect the new state of Beanstalk.

Links

  • BIP-50 GitHub PR
  • GitHub Commit Hash: faa0ec60a455b0afdd20ad86f28f41cbc52c2e2d
  • Safe Transaction

Problem

See the full Arweave upload of BIP-50 to read the Problem section.

Proposed Solution

See the full Arweave upload of BIP-50 to read the Proposed Solution section.

Technical Rationale

See the full Arweave upload of BIP-50 to read the Technical Rationale section.

Economic Rationale

See the full Arweave upload of BIP-50 to read the Economic Rationale section.

Contract Changes

See the full Arweave upload of BIP-50 to read the Contract Changes section.

Beans Minted

See the full Arweave upload of BIP-50 to read the Beans Minted section.

Audit

See the full Arweave upload of BIP-50 to read the Audit section.

Effective

After either:

  • A two-thirds supermajority is reached; or
  • The Voting Period ends and either (1) 50% of Stalk is voting For or (2) one-third of Stalk, plus the amount of Stalk voting Against, is voting For,

The L1 BCM will:

  • Execute a diamond cut that removes the SiloFacet and wait for 2 Seasons to pass in order for all Deposits to Germinate (only if there are Germinating Deposits at the time of BIP passage);
  • Execute the BIP-50 diamond cut, which:
    • Calls the ReseedL2Migration initialization contract, which:
      • Pauses L1 Beanstalk; and
      • Transfers all BEANETH, BEANwstETH and BEAN3CRV in L1 Beanstalk to the L1 BCM;
    • Removes all facets except for DiamondCutFacet, DiamondLoupeFacet, OwnershipFacet and PauseFacet; and
    • Adds the L1TokenFacet and L2MigrationFacet;
  • Remove corresponding liquidity from the BEAN:WETH, BEAN:wstETH and BEAN:3CRV pools;
  • Swap all 3CRV for USDC; and
  • Send all WETH, wstETH and USDC to Arbitrum using the Arbitrum-native bridge.

In addition, a deployer will:

  • Fetch the state of L1 Beanstalk at the end of the block in which the BIP-50 diamond cut is executed;
  • Deploy the L2 Beanstalk diamond on Arbitrum (in a Paused state);
  • Execute the series of scripts to:
    • Initialize the state of L2 Beanstalk;
    • Deploy all whitelisted Wells;
    • Mint Beans to be added as liquidity to the L2 BCM;
    • Mint remaining Beans (for Bean Deposits, Ripe Beans, Farm Balances and Beans in Pod Orders) to L2 Beanstalk; and
    • Mint Unripe Beans and Unripe LP to L2 Beanstalk; and
  • Transfer ownership of L2 Beanstalk to the L2 BCM.

After which the L2 BCM will:

  • Execute a series of scripts that verify the state of L2 Beanstalk;
  • Claim ownership of L2 Beanstalk;
  • Add liquidity to the BEAN:WETH, BEAN:wstETH and BEAN:USDC Wells;
  • Transfer the corresponding BEANWETH, BEANwstETH and BEANUSDC Well LP tokens to L2 Beanstalk;
  • Add all the facets mentioned in the Contract Changes section; and
  • Unpause L2 Beanstalk.
Continue Reading
Connect Wallet to Add Note
0
Votes 61
VoterCast PowerVote & Rationale
0xCbC7...8AE493
4.828M

For

0x15F5...1499E3
4.771M

For

0xbC4d...8bB0FB
3.573M

For

0x3743...e2494B
2.766M

For

0x87C9...6ac29e
2.54M

For

SHOW MORE
VOTE POWER
0
Connect Wallet
Proposal Status
  • Tue October 01 2024, 03:00 pmVoting Period Starts
  • Tue October 08 2024, 03:00 pmEnd Voting Period
Current Results

1-For

47.903M

DocumentationBrandingContact Us
Home
This Project is Currently Disabled

If you would like to enable it, please checkout below.

Boardroom Subscription

Sign up for an individual subscription (access all projects on the platform)

Subscribe
Enable Project

Enable the entire project for every user

Enable Project
Contact Us