# Table of Contents - [Agronomics Handbook | Beanstalk](#agronomics-handbook-beanstalk) - [Introduction | Beanstalk](#introduction-beanstalk) - [Development Ethos | Beanstalk](#development-ethos-beanstalk) - [Unknown](#unknown) - [App Storage | Beanstalk](#app-storage-beanstalk) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Unknown](#unknown) - [Internal Balances | Beanstalk](#internal-balances-beanstalk) - [Unknown](#unknown) - [EIP-2535 Diamond | Beanstalk](#eip-2535-diamond-beanstalk) - [Unknown](#unknown) - [Sun | Beanstalk](#sun-beanstalk) - [Market | Beanstalk](#market-beanstalk) - [Barn | Beanstalk](#barn-beanstalk) - [FAQ | Beanstalk](#faq-beanstalk) - [Diamond | Beanstalk](#diamond-beanstalk) - [Terminology Discrepancies | Beanstalk](#terminology-discrepancies-beanstalk) - [Farm | Beanstalk](#farm-beanstalk) - [Farm Facet | Beanstalk](#farm-facet-beanstalk) - [Diamond Cut Facet | Beanstalk](#diamond-cut-facet-beanstalk) - [Pause Facet | Beanstalk](#pause-facet-beanstalk) - [Unknown](#unknown) - [Ownership Facet | Beanstalk](#ownership-facet-beanstalk) - [Field | Beanstalk](#field-beanstalk) - [Diamond Loupe Facet | Beanstalk](#diamond-loupe-facet-beanstalk) - [BDV Facet | Beanstalk](#bdv-facet-beanstalk) - [Fundraiser Facet | Beanstalk](#fundraiser-facet-beanstalk) - [Convert Getters Facet | Beanstalk](#convert-getters-facet-beanstalk) - [Depot Facet | Beanstalk](#depot-facet-beanstalk) - [Season Facet | Beanstalk](#season-facet-beanstalk) - [Metadata Facet | Beanstalk](#metadata-facet-beanstalk) - [Silo | Beanstalk](#silo-beanstalk) - [Whitelist Facet | Beanstalk](#whitelist-facet-beanstalk) - [Overview | Beanstalk](#overview-beanstalk) - [Legacy Claim Withdrawal Facet | Beanstalk](#legacy-claim-withdrawal-facet-beanstalk) - [Token Support Facet | Beanstalk](#token-support-facet-beanstalk) - [Field Facet | Beanstalk](#field-facet-beanstalk) - [Convert Facet | Beanstalk](#convert-facet-beanstalk) - [Enroot Facet | Beanstalk](#enroot-facet-beanstalk) - [Migration Facet | Beanstalk](#migration-facet-beanstalk) - [Unknown](#unknown) - [Curve Facet | Beanstalk](#curve-facet-beanstalk) - [Fertilizer Facet | Beanstalk](#fertilizer-facet-beanstalk) - [Approval Facet | Beanstalk](#approval-facet-beanstalk) - [Unripe Facet | Beanstalk](#unripe-facet-beanstalk) - [Token Facet | Beanstalk](#token-facet-beanstalk) - [Basin | Beanstalk](#basin-beanstalk) - [BeaNFTs | Beanstalk](#beanfts-beanstalk) - [Crop Ratio | Beanstalk](#crop-ratio-beanstalk) - [Mint BeaNFTs | Beanstalk](#mint-beanfts-beanstalk) - [Balances | Beanstalk](#balances-beanstalk) - [Sun | Beanstalk](#sun-beanstalk) - [Swap | Beanstalk](#swap-beanstalk) - [BIC Process | Beanstalk](#bic-process-beanstalk) - [Silo | Beanstalk](#silo-beanstalk) - [BFC Dashboard | Beanstalk](#bfc-dashboard-beanstalk) - [Seed Gauge System | Beanstalk](#seed-gauge-system-beanstalk) - [Asset States | Beanstalk](#asset-states-beanstalk) - [Why Beanstalk | Beanstalk](#why-beanstalk-beanstalk) - [Sun | Beanstalk](#sun-beanstalk) - [Convert | Beanstalk](#convert-beanstalk) - [BDM Dashboard | Beanstalk](#bdm-dashboard-beanstalk) - [Barn | Beanstalk](#barn-beanstalk) - [Toolshed | Beanstalk](#toolshed-beanstalk) - [Tractor | Beanstalk](#tractor-beanstalk) - [Understand the Sun | Beanstalk](#understand-the-sun-beanstalk) - [Understand the Bean Price | Beanstalk](#understand-the-bean-price-beanstalk) - [Bean Sprout | Beanstalk](#bean-sprout-beanstalk) - [Contributing | Beanstalk](#contributing-beanstalk) - [BCM Dashboard | Beanstalk](#bcm-dashboard-beanstalk) - [Silo | Beanstalk](#silo-beanstalk) - [Transfer Deposits | Beanstalk](#transfer-deposits-beanstalk) - [Deposit in the Silo | Beanstalk](#deposit-in-the-silo-beanstalk) - [Convert in the Silo | Beanstalk](#convert-in-the-silo-beanstalk) - [Connect to Beanstalk | Beanstalk](#connect-to-beanstalk-beanstalk) - [Understand Fert vAPY | Beanstalk](#understand-fert-vapy-beanstalk) - [Farmers' Almanac | Beanstalk](#farmers-almanac-beanstalk) - [Chop Unripe Assets | Beanstalk](#chop-unripe-assets-beanstalk) - [Field | Beanstalk](#field-beanstalk) - [Market | Beanstalk](#market-beanstalk) - [Governance | Beanstalk](#governance-beanstalk) - [Migrate to Arbitrum | Beanstalk](#migrate-to-arbitrum-beanstalk) - [Delegate Votes | Beanstalk](#delegate-votes-beanstalk) - [BeaNFTs | Beanstalk](#beanfts-beanstalk) - [Withdraw from the Silo | Beanstalk](#withdraw-from-the-silo-beanstalk) - [Marketplace Facet | Beanstalk](#marketplace-facet-beanstalk) - [Links | Beanstalk](#links-beanstalk) - [Understand Silo vAPY | Beanstalk](#understand-silo-vapy-beanstalk) - [Content | Beanstalk](#content-beanstalk) - [Depot | Beanstalk](#depot-beanstalk) - [BSM Dashboard | Beanstalk](#bsm-dashboard-beanstalk) - [Economics | Beanstalk](#economics-beanstalk) - [Understand Silo Deposit Performance | Beanstalk](#understand-silo-deposit-performance-beanstalk) - [Field | Beanstalk](#field-beanstalk) - [Transfer Pods | Beanstalk](#transfer-pods-beanstalk) - [Overview | Beanstalk](#overview-beanstalk) - [Harvest Pods | Beanstalk](#harvest-pods-beanstalk) - [Beanstalk Farms | Beanstalk](#beanstalk-farms-beanstalk) - [Claim Silo Rewards | Beanstalk](#claim-silo-rewards-beanstalk) - [BICM Dashboard | Beanstalk](#bicm-dashboard-beanstalk) - [Proposals | Beanstalk](#proposals-beanstalk) - [Disclosures | Beanstalk](#disclosures-beanstalk) - [BFM Dashboard | Beanstalk](#bfm-dashboard-beanstalk) - [Temperature | Beanstalk](#temperature-beanstalk) - [Audits | Beanstalk](#audits-beanstalk) - [Beanstalk](#beanstalk) - [Approve Contracts | Beanstalk](#approve-contracts-beanstalk) - [Getting Started | Beanstalk](#getting-started-beanstalk) - [Add Bean to MetaMask | Beanstalk](#add-bean-to-metamask-beanstalk) - [Transfer Fertilizer | Beanstalk](#transfer-fertilizer-beanstalk) - [Pod Market | Beanstalk](#pod-market-beanstalk) - [Governance Proposals (June 2023) | Beanstalk](#governance-proposals-june-2023-beanstalk) - [Pipeline | Beanstalk](#pipeline-beanstalk) - [Overview | Beanstalk](#overview-beanstalk) - [How Beanstalk Works | Beanstalk](#how-beanstalk-works-beanstalk) - [Sow Beans | Beanstalk](#sow-beans-beanstalk) - [Transfer Balances | Beanstalk](#transfer-balances-beanstalk) - [Trade Beans | Beanstalk](#trade-beans-beanstalk) - [Vote on Governance Proposals | Beanstalk](#vote-on-governance-proposals-beanstalk) - [Buy Pods | Beanstalk](#buy-pods-beanstalk) - [Sell Pods | Beanstalk](#sell-pods-beanstalk) - [Discord Roles | Beanstalk](#discord-roles-beanstalk) - [Barn | Beanstalk](#barn-beanstalk) - [Rinse Sprouts | Beanstalk](#rinse-sprouts-beanstalk) - [Fundraiser | Beanstalk](#fundraiser-beanstalk) - [Types of Stablecoins | Beanstalk](#types-of-stablecoins-beanstalk) - [Unripe Assets | Beanstalk](#unripe-assets-beanstalk) - [Buy Fertilizer | Beanstalk](#buy-fertilizer-beanstalk) - [Flood | Beanstalk](#flood-beanstalk) --- # Agronomics Handbook | Beanstalk ![Page cover](https://docs.bean.money/developers/~gitbook/image?url=https%3A%2F%2F1489145838-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FlndPiqG60XIdTDQRAzIy%252Fuploads%252FuoNWTxvCHkCMO8cVMj0k%252Ffarm.png%3Falt%3Dmedia%26token%3D2d173930-ed40-4778-a841-eabded391ecc&width=1248&dpr=3&quality=100&sign=efae70ff&sv=2) For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/readme.md) . The **Agronomics Handbook** is a collection of technical documentation about Beanstalk. Beanstalk forms the monetary basis of an Arbitrum-native, rent-free economy facilitated by the seigniorage of its native fiat currency, a stablecoin called Bean. Beanstalk strives to create product market fit on both a technical and economic level. Beanstalk pioneers a path forward for devising more efficient and complex systems. Beanstalk is implemented in [Solidity v0.8.20](https://docs.soliditylang.org/en/v0.8.20/) for intended use in the [EVM](https://ethereum.org/en/developers/docs/evm/) . Beanstalk leverages [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) to minimize gas costs and complexity. The contract code can be found below. Beanstalk is deployed at [`0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70`](https://arbiscan.io/address/0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70) . [![Logo](https://docs.bean.money/developers/~gitbook/image?url=https%3A%2F%2Fgithub.com%2Ffluidicon.png&width=20&dpr=3&quality=100&sign=897a1262&sv=2)GitHub - BeanstalkFarms/Beanstalk: A monorepo for the Beanstalk protocol, SDK, subgraphs and UI. Currently houses infra for the Basin protocol.GitHub](https://github.com/BeanstalkFarms/Beanstalk) * If you are looking for non-technical documentation about Beanstalk, check out the [Farmers' Almanac](https://docs.bean.money/almanac) . * If you are looking for comprehensive formulas behind Beanstalk's mechanics, check out the [Beanstalk whitepaper](https://bean.money/beanstalk.pdf) . * If you have any other questions while browsing the Agronomics Handbook, join the Beanstalk Discord and ask in the **(#🪵・development)** channel! Please share any feedback on the Agronomics Handbook in the **(#šŸ“œćƒ»docs-feedback)** channel in Discord and stay tuned for updates in **(#šŸ“œćƒ»docs-updates)**. You can submit a pull request to the Agronomics Handbook yourself [here](https://github.com/BeanstalkFarms/Agronomics-Handbook) . ### [](https://docs.bean.money/developers#links) Links * [Technical Introduction](https://docs.bean.money/developers/overview/introduction) * [Development Ethos](https://docs.bean.money/developers/overview/development-ethos) * [Protocol Overview](https://docs.bean.money/developers/protocol/overview) * [Beanstalk on GitHub](https://github.com/BeanstalkFarms/Beanstalk) * [Contract Addresses](https://docs.bean.money/almanac/protocol/contracts) * [Glossary](https://docs.bean.money/almanac/protocol/glossary) [NextIntroduction](https://docs.bean.money/developers/overview/introduction) Last updated 11 months ago --- # Introduction | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/overview/introduction.md) . Beanstalk is a permissionless fiat stablecoin protocol built on Arbitrum. Beanstalk forms the monetary basis of an Arbitrum-native, rent-free economy facilitated by the seigniorage of its native fiat currency, a stablecoin called Bean. Beanstalk's primary objective is to incentivize independent market participants to regularly cross the price of 1 Bean across its value peg of $1 in a sustainable fashion. The stability of the Bean price relative to its value peg is a function of the creditworthiness of Beanstalk—Beanstalk attracts lenders when the price of a Bean is below its value peg to remove Beans from the supply and increase their price. When the Bean price is too high, Beanstalk mints new Beans and distributes them to various ecosystem participants in a deterministic fashion. This inflation is [the positive carry](https://docs.bean.money/almanac/introduction/why-beanstalk#carrying-costs) that the Beanstalk economy is based on. Beanstalk implements several novel mechanisms including a first-in-first-out (FIFO) [debt model](https://docs.bean.money/almanac/farm/field#pods) supplemented by [an on-chain order book](https://docs.bean.money/almanac/farm/market#the-pod-market) , [a time-weighted staking structure](https://docs.bean.money/almanac/farm/silo#the-stalk-system) that increases the opportunity cost of withdrawing the longer an asset stays deposited in the DAO and [a convert mechanism](https://docs.bean.money/almanac/peg-maintenance/convert) that allows participants to perform peg maintenance while those assets are staked. Beanstalk strives to create product market fit on both a technical and economic level. In order to service an entire ecosystem, Beanstalk needs to provide a cheap, composable and interoperable interface. However, as protocols become more sophisticated and blockspace more crowded, smart contract architecture complexity can quickly become overwhelming. Beanstalk pioneers a path forward for devising more efficient and complex systems. Beanstalk is implemented in [Solidity v0.8.20](https://docs.soliditylang.org/en/v0.8.20/) for intended use in the [EVM](https://ethereum.org/en/developers/docs/evm/) . Beanstalk leverages [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) to minimize gas costs and complexity. Beanstalk consists of 2 main contracts: * Beanstalk - The protocol responsible for peg maintenance implemented as an [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) multi-facet proxy. * Bean – The stablecoin implemented as an [ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) token. ### [](https://docs.bean.money/developers/overview/introduction#contracts) Contracts Beanstalk is deployed at [`0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70`](https://arbiscan.io/address/0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70) . Bean is deployed at [`0xBEA0005B8599265D41256905A9B3073D397812E4`](https://arbiscan.io/address/0xBEA0005B8599265D41256905A9B3073D397812E4) . All relevant contract addresses can be found on the [Contracts](https://docs.bean.money/almanac/protocol/contracts) page of the [Farmers' Almanac](https://docs.bean.money/almanac) . [PreviousAgronomics Handbook](https://docs.bean.money/developers) [NextDevelopment Ethos](https://docs.bean.money/developers/overview/development-ethos) Last updated 1 year ago --- # Development Ethos | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/overview/development-ethos.md) . Decentralized blockchains like Ethereum impose extreme computational and storage limitations. While centralized computation solutions allow the execution of advanced statistical models on gigabytes of data, decentralized systems force users to pay for every byte stored and basic arithmetic operation performed on-chain. Decentralized systems will scale infinitely over time, eventually allowing users to perform large scale machine learning operations on decentralized architectures. However, it's imperative to start building, experimenting with and iterating on the financial primitives that will define the foundations of permissionless ecosystems. Otherwise, it is likely that they will merely mimic those of the centralized world. Beanstalk is an attempt at implementing a permissionless fiat currency designed to become the basis of the rent-free economy that decentralized primitives are ushering in. > _ā€œPerfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.ā€ – Antoine de Saint-ExupĆ©ry_ No one wants to be limited, but resource scarcity forces innovation. For example, because Ethereum does not lend itself to trading on order books, Automated Market Makers (AMMs) like [Uniswap](https://uniswap.org/) and [Bancor](https://home.bancor.network/) created liquidity pools based on a predefined pricing curve to create an efficient exchange format (instead of a high frequency order book). AMMs are still being iterated and innovated on. Uniswap created an order book/AMM hybrid with Uniswap V3. [Curve](https://curve.fi/) implemented capital efficient pricing curves. Bancor built an omnipool, providing impermanent loss protection. [Basin](https://basin.exchange/) supports a 0% (customizable) fee AMM. Open source protocols are a public good. More than [250](https://defillama.com/forks) protocols have forked Uniswap V2 to try to improve on its model. Some may call it competitive, but it is also collaborative. Each implementation is more advanced than its previous iteration and is made possible through increasingly efficient allocation of EVM resources. Question everything, be critical, and collaborate. [PreviousIntroduction](https://docs.bean.money/developers/overview/introduction) [NextEIP-2535 Diamond](https://docs.bean.money/developers/overview/eip-2535-diamond) Last updated 2 years ago --- # Unknown \# Beanstalk ## Agronomics Handbook - \[Agronomics Handbook\](https://docs.bean.money/developers/readme.md) - \[Introduction\](https://docs.bean.money/developers/overview/introduction.md) - \[Development Ethos\](https://docs.bean.money/developers/overview/development-ethos.md) - \[EIP-2535 Diamond\](https://docs.bean.money/developers/overview/eip-2535-diamond.md) - \[App Storage\](https://docs.bean.money/developers/overview/app-storage.md) - \[Internal Balances\](https://docs.bean.money/developers/overview/internal-balances.md) - \[Overview\](https://docs.bean.money/developers/protocol/overview.md) - \[Sun\](https://docs.bean.money/developers/protocol/sun.md) - \[Season Facet\](https://docs.bean.money/developers/protocol/sun/season-facet.md) - \[Silo\](https://docs.bean.money/developers/protocol/silo.md) - \[Silo Facet\](https://docs.bean.money/developers/protocol/silo/silo-facet.md) - \[BDV Facet\](https://docs.bean.money/developers/protocol/silo/bdv-facet.md) - \[Whitelist Facet\](https://docs.bean.money/developers/protocol/silo/whitelist-facet.md) - \[Convert Facet\](https://docs.bean.money/developers/protocol/silo/convert-facet.md) - \[Convert Getters Facet\](https://docs.bean.money/developers/protocol/silo/convert-facet-1.md) - \[Enroot Facet\](https://docs.bean.money/developers/protocol/silo/convert-facet-2.md) - \[Approval Facet\](https://docs.bean.money/developers/protocol/silo/approval-facet.md) - \[Metadata Facet\](https://docs.bean.money/developers/protocol/silo/metadata-facet.md) - \[Migration Facet\](https://docs.bean.money/developers/protocol/silo/migration-facet.md) - \[Legacy Claim Withdrawal Facet\](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet.md) - \[Field\](https://docs.bean.money/developers/protocol/field.md) - \[Field Facet\](https://docs.bean.money/developers/protocol/field/field-facet.md) - \[Fundraiser Facet\](https://docs.bean.money/developers/protocol/field/fundraiser-facet.md) - \[Barn\](https://docs.bean.money/developers/protocol/barn.md) - \[Fertilizer Facet\](https://docs.bean.money/developers/protocol/barn/fertilizer-facet.md) - \[Unripe Facet\](https://docs.bean.money/developers/protocol/barn/unripe-facet.md) - \[Market\](https://docs.bean.money/developers/protocol/market.md) - \[Marketplace Facet\](https://docs.bean.money/developers/protocol/market/marketplace-facet.md) - \[Farm\](https://docs.bean.money/developers/protocol/depot.md) - \[Farm Facet\](https://docs.bean.money/developers/protocol/depot/farm-facet.md) - \[Depot Facet\](https://docs.bean.money/developers/protocol/depot/depot-facet.md) - \[Token Facet\](https://docs.bean.money/developers/protocol/depot/token-facet.md) - \[Token Support Facet\](https://docs.bean.money/developers/protocol/depot/token-support-facet.md) - \[Curve Facet\](https://docs.bean.money/developers/protocol/depot/curve-facet.md) - \[Diamond\](https://docs.bean.money/developers/protocol/diamond.md) - \[Diamond Cut Facet\](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet.md) - \[Diamond Loupe Facet\](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet.md) - \[Ownership Facet\](https://docs.bean.money/developers/protocol/diamond/ownership-facet.md) - \[Pause Facet\](https://docs.bean.money/developers/protocol/diamond/pause-facet.md) - \[Upgrade History\](https://docs.bean.money/developers/misc/upgrade-history.md) - \[FAQ\](https://docs.bean.money/developers/misc/faq.md) - \[Terminology Discrepancies\](https://docs.bean.money/developers/misc/terminology-discrepancies.md) --- # App Storage | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/overview/app-storage.md) . Because Beanstalk is a single contract, all of the Facets can share a common state through the [`AppStorage`](https://dev.to/mudgen/appstorage-pattern-for-state-variables-in-solidity-3lki) pattern. Each Facet should define the `AppStorage` storage variable in the base contract and define **no other** `internal` or `public` state variables. Copy AppStorage internal s; The `AppStorage` struct can be found in the [`AppStorage.sol`](https://github.com/BeanstalkFarms/Beanstalk/tree/master/protocol/contracts/beanstalk/storage) file. When adding new state variables, always add them to the end of the `AppStorage` struct to ensure consistent mapping of state variables to storage slots. When deprecating an unnecessary state variables, either replace it with a different variable denoting that the state variable is deprecated or leave it as is. In the EVM, data is accessed 32 bytes at a time (known as a slot). Because of this, in Beanstalk, many state variables are packed within the `AppStorage` struct to reduce gas costs. For example, say that in function `foo`, the state of 2 `uint256` values is changed. Changing a non-zero value to another non-zero value costs 10000 gas (`2 * 5000`). If the 2 values could be stored in `uint128`s instead (meaning the data is in one slot), 2100 gas is shaved off, as the state slot is now warm. (If a slot is touched for the first time in a transaction, it is turned from cold to warm for the rest of that transaction. Warm touches are cheaper than cold touches.) [PreviousEIP-2535 Diamond](https://docs.bean.money/developers/overview/eip-2535-diamond) [NextInternal Balances](https://docs.bean.money/developers/overview/internal-balances) Last updated 1 year ago --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/overview/development-ethos.md). # Development Ethos Decentralized blockchains like Ethereum impose extreme computational and storage limitations. While centralized computation solutions allow the execution of advanced statistical models on gigabytes of data, decentralized systems force users to pay for every byte stored and basic arithmetic operation performed on-chain. Decentralized systems will scale infinitely over time, eventually allowing users to perform large scale machine learning operations on decentralized architectures. However, it's imperative to start building, experimenting with and iterating on the financial primitives that will define the foundations of permissionless ecosystems. Otherwise, it is likely that they will merely mimic those of the centralized world. Beanstalk is an attempt at implementing a permissionless fiat currency designed to become the basis of the rent-free economy that decentralized primitives are ushering in. > \*ā€œPerfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.ā€ – Antoine de Saint-ExupĆ©ry\* No one wants to be limited, but resource scarcity forces innovation. For example, because Ethereum does not lend itself to trading on order books, Automated Market Makers (AMMs) like \[Uniswap\](https://uniswap.org/) and \[Bancor\](https://home.bancor.network/) created liquidity pools based on a predefined pricing curve to create an efficient exchange format (instead of a high frequency order book). AMMs are still being iterated and innovated on. Uniswap created an order book/AMM hybrid with Uniswap V3. \[Curve\](https://curve.fi/) implemented capital efficient pricing curves. Bancor built an omnipool, providing impermanent loss protection. \[Basin\](https://basin.exchange/) supports a 0% (customizable) fee AMM. Open source protocols are a public good. More than \[250\](https://defillama.com/forks) protocols have forked Uniswap V2 to try to improve on its model. Some may call it competitive, but it is also collaborative. Each implementation is more advanced than its previous iteration and is made possible through increasingly efficient allocation of EVM resources. Question everything, be critical, and collaborate. --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/overview/introduction.md). # Introduction Beanstalk is a permissionless fiat stablecoin protocol built on Arbitrum. Beanstalk forms the monetary basis of an Arbitrum-native, rent-free economy facilitated by the seigniorage of its native fiat currency, a stablecoin called Bean. Beanstalk's primary objective is to incentivize independent market participants to regularly cross the price of 1 Bean across its value peg of $1 in a sustainable fashion. The stability of the Bean price relative to its value peg is a function of the creditworthiness of Beanstalk—Beanstalk attracts lenders when the price of a Bean is below its value peg to remove Beans from the supply and increase their price. When the Bean price is too high, Beanstalk mints new Beans and distributes them to various ecosystem participants in a deterministic fashion. This inflation is \[the positive carry\](https://docs.bean.money/almanac/introduction/why-beanstalk#carrying-costs) that the Beanstalk economy is based on. Beanstalk implements several novel mechanisms including a first-in-first-out (FIFO) \[debt model\](https://docs.bean.money/almanac/farm/field#pods) supplemented by \[an on-chain order book\](https://docs.bean.money/almanac/farm/market#the-pod-market), \[a time-weighted staking structure\](https://docs.bean.money/almanac/farm/silo#the-stalk-system) that increases the opportunity cost of withdrawing the longer an asset stays deposited in the DAO and \[a convert mechanism\](https://docs.bean.money/almanac/peg-maintenance/convert) that allows participants to perform peg maintenance while those assets are staked. Beanstalk strives to create product market fit on both a technical and economic level. In order to service an entire ecosystem, Beanstalk needs to provide a cheap, composable and interoperable interface. However, as protocols become more sophisticated and blockspace more crowded, smart contract architecture complexity can quickly become overwhelming. Beanstalk pioneers a path forward for devising more efficient and complex systems. Beanstalk is implemented in \[Solidity v0.8.20\](https://docs.soliditylang.org/en/v0.8.20/) for intended use in the \[EVM\](https://ethereum.org/en/developers/docs/evm/). Beanstalk leverages \[EIP-2535\](https://eips.ethereum.org/EIPS/eip-2535) to minimize gas costs and complexity. Beanstalk consists of 2 main contracts: \* Beanstalk - The protocol responsible for peg maintenance implemented as an \[EIP-2535\](https://eips.ethereum.org/EIPS/eip-2535) multi-facet proxy. \* Bean – The stablecoin implemented as an \[ERC-20\](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) token. ### Contracts Beanstalk is deployed at \[\`0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70\`\](https://arbiscan.io/address/0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70). Bean is deployed at \[\`0xBEA0005B8599265D41256905A9B3073D397812E4\`\](https://arbiscan.io/address/0xBEA0005B8599265D41256905A9B3073D397812E4). All relevant contract addresses can be found on the \[Contracts\](https://docs.bean.money/almanac/protocol/contracts) page of the \[Farmers' Almanac\](https://docs.bean.money/almanac). --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/readme.md). # Agronomics Handbook The \*\*Agronomics Handbook\*\* is a collection of technical documentation about Beanstalk. Beanstalk forms the monetary basis of an Arbitrum-native, rent-free economy facilitated by the seigniorage of its native fiat currency, a stablecoin called Bean. Beanstalk strives to create product market fit on both a technical and economic level. Beanstalk pioneers a path forward for devising more efficient and complex systems. Beanstalk is implemented in \[Solidity v0.8.20\](https://docs.soliditylang.org/en/v0.8.20/) for intended use in the \[EVM\](https://ethereum.org/en/developers/docs/evm/). Beanstalk leverages \[EIP-2535\](https://eips.ethereum.org/EIPS/eip-2535) to minimize gas costs and complexity. The contract code can be found below. Beanstalk is deployed at \[\`0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70\`\](https://arbiscan.io/address/0xD1A0060ba708BC4BCD3DA6C37EFa8deDF015FB70). {% embed url="" %} \* If you are looking for non-technical documentation about Beanstalk, check out the \[Farmers' Almanac\](https://docs.bean.money/almanac). \* If you are looking for comprehensive formulas behind Beanstalk's mechanics, check out the \[Beanstalk whitepaper\](https://bean.money/beanstalk.pdf). \* If you have any other questions while browsing the Agronomics Handbook, join the Beanstalk Discord and ask in the \*\*(#🪵・development)\*\* channel! Please share any feedback on the Agronomics Handbook in the \*\*(#šŸ“œćƒ»docs-feedback)\*\* channel in Discord and stay tuned for updates in \*\*(#šŸ“œćƒ»docs-updates)\*\*. You can submit a pull request to the Agronomics Handbook yourself \[here\](https://github.com/BeanstalkFarms/Agronomics-Handbook). ### Links \* \[Technical Introduction\](/developers/overview/introduction.md) \* \[Development Ethos\](/developers/overview/development-ethos.md) \* \[Protocol Overview\](/developers/protocol/overview.md) \* \[Beanstalk on GitHub\](https://github.com/BeanstalkFarms/Beanstalk) \* \[Contract Addresses\](https://docs.bean.money/almanac/protocol/contracts) \* \[Glossary\](https://docs.bean.money/almanac/protocol/glossary) --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/overview/app-storage.md). # App Storage Because Beanstalk is a single contract, all of the Facets can share a common state through the \[\`AppStorage\`\](https://dev.to/mudgen/appstorage-pattern-for-state-variables-in-solidity-3lki) pattern. Each Facet should define the \`AppStorage\` storage variable in the base contract and define \*\*no other\*\* \`internal\` or \`public\` state variables. \`\`\`solidity AppStorage internal s; \`\`\` The \`AppStorage\` struct can be found in the \[\`AppStorage.sol\`\](https://github.com/BeanstalkFarms/Beanstalk/tree/master/protocol/contracts/beanstalk/storage) file. When adding new state variables, always add them to the end of the \`AppStorage\` struct to ensure consistent mapping of state variables to storage slots. When deprecating an unnecessary state variables, either replace it with a different variable denoting that the state variable is deprecated or leave it as is. In the EVM, data is accessed 32 bytes at a time (known as a slot). Because of this, in Beanstalk, many state variables are packed within the \`AppStorage\` struct to reduce gas costs. For example, say that in function \`foo\`, the state of 2 \`uint256\` values is changed. Changing a non-zero value to another non-zero value costs 10000 gas (\`2 \* 5000\`). If the 2 values could be stored in \`uint128\`s instead (meaning the data is in one slot), 2100 gas is shaved off, as the state slot is now warm. (If a slot is touched for the first time in a transaction, it is turned from cold to warm for the rest of that transaction. Warm touches are cheaper than cold touches.) --- # Internal Balances | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/overview/internal-balances.md) . ### [](https://docs.bean.money/developers/overview/internal-balances#what-are-internal-balances) What are Internal Balances? Beanstalk uses an Internal Balances system largely inspired by [Balancer's Vault](https://docs.balancer.fi/getting-started/faqs/the-vault#what-are-internal-user-balances) . With Internal Balances, Beanstalk is able to store an any ERC-20 token on behalf of a user. Beanstalk stores that the user has that ERC-20 token in [`AppStorage`](https://docs.bean.money/developers/overview/app-storage) . All functions within Beanstalk that either use a user's ERC-20 tokens or send ERC-20 tokens to a user can send/receive the ERC-20 tokens from the user's Internal Balance and/or External Balance (the user's wallet). Internal Balances can significantly reduce transaction costs for using tokens that remain in Beanstalk. As more protocols utilize Internal Balances, the gas savings can compound. In the Beanstalk ecosystem, **Internal Balances** are referred to as **Farm Balances**. Similarly, **External Balances** (balances in the user's wallet) are referred to as **Circulating Balances**. See [Terminology Discrepancies](https://docs.bean.money/developers/misc/terminology-discrepancies) . ### [](https://docs.bean.money/developers/overview/internal-balances#associated-contracts) Relevant Contracts * [`LibTransfer.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/libraries/Token/LibTransfer.sol) * [`LibBalance.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/libraries/Token/LibBalance.sol) ### [](https://docs.bean.money/developers/overview/internal-balances#to-from) To / From `LibTransfer` uses the following structs in order to denote the location(s) from which tokens will be used in a function. Copy enum From { EXTERNAL, INTERNAL, EXTERNAL_INTERNAL, INTERNAL_TOLERANT } * `EXTERNAL`: Beanstalk will receive tokens from the user's External Balance; * `INTERNAL`: Beanstalk will receive tokens from the user's Internal Balance; * `EXTERNAL_INTERNAL`: Beanstalk will receive tokens from the user's Internal Balance and will receive from their External Balance if there is not enough in the Internal Balance; and * `INTERNAL_TOLERANT`: Beanstalk will receive tokens from the user's Internal Balance and will not fail if there is not enough in their Internal Balance. * `EXTERNAL` Beanstalk will send tokens to the user's External Balance; and * `INTERNAL` Beanstalk will send tokens to the user's Internal Balance. ### [](https://docs.bean.money/developers/overview/internal-balances#transferring-internal-external-balances) Transferring Internal / External Balances At any time, a user can transfer, add or remove ERC-20 tokens from their Internal Balance through the `transferToken` function in the [`TokenFacet`](https://docs.bean.money/developers/protocol/depot/token-facet) . `transferToken` is a general transfer method that allows full control of the tokens start/end location (i.e internal to internal, internal to external, external to internal, external to external). ### [](https://docs.bean.money/developers/overview/internal-balances#sending-internal-external-balances) Sending Internal / External Balances A function that sends ERC-20 tokens to users can implement Internal Balances by adding the `To` enum in `LibTransfer` to a function's signature. Then call `sendToken` in `LibTransfer` instead of directly calling the ERC-20 function `transferFrom`. ### [](https://docs.bean.money/developers/overview/internal-balances#receiving-internal-external-balances) Receiving Internal / External Balances A function that receives ERC-20 tokens from users can implement Internal Balances by adding the `From` enum in `LibTransfer` to a function's signature. Then call `receiveToken` in `LibTransfer` instead of directly calling the ERC-20 function `transfer`. For protocols that are building on top of Beanstalk and want to interact with Internal Balances, they can utilize the functions given in [`TokenFacet`](https://docs.bean.money/developers/protocol/depot/token-facet) , rather than the library itself. [PreviousApp Storage](https://docs.bean.money/developers/overview/app-storage) [NextOverview](https://docs.bean.money/developers/protocol/overview) Last updated 1 year ago * [What are Internal Balances?](https://docs.bean.money/developers/overview/internal-balances#what-are-internal-balances) * [Relevant Contracts](https://docs.bean.money/developers/overview/internal-balances#associated-contracts) * [To / From](https://docs.bean.money/developers/overview/internal-balances#to-from) * [Transferring Internal / External Balances](https://docs.bean.money/developers/overview/internal-balances#transferring-internal-external-balances) * [Sending Internal / External Balances](https://docs.bean.money/developers/overview/internal-balances#sending-internal-external-balances) * [Receiving Internal / External Balances](https://docs.bean.money/developers/overview/internal-balances#receiving-internal-external-balances) Copy enum To { EXTERNAL, INTERNAL } Copy function transferToken( IERC20 token, address recipient, uint256 amount, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable; Copy function sendToken( IERC20 token, uint256 amount, address recipient, To mode ) internal; Copy function receiveToken( IERC20 token, uint256 amount, address recipient, To mode ) internal; --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/overview/internal-balances.md). # Internal Balances ### What are Internal Balances? [](https://docs.bean.money/developers/overview/internal-balances.md#what-are-internal-balances) Beanstalk uses an Internal Balances system largely inspired by \[Balancer's Vault\](https://docs.balancer.fi/getting-started/faqs/the-vault#what-are-internal-user-balances). With Internal Balances, Beanstalk is able to store an any ERC-20 token on behalf of a user. Beanstalk stores that the user has that ERC-20 token in \[\`AppStorage\`\](/developers/overview/app-storage.md). All functions within Beanstalk that either use a user's ERC-20 tokens or send ERC-20 tokens to a user can send/receive the ERC-20 tokens from the user's Internal Balance and/or External Balance (the user's wallet). Internal Balances can significantly reduce transaction costs for using tokens that remain in Beanstalk. As more protocols utilize Internal Balances, the gas savings can compound. {% hint style="warning" %} In the Beanstalk ecosystem, \*\*Internal Balances\*\* are referred to as \*\*Farm Balances\*\*. Similarly, \*\*External Balances\*\* (balances in the user's wallet) are referred to as \*\*Circulating Balances\*\*. See \[Terminology Discrepancies\](/developers/misc/terminology-discrepancies.md). {% endhint %} ### Relevant Contracts [](https://docs.bean.money/developers/overview/internal-balances.md#associated-contracts) \* \[\`LibTransfer.sol\`\](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/libraries/Token/LibTransfer.sol) \* \[\`LibBalance.sol\`\](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/libraries/Token/LibBalance.sol) ### To / From \`LibTransfer\` uses the following structs in order to denote the location(s) from which tokens will be used in a function. \`\`\`solidity enum From { EXTERNAL, INTERNAL, EXTERNAL\_INTERNAL, INTERNAL\_TOLERANT } \`\`\` \* \`EXTERNAL\`: Beanstalk will receive tokens from the user's External Balance; \* \`INTERNAL\`: Beanstalk will receive tokens from the user's Internal Balance; \* \`EXTERNAL\_INTERNAL\`: Beanstalk will receive tokens from the user's Internal Balance and will receive from their External Balance if there is not enough in the Internal Balance; and \* \`INTERNAL\_TOLERANT\`: Beanstalk will receive tokens from the user's Internal Balance and will not fail if there is not enough in their Internal Balance. \`\`\`solidity enum To { EXTERNAL, INTERNAL } \`\`\` \* \`EXTERNAL\` Beanstalk will send tokens to the user's External Balance; and \* \`INTERNAL\` Beanstalk will send tokens to the user's Internal Balance. ### Transferring Internal / External Balances [](https://docs.bean.money/developers/overview/internal-balances.md#transferring-internal-external-balances) At any time, a user can transfer, add or remove ERC-20 tokens from their Internal Balance through the \`transferToken\` function in the \[\`TokenFacet\`\](/developers/protocol/depot/token-facet.md). \`transferToken\` is a general transfer method that allows full control of the tokens start/end location (i.e internal to internal, internal to external, external to internal, external to external). \`\`\`solidity function transferToken( IERC20 token, address recipient, uint256 amount, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable; \`\`\` ### Sending Internal / External Balances [](https://docs.bean.money/developers/overview/internal-balances.md#sending-internal-external-balances) A function that sends ERC-20 tokens to users can implement Internal Balances by adding the \`To\` enum in \`LibTransfer\` to a function's signature. Then call \`sendToken\` in \`LibTransfer\` instead of directly calling the ERC-20 function \`transferFrom\`. \`\`\`solidity function sendToken( IERC20 token, uint256 amount, address recipient, To mode ) internal; \`\`\` ### Receiving Internal / External Balances [](https://docs.bean.money/developers/overview/internal-balances.md#receiving-internal-external-balances) A function that receives ERC-20 tokens from users can implement Internal Balances by adding the \`From\` enum in \`LibTransfer\` to a function's signature. Then call \`receiveToken\` in \`LibTransfer\` instead of directly calling the ERC-20 function \`transfer\`. \`\`\`solidity function receiveToken( IERC20 token, uint256 amount, address recipient, To mode ) internal; \`\`\` For protocols that are building on top of Beanstalk and want to interact with Internal Balances, they can utilize the functions given in \[\`TokenFacet\`\](/developers/protocol/depot/token-facet.md), rather than the library itself. --- # EIP-2535 Diamond | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/overview/eip-2535-diamond.md) . The Beanstalk contract is a Diamond – a multi-facet proxy defined in [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) that can implement functionality from numerous different Facet contracts. All the Facets share a common storage through the [`AppStorage`](https://dev.to/mudgen/appstorage-pattern-for-state-variables-in-solidity-3lki) pattern. Functionality is shared between Facets through internal Libraries. Understanding EIP-2535 really helps to understand Beanstalk. This page serves as a resource hub for EIP-2535. #### [](https://docs.bean.money/developers/overview/eip-2535-diamond#what-is-a-diamond) What is a Diamond? * [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) * [Understanding Diamonds on Ethereum](https://dev.to/mudgen/understanding-diamonds-on-ethereum-1fb) * [How Diamond Upgrades Work](https://dev.to/mudgen/how-diamond-upgrades-work-417j) #### [](https://docs.bean.money/developers/overview/eip-2535-diamond#implementation-tips-for-diamonds-which-beanstalk-uses) Implementation Tips for Diamonds (which Beanstalk uses) * [AppStorage Pattern for State Variables in Solidity](https://dev.to/mudgen/appstorage-pattern-for-state-variables-in-solidity-3lki) * [How to Share Functions Between Facets of a Diamond](https://dev.to/mudgen/how-to-share-functions-between-facets-of-a-diamond-1njb) * [Accessing State Variables in Libraries](https://dev.to/mudgen/solidity-libraries-can-t-have-state-variables-oh-yes-they-can-3ke9) #### [](https://docs.bean.money/developers/overview/eip-2535-diamond#why-use-a-diamond) Why use a Diamond? * [Ethereum's Maximum Contract Size Limit is Solved with the Diamond Standard](https://dev.to/mudgen/ethereum-s-maximum-contract-size-limit-is-solved-with-the-diamond-standard-2189) * [🌱 Beanstalk šŸ¤ EIP-2535 šŸ’Ž](https://publius.money/blog/2021-09-24-beanstalk-eip-2535) * [Ethereum Diamonds Solve These Problems](https://dev.to/mudgen/ethereum-diamonds-solve-these-problems-3fmp) #### [](https://docs.bean.money/developers/overview/eip-2535-diamond#more-information-on-diamonds) More Information on Diamonds * [Beanstalk on Louper, The Ethereum Diamond Inspector](https://louper.dev/diamond/0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5) * [EIP-2535 Diamonds Discord](https://discord.gg/kQewPw2) * [Nick Mudge <> Publius Podcast](https://www.youtube.com/watch?v=3-RUl12lPnI) [PreviousDevelopment Ethos](https://docs.bean.money/developers/overview/development-ethos) [NextApp Storage](https://docs.bean.money/developers/overview/app-storage) Last updated 2 years ago --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/overview/eip-2535-diamond.md). # EIP-2535 Diamond The Beanstalk contract is a Diamond – a multi-facet proxy defined in \[EIP-2535\](https://eips.ethereum.org/EIPS/eip-2535) that can implement functionality from numerous different Facet contracts. All the Facets share a common storage through the \[\`AppStorage\`\](https://dev.to/mudgen/appstorage-pattern-for-state-variables-in-solidity-3lki) pattern. Functionality is shared between Facets through internal Libraries. Understanding EIP-2535 really helps to understand Beanstalk. This page serves as a resource hub for EIP-2535. #### What is a Diamond? \* \[EIP-2535\](https://eips.ethereum.org/EIPS/eip-2535) \* \[Understanding Diamonds on Ethereum\](https://dev.to/mudgen/understanding-diamonds-on-ethereum-1fb) \* \[How Diamond Upgrades Work\](https://dev.to/mudgen/how-diamond-upgrades-work-417j) #### Implementation Tips for Diamonds (which Beanstalk uses) \* \[AppStorage Pattern for State Variables in Solidity\](https://dev.to/mudgen/appstorage-pattern-for-state-variables-in-solidity-3lki) \* \[How to Share Functions Between Facets of a Diamond\](https://dev.to/mudgen/how-to-share-functions-between-facets-of-a-diamond-1njb) \* \[Accessing State Variables in Libraries\](https://dev.to/mudgen/solidity-libraries-can-t-have-state-variables-oh-yes-they-can-3ke9) #### Why use a Diamond? \* \[Ethereum's Maximum Contract Size Limit is Solved with the Diamond Standard\](https://dev.to/mudgen/ethereum-s-maximum-contract-size-limit-is-solved-with-the-diamond-standard-2189) \* \[🌱 Beanstalk šŸ¤ EIP-2535 šŸ’Ž\](https://publius.money/blog/2021-09-24-beanstalk-eip-2535) \* \[Ethereum Diamonds Solve These Problems\](https://dev.to/mudgen/ethereum-diamonds-solve-these-problems-3fmp) #### More Information on Diamonds \* \[Beanstalk on Louper, The Ethereum Diamond Inspector\](https://louper.dev/diamond/0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5) \* \[EIP-2535 Diamonds Discord\](https://discord.gg/kQewPw2) \* \[Nick Mudge <> Publius Podcast\](https://www.youtube.com/watch?v=3-RUl12lPnI) --- # Sun | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/sun.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Sun advances Beanstalk to the next Season through the `sunrise` function in the Season Facet. Every time an hour passes, `sunrise` can be called 1 more time. The Season Facet has [several subcontracts](https://github.com/BeanstalkFarms/Beanstalk/tree/master/protocol/contracts/beanstalk/sun/SeasonFacet) : * [`Oracle.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/SeasonFacet/Oracle.sol) -> Calculates the time weighted average number of Beans that Bean is above/below its value peg in all pools on the [Oracle Whitelist](https://docs.bean.money/farm/sun#oracle-whitelist) . * [`Weather.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/SeasonFacet/Weather.sol) -> Changes the Max Temperature (interest rate) depending on the Bean price, debt level and demand for Soil. * [`Sun.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/SeasonFacet/Sun.sol) -> Sets the Soil for the next Season and mints new Beans if `Oracle` returns `deltaB > 0` and distributes them as follows: * Up to 1/3 to Active Fertilizer holders (see [Barn](https://docs.bean.money/developers/protocol/barn) ); * Up to 1/2 of the remaining amount to Pod holders (see [Field](https://docs.bean.money/developers/protocol/field) ); and * The rest to Stalkholders in the Silo (see [Silo](https://docs.bean.money/developers/protocol/silo) ). `sunrise` does the following steps: 1. Increments the Season number; 2. Calls `Oracle` to get `deltaB`; 3. Calls `Weather` to adjust the Max Temperature and checks for Rain and Season of Plenty; 4. Calls `Sun` to set the Soil and mint Beans if `deltaB > 0`; and 5. Pays `msg.sender` Beans for paying the transaction fee associated with calling the function. In the Beanstalk ecosystem, * **Rain** is referred to as **Oversaturation**; and * **Season of Plenty** is referred to as **Flood**. See [Terminology Discrepancies](https://docs.bean.money/developers/misc/terminology-discrepancies) . [PreviousOverview](https://docs.bean.money/developers/protocol/overview) [NextSeason Facet](https://docs.bean.money/developers/protocol/sun/season-facet) Last updated 1 year ago --- # Market | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/market.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Market will house various DEXs for zero fee trading. For now, there is only the Pod Market, but in the future there may be a zero fee AMM, a zero fee NFT marketplace, etc. The Pod Market allows Farmers to create, Fill and Cancel Pod Listings and Pod Orders. ### [](https://docs.bean.money/developers/protocol/market#pod-listings) Pod Listings Farmers with Pods can create Pod Listings, which allow other Farmers to buy part or all of their Plots at a given price. Pod Listings are contained in the following struct: Copy struct PodListing { address account; uint256 index; uint256 start; uint256 amount; uint24 pricePerPod; uint256 maxHarvestableIndex; LibTransfer.To mode; } Pod Listings are created with the `createPodListing` function. Pod Listings can only be created by the owner of the Plot being listed. When a Pod Listing is created, The `PodListing` struct with the exception of `account` and `index` is encoded and hashed. Beanstalk stores the hash of the listing on-chain in the `s.podListings` state mapping. Pod Listing hashes are stored by index of the corresponding Plot. The Pod Listing struct is emitted in an event upon creation. Pod Listings are Filled with the `fillPodListing` function. The Pod buyer is required to input the `PodListing` struct associated with the Plot being transferred. Beanstalk hashes the `PodListing` data and verifies that the hash is the same as the hash in storage at the corresponding index. If the original Plot owner no longer owns the Plot, then the transaction will fail. If the Fill is successful, Beanstalk then transfers the corresponding part of the Plot to the buyer in exchange for Beans. If the Listing is not empty, the updated Listing is then hashed and stored on-chain. Pod Listings can be Cancelled at any time with the `cancelPodListing` function. Pod Listings are automatically Cancelled on Harvest, Transfer or if a new Pod Listing is created with the same plot. ### [](https://docs.bean.money/developers/protocol/market#pod-orders) Pod Orders Pod Orders allow Farmer with Beans to create Orders to buy Plots. An Order specifies a max Place in Line that the Farmer is will to buy Pods at, the price they are willing to by Pods at and the amount they are willing to buy. All Orders are denominated in Beans. Pod Orders are contained in the following struct: Pod Orders are created with the `createPodOrder` function. Pod Orders can be created by any Farmer. When a Pod Order is created, The `PodOrder` struct is encoded and hashed. Beanstalk stores the hash of the Order on-chain in the `s.podOrders` state mapping. The hash is the key in the mapping and the amount in the Order is stored in the hash. When a Pod Order is created, Beans are transferred from the Farmer to Beanstalk equal to the amount of Pods being bought times the Price per Pod in the Order. These Beans are locked in Beanstalk until either the Pod Order creator Cancels the Order or the Order is Filled. Farmers with Pods can sell Pods to open Pod Orders with the `fillPodOrder` function. The Pod seller is required to input what part of which Plot is being sold and the `PodOrder` struct associated with Order they are filling. Beanstalk hashes the `PodOrder` data and verifies that the hash maps to a non-zero value in `s.podOrders`. The seller is also required to input the Plot being sold as a part of the calldata. If the Fill is successful, the value at the hash key is updated to equal the new amount remaining in the Pod Order. Pod Orders can be Cancelled at anytime with the `cancelPodOrder` function. When an Order is Cancelled, Beanstalk returns the remaining Beans in the Pod Order to the Farmer. [PreviousUnripe Facet](https://docs.bean.money/developers/protocol/barn/unripe-facet) [NextMarketplace Facet](https://docs.bean.money/developers/protocol/market/marketplace-facet) Last updated 1 year ago * [Pod Listings](https://docs.bean.money/developers/protocol/market#pod-listings) * [Pod Orders](https://docs.bean.money/developers/protocol/market#pod-orders) Copy struct PodOrder { address account; uint24 pricePerPod; uint256 maxPlaceInLine; } --- # Barn | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/barn.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. On April 17, 2022, Beanstalk was exploited via a governance attack. The attacker used a flash loan to exploit the protocol’s then on-chain governance mechanism and transferred all of the Deposited assets in the Silo to an address they controlled, resulting in a theft of ~$77M in non-Bean assets. Upon exploit, Beanstalk was Paused and the on-chain governance mechanism was removed. Stalkholders voted [via Snapshot](https://snapshot.org/#/beanstalkfarms.eth/proposal/0xb87854d7f6f40f0877a1333028eab829b213fbcce03f16f9dd3832c8a98ab99b) on how Beanstalk should proceed. The Barn is the Beanstalk recapitalization facility used to Replant Beanstalk. The Barn Raise started on June 6, 2022 while the protocol was offline and continues until the recapitalization target has been reached. The Barn is consists of 2 Facets: * [Fertilizer Facet](https://docs.bean.money/developers/protocol/barn/fertilizer-facet) * [Unripe Facet](https://docs.bean.money/developers/protocol/barn/unripe-facet) ### [](https://docs.bean.money/developers/protocol/barn#fertilizer) Fertilizer Fertilizer is a semi-fungible limited debt issuance to recapitalize $77M in stolen liquidity. At the beginning of the Barn Raise, there was 77M Available Fertilizer. Available Fertilizer is the number of Fertilizer that can be bought from Beanstalk in exchange for 1 USDC each. Fertilizer becomes Active when it is bought, at which point the ERC-1155 Fertilizer token is minted. Active Fertilizer entitles holders to a pro rata portion of 1/3 of Bean mints. Fertilizer is minted with a given % Humidity. Humidity is dependent on the Season during which the Fertilizer is minted. During Season 6074 (the Season Beanstalk was Paused at), the Humidity was 500%. The next Season, Humidity was set to 250% and decreased 0.5% every Season until it reached 20%. The Humidity will remain at 20% until all Fertilizer is sold. Each Fertilizer entitles its holder up to `1 + humidity` Unfertilized Beans. Unfertilized Beans become Fertilized Beans when Beans are distributed to Active Fertilizer holders. When Fertilizer has no more corresponding Unfertilized Beans, it becomes Used and no longer receives Bean mints. To track Active Fertilizer, Beanstalk has a global variable `s.bpf`, which is the cumulative Beans Per Fertilizer (BPF) paid back over all Seasons. Fertilizer is indexed by `endBpf = s.bpf + 1 + humidity` at the time of minting. This indicates that once `s.bpf` reaches `endBpf`, the Fertilizer becomes Used. Beanstalk sorts all non-zero Fertilizer ids by `endBpf` in `s.nextFid`. This is a linked list where `s.fFirst` is the start of the list and `s.fLast` is the end of the list. Every Season, Beanstalk increments `s.bpf` by the number of new Bean mints distributed to Fertilizer holders divided by `s.activeFertilizer`. Note that Beanstalk integrates `s.bpf` over `s.activeFertilizer`—every time `s.bpf` reaches `s.fFirst`, `s.activeFertilizer` decreases by the supply of Fertilizer with an id of `s.fFirst`. The first item is then popped off the linked list and `s.fFirst` is set to the next item. When `s.fFirst == 0`, Beanstalk stops paying Beans to Fertilizer as all Fertilizer is either Used or Available (and thus `s.activeFertilizer == 0`). Fertilizer can be claimed via the `claimFertilizer` function (it is also claimed automatically whenever Fertilizer is transferred). The Fertilizer contract stores the `lastBpf` value for each token id that the Farmer owns. When a Farmer claims Fertilizer, Beanstalk computes how many Beans have been Fertilized since the last time the Farmer Fertilized that id with: `min(s.bpf, s.nextFid[id]) – lastBpf`. It then gives the Farmer that many Beans for each Fertilizer they have of that id. #### [](https://docs.bean.money/developers/protocol/barn#pre-replant-fertilizer) Pre-Replant Fertilizer Before Beanstalk was Replanted, Fertilizer was deployed as `FertilizerPreMint.sol`, which transferred USDC from the caller to [the Beanstalk Community Multisig (BCM) address](https://app.safe.global/eth:0xa9bA2C40b263843C04d344727b954A545c81D043) in exchange for Fertilizer. The Fertilizer was issued at the id `6_000_000` as the Humidity was 500% before Replant. When Beanstalk was Replanted, the BCM called the `addFertilizerOwner` function that handled the process of adding liquidity to the BEAN:3CRV pool and minting new Beans for all of the Fertilizer minted prior to Replant. At the same time, the Fertilizer contract was upgraded to [`Fertilizer.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/tokens/Fertilizer/Fertilizer.sol) . This moved the `mintFertilizer()` functionality from the Fertilizer contract to Beanstalk itself. From this point forward, Beanstalk automatically adds new liquidity for Unripe LP holders and new Beans for Unripe Bean holders in the same transaction that Fertilizer is minted in. ### [](https://docs.bean.money/developers/protocol/barn#unripe-assets) **Unripe Assets** Upon Replant, Farmers who held Beans in the block prior to the exploit received 1 Unripe Bean for every pre-exploit Bean; Farmers who held whitelisted LP Tokens in the block prior to the exploit received 1 Unripe BEAN:3CRV LP for every 1 BDV of each pre-exploit whitelisted LP Token. As Fertilizer is sold, Beans are distributed to all Unripe Bean holders pro rata (and BEAN:3CRV LP is distributed to all Unripe LP holders) using the shares and underlying token model that [EIP-4626](https://eips.ethereum.org/EIPS/eip-4626) uses for yield-bearing tokens. The Unripe tokens are the Shares and Beans/LP are the underlying assets. The underlying portion will continue to increase as Fertilizer is minted in exchange for USDC. Farmers can Chop their Unripe assets at any point for a penalized percent of the corresponding underlying tokens. The penalized percent is equal to the percent of Unfertilized Beans that have been Fertilized. This can be computed as `s.fertilizedIndex / s.unfertilizedIndex`. [PreviousFundraiser Facet](https://docs.bean.money/developers/protocol/field/fundraiser-facet) [NextFertilizer Facet](https://docs.bean.money/developers/protocol/barn/fertilizer-facet) Last updated 1 year ago * [Fertilizer](https://docs.bean.money/developers/protocol/barn#fertilizer) * [Unripe Assets](https://docs.bean.money/developers/protocol/barn#unripe-assets) --- # FAQ | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/misc/faq.md) . ### [](https://docs.bean.money/developers/misc/faq#who-calls-sunrise) Who calls the `gm` function? In theory, anyone is able to call the `gm` function. In practice, MEV bots will front run your transaction by calling the function themselves as they can determine that they will get the Beans instead of you. As there are a number of bots playing the Sunrise game, the chances of getting a successful `gm` call from clicking the Sunrise button on the UI are essentially zero. ### [](https://docs.bean.money/developers/misc/faq#call-beanstalk-functions-with-louper) Where can I call functions directly on Beanstalk? Louper allows users to directly call functions in a contract that implements EIP-2535, as Etherscan does not yet support this. The Beanstalk contract on Louper can be found [here](https://louper.dev/diamond/0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5) . ### [](https://docs.bean.money/developers/misc/faq#beans-6-decimals) Why do Beans only have 6 decimals? Solidity has a limit of `2^256 - 1 ~= 1e77` for integers. Beanstalk is a complex protocol that does a lot of multiplication of big numbers which could potentially bring that upper integer limit into play, especially in the Flood functionality. Given that Bean is a stablecoin and the the value peg is $1, there is no need for an excessive amount of decimals. By reducing decimals to increase protocol security in the long run, Beanstalk is better set up for success. Note that USDC and Tether both have 6 decimals. A lot of tokens have 18 decimals. Non-stable tokens have to be functional at any possible price at any point in the future. Let's take the example of ETH and say that the ETH price is $4300. $0.01 is about 0.0000023 ETH. Thus, for ETH to be tradable at the cent level, it needs to have at least 7 decimals. Now fast forward 100 years and let's say (hypothetically) that ETH is worth $1,000,000,000. This would require ETH to have 11 decimals to be transacted at a cent level. Thus, it makes sense for ETH to have 18 decimals. In terms of gas cost, there is no difference between 6 and 18 decimals. ### [](https://docs.bean.money/developers/misc/faq#proxy-contract-upgrades) How are proxy contracts used to upgrade Beanstalk? Delegate calls in Solidity allow a smart contract to use functionality stored in another contract’s bytecode and apply it to its own memory. Traditionally, an upgradeable contract is a proxy address with an implementation contract. All calls to the proxy use the logic stored in the implementation contract, but update the state of the proxy. Thus, by changing a proxy’s implementation address, one can change the functionality in a contract while maintaining the same state and address. You can read about it more on the OpenZeppelin docs [here](https://docs.openzeppelin.com/upgrades-plugins/1.x/proxies) and [here](https://docs.openzeppelin.com/learn/upgrading-smart-contracts) . Beanstalk is actually a multi-facet proxy implementation called a Diamond. This implementation is defined by EIP-2535. [EIP-2535](https://eips.ethereum.org/EIPS/eip-2535) allows a single proxy to implement multiple smart contracts at the same time. You can read more about the reasoning behind EIP-2535 usage with Beanstalk [here](https://bean.money/blog/beanstalk-eip-2535) . ### [](https://docs.bean.money/developers/misc/faq#what-are-roots) What are Roots? Roots were implemented in [BIP-0](https://bean.money/bip-0) . Roots are an underlying accounting variable for Stalk in order to track how many Earned Beans a Farmer has earned. When a Farmer Deposits assets or Mows Grown Stalk, they are given Roots proportional to the Stalk they receive: `newStalk * totalRoots / totalStalk`. When Beanstalk mints Beans, it increases `totalStalk` but not `totalRoots`, which in effect, increases `stalk / root`. When a Farmer Mows their Grown Stalk, the ratio: `farmerStalk / farmerRoots = totalStalk / totalRoots` is restored. (In this formula `farmerStalk` is equal to the Stalk they have after Mowing.) `earnedStalk = farmerStalk - totalStalk / totalRoots * farmerRoots` (In this formula `farmerStalk` is equal to the Stalk they have before the Mow.) 1 Stalk = 1 Bean, so `earnedBeans = earnedStalk`. ### [](https://docs.bean.money/developers/misc/faq#why-build-a-zero-fee-amm) Why build a zero fee AMM? From an engineering perspective, building a zero fee AMM is simpler than building an AMM with fees—you can simply skip the code that implements the fee when a swap occurs. From an economic perspective, the concept is that Silo yield is a sufficient enough incentive to attract and retain liquidity providers such that there is no need to charge a fee on swaps. Why is having zero fees important? Given that whether `deltaB < 0` or `deltaB > 0` is a defining data point in how Beanstalk's peg maintenance operates, any fee on swaps creates a serious inefficiency in Farmers' ability to arbitrage the peg. The BEAN:3CRV pool charges a 0.04% on swaps (including Convert). This means that buying or Converting above the price of $0.9996 means you are paying more than $1 per Bean and selling or Converting below $1.0004 means you are getting less than $1 per Bean. Any Farmer who is constantly arbitraging the price within this range is losing money overtime instead of making a profit (which they should be). For reference, the BEAN:ETH pool previously had a 0.3% fee, which created an even more extreme inefficiency in peg maintenance. In addition, Beanstalk can overtime become the primary liquidity provider for all of DeFi by providing the cheapest on-chain swaps between two non-Bean assets. ### [](https://docs.bean.money/developers/misc/faq#pods-plots-erc-721) Why aren't Pods / Plots implemented with an ERC standard? Plots function completely differently than both ERC-721 and ERC-1155. ERC-1155 doesn't work for Plots/Pods as Pods require ordinality for FIFO Harvesting. ERC-721 could work for Pods, but its hard to see how this would add value. ERC-721 tokens are non-divisible, so it would only allow entire Plots to be bought and sold on NFT marketplaces, which is far less efficient that the current Pod Market. Implementing Pods as ERC-721 would increase the cost of Sowing, Harvesting, Transferring, buying and selling. ### [](https://docs.bean.money/developers/misc/faq#fertilizer-initialize) Why doesn't Fertilizer.sol have an `initialize` function? When Fertilizer was originally deployed. It was deployed as the `FertilizerPreMint.sol` contract, which has an `initialize` function that calls `__Internallize_init` [here](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/fertilizer/FertilizerPreMint.sol#L39.) . The `initialize` function was run on deployment. When Beanstalk was Replanted, The Fertilizer proxy contract was upgraded to the `Fertilizer` contract found [here](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/fertilizer/Fertilizer.sol) . This is the current implementation contract you see on Etherscan. There was no additional initialization needed as `__Internallize_init` was already executed. Thus, the `Fertilizer` contract has no need to have an external `initialize` function. ### [](https://docs.bean.money/developers/misc/faq#bdv-urbean3crv-urbean) Why is the BDV of urBEAN3CRV lower than the BDV of urBEAN? On October 25, 2022, two values could be found on the [Beanstalk Data Dashboard](https://beanstalk-dashboard.netlify.app/) : * Underlying per urBEAN3CRV: `0.219823021543684162` * Underlying per urBEAN: `0.222227` * Dividing the two numbers: `0.219823021543684162/0.222227 = 0.9891823` This implies that 1 urBEAN3CRV will only ripen into 0.9891823 BEAN3CRV (i.e., not 1 BEAN3CRV) when Beanstalk is full recapitalized, assuming there are no Chops, no fees, deltaB = 0 and 1 BEAN3CRV = 1 BEAN. 1 urBEAN will ripen into 1 BEAN. There are numerous reasons for this discrepancy, but the most significant is that `deltaB > 0` when the exploit occurred, so the BDV of LP tokens at the time was less than 1. ### [](https://docs.bean.money/developers/misc/faq#beans-minted-fundraiser-burn) Why are Beans minted for a Fundraiser just to later burn them? See [`FundraiserFacet.sol`](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/FundraiserFacet.sol#L57-L87) . Fundraisers are meant to mimic an OTC swap where the buyer trades some stablecoin for a Bean and then automatically Sows the bought Beans for Pods, similar to how the credit mechanism to sustain the peg works. As defined in the whitepaper, Sowing requires a Bean to be burned in exchanged for the Pods. At the start of the Fundraiser, Beans are minted. These Beans represent (1) expected "sell pressure" for Beans as they can be sold at anytime for 1 stablecoin (normally USDC) and (2) expected Pod issuance given that the Beans will be Sown into Pods. [](https://docs.bean.money/developers/misc/faq#algorithm-explanations) Algorithm Explanations -------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/misc/faq#remaining-capitalization) [`**remainingRecapitalization**`](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/libraries/LibFertilizer.sol#L136) `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. ### [](https://docs.bean.money/developers/misc/faq#check-for-max-deltab) [`**checkForMaxDeltaB**`](https://github.com/BeanstalkFarms/Beanstalk/blob/ddf3869bcdf7f7802eabe83d6abeebdfc7b8d1ab/protocol/contracts/libraries/Oracle/LibCurveOracle.sol#L152) See [EBIP-2](https://bean.money/ebip-2) . 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. [PreviousUpgrade History](https://docs.bean.money/developers/misc/upgrade-history) [NextTerminology Discrepancies](https://docs.bean.money/developers/misc/terminology-discrepancies) Last updated 2 years ago * [Who calls the gm function?](https://docs.bean.money/developers/misc/faq#who-calls-sunrise) * [Where can I call functions directly on Beanstalk?](https://docs.bean.money/developers/misc/faq#call-beanstalk-functions-with-louper) * [Why do Beans only have 6 decimals?](https://docs.bean.money/developers/misc/faq#beans-6-decimals) * [How are proxy contracts used to upgrade Beanstalk?](https://docs.bean.money/developers/misc/faq#proxy-contract-upgrades) * [What are Roots?](https://docs.bean.money/developers/misc/faq#what-are-roots) * [Why build a zero fee AMM?](https://docs.bean.money/developers/misc/faq#why-build-a-zero-fee-amm) * [Why aren't Pods / Plots implemented with an ERC standard?](https://docs.bean.money/developers/misc/faq#pods-plots-erc-721) * [Why doesn't Fertilizer.sol have an initialize function?](https://docs.bean.money/developers/misc/faq#fertilizer-initialize) * [Why is the BDV of urBEAN3CRV lower than the BDV of urBEAN?](https://docs.bean.money/developers/misc/faq#bdv-urbean3crv-urbean) * [Why are Beans minted for a Fundraiser just to later burn them?](https://docs.bean.money/developers/misc/faq#beans-minted-fundraiser-burn) * [Algorithm Explanations](https://docs.bean.money/developers/misc/faq#algorithm-explanations) * [remainingRecapitalization](https://docs.bean.money/developers/misc/faq#remaining-capitalization) * [checkForMaxDeltaB](https://docs.bean.money/developers/misc/faq#check-for-max-deltab) --- # Diamond | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/diamond.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Diamond module contains various functions that require ownership of Beanstalk to execute in Beanstalk. This includes Pausing and Unpausing Beanstalk and upgrading Beanstalk via Diamond Cuts. See [EIP-2535 Diamond](https://docs.bean.money/developers/overview/eip-2535-diamond) to read more about Beanstalk's upgradable proxy implementation. The Diamond consists of 4 facets: * [Diamond Cut Facet](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet) * [Diamond Loupe Facet](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet) * [Ownership Facet](https://docs.bean.money/developers/protocol/diamond/ownership-facet) * [Pause Facet](https://docs.bean.money/developers/protocol/diamond/pause-facet) [PreviousCurve Facet](https://docs.bean.money/developers/protocol/depot/curve-facet) [NextDiamond Cut Facet](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet) Last updated 1 year ago --- # Terminology Discrepancies | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/misc/terminology-discrepancies.md) . The Beanstalk codebase currently uses several terms that are out of date with the whitepaper, the Beanstalk UI, the Farmers' Almanac, etc. The following is a list of outdated terminology used in the Beanstalk codebase and the associated proper terms. Beanstalk codebase Beanstalk term Internal Balance Farm Balance External Balance Circulating Balance Marketplace Pod Market Unfertilized Beans Sprouts Fertilized Beans Rinsable Sprouts Claim Fertilized Rinse Underlying assets (w.r.t. Unripe assets) Ripe assets Earned Seeds Plantable Seeds Season of Plenty Flood \[not explicitly referenced\] Deposit Whitelist \[not explicitly referenced\] Convert Whitelist \[not explicitly referenced\] Oracle Whitelist The following discrepancies are in the Beanstalk Subgraph. Beanstalk Subgraph Beanstalk term Plantable Stalk Earned Stalk Pod Marketplace Pod Market [PreviousFAQ](https://docs.bean.money/developers/misc/faq) Last updated 1 year ago --- # Farm | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/depot.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Farm allows Farmers to call multiple functions in a single transaction and use assets between different functions in a composable manner, without those assets every leaving Beanstalk (thanks to [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). Internal Balances allow the `farm` function to use the output of a function in the next function call. The Farm also provides composable Beanstalk-native interfaces for other DeFi protocols. This allows Farmers to call supported external protocols through the `farm` function and leverage Internal Balances. The current protocols that the Farm supports are: * WETH -> wrapping and unwrapping; and * Curve -> swapping and adding/removing liquidity. * Pipeline -> performing an arbitrary series of actions in the EVM in a single transaction. The Farm creates an interface to transfer ERC-20 tokens between Internal and External Balances, as well as between Farmers through the `transferToken` function. The Farm consists of 5 facets: * [Farm Facet](https://docs.bean.money/developers/protocol/depot/farm-facet) * [Depot Facet](https://docs.bean.money/developers/protocol/depot/depot-facet) * [Token Facet](https://docs.bean.money/developers/protocol/depot/token-facet) * [Token Support Facet](https://docs.bean.money/developers/protocol/depot/token-support-facet) * [Curve Facet](https://docs.bean.money/developers/protocol/depot/curve-facet) [PreviousMarketplace Facet](https://docs.bean.money/developers/protocol/market/marketplace-facet) [NextFarm Facet](https://docs.bean.money/developers/protocol/depot/farm-facet) Last updated 1 year ago --- # Farm Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/depot/farm-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Farm Facet allows Farmers to perform multiple Beanstalk functions calls in a single transaction using `farm` calls. [](https://docs.bean.money/developers/protocol/depot/farm-facet#call-functions) Call Functions --------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/depot/farm-facet#farm) [Farm](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/FarmFacet.sol#L35) Copy function farm(bytes[] calldata data) external payable withEth returns (bytes[] memory results); Loops through the list of encoded selectors in `data` and performs a `delegateCall` on each of them. Parameter Type Description `data` `bytes[]` The encoded function data for each of the calls. Return Value Type Description `results` `bytes[]` The return data from each of the calls. ### [](https://docs.bean.money/developers/protocol/depot/farm-facet#advanced-farm) [Advanced Farm](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/FarmFacet.sol#L53) Copy function advancedFarm(AdvancedFarmCall[] calldata data) external payable withEth returns (bytes[] memory results); Execute multiple AdvancedFarmCalls. Parameter Type Description `data` `AdvancedFarmCall[]` The encoded function data for each of the calls to make to this contract. Return Value Type Description `results` `bytes[]` The results from each of the calls passed in via `data`. [](https://docs.bean.money/developers/protocol/depot/farm-facet#view-functions) View Functions --------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/depot/farm-facet#events) Events ----------------------------------------------------------------------------------- None. [PreviousFarm](https://docs.bean.money/developers/protocol/depot) [NextDepot Facet](https://docs.bean.money/developers/protocol/depot/depot-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/depot/farm-facet#call-functions) * [Farm](https://docs.bean.money/developers/protocol/depot/farm-facet#farm) * [Advanced Farm](https://docs.bean.money/developers/protocol/depot/farm-facet#advanced-farm) * [View Functions](https://docs.bean.money/developers/protocol/depot/farm-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/depot/farm-facet#events) --- # Diamond Cut Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Diamond Cut Facet is used by the owner to upgrade Beanstalk. [](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#diamond-cut) [Diamond Cut](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/diamond/DiamondCutFacet.sol#L22) Copy function diamondCut( FacetCut[] calldata _diamondCut, address _init, bytes calldata _calldata ) external override; Add, replace, and/or remove any number of functions and optionally execute a function with `delegatecall`. Can only be called by the owner of Beanstalk. Parameter Type Description `_diamondCut` `FacetCut[]` Contains the facet addresses and function selectors. `_init` `address` The address of the contract or facet to execute `_calldata`. `_calldata` `bytes` A function call, including function selector and arguments (`_calldata` is executed with `delegatecall` on `_init`). [](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------------ None. [](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#events) Events -------------------------------------------------------------------------------------------- None. [PreviousDiamond](https://docs.bean.money/developers/protocol/diamond) [NextDiamond Loupe Facet](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#call-functions) * [Diamond Cut](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#diamond-cut) * [View Functions](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet#events) --- # Pause Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/diamond/pause-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Pause Facet handles the Pausing and Unpausing of Beanstalk. [](https://docs.bean.money/developers/protocol/diamond/pause-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/diamond/pause-facet#pause) [Pause](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/PauseFacet.sol#L28) Copy function pause() external payable; Pause Beanstalk, which makes it such that the `gm` function cannot be successfully called. Only callable by the owner of Beanstalk. ### [](https://docs.bean.money/developers/protocol/diamond/pause-facet#unpause) [Unpause](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/PauseFacet.sol#L37) Copy function unpause() external payable; Unpause Beanstalk, which allows the `gm` function to be successfully called at the top of the 2nd hour. The TWAP oracle and Season timer are reset as well. [](https://docs.bean.money/developers/protocol/diamond/pause-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------ None. [](https://docs.bean.money/developers/protocol/diamond/pause-facet#events) Events -------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/diamond/pause-facet#event-pause) [Pause](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/PauseFacet.sol#L21) Emitted when Beanstalk is Paused. Parameter Type Description `timestamp` `uint256` Timestamp of the current block when Beanstalk is Paused. ### [](https://docs.bean.money/developers/protocol/diamond/pause-facet#event-unpause) [Unpause](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/PauseFacet.sol#L22) Emitted when Beanstalk is Unpaused. Parameter Type Description `timestamp` `uint256` Timestamp of the current block when Beanstalk is Unpaused. `timePassed` `uint256` How much time passed while Beanstalk was Paused. [PreviousOwnership Facet](https://docs.bean.money/developers/protocol/diamond/ownership-facet) [NextUpgrade History](https://docs.bean.money/developers/misc/upgrade-history) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/diamond/pause-facet#call-functions) * [Pause](https://docs.bean.money/developers/protocol/diamond/pause-facet#pause) * [Unpause](https://docs.bean.money/developers/protocol/diamond/pause-facet#unpause) * [View Functions](https://docs.bean.money/developers/protocol/diamond/pause-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/diamond/pause-facet#events) * [Pause](https://docs.bean.money/developers/protocol/diamond/pause-facet#event-pause) * [Unpause](https://docs.bean.money/developers/protocol/diamond/pause-facet#event-unpause) Copy event Pause(uint256 timestamp); Copy event Unpause(uint256 timestamp, uint256 timePassed); --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/protocol/sun.md). # Sun {% hint style="warning" %} Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. {% endhint %} The Sun advances Beanstalk to the next Season through the \`sunrise\` function in the Season Facet. Every time an hour passes, \`sunrise\` can be called 1 more time. The Season Facet has \[several subcontracts\](https://github.com/BeanstalkFarms/Beanstalk/tree/master/protocol/contracts/beanstalk/sun/SeasonFacet): \* \[\`Oracle.sol\`\](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/SeasonFacet/Oracle.sol) -> Calculates the time weighted average number of Beans that Bean is above/below its value peg in all pools on the \[Oracle Whitelist\](https://docs.bean.money/farm/sun#oracle-whitelist). \* \[\`Weather.sol\`\](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/SeasonFacet/Weather.sol) -> Changes the Max Temperature (interest rate) depending on the Bean price, debt level and demand for Soil. \* \[\`Sun.sol\`\](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/facets/SeasonFacet/Sun.sol) -> Sets the Soil for the next Season and mints new Beans if \`Oracle\` returns \`deltaB > 0\` and distributes them as follows: \* Up to 1/3 to Active Fertilizer holders (see \[Barn\](/developers/protocol/barn.md)); \* Up to 1/2 of the remaining amount to Pod holders (see \[Field\](/developers/protocol/field.md)); and \* The rest to Stalkholders in the Silo (see \[Silo\](/developers/protocol/silo.md)). \`sunrise\` does the following steps: 1. Increments the Season number; 2. Calls \`Oracle\` to get \`deltaB\`; 3. Calls \`Weather\` to adjust the Max Temperature and checks for Rain and Season of Plenty; 4. Calls \`Sun\` to set the Soil and mint Beans if \`deltaB > 0\`; and 5. Pays \`msg.sender\` Beans for paying the transaction fee associated with calling the function. {% hint style="warning" %} In the Beanstalk ecosystem, \* \*\*Rain\*\* is referred to as \*\*Oversaturation\*\*; and \* \*\*Season of Plenty\*\* is referred to as \*\*Flood\*\*. See \[Terminology Discrepancies\](/developers/misc/terminology-discrepancies.md). {% endhint %} --- # Ownership Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/diamond/ownership-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Ownership Facet handles the ownership of Beanstalk. [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#call-functions) Call Functions ---------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#transfer-ownership) [Transfer Ownership](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/OwnershipFacet.sol#L15) Copy function transferOwnership(address _newOwner) external; Transfers ownership of Beanstalk to a new address. Can only be called by the owner of Beanstalk. Parameter Type Description `_newOwner` `address` The address to transfer ownership to. ### [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#claim-ownership) [Claim Ownership](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/OwnershipFacet.sol#L20) Copy function claimOwnership() external; Callable by candidate for ownership after a successful `transferOwnership` function call. [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#view-functions) View Functions ---------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#owner) [Owner](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/OwnershipFacet.sol#L26) Copy function owner() external view returns (address owner_); Returns the address of the owner of Beanstalk. Return Value Type Description `owner_` `address` The address of the owner of Beanstalk. ### [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#owner-candidate) [Owner Candidate](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/OwnershipFacet.sol#L30) Returns the owner candidate of Beanstalk. Return Value Type Description `ownerCandidate_` `address` The owner candidate of Beanstalk. [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#events) Events ------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/diamond/ownership-facet#event-ownership-transferred) [Ownership Transferred](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/OwnershipFacet.sol#L13) Emitted when ownership of Beanstalk is transferred. Parameter Type Description `previousOwner` `address` The previous owner of Beanstalk. `newOwner` `address` The new owner of Beanstalk. [PreviousDiamond Loupe Facet](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet) [NextPause Facet](https://docs.bean.money/developers/protocol/diamond/pause-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/diamond/ownership-facet#call-functions) * [Transfer Ownership](https://docs.bean.money/developers/protocol/diamond/ownership-facet#transfer-ownership) * [Claim Ownership](https://docs.bean.money/developers/protocol/diamond/ownership-facet#claim-ownership) * [View Functions](https://docs.bean.money/developers/protocol/diamond/ownership-facet#view-functions) * [Owner](https://docs.bean.money/developers/protocol/diamond/ownership-facet#owner) * [Owner Candidate](https://docs.bean.money/developers/protocol/diamond/ownership-facet#owner-candidate) * [Events](https://docs.bean.money/developers/protocol/diamond/ownership-facet#events) * [Ownership Transferred](https://docs.bean.money/developers/protocol/diamond/ownership-facet#event-ownership-transferred) Copy function ownerCandidate() external view returns (address ownerCandidate_); Copy event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); --- # Field | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/field.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Field is Beanstalk's credit facility. Beanstalk relies on a decentralized set of creditors to maintain Bean price stability. Anytime Beanstalk is willing to issue debt, there is Soil in the Field. Soil represents the number of Beans that Beanstalk is currently willing to borrow. Anytime there is Soil in the Field, Farmers can Sow Beans in exchange for Pods. Pods are stored in Plots and placed at the end of the Pod Line. Pods become Harvestable on a First In, First Out (FIFO) basis when `deltaB > 0` over the course of a Season. Assuming there are Unharvestable Pods and Unfertilized Beans, 1/3 of Bean mints turn Pods into Harvestable Pods, which can be Harvested (redeemed) for Beans via the `harvest()` function. When a Plot is Harvested, it is deleted from storage. Pods are implemented using 3 indices: * `podIndex` -> The total number of Pods ever created. * `harvestableIndex` -> The total number of Pods that ever became Harvestable. * `harvestedIndex` -> The total number of Pods ever Harvested. When Beans are Sown, a Plot is created at the current `podIndex` with `beans * (1 + weather)`. Pods and `podIndex` are incremented by the number of Pods. When Pods become Harvestable, `harvestableIndex` is incremented by the number of newly Harvestable Pods. Plots are Harvestable if the index of a Plot is less than `harvestableIndex`. Plots can be partially Harvested, in which case Beanstalk deletes the first part of the Plot and creates a new Plot at the `harvestableIndex`. When a Plot is Harvested, the `harvestedIndex` increases by the number of Harvested Pods. ![](https://docs.bean.money/developers/~gitbook/image?url=https%3A%2F%2F1489145838-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FlndPiqG60XIdTDQRAzIy%252Fuploads%252FqUiQAsE2k1Oq4R0dAwUs%252Fpod-line.png%3Falt%3Dmedia%26token%3Deb35603d-4039-4711-be1e-6aa5ca1e10f0&width=768&dpr=3&quality=100&sign=3b8c8978&sv=2) [](https://docs.bean.money/developers/protocol/field#fundraiser) Fundraiser -------------------------------------------------------------------------------- Fundraisers allow Beanstalk to raise non-Bean stablecoins to pay for services on behalf of the protocol, such as audits. Fundraisers can be created through the `createFundraiser()` function by Beanstalk or the owner of the contract. Each Fundraiser requires: 1. The token address of the non-Bean token being raised; 2. The amount of tokens being raised; and 3. The address to send the tokens to upon completion of the Fundraiser. Farmers `fund()` Fundraisers by transferring the non-Bean stablecoin to Beanstalk and in exchange receive Pods at the current Weather at the end of the Pod Line. Funding is akin to Sowing, but instead of burning Beans, Beanstalk is raising a non-Bean stable coin. Once all of the Funds have been raised, the tokens are transferred to the payee address stored in the Fundraiser. You can find links to past BIPs that created Fundraisers [here](https://docs.bean.money/almanac/protocol/fundraiser) . [PreviousLegacy Claim Withdrawal Facet](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet) [NextField Facet](https://docs.bean.money/developers/protocol/field/field-facet) Last updated 1 year ago --- # Diamond Loupe Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Diamond Loupe Facet allows anyone to see the available functions within Beanstalk. [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#call-functions) Call Functions -------------------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#view-functions) View Functions -------------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facets) [Facets](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/DiamondLoupeFacet.sol#L28) Copy function facets() external view override returns (Facet[] memory facets_); Returns facet info for all facets of Beanstalk Return Value Type Description `facets_` `Facet[]` Array of facet info. ### [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facet-function-selectors) [Facet Function Selectors](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/DiamondLoupeFacet.sol#L42) Copy function facetFunctionSelectors(address _facet) external view override returns (bytes4[] memory facetFunctionSelectors_); Returns all the function selectors provided by a facet. Parameter Type Description `_facet` `address` Facet to get selectors for. Return Value Type Description `facetFunctionSelectors_` `bytes4[]` Selectors on `_facet`. ### [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facet-addresses) [Facet Addresses](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/DiamondLoupeFacet.sol#L54) Get all the facet addresses used by the Beanstalk Diamond. Return Value Type Description `facetAddresses_` `address[]` All facet addresses used by Beanstalk. ### [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facet-address) [Facet Address](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/DiamondLoupeFacet.sol#L63) Gets the facet that supports the given selector. Parameter Type Description `_functionSelector` `bytes4` Selector to get the corresponding facet for. Return Value Type Description `facetAddress_` `address` Facet that has `_functionSelector`. ### [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#supports-interface) [Supports Interface](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/DiamondLoupeFacet.sol#L74) Returns if a contract implements an interface. Implements [ERC-165](https://eips.ethereum.org/EIPS/eip-165) . Parameter Type Description `_interfaceId` `bytes4` The interface ID, as specified in ERC-165. Return Type Description `bool` True if the contract implements `_interfaceId`, false otherwise. [](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#events) Events ---------------------------------------------------------------------------------------------- None. [PreviousDiamond Cut Facet](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet) [NextOwnership Facet](https://docs.bean.money/developers/protocol/diamond/ownership-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#call-functions) * [View Functions](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#view-functions) * [Facets](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facets) * [Facet Function Selectors](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facet-function-selectors) * [Facet Addresses](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facet-addresses) * [Facet Address](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#facet-address) * [Supports Interface](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#supports-interface) * [Events](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet#events) Copy function facetAddresses() external view override returns (address[] memory facetAddresses_); Copy function facetAddress(bytes4 _functionSelector) external view override returns (address facetAddress_); Copy function supportsInterface(bytes4 _interfaceId) external view override returns (bool); --- # BDV Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/bdv-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The BDV Facet holds functions to get the BDV for each whitelisted Silo asset. [](https://docs.bean.money/developers/protocol/silo/bdv-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/silo/bdv-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/bdv-facet#curve-to-bdv) [Curve to BDV](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/BDVFacet.sol#L24) Copy function curveToBDV(uint256 amount) public view returns (uint256); Returns the BDV of a number of BEAN:3CRV LP tokens. Parameter Type Description `amount` `uint256` Number of tokens to get the BDV for. Return Value Description `uint256` The total BDV of `amount` number of BEAN:3CRV LP tokens. ### [](https://docs.bean.money/developers/protocol/silo/bdv-facet#bean-to-bdv) [Bean to BDV](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/BDVFacet.sol#L31) Copy function beanToBDV(uint256 amount) public pure returns (uint256); Returns the BDV of a number of Beans (1 Bean = 1 BDV). Parameter Type Description `amount` `uint256` Number of tokens to get the BDV for. Return Value Description `uint256` The total BDV of `amount` number of Beans. ### [](https://docs.bean.money/developers/protocol/silo/bdv-facet#unripe-lp-to-bdv) [Unripe LP to BDV](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/BDVFacet.sol#L38) Returns the total BDV of a number of Unripe BEAN:3CRV LP tokens. Parameter Type Description `amount` `uint256` Number of tokens to get the BDV for. Return Value Description `uint256` The total BDV of `amount` number of Unripe BEAN:3CRV LP tokens. ### [](https://docs.bean.money/developers/protocol/silo/bdv-facet#unripe-bean-to-bdv) [Unripe Bean to BDV](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/BDVFacet.sol#L47) Returns the total BDV of a number of Unripe Beans. Parameter Type Description `amount` `uint256` Number of tokens to get the BDV for. Return Value Description `uint256` The total BDV of `amount` number of Unripe Beans. ### [](https://docs.bean.money/developers/protocol/silo/bdv-facet#well-bdv) [Well BDV](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/BDVFacet.sol#L57) Returns the total BDV of a number of Well LP tokens given a Well LP token. Parameter Type Description `token` `address` The whitelisted token address. `amount` `uint256` The number of tokens. Return Value Description `uint256` The total BDV of `amount` number of `token`. [](https://docs.bean.money/developers/protocol/silo/bdv-facet#events) Events --------------------------------------------------------------------------------- None. [PreviousSilo Facet](https://docs.bean.money/developers/protocol/silo/silo-facet) [NextWhitelist Facet](https://docs.bean.money/developers/protocol/silo/whitelist-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/bdv-facet#call-functions) * [View Functions](https://docs.bean.money/developers/protocol/silo/bdv-facet#view-functions) * [Curve to BDV](https://docs.bean.money/developers/protocol/silo/bdv-facet#curve-to-bdv) * [Bean to BDV](https://docs.bean.money/developers/protocol/silo/bdv-facet#bean-to-bdv) * [Unripe LP to BDV](https://docs.bean.money/developers/protocol/silo/bdv-facet#unripe-lp-to-bdv) * [Unripe Bean to BDV](https://docs.bean.money/developers/protocol/silo/bdv-facet#unripe-bean-to-bdv) * [Well BDV](https://docs.bean.money/developers/protocol/silo/bdv-facet#well-bdv) * [Events](https://docs.bean.money/developers/protocol/silo/bdv-facet#events) Copy function unripeLPToBDV(uint256 amount) public view returns (uint256); Copy function unripeBeanToBDV(uint256 amount) public view returns (uint256); Copy function wellBdv(address token, uint256 amount) external view returns (uint256); --- # Fundraiser Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/field/fundraiser-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Fundraiser Facet dandles the creation, funding, and completion of [Fundraisers](https://docs.bean.money/almanac/protocol/fundraiser) . [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#call-functions) Call Functions --------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#fund) [Fund](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L105) Copy function fund( uint32 id, uint256 amount, LibTransfer.From mode ) external payable nonReentrant returns (uint256); Fund a Fundraiser in exchange for Pods. Parameter Type Description `id` `uint32` The Fundraiser ID. `amount` `uint256` Amount of `fundraisers[id].token` to provide. `mode` `From` Balance to spend tokens from; see [`LibTransfer.From`](https://docs.bean.money/developers/overview/internal-balances) . Return Type Description `uint256` The number of Pods received. ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#create-fundraiser) [Create Fundraiser](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L66) Copy function createFundraiser( address payee, address token, uint256 amount ) external payable; Creates a Fundraiser. Can only be called by the owner of Beanstalk. Parameter Type Description `payee` `address` The address to which funds are delivered at the end of the Fundraiser. `token` `address` The address of the token that can be sent to the Fundraiser in exchange for Pods. `amount` `uint256` The amount of `token` that is being raised. [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#view-functions) View Functions --------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#remaining-funding) [Remaining Funding](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L169) Returns the remaining number of tokens to raise. Parameter Type Description `id` `uint32` The Fundraiser ID. Return Type Description `uint256` The remaining number of tokens to raise. ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#total-funding) [Total Funding](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L173) Returns the total amount of tokens raised so far. Parameter Type Description `id` `uint32` The Fundraiser ID. Return Type Description `uint256` The total amount of tokens raised so far. ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#funding-token) [Funding Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L177) Returns the address of the token that can be sent to the Fundraiser. Parameter Type Description `id` `uint32` The Fundraiser ID. Return Type Description `address` The address of the token that can be sent to the Fundraiser. ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#fundraiser) [Fundraiser](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L181) Returns the Fundraiser struct. Parameter Type Description `id` `uint32` The Fundraiser ID. Return Type Description `Fundraiser` Returns the Fundraiser struct in [App Storage](https://docs.bean.money/developers/overview/app-storage) . ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#number-of-fundraisers) [Number Of Fundraisers](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L189) Returns the number of Fundraisers. Return Type Description `uint32` The number of Fundraisers. [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#events) Events ----------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#event-create-fundraiser) [Create Fundraiser](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L33) Emitted when a Fundraiser is created. Parameter Type Description `id` `uint32` The Fundraiser ID. `fundraiser` `address` The address to which funds are delivered. `token` `address` The address of the token that can be sent to the Fundraiser in exchange for Pods. `amount` `uint256` The amount of `token` that is being raised. ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#event-fund-fundraiser) [Fund Fundraiser](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L46) Emitted when a Farmer calls `fund`. Parameter Type Description `account` `address` The address of the Farmer. `id` `uint32` The Fundraiser ID. `amount` `uint256` The amount of `token` that `account` provided. ### [](https://docs.bean.money/developers/protocol/field/fundraiser-facet#event-complete-fundraiser) [Complete Fundraiser](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FundraiserFacet.sol#L56) Emitted when a Fundraiser is fully funded. Parameter Type Description `id` `uint32` The Fundraiser ID. [PreviousField Facet](https://docs.bean.money/developers/protocol/field/field-facet) [NextBarn](https://docs.bean.money/developers/protocol/barn) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/field/fundraiser-facet#call-functions) * [Fund](https://docs.bean.money/developers/protocol/field/fundraiser-facet#fund) * [Create Fundraiser](https://docs.bean.money/developers/protocol/field/fundraiser-facet#create-fundraiser) * [View Functions](https://docs.bean.money/developers/protocol/field/fundraiser-facet#view-functions) * [Remaining Funding](https://docs.bean.money/developers/protocol/field/fundraiser-facet#remaining-funding) * [Total Funding](https://docs.bean.money/developers/protocol/field/fundraiser-facet#total-funding) * [Funding Token](https://docs.bean.money/developers/protocol/field/fundraiser-facet#funding-token) * [Fundraiser](https://docs.bean.money/developers/protocol/field/fundraiser-facet#fundraiser) * [Number Of Fundraisers](https://docs.bean.money/developers/protocol/field/fundraiser-facet#number-of-fundraisers) * [Events](https://docs.bean.money/developers/protocol/field/fundraiser-facet#events) * [Create Fundraiser](https://docs.bean.money/developers/protocol/field/fundraiser-facet#event-create-fundraiser) * [Fund Fundraiser](https://docs.bean.money/developers/protocol/field/fundraiser-facet#event-fund-fundraiser) * [Complete Fundraiser](https://docs.bean.money/developers/protocol/field/fundraiser-facet#event-complete-fundraiser) Copy function remainingFunding(uint32 id) public view returns (uint256); Copy function totalFunding(uint32 id) public view returns (uint256); Copy function fundingToken(uint32 id) public view returns (address); Copy function fundraiser(uint32 id) public view returns (Storage.Fundraiser memory); Copy function numberOfFundraisers() public view returns (uint32); Copy event CreateFundraiser( uint32 indexed id, address fundraiser, address token, uint256 amount ); Copy event FundFundraiser( address indexed account, uint32 indexed id, uint256 amount ); Copy event CompleteFundraiser(uint32 indexed id); --- # Convert Getters Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/convert-facet-1.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Convert Getters Facet contains view functions for Convert data. [](https://docs.bean.money/developers/protocol/silo/convert-facet-1#call-functions) Call Functions ------------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/silo/convert-facet-1#view-functions) View Functions ------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/convert-facet-1#get-max-amount-in) [Get Max Amount In](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ConvertGettersFacet.sol#L19) Copy function getMaxAmountIn(address tokenIn, address tokenOut) external view returns (uint256 amountIn); Estimate the maximum number of tokens that can currently be Converted from `tokenIn` to `tokenOut`. Parameter Type Description `tokenIn` `address` The whitelisted token to estimate Converting from. `tokenOut` `address` The whitelisted token to estimate Converting to. Return Value Type Description `amountIn` `uint256` The maximum number of tokens that can currently be Converted from `tokenIn` to `tokenOut`. ### [](https://docs.bean.money/developers/protocol/silo/convert-facet-1#get-amount-out) [Get Amount Out](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ConvertGettersFacet.sol#L30) Estimate the amount of tokens received from Converting `tokenIn` to `tokenOut` given an amount of `tokenIn`. Parameter Type Description `tokenIn` `address` The whitelisted token to estimate Converting from. `tokenOut` `address` The whitelisted token to estimate Converting to. Return Value Type Description `amountOut` `uint256` The amount of `tokenOut` received from a Conversion from `tokenIn` to `tokenOut`. [](https://docs.bean.money/developers/protocol/silo/convert-facet-1#events) Events --------------------------------------------------------------------------------------- None. [PreviousConvert Facet](https://docs.bean.money/developers/protocol/silo/convert-facet) [NextEnroot Facet](https://docs.bean.money/developers/protocol/silo/convert-facet-2) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/convert-facet-1#call-functions) * [View Functions](https://docs.bean.money/developers/protocol/silo/convert-facet-1#view-functions) * [Get Max Amount In](https://docs.bean.money/developers/protocol/silo/convert-facet-1#get-max-amount-in) * [Get Amount Out](https://docs.bean.money/developers/protocol/silo/convert-facet-1#get-amount-out) * [Events](https://docs.bean.money/developers/protocol/silo/convert-facet-1#events) Copy function getAmountOut( address tokenIn, address tokenOut, uint256 amountIn ) external view returns (uint256 amountOut); --- # Depot Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/depot/depot-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Depot Facet wraps Pipeline's `pipe` functions to facilitate the loading of non-Ether assets in [Pipeline](https://evmpipeline.org/) . [](https://docs.bean.money/developers/protocol/depot/depot-facet#call-functions) Call Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/depot/depot-facet#pipe) [Pipe](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/DepotFacet.sol#L30) Copy function pipe(PipeCall calldata p) external payable returns (bytes memory result); Pipe a `PipeCall` through Pipeline. Parameter Type Description `p` `PipeCall` `PipeCall` to pipe through Pipeline. Return Value Type Description `result` `bytes` `PipeCall` return value. ### [](https://docs.bean.money/developers/protocol/depot/depot-facet#multi-pipe) [Multi Pipe](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/DepotFacet.sol#L44) Copy function multiPipe(PipeCall[] calldata pipes) external payable returns (bytes[] memory results); Pipe multiple `PipeCalls` through Pipeline. Does not support sending Ether in the call. Parameter Type Description `pipes` `PipeCall[]` List of `PipeCalls` to pipe through Pipeline. Return Value Type Description `results` `bytes[]` List of return values from each `PipeCall`. ### [](https://docs.bean.money/developers/protocol/depot/depot-facet#advanced-pipe) [Advanced Pipe](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/DepotFacet.sol#L57) Pipe multiple `AdvancedPipeCalls` through Pipeline. Parameter Type Description `pipes` `AdvancedPipeCall[]` List of `AdvancedPipeCalls` to pipe through Pipeline. `value` `uint256` Return Value Type Description `results` `bytes[]` List of return values from each `AdvancedPipeCall`. ### [](https://docs.bean.money/developers/protocol/depot/depot-facet#ether-pipe) [Ether Pipe](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/DepotFacet.sol#L72) Pipe a `PipeCall` through Pipeline with an Ether value. Parameter Type Description `p` `PipeCall` `PipeCall` to pipe through Pipeline. `value` `uint256` Ether value to send in `Pipecall`. Return Value Type Description `result` `bytes` `PipeCall` return value. [](https://docs.bean.money/developers/protocol/depot/depot-facet#view-functions) View Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/depot/depot-facet#read-pipe) [Read Pipe](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/DepotFacet.sol#L86) Return the return value of a `PipeCall` without executing it. Parameter Type Description `p` `PipeCall` `PipeCall` to execute with a staticcall. Return Value Type Description `result` `bytes` `PipeCall` return value. [](https://docs.bean.money/developers/protocol/depot/depot-facet#events) Events ------------------------------------------------------------------------------------ None. [PreviousFarm Facet](https://docs.bean.money/developers/protocol/depot/farm-facet) [NextToken Facet](https://docs.bean.money/developers/protocol/depot/token-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/depot/depot-facet#call-functions) * [Pipe](https://docs.bean.money/developers/protocol/depot/depot-facet#pipe) * [Multi Pipe](https://docs.bean.money/developers/protocol/depot/depot-facet#multi-pipe) * [Advanced Pipe](https://docs.bean.money/developers/protocol/depot/depot-facet#advanced-pipe) * [Ether Pipe](https://docs.bean.money/developers/protocol/depot/depot-facet#ether-pipe) * [View Functions](https://docs.bean.money/developers/protocol/depot/depot-facet#view-functions) * [Read Pipe](https://docs.bean.money/developers/protocol/depot/depot-facet#read-pipe) * [Events](https://docs.bean.money/developers/protocol/depot/depot-facet#events) Copy function advancedPipe(AdvancedPipeCall[] calldata pipes, uint256 value) external payable returns (bytes[] memory results); Copy function etherPipe(PipeCall calldata p, uint256 value) external payable returns (bytes memory result); Copy function readPipe(PipeCall calldata p) external view returns (bytes memory result); --- # Season Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/sun/season-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Season Facet contains the `gm` function and handles all logic for Season changes. [](https://docs.bean.money/developers/protocol/sun/season-facet#call-functions) Call Functions --------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/sun/season-facet#sunrise) [Sunrise](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L37) Copy function sunrise() external payable returns (uint256); Advances Beanstalk to the next Season, sending reward Beans to the caller's Circulating balance. Return Type Description `uint256` The number of Beans minted to the caller. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#gm) [GM](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L47) Copy function gm( address account, LibTransfer.To mode ) public payable returns (uint256); Advances Beanstalk to the next Season, sending reward Beans to a specified address and balance. Parameter Type Description `account` `address` Indicates to which address reward Beans should be sent. `mode` `To` The balance to transfer Beans to; see [`LibTransfer.To`](https://docs.bean.money/developers/overview/internal-balances) . Return Type Description `uint256` The number of Beans minted to the caller. [](https://docs.bean.money/developers/protocol/sun/season-facet#view-functions) View Functions --------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/sun/season-facet#season) [Season](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L69) Returns the current Season number. Return Type Description `uint32` The current Season number. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#paused) [Paused](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L76) Returns whether Beanstalk is Paused. When Paused, `sunrise` cannot be called. Return Type Description `bool` Whether Beanstalk is Paused. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#time) [Time](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L83) Returns the Season struct. Return Type Description `Season` The Season struct in [App Storage](https://docs.bean.money/developers/overview/app-storage) . ### [](https://docs.bean.money/developers/protocol/sun/season-facet#above-peg) [Above Peg](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L90) Returns whether Beanstalk started this Season above or below peg. Return Type Description `bool` Whether Beanstalk started this Season above or below peg. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#sunrise-block) [Sunrise Block](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L97) Returns the block during which the current Season started. Return Type Description `uint32` The block during which the current Season started. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#season-time) [Season Time](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L105) Returns the expected Season number given the current block timestamp. The `sunrise` function can be called when `seasonTime() > season()`. Return Type Description `uint32` The expected Season number given the current block timestamp. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#weather) [Weather](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Weather.sol#L75) Returns the Weather struct. Return Type Description `Weather` Returns the Weather struct in [App Storage](https://docs.bean.money/developers/overview/app-storage) . ### [](https://docs.bean.money/developers/protocol/sun/season-facet#rain) [Rain](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Weather.sol#L82) Returns the Rain struct. Return Type Description `Rain` Returns the Rain struct in [App Storage](https://docs.bean.money/developers/overview/app-storage) . ### [](https://docs.bean.money/developers/protocol/sun/season-facet#plenty-per-root) [Plenty Per Root](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Weather.sol#L89) Returns the Season of Plenty (SOP) rewards per Root for the given Season. Parameter Type Description `season` `uint32` The Season to fetch SOP rewards per Root for. Return Type Description `uint256` The SOP rewards for the given Season. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#total-deltab) [Total deltaB](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Oracle.sol#L28) Returns the cumulative deltaB across all pools on the Oracle Whitelist. Return Value Type Description `deltaB` `int256` The cumulative deltaB. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#pool-deltab) [Pool deltaB](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Oracle.sol#L35) Returns the deltaB for a given pool. Parameter Type Description `pool` `address` The address of the pool . Return Value Description `int256` The deltaB for the given pool. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#well-oracle-snapshot) [Well Oracle Snapshot](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Oracle.sol#L55) Returns the last Well oracle snapshot for a given Well. Parameter Type Description `well` `address` The address of the pool to get the snapshot for. Type `int256` ### [](https://docs.bean.money/developers/protocol/sun/season-facet#curve-oracle) [Curve Oracle](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Oracle.sol#L63) Returns the last Curve oracle data snapshot for the BEAN:3CRV pool. Return Value Type Description `co` `Storage.CurveMetapoolOracle` Last Curve oracle data snapshot. [](https://docs.bean.money/developers/protocol/sun/season-facet#events) Events ----------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/sun/season-facet#event-sunrise) [Sunrise](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L22) Emitted when the Season changes. Parameter Type Description `season` `uint256` The new Season number. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#event-incentivization) [Incentivization](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/SeasonFacet.sol#L29) Emitted when Beanstalk pays Beans to the `sunrise` caller. Parameter Type Description `account` `address` The address to which the reward Beans were sent. `beans` `uint256` The amount of Beans paid as a reward. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#event-reward) [Reward](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Sun.sol#L43) Emitted during Sunrise when Beans are distributed to the Field, the Silo, and Fertilizer. Parameter Type Description `season` `uint32` The Season in which Beans were distributed. `toField` `uint256` The number of Beans distributed to the Field. `toSilo` `uint256` The number of Beans distributed to the Silo. `toFertilizer` `uint256` The number of Beans distributed to Fertilizer holders. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#event-soil) [Soil](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Sun.sol#L55) Emitted during Sunrise when Beanstalk adjusts the amount of available Soil. Parameter Type Description `season` `uint32` The Season in which Soil was adjusted. `soil` `uint256` The new amount of Soil available. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#event-weather-change) [Weather Change](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Weather.sol#L51) Emitted when the Weather (now [Temperature](https://docs.bean.money/developers/misc/terminology-discrepancies) ) changes. Parameter Type Description `season` `uint256` The current Season. `caseId` `uint256` The "[Weather Case](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/farm/init/InitDiamond.sol#L41) ". `change` `int8` The change in Temperature from the previous value. ### [](https://docs.bean.money/developers/protocol/sun/season-facet#event-season-of-plenty) [Season of Plenty](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/sun/SeasonFacet/Weather.sol#L63) Emitted when Beans are minted during the Season of Plenty. Parameter Type Description `season` `uint256` The Season in which Beans were minted for distribution. `amount` `uint256` The amount of 3CRV which was received for swapping Beans. `toField` `uint256` The amount of Beans which were distributed to remaining Pods in the Field. [PreviousSun](https://docs.bean.money/developers/protocol/sun) [NextSilo](https://docs.bean.money/developers/protocol/silo) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/sun/season-facet#call-functions) * [Sunrise](https://docs.bean.money/developers/protocol/sun/season-facet#sunrise) * [GM](https://docs.bean.money/developers/protocol/sun/season-facet#gm) * [View Functions](https://docs.bean.money/developers/protocol/sun/season-facet#view-functions) * [Season](https://docs.bean.money/developers/protocol/sun/season-facet#season) * [Paused](https://docs.bean.money/developers/protocol/sun/season-facet#paused) * [Time](https://docs.bean.money/developers/protocol/sun/season-facet#time) * [Above Peg](https://docs.bean.money/developers/protocol/sun/season-facet#above-peg) * [Sunrise Block](https://docs.bean.money/developers/protocol/sun/season-facet#sunrise-block) * [Season Time](https://docs.bean.money/developers/protocol/sun/season-facet#season-time) * [Weather](https://docs.bean.money/developers/protocol/sun/season-facet#weather) * [Rain](https://docs.bean.money/developers/protocol/sun/season-facet#rain) * [Plenty Per Root](https://docs.bean.money/developers/protocol/sun/season-facet#plenty-per-root) * [Total deltaB](https://docs.bean.money/developers/protocol/sun/season-facet#total-deltab) * [Pool deltaB](https://docs.bean.money/developers/protocol/sun/season-facet#pool-deltab) * [Well Oracle Snapshot](https://docs.bean.money/developers/protocol/sun/season-facet#well-oracle-snapshot) * [Curve Oracle](https://docs.bean.money/developers/protocol/sun/season-facet#curve-oracle) * [Events](https://docs.bean.money/developers/protocol/sun/season-facet#events) * [Sunrise](https://docs.bean.money/developers/protocol/sun/season-facet#event-sunrise) * [Incentivization](https://docs.bean.money/developers/protocol/sun/season-facet#event-incentivization) * [Reward](https://docs.bean.money/developers/protocol/sun/season-facet#event-reward) * [Soil](https://docs.bean.money/developers/protocol/sun/season-facet#event-soil) * [Weather Change](https://docs.bean.money/developers/protocol/sun/season-facet#event-weather-change) * [Season of Plenty](https://docs.bean.money/developers/protocol/sun/season-facet#event-season-of-plenty) Copy function season() public view returns (uint32); Copy function paused() public view returns (bool); Copy function time() external view returns (Storage.Season memory); Copy function abovePeg() external view returns (bool); Copy function sunriseBlock() external view returns (uint32); Copy function seasonTime() public view virtual returns (uint32); Copy function weather() public view returns (Storage.Weather memory); Copy function rain() public view returns (Storage.Rain memory); Copy function plentyPerRoot(uint32 season) external view returns (uint256); Copy function totalDeltaB() external view returns (int256 deltaB); Copy function poolDeltaB(address pool) external view returns (int256); Copy function wellOracleSnapshot(address well) external view returns (bytes memory snapshot); Copy function curveOracle() external view returns (Storage.CurveMetapoolOracle memory co); Copy event Sunrise(uint256 indexed season); Copy event Incentivization(address indexed account, uint256 beans); Copy event Reward(uint32 indexed season, uint256 toField, uint256 toSilo, uint256 toFertilizer); Copy event Soil(uint32 indexed season, uint256 soil); Copy event WeatherChange(uint256 indexed season, uint256 caseId, int8 change); Copy event SeasonOfPlenty( uint256 indexed season, uint256 amount, uint256 toField ); --- # Metadata Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/metadata-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Metadata Facet provides metadata for the ERC-1155 Silo Deposits. Deposit IDs are a `uint256` that is the concatenation of the token address and the Stem. [](https://docs.bean.money/developers/protocol/silo/metadata-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------ None. [](https://docs.bean.money/developers/protocol/silo/metadata-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/silo/metadata-facet#uri) [URI](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/metadata/MetadataFacet.sol#L34) Copy function uri(uint256 depositId) external view returns (string memory); Returns the URI for a given Deposit ID. Parameter Type Description `depositId` `uint256` Deposit ID to get the URI for. Return Type Description `string` URI of Deposit with `depositId`. ### [](https://docs.bean.money/developers/protocol/silo/metadata-facet#name) [Name](https://github.com/BeanstalkFarms/Beanstalk/blob/893c99d21a2d87c96280f66601a6db8900e5b7d1/protocol/contracts/beanstalk/metadata/MetadataFacet.sol#L58) Copy function name() external pure returns (string memory); Returns the name of the collection for OpenSea compatibility. Return Type Description `string` Name of the OpenSea collection. ### [](https://docs.bean.money/developers/protocol/silo/metadata-facet#symbol) [Symbol](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/metadata/MetadataFacet.sol#L62) Returns the ticker of the collection for OpenSea compatibility. Return Type Description `string` Ticker of the OpenSea collection. ### [](https://docs.bean.money/developers/protocol/silo/metadata-facet#image-uri) [Image URI](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/metadata/MetadataImage.sol#L30) Returns the image URI for a given Deposit ID. Parameter Type Description `depositId` `uint256` Deposit ID to get the image URI for. Return Type Description `string` Image URI of Deposit with `depositId`. [](https://docs.bean.money/developers/protocol/silo/metadata-facet#events) Events -------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/metadata-facet#uri-1) [URI](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/metadata/MetadataFacet.sol#L25C5-L25C49) Not currently emitted. Parameter Type Description `_uri` `string` URI. `_id` `uint256` Deposit ID. [PreviousApproval Facet](https://docs.bean.money/developers/protocol/silo/approval-facet) [NextMigration Facet](https://docs.bean.money/developers/protocol/silo/migration-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/metadata-facet#call-functions) * [View Functions](https://docs.bean.money/developers/protocol/silo/metadata-facet#view-functions) * [URI](https://docs.bean.money/developers/protocol/silo/metadata-facet#uri) * [Name](https://docs.bean.money/developers/protocol/silo/metadata-facet#name) * [Symbol](https://docs.bean.money/developers/protocol/silo/metadata-facet#symbol) * [Image URI](https://docs.bean.money/developers/protocol/silo/metadata-facet#image-uri) * [Events](https://docs.bean.money/developers/protocol/silo/metadata-facet#events) * [URI](https://docs.bean.money/developers/protocol/silo/metadata-facet#uri-1) Copy function symbol() external pure returns (string memory); Copy function imageURI(uint256 depositId) public view returns (string memory); Copy event URI(string _uri, uint256 indexed _id); --- # Silo | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. Farmers can Deposit assets on the [Deposit Whitelist](https://docs.bean.money/farm/silo#deposit-whitelist) into the Silo in exchange for Stalk and Seeds. The number of Stalk and Seeds received is dependent on the BDV at the time of Deposit, the Stalk per BDV and the Seeds per BDV. Stalk entitles Farmers to a pro-rata portion of Bean seignorage distributed to the Silo and Seeds grown into 0.0001 Stalk each Season. A Farmer can Withdraw at any time, but must forfeit all Stalk and Seeds associated with the Deposit. All Withdrawals are subject to an unlock period (currently set to the remainder of the current Season). Once a Withdraw is complete, it can be Claimed at any time. Farmers can also convert a Deposited asset into a different one via the Convert function if the ability to convert between those two assets is on the [Convert Whitelist](https://docs.bean.money/peg-maintenance/convert#convert-whitelist) . Each Convert type must be approved via governance and the Convert functionality must be added to `LibConvert`. #### [](https://docs.bean.money/developers/protocol/silo#adding-and-removing-assets-on-the-deposit-whitelist) Adding and Removing Assets on the Deposit Whitelist Assets can only be Deposited into the Silo if the assets are on the Deposit Whitelist. A token is considered on the Deposit Whitelist if it has a non-zero Silo Settings in Beanstalk’s storage. Silo Settings for each asset on the Deposit Whitelist are stored in the `s.ss` mapping in [`AppStorage`](https://docs.bean.money/developers/overview/app-storage) defined as: Copy struct SiloSettings { bytes4 selector; uint32 seeds; uint32 stalk; } mapping(address => Storage.SiloSettings) ss; * The key used in the mapping is the ERC-20 token address. * `selector` is a function selector that calculates the BDV of a given `amount` of the token. `selector` should be an encoded `external view` function added to the Beanstalk diamond. BDV is represented with 6 decimal places. * `seeds` is the number of Seeds per BDV that a Farmer receives for Depositing this asset. For example, `seeds` is 2 for Bean and 4 for BEAN:3CRV LP tokens. * `stalk` is the number of Stalk per BDV that a Farmer receives for Depositing this asset. Because Stalk has 10 decimals compared to the 6 that BDV has, 10,000 equals 1. `stalk` is 10,000 for both Bean and BEAN:3CRV LP tokens. Tokens can be added to the Deposit Whitelist via BIP. In order to Whitelist a token, an address, BDV function selector, Stalk per BDV and Seeds per BDV must be included in the proposal. The BDV function selector must either already be added to Beanstalk or be added as a part of the BIP. Similarly, tokens can be Dewhitelisted (removed from the Deposit Whitelist) via BIP. #### [](https://docs.bean.money/developers/protocol/silo#bean-denominated-value) Bean Denominated Value All Deposited assets are valued based on the Bean Denominated Value (BDV) at the time Deposit. Each asset on the Deposit Whitelist has a unique BDV function in the [`BDVFacet`](https://docs.bean.money/developers/protocol/silo/bdv-facet) to calculate the BDV of a given amount of the asset. #### [](https://docs.bean.money/developers/protocol/silo#stalk-and-seeds) Stalk and Seeds Stalk entitles the Farmer to a pro rata portion of at least 1/3 of Bean mints and 1 Stalk is 1 vote in Governance. Beans mints allocated to the Silo are called Earned Beans. Farmers also receive 1 Earned Stalk and 2 Earned Seeds for each Earned Bean. Each Seed grows 0.0001 Stalk every Season. Stalk grown from Seeds is called Grown Stalk. There are 3 types of Stalk: * Stalk -> Stalk stored in a Farmer’s account storage. Stalk is acquired by Depositing, Converting, Updating or Planting. * Earned Stalk -> A Farmer receives 1 Earned Stalk for each Earned Bean. Earned Stalk automatically compounds and receives a portion of Bean mints. Earned Stalk is claimed as part of the `plant` function, which turns it into Stalk. Because it is considered active, Earned Stalk has already been minted and it is included in the `totalStalk` and `balanceOfStalk` counts. To the Farmer, Earned Stalk is no different from Stalk and just serves as an indicator of how much Stalk has been earned through Bean seignorage since the last `plant` call. * Grown Stalk -> 0.0001 Grown Stalk is grown from every Seed each Season. Grown Stalk is **not** considered active and thus does not receive a pro rata portion of Bean mints. It is claimed via the `update` function in Beanstalk, which turns it into Stalk. Because Grown Stalk is not active, Stalk isn’t minted until Grown Stalk is updated and thus Grown Stalk is **not** included in the `totalStalk` and `balanceOfStalk` counts. In the Beanstalk ecosystem, **Update** (i.e., updating Grown Stalk) is referred to as **Mow** (i.e., Mowing Grown Stalk). See [Terminology Discrepancies](https://docs.bean.money/developers/misc/terminology-discrepancies) . There are 2 types of Seeds: * Seeds → Seeds stored in a Farmer’s account storage. Seeds are acquired by Depositing, Planting and in certain cases, Converting. * Earned Seeds → A Farmer receives 2 Earned Seeds for each Earned Bean. Earned Seeds are **not** active. Earned Seeds can be claimed via the `plant` function, which turns them into Seeds. Because Earned Seeds are **not** active, they are not included in the `totalSeeds` or `balanceOfSeeds` function. In the Beanstalk ecosystem, **Earned Seeds** are referred to as **Plantable Seeds**. See [Terminology Discrepancies](https://docs.bean.money/developers/misc/terminology-discrepancies) . #### [](https://docs.bean.money/developers/protocol/silo#deposit) Deposit Farmers can deposit Whitelisted ERC-20 tokens in the Silo in exchange for Stalk and Seeds via the `deposit` function. `deposit` first calls the BDV function selector stored in Storage to calculate the BDV of the Deposit. It then distributes Stalk and Seeds to the Farmer based on the Stalk per BDV and Seeds per BDV. A Deposit is stored in the current Season to record at what Season the Seeds associated with the Deposit started accruing Grown Stalk. The total Seeds and Stalk associated with a Deposit can be calculated as: Deposits are stored in the Account storage as: * The mapping is from token address to Season to Deposit. * `amount` is the amount of tokens in the Deposit. A Farmer can Withdraw up to `amount`. * `bdv` is the BDV of the amount of tokens at the time of Deposit. #### [](https://docs.bean.money/developers/protocol/silo#withdraw) Withdraw Farmers can Withdraw any Deposit via the `withdrawDeposit` or `withdrawDeposits` functions. When a Farmer Withdraws, they specific the token, the Season(s) of the Deposit(s) and the corresponding amount(s) to Withdraw. In order to Withdraw a Deposit, a Farmer must burn all of the Stalk and Seeds associated with the Deposit. A Withdraw is locked for a certain number of Seasons. This number is stored in `s.season.withdrawSeasons`. This number is equal to the # of full Seasons required for Withdraw plus 1. The plus 1 accounts for the partial Season that Farmer Withdraws in. The Season of a Withdrawal is equal to the Season at which the Withdrawal can be Claimed (Not the Season that the Withdrawal is initiated). A Withdraw is in the following mapping: * The mapping is from token address to Season to amount. #### [](https://docs.bean.money/developers/protocol/silo#claim-withdrawal) Claim Withdrawal Farmers can Claim Withdrawals that have been unlocked via the `claimWithdrawal` and `claimWithdrawals` functions. A Withdrawal is Claimable if the current Season is greater than or equal to the Season of the Withdrawal. A Withdrawal is Claimed by specifying the token and Season(s) of the Withdrawals to Claim. When a Withdrawals is Claimed, the Withdrawal is deleted and the Farmer receives the corresponding amount of the underlying token. #### [](https://docs.bean.money/developers/protocol/silo#convert) Convert Farmers can Convert one asset on the Deposit Whitelist (Token A) to another asset on the Deposit Whitelist (Token B) if Converting from Token A to Token B is on the Convert Whitelist. `convert` takes in a `convertData` payload that stores the encoded Convert data payload. Convert data is encoded so that different Convert types can have different parameters as necessary. However, each Convert type must specify at least the Convert type and the amount to Convert. Farmers must also specify the Season(s) of Deposits and corresponding amounts to Convert. Convert does 3 main actions: 1. Converts some amount of Token A to Token B via `LibConvert`; 2. Removes Deposits of Token A equal to the amount of Token A that was Converted; and 3. Adds a Deposit of Token B equal to the amount received in Convert. Convert uses the maximum of the BDV of Token A and Token B so that BDV is never lost. Thus, the Farmer won’t lose any Stalk during Convert, but may still gain Stalk depending the BDV of Token B. Seeds can be gained or lost depending on the Seeds per BDV of Token B versus Token A. Grown Stalk is preserved during Convert and the Season that Converted assets are Deposited into is depending on the number of Grown Stalk: Converts may have a maximize amount that can be converted from Token A to Token B. For instance, Deposited Beans can only be converted into Deposited BEAN:3CRV LP tokens if the price in the BEAN:3CRV pool is greater than $1 after the Convert. This can be retrieved via the `getMaxAmountIn` function. The `getAmountOut` function returns the expected output amount of a given Convert. New Converts can be approved via adding new Convert types to `LibConvertData` and adding the Convert case to `LibConvert`. [PreviousSeason Facet](https://docs.bean.money/developers/protocol/sun/season-facet) [NextSilo Facet](https://docs.bean.money/developers/protocol/silo/silo-facet) Last updated 1 year ago Copy seeds = depositBdv * s.ss[token].seeds; stalk = depositBdv * s.ss[token].stalk + (currentSeason - depositSeason) * seeds Copy mapping(address => mapping(uint32 => Deposit)) deposits; struct Deposit { uint128 amount; uint128 bdv; } Copy mapping(address => mapping(uint32 => uint256)) withdrawals; Copy depositSeason = currentSeason - (grownStalk / depositSeeds) --- # Whitelist Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/whitelist-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. Whitelist Facet handles the whitelisting/dewhitelisting of assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#dewhitelist-token) [Dewhitelist Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L56) Copy function dewhitelistToken(address token) external payable; Dewhitelists tokens on the Deposit Whitelist. A token can no longer be Deposited in the Silo after dewhitelisting. Can only be called by the owner of Beanstalk. Parameter Type Description `token` `address` The token address to dewhitelist. ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#whitelist-token) [Whitelist Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L71) Copy function whitelistToken( address token, bytes4 selector, uint32 stalkIssuedPerBdv, uint32 stalkEarnedPerSeason ) external payable; Adds a token to the Deposit Whitelist. Can only be called by the owner of Beanstalk. Parameter Type Description `token` `address` The token address to whitelist. `selector` `bytes4` The selector for the BDV function of `token`. `stalkIssuedPerBdv` `uint32` Stalk per BDV for `token` issued upon Deposit. `stalkEarnedPerSeason` `uint32` Grown Stalk per BDV per Season for `token`. ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#whitelist-token-with-encode-type) [Whitelist Token with Encode Type](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L96) Adds a token to the Deposit Whitelist with an `encodeType`. Can only be called by the owner of Beanstalk. Parameter Type Description `token` `address` The token address to whitelist. `selector` `bytes4` The selector for the BDV function of `token`. `stalkIssuedPerBdv` `uint32` Stalk per BDV for `token` issued upon Deposit. `stalkEarnedPerSeason` `uint32` Grown Stalk per BDV per Season for `token`. `encodeType` `bytes1` The encode type that should be used to encode the BDV function call. ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#update-stalk-per-bdv-per-season-for-token) [Update Stalk per BDV per Season for Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L119C8-L119C8) Changes the Grown Stalk per BDV per Season for a token on the Deposit Whitelist. Can only be called by the owner of Beanstalk. Parameter Type Description `token` `address` The token address on the Deposit Whitelist. `stalkEarnedPerSeason` `uint32` The new Grown Stalk per BDV per Season. [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#events) Events --------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#event-whitelist-token) [Whitelist Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L27) Emitted when a token is added to the Deposit Whitelist. Parameter Type Description `token` `address` The whitelisted token address. `selector` `bytes4` The selector for the BDV function of `token`. `stalkEarnedPerSeason` `uint32` Grown Stalk per BDV per Season for `token`. `stalkIssuedPerBdv` `uint256` Stalk per BDV for `token` issued upon Deposit. ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#event-dewhitelist-token) [Update Stalk per BDV per Season](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L40) Emitted when the Grown Stalk per BDV per Season for a token on the Deposit Whitelist is changed. Parameter Type Description `token` `address` The token address on the Deposit Whitelist. `stalkEarnedPerSeason` `uint32` The new Grown Stalk per BDV per Season. `season` `uint32` The current Season at the time of the change. ### [](https://docs.bean.money/developers/protocol/silo/whitelist-facet#event-dewhitelist-token-1) [Dewhitelist Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/WhitelistFacet.sol#L50) Emitted when a token is removed from the Deposit Whitelist. Parameter Type Description `token` `address` The dewhitelisted token address. [PreviousBDV Facet](https://docs.bean.money/developers/protocol/silo/bdv-facet) [NextConvert Facet](https://docs.bean.money/developers/protocol/silo/convert-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/whitelist-facet#call-functions) * [Dewhitelist Token](https://docs.bean.money/developers/protocol/silo/whitelist-facet#dewhitelist-token) * [Whitelist Token](https://docs.bean.money/developers/protocol/silo/whitelist-facet#whitelist-token) * [Whitelist Token with Encode Type](https://docs.bean.money/developers/protocol/silo/whitelist-facet#whitelist-token-with-encode-type) * [Update Stalk per BDV per Season for Token](https://docs.bean.money/developers/protocol/silo/whitelist-facet#update-stalk-per-bdv-per-season-for-token) * [View Functions](https://docs.bean.money/developers/protocol/silo/whitelist-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/silo/whitelist-facet#events) * [Whitelist Token](https://docs.bean.money/developers/protocol/silo/whitelist-facet#event-whitelist-token) * [Update Stalk per BDV per Season](https://docs.bean.money/developers/protocol/silo/whitelist-facet#event-dewhitelist-token) * [Dewhitelist Token](https://docs.bean.money/developers/protocol/silo/whitelist-facet#event-dewhitelist-token-1) Copy function whitelistTokenWithEncodeType( address token, bytes4 selector, uint32 stalkIssuedPerBdv, uint32 stalkEarnedPerSeason, bytes1 encodeType ) external payable; Copy function updateStalkPerBdvPerSeasonForToken( address token, uint32 stalkEarnedPerSeason ) external payable; Copy event WhitelistToken( address indexed token, bytes4 selector, uint32 stalkEarnedPerSeason, uint256 stalkIssuedPerBdv ); Copy event UpdatedStalkPerBdvPerSeason( address indexed token, uint32 stalkEarnedPerSeason, uint32 season ); Copy event DewhitelistToken(address indexed token); --- # Overview | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/overview.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. Beanstalk can be broken down into 7 different Modules consisting of 25 Facets: * [Sun](https://docs.bean.money/developers/protocol/sun) (1 Facet) * [Silo](https://docs.bean.money/developers/protocol/silo) (10 Facets) * [Field](https://docs.bean.money/developers/protocol/field) (2 Facets) * [Barn](https://docs.bean.money/developers/protocol/barn) (2 Facets) * [Market](https://docs.bean.money/developers/protocol/market) (1 Facet) * [Farm](https://docs.bean.money/developers/protocol/depot) (5 Facets) * [Diamond](https://docs.bean.money/developers/protocol/diamond) (4 Facets) ### [](https://docs.bean.money/developers/protocol/overview#sun) Sun The Sun handles moving time forward in Beanstalk. It advances Beanstalk to the next Season. The Sun consists of 1 Facet: * [`SeasonFacet`](https://docs.bean.money/developers/protocol/sun/season-facet) -> Contains the `gm` function. ### [](https://docs.bean.money/developers/protocol/overview#silo) Silo The Silo offers a passive yield opportunity in the form of Bean seigniorage to Farmers who Deposit Beans and other whitelisted assets. Upon Deposit in the Silo, Farmers receive Stalk and Seeds based on the Bean Denominated Value (BDV) Deposited and the asset Deposited. The Silo consists of 10 Facets: * [`SiloFacet`](https://docs.bean.money/developers/protocol/silo/silo-facet) -> Where Farmers Deposit, Withdraw, Claim and Transfer assets in/from the Silo. * [`BDVFacet`](https://docs.bean.money/developers/protocol/silo/bdv-facet) -> Handles logic for retrieving the BDV of some amount of a whitelisted asset. * [`WhitelistFacet`](https://docs.bean.money/developers/protocol/silo/whitelist-facet) -> Handles the addition and removal of tokens from the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . * [`ConvertFacet`](https://docs.bean.money/developers/protocol/silo/convert-facet) -> Where Farmers Convert a Deposit of a whitelisted asset to a Deposit of another whitelisted asset. * [`ConvertGettersFacet`](https://docs.bean.money/developers/protocol/silo/convert-facet-1) -> Contains view functions for Convert data. * [`EnrootFacet`](https://docs.bean.money/developers/protocol/silo/convert-facet-2) -> Where Farmers Enroot their Unripe Deposits. * [`ApprovalFacet`](https://docs.bean.money/developers/protocol/silo/approval-facet) -> Contains logic for Deposit approvals and permits. * [`MetadataFacet`](https://docs.bean.money/developers/protocol/silo/metadata-facet) -> Contains on-chain metadata for the Deposit ERC-1155 tokens. * [`MigrationFacet`](https://docs.bean.money/developers/protocol/silo/migration-facet) -> Where Farmers migrate to the latest Silo accounting system. * [`LegacyClaimWithdrawalFacet`](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet) -> Facilitates backwards compatibility for Farmers with unclaimed Withdrawals before the [Silo V3 upgrade](https://bean.money/bip-36) . ### [](https://docs.bean.money/developers/protocol/overview#field) Field The Field is Beanstalk's native credit facility. Anytime Beanstalk is willing to borrow Beans from the market, it issues Soil in the Field. Beans are Sown in exchange for Pods, the Beanstalk-native debt asset. Loans to Beanstalk are issued with a fixed interest rate, known as the Temperature, and an unknown maturity date. Pods become Harvestable Pods that can be Harvested (redeemed) for 1 Bean each on a First In, First Out (FIFO) basis. There is no penalty for waiting to Harvest Pods. The Field consists of 2 Facets: * [`FieldFacet`](https://docs.bean.money/developers/protocol/field/field-facet) -> Where Farmers Sow Beans into Pods and Harvest Pods into Beans. * [`FundraiserFacet`](https://docs.bean.money/developers/protocol/field/fundraiser-facet) -> Where Farmers create and fund Fundraisers through Sowing non-Bean assets into Pods. ### [](https://docs.bean.money/developers/protocol/overview#barn) Barn The Barn was built after Beanstalk was exploited on April 17, 2022. The Barn distributes Bean rewards to those who hold Fertilizer tokens from participation in the Barn Raise. It also handles the Chopping of Unripe Beans and Unripe LP into their underlying assets at a potential penalty. In the Beanstalk ecosystem, * **Unfertilized Beans** are referred to as **Sprouts**; * **Fertilized Beans** are referred to as **Rinsable Sprouts** that can be **Rinsed**; and * **Underlying** assets are referred to as **Ripe** assets. See [Terminology Discrepancies](https://docs.bean.money/developers/misc/terminology-discrepancies) . Unfertilized Beans become Fertilized Beans that can be claimed (redeemed) for 1 Bean each on a pari passu basis. There is no penalty for waiting to claim Fertilized Beans. The Barn consists of 2 Facets: * [`FertilizerFacet`](https://docs.bean.money/developers/protocol/barn/fertilizer-facet) -> Where Farmers buy Fertilizer with USDC and claim Beans earned from Fertilizer. * [`UnripeFacet`](https://docs.bean.money/developers/protocol/barn/unripe-facet) -> Allows Farmers to Chop Unripe assets into their underlying assets at a potential penalty. ### [](https://docs.bean.money/developers/protocol/overview#market) Market The Market houses various DEXs for zero fee trading. Currently only Pods can be traded on the Market. Pods can be bought and sold in a decentralized, trustless fashion on the [Pod Market](https://docs.bean.money/almanac/farm/market#the-pod-market) . The Pod Market creates liquidity for Pods through an on-chain order book. Sellers can List Pods or Fill open Pod Orders placed by buyers. Buyers can Order Pods or Fill open Pod Listings placed by sellers. The Market consists of 1 Facet: * [`MarketplaceFacet`](https://docs.bean.money/developers/protocol/market/marketplace-facet) -> Contains the Pod Market where Farmers create, Fill and Cancel Pod Listings and Orders, as well as transfer Pods. ### [](https://docs.bean.money/developers/protocol/overview#farm) Farm The Farm allows Farmers to call multiple functions in a single transaction and use assets between different function in a composable manner, without those assets every leaving Beanstalk (thanks to [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). The Farm consists of 5 Facets: * [`FarmFacet`](https://docs.bean.money/developers/protocol/depot/farm-facet) -> Contains the `farm` function, which allows Farmers to call a series of functions together within Beanstalk. * [`DepotFacet`](https://docs.bean.money/developers/protocol/depot/depot-facet) -> Wraps the standalone [Pipeline](https://evmpipeline.org/) contract, providing access to Pipeline from Beanstalk through the use of the `farm` function. * [`TokenFacet`](https://docs.bean.money/developers/protocol/depot/token-facet) -> Supports transferring assets between Internal and External Balances and between different accounts. Also supports Wrap/Unwrap logic for ETH. * [`TokenSupportFacet`](https://docs.bean.money/developers/protocol/depot/token-support-facet) -> Handles token permits. * [`CurveFacet`](https://docs.bean.money/developers/protocol/depot/curve-facet) -> Provides an interface to exchange and add/remove liquidity on Curve directly through Beanstalk. ### [](https://docs.bean.money/developers/protocol/overview#diamond) Diamond The Diamond Module controls and manages the Beanstalk contract by providing functionality to upgrade and view supported functions in Beanstalk. It also controls which address owns the Beanstalk contract. The Diamond Module consists of 4 Facets: * [`DiamondCutFacet`](https://docs.bean.money/developers/protocol/diamond/diamond-cut-facet) -> Provides functionality for the owner to add/remove/replace functions within the Beanstalk contract. * [`DiamondLoupeFacet`](https://docs.bean.money/developers/protocol/diamond/diamond-loupe-facet) -> Allows anyone to see the available functions within Beanstalk. * [`OwnershipFacet`](https://docs.bean.money/developers/protocol/diamond/ownership-facet) -> Manages which address owns Beanstalk. * [`PauseFacet`](https://docs.bean.money/developers/protocol/diamond/pause-facet) -> Allows the owner of Beanstalk to Pause/Unpause Beanstalk. [PreviousInternal Balances](https://docs.bean.money/developers/overview/internal-balances) [NextSun](https://docs.bean.money/developers/protocol/sun) Last updated 1 year ago * [Sun](https://docs.bean.money/developers/protocol/overview#sun) * [Silo](https://docs.bean.money/developers/protocol/overview#silo) * [Field](https://docs.bean.money/developers/protocol/overview#field) * [Barn](https://docs.bean.money/developers/protocol/overview#barn) * [Market](https://docs.bean.money/developers/protocol/overview#market) * [Farm](https://docs.bean.money/developers/protocol/overview#farm) * [Diamond](https://docs.bean.money/developers/protocol/overview#diamond) --- # Legacy Claim Withdrawal Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Legacy Claim Withdrawal Facet allows anyone to Claim and read Withdrawals. [Silo V3](https://bean.money/bip-36) removed the Withdrawal Freeze from the Silo. Withdrawing now directly sends ERC-20 tokens to the Farmer's Farm or Circulating balances instead of creating a Withdrawal. Although new Withdrawals cannot be created, the claim Withdrawal functionality has been preserved in this facet to allow pre-existing unclaimed Withdrawals to still be claimed. [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#call-functions) Call Functions --------------------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#claim-withdrawal) [Claim Withdrawal](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/SiloFacet/LegacyClaimWithdrawalFacet.sol#L35) Copy function claimWithdrawal( address token, uint32 season, LibTransfer.To mode ) external payable nonReentrant; Claims tokens from a Withdrawal. Parameter Type Description `token` `address` Address of whitelisted token. `season` `uint32` Season of Withdrawal to claim. `mode` `To` The balance to transfer claimed assets to; see [`LibTransfer.To`](https://docs.bean.money/developers/overview/internal-balances) . ### [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#claim-withdrawals) [Claim Withdrawals](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/SiloFacet/LegacyClaimWithdrawalFacet.sol#L50) Copy function claimWithdrawals( address token, uint32[] calldata seasons, LibTransfer.To mode ) external payable nonReentrant; Claims tokens from multiple Withdrawals. Parameter Type Description `token` `address` Address of whitelisted token. `seasons` `uint32[]` Array of Seasons to claim. `mode` `To` The balance to transfer claimed assets to; see [`LibTransfer.To`](https://docs.bean.money/developers/overview/internal-balances) . [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#view-functions) View Functions --------------------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#get-withdrawal) [Get Withdrawal](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/SiloFacet/LegacyClaimWithdrawalFacet.sol#L66) Get the amount of `token` in the Withdrawal `season` for `account`. Parameter Type Description `account` `address` Farmer to get the Withdrawal for. `token` `address` Token address of the Withdrawal. `season` `uint32` Season of the Withdrawal. Return Value Description `uint256` Amount of `token` Withdrawn for the Farmer in the given Season. ### [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#get-total-withdrawn) [Get Total Withdrawn](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/SiloFacet/LegacyClaimWithdrawalFacet.sol#L78) Get the total amount of `token` currently Withdrawn from the Silo across all Farmers. Parameter Type Description `token` `address` The Withdrawn token address. Return Value Description `uint256` Total amount of Withdrawn `token`. [](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#events) Events ----------------------------------------------------------------------------------------------------- None. [PreviousMigration Facet](https://docs.bean.money/developers/protocol/silo/migration-facet) [NextField](https://docs.bean.money/developers/protocol/field) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#call-functions) * [Claim Withdrawal](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#claim-withdrawal) * [Claim Withdrawals](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#claim-withdrawals) * [View Functions](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#view-functions) * [Get Withdrawal](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#get-withdrawal) * [Get Total Withdrawn](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#get-total-withdrawn) * [Events](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet#events) Copy function getWithdrawal( address account, address token, uint32 season ) external view returns (uint256); Copy function getTotalWithdrawn(address token) external view returns (uint256); --- # Token Support Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/depot/token-support-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Token Support Facet handles permits for ERC-20 and ERC-721 tokens and transfers for ERC-721 and ERC-1155 tokens. [](https://docs.bean.money/developers/protocol/depot/token-support-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/depot/token-support-facet#permit-erc-20) [Permit ERC-20](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenSupportFacet.sol#L30) Copy function permitERC20( IERC20Permit token, address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) public payable; `permitERC20` is a wrapper function for permit of [ERC20Permit](https://docs.openzeppelin.com/contracts/4.x/api/token/erc20#ERC20Permit-permit-address-address-uint256-uint256-uint8-bytes32-bytes32-) token. Parameter Type Description `token` `IERC20Permit` Token to permit. `owner` `address` Owner of the token. `spender` `address` Address to permit to spend the token. `value` `uint256` Token amount to permit. `deadline` `uint256` Expiration of signature (Unix time) `v` `uint8` Recovery ID. `r` `bytes32` ECDSA signature output. `s` `bytes32` ECDSA signature output. ### [](https://docs.bean.money/developers/protocol/depot/token-support-facet#transfer-erc-721) [Transfer ERC-721](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenSupportFacet.sol#L53) Execute an ERC-721 token transfer. Parameter Type Description `token` `IERC721` Token address of the ERC-721. `to` `address` Address being transferred to. `id` `uint256` ID of ERC-721 token to transfer. ### [](https://docs.bean.money/developers/protocol/depot/token-support-facet#permit-erc-721) [Permit ERC-721](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenSupportFacet.sol#L65) Execute a permit for an ERC-721 token. Parameter Type Description `token` `IERC4494` Token address to permit. `spender` `address` Address to permit to spend the token. `tokenId` `uint256` ID of `token` to permit. `deadline` `uint256` Expiration of signature (Unix time). `sig` `bytes` A valid `secp256k1` or [EIP-2098](https://eips.ethereum.org/EIPS/eip-2098) signature from owner of the `tokenId`. ### [](https://docs.bean.money/developers/protocol/depot/token-support-facet#transfer-erc-1155) [Transfer ERC-1155](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenSupportFacet.sol#L85) Execute an ERC-1155 token transfer of a single ID. Parameter Type Description `token` `IERC1155` Token address of the ERC-1155. `to` `address` Address being transferred to. `id` `uint256` ID of the ERC-1155 token. `value` `uint256` Number of the ERC-1155 tokens at `id` to transfer. ### [](https://docs.bean.money/developers/protocol/depot/token-support-facet#batch-transfer-erc-1155) [Batch Transfer ERC-1155](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenSupportFacet.sol#L98) Execute an ERC-1155 token transfer of multiple IDs. Parameter Type Description `token` `IERC1155` Token address of the ERC-1155. `to` `address` Address being transferred to. `ids` `uint256[]` Array of IDs of the ERC-155 token. `values` `uint256[]` Array of amounts of ERC-1155s at `id` to transfer. [](https://docs.bean.money/developers/protocol/depot/token-support-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------------ None. [](https://docs.bean.money/developers/protocol/depot/token-support-facet#events) Events -------------------------------------------------------------------------------------------- None. [PreviousToken Facet](https://docs.bean.money/developers/protocol/depot/token-facet) [NextCurve Facet](https://docs.bean.money/developers/protocol/depot/curve-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/depot/token-support-facet#call-functions) * [Permit ERC-20](https://docs.bean.money/developers/protocol/depot/token-support-facet#permit-erc-20) * [Transfer ERC-721](https://docs.bean.money/developers/protocol/depot/token-support-facet#transfer-erc-721) * [Permit ERC-721](https://docs.bean.money/developers/protocol/depot/token-support-facet#permit-erc-721) * [Transfer ERC-1155](https://docs.bean.money/developers/protocol/depot/token-support-facet#transfer-erc-1155) * [Batch Transfer ERC-1155](https://docs.bean.money/developers/protocol/depot/token-support-facet#batch-transfer-erc-1155) * [View Functions](https://docs.bean.money/developers/protocol/depot/token-support-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/depot/token-support-facet#events) Copy function transferERC721( IERC721 token, address to, uint256 id ) external payable; Copy function permitERC721( IERC4494 token, address spender, uint256 tokenId, uint256 deadline, bytes memory sig ) external payable; Copy function transferERC1155( IERC1155 token, address to, uint256 id, uint256 value ) external payable; Copy function batchTransferERC1155( IERC1155 token, address to, uint256[] calldata ids, uint256[] calldata values ) external payable; --- # Field Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/field/field-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Field Facet is where Beans are Sown. [](https://docs.bean.money/developers/protocol/field/field-facet#call-functions) Call Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/field/field-facet#sow) [Sow](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L82) Copy function sow( uint256 beans, uint256 minTemperature, LibTransfer.From mode ) external payable returns (uint256 pods); Sow Beans in exchange for Pods. Parameter Type Description `beans` `uint256` The number of Beans to Sow. `minTemperature` `uint256` The minimum Temperature at which to Sow. `mode` `From` The balance to transfer Beans from; see [`LibTransfer.From`](https://docs.bean.money/developers/overview/internal-balances) . Return Value Type Description `pods` `uint256` The number of Pods received. ### [](https://docs.bean.money/developers/protocol/field/field-facet#sow-with-min) [Sow With Min](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L103) Sow Beans in exchange for Pods. Use at least `minSoil`. Parameter Type Description `beans` `uint256` The number of Beans to Sow. `minTemperature` `uint256` The minimum Temperature at which to Sow. `minSoil` `uint256` The minimum amount of Soil to use; reverts if there is less than this much Soil available upon execution. `mode` `From` The balance to transfer Beans from; see [`LibTransfer.From`](https://docs.bean.money/developers/overview/internal-balances) . Return Value Type Description `pods` `uint256` The number of Pods received. ### [](https://docs.bean.money/developers/protocol/field/field-facet#harvest) [Harvest](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L163) Harvest Pods from the Field. Parameter Type Description `plots` `uint256[]` List of Plot IDs to Harvest. `mode` `To` The balance to transfer Beans to; see [`LibTransfer.To`](https://docs.bean.money/developers/overview/internal-balances) . [](https://docs.bean.money/developers/protocol/field/field-facet#view-functions) View Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/field/field-facet#pod-index) [Pod Index](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L232) Returns the total number of Pods ever minted. Return Type Description `uint256` The total number of Pods ever minted. ### [](https://docs.bean.money/developers/protocol/field/field-facet#harvestable-index) [Harvestable Index](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L239) Returns the index below which Pods are Harvestable. Return Type Description `uint256` The index below which Pods are Harvestable. ### [](https://docs.bean.money/developers/protocol/field/field-facet#total-pods) [Total Pods](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L247) Returns the number of outstanding Pods. Includes Pods that are currently Harvestable but have not yet been Harvested. Return Type Description `uint256` The number of outstanding Pods. ### [](https://docs.bean.money/developers/protocol/field/field-facet#total-harvested) [Total Harvested](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L254) Returns the number of Pods that have ever been Harvested. Return Type Description `uint256` The number of Pods that have ever been Harvested. ### [](https://docs.bean.money/developers/protocol/field/field-facet#total-harvestable) [Total Harvestable](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L264) Returns the number of Pods that are currently Harvestable but have not yet been Harvested. Return Type Description `uint256` The number of Pods that are currently Harvestable but have not yet been Harvested. ### [](https://docs.bean.money/developers/protocol/field/field-facet#total-unharvestable) [Total Unharvestable](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L271) Returns the number of Pods that are not yet Harvestable. Return Type Description `uint256` The number of Pods that are not yet Harvestable. ### [](https://docs.bean.money/developers/protocol/field/field-facet#plot) [Plot](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L279) Returns the number of Pods remaining in a Plot. Parameter Type Description `account` `address` The account that owns a Plot. `index` `uint256` The ID of a Plot. Return Type Description `uint256` The number of Pods remaining in a Plot. ### [](https://docs.bean.money/developers/protocol/field/field-facet#total-soil) [Total Soil](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L324) Returns the total available Soil. Return Type Description `uint256` The total available Soil. ### [](https://docs.bean.money/developers/protocol/field/field-facet#yield) [Yield](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L346) Returns the current yield (aka "Temperature") offered by Beanstalk when burning Beans in exchange for Pods. Return Type Description `uint32` The current yield offered by Beanstalk when burning Beans in exchange for Pods. ### [](https://docs.bean.money/developers/protocol/field/field-facet#temperature) [Temperature](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L356) Returns the current Temperature, the interest rate offered by Beanstalk in exchange for Sowing Beans. Return Value Description `uint256` The current Temperature. ### [](https://docs.bean.money/developers/protocol/field/field-facet#max-temperature) [Max Temperature](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L366) Returns the Maximum Temperature that Beanstalk is willing to offer this Season. Return Type Description `uint256` The Maximum Temperature. ### [](https://docs.bean.money/developers/protocol/field/field-facet#remaining-pods) [Remaining Pods](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L375) Returns the remaining Pods that could be issued this Season. Return Value Description `uint256` The remaining Pods that could be issued this Season. [](https://docs.bean.money/developers/protocol/field/field-facet#events) Events ------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/field/field-facet#event-sow) [Sow](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L37) Emitted from `LibDibbler.sowNoSoil` when an `account` creates a Plot. A Plot is a set of Pods created in from a single `sow` or `fund` call. Parameter Type Description `account` `address` The account that Sowed Beans for Pods. `index` `uint256` The Place in Line of the Plot. `beans` `uint256` The amount of Beans burnt to create the Plot. `pods` `uint256` The amount of Pods associated with the created Plot. ### [](https://docs.bean.money/developers/protocol/field/field-facet#event-harvest) [Harvest](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L50) Emitted when `account` claims the Beans associated with Harvestable Pods. Parameter Type Description `account` `address` The account that owns the `plots`. `plots` `uint256[]` The indices of Plots that were Harvested. `beans` `uint256` The amount of Beans transferred to `account`. ### [](https://docs.bean.money/developers/protocol/field/field-facet#event-pod-listing-cancelled) [Pod Listing Cancelled](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/field/FieldFacet.sol#L57) Emitted when a Pod Listing is Cancelled. Parameter Type Description `account` `address` The account that created the Pod Listing. `index` `uint256` The index of the Plot listed. [PreviousField](https://docs.bean.money/developers/protocol/field) [NextFundraiser Facet](https://docs.bean.money/developers/protocol/field/fundraiser-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/field/field-facet#call-functions) * [Sow](https://docs.bean.money/developers/protocol/field/field-facet#sow) * [Sow With Min](https://docs.bean.money/developers/protocol/field/field-facet#sow-with-min) * [Harvest](https://docs.bean.money/developers/protocol/field/field-facet#harvest) * [View Functions](https://docs.bean.money/developers/protocol/field/field-facet#view-functions) * [Pod Index](https://docs.bean.money/developers/protocol/field/field-facet#pod-index) * [Harvestable Index](https://docs.bean.money/developers/protocol/field/field-facet#harvestable-index) * [Total Pods](https://docs.bean.money/developers/protocol/field/field-facet#total-pods) * [Total Harvested](https://docs.bean.money/developers/protocol/field/field-facet#total-harvested) * [Total Harvestable](https://docs.bean.money/developers/protocol/field/field-facet#total-harvestable) * [Total Unharvestable](https://docs.bean.money/developers/protocol/field/field-facet#total-unharvestable) * [Plot](https://docs.bean.money/developers/protocol/field/field-facet#plot) * [Total Soil](https://docs.bean.money/developers/protocol/field/field-facet#total-soil) * [Yield](https://docs.bean.money/developers/protocol/field/field-facet#yield) * [Temperature](https://docs.bean.money/developers/protocol/field/field-facet#temperature) * [Max Temperature](https://docs.bean.money/developers/protocol/field/field-facet#max-temperature) * [Remaining Pods](https://docs.bean.money/developers/protocol/field/field-facet#remaining-pods) * [Events](https://docs.bean.money/developers/protocol/field/field-facet#events) * [Sow](https://docs.bean.money/developers/protocol/field/field-facet#event-sow) * [Harvest](https://docs.bean.money/developers/protocol/field/field-facet#event-harvest) * [Pod Listing Cancelled](https://docs.bean.money/developers/protocol/field/field-facet#event-pod-listing-cancelled) Copy function sowWithMin( uint256 beans, uint256 minTemperature, uint256 minSoil, LibTransfer.From mode ) public payable returns (uint256 pods); Copy function harvest(uint256[] calldata plots, LibTransfer.To mode) external payable; Copy function podIndex() public view returns (uint256); Copy function harvestableIndex() public view returns (uint256); Copy function totalPods() public view returns (uint256); Copy function totalHarvested() public view returns (uint256); Copy function totalHarvestable() public view returns (uint256); Copy function totalUnharvestable() public view returns (uint256); Copy function plot(address account, uint256 index) public view returns (uint256); Copy function totalSoil() external view returns (uint256); Copy function yield() external view returns (uint32); Copy function temperature() external view returns (uint256); Copy function maxTemperature() external view returns (uint256); Copy function remainingPods() external view returns (uint256); Copy event Sow( address indexed account, uint256 index, uint256 beans, uint256 pods ); Copy event Harvest(address indexed account, uint256[] plots, uint256 beans); Copy event PodListingCancelled(address indexed account, uint256 index); --- # Convert Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/convert-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Convert Facet handles Conversions between assets in the Silo and Enrooting Unripe Deposits. [](https://docs.bean.money/developers/protocol/silo/convert-facet#call-functions) Call Functions ----------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/convert-facet#convert) [Convert](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ConvertFacet.sol#L67) Copy function convert( bytes calldata convertData, int96[] memory stems, uint256[] memory amounts ) external payable nonReentrant returns (int96 toStem, uint256 fromAmount, uint256 toAmount, uint256 fromBdv, uint256 toBdv); Convert allows a user to Convert from one Deposited asset to another, given that the Conversion is on the Convert Whitelist. For example, a Farmer can Convert LP into Bean only when the Bean price is below peg, and vice versa. Read more about [Convert in the Farmers' Almanac](https://docs.bean.money/almanac/peg-maintenance/convert) . Parameter Type Description `convertData` `bytes` Input parameters to determine the Conversion type. `stems` `int98[]` The Stems of the Deposits to Convert. `amounts` `uint256[]` The amounts within each Deposit to Convert. Return Value Type Description `toStem` `int96` The new Stems of the Converted Deposit. `fromAmount` `uint256` The amount of tokens Converted from. `toAmount` `uint256` The amount of tokens Converted to. `fromBdv` `uint256` The BDV of the Deposits Converted from. `toBdv` `uint256` The BDV of the Deposits Converted to. [](https://docs.bean.money/developers/protocol/silo/convert-facet#view-functions) View Functions ----------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/silo/convert-facet#events) Events ------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/convert-facet#event-convert) [Convert](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ConvertFacet.sol#L28) Emitted upon each Conversion. Parameter Type Description `account` `address` Address of Farmer that Converted. `fromToken` `address` Whitelisted token that was Converted from. `toToken` `address` Whitelisted token that was Converted to. `fromAmount` `uint256` Amount of `fromToken` Converted. `toAmount` `uint256` Amount of `toAmount` Converted to. ### [](https://docs.bean.money/developers/protocol/silo/convert-facet#event-remove-deposits) [Remove Deposit](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ConvertFacet.sol#L36) Emitted when `account` removes a single Deposit from the Silo. Occurs during Withdraw and Convert. Parameter Type Description `account` `address` The Farmer whose Deposit was removed. `token` `address` Whitelisted token address. `stem` `int96` The Stem of the Deposit. `amount` `uint256` The token amount of the Deposit. `bdv` `uint256` The BDV associated with the Deposit. ### [](https://docs.bean.money/developers/protocol/silo/convert-facet#event-remove-deposits-1) [Remove Deposits](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ConvertFacet.sol#L44) Emitted when `account` removes multiple Deposits from the Silo. Occurs during Withdraw and Convert. Parameter Type Description `account` `address` The Farmer whose Deposits were removed. `token` `address` Whitelisted token address. `stems` `int96[]` Stems of the Deposits. `amounts` `uint256[]` The token amounts of the Deposits, corresponding to `stems`. `amount` `uint256` Sum of `amounts`. `bdvs` `uint256[]` The BDVs associated with the Deposits, corresponding to `stems`. [PreviousWhitelist Facet](https://docs.bean.money/developers/protocol/silo/whitelist-facet) [NextConvert Getters Facet](https://docs.bean.money/developers/protocol/silo/convert-facet-1) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/convert-facet#call-functions) * [Convert](https://docs.bean.money/developers/protocol/silo/convert-facet#convert) * [View Functions](https://docs.bean.money/developers/protocol/silo/convert-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/silo/convert-facet#events) * [Convert](https://docs.bean.money/developers/protocol/silo/convert-facet#event-convert) * [Remove Deposit](https://docs.bean.money/developers/protocol/silo/convert-facet#event-remove-deposits) * [Remove Deposits](https://docs.bean.money/developers/protocol/silo/convert-facet#event-remove-deposits-1) Copy event Convert( address indexed account, address fromToken, address toToken, uint256 fromAmount, uint256 toAmount ); Copy event RemoveDeposit( address indexed account, address indexed token, int96 stem, uint256 amount, uint256 bdv ); Copy event RemoveDeposits( address indexed account, address indexed token, int96[] stems, uint256[] amounts, uint256 amount, uint256[] bdvs ); --- # Enroot Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/convert-facet-2.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Enroot Facet handles logic for Enrooting Unripe Deposits. [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#call-functions) Call Functions ------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#enroot-deposit) [Enroot Deposit](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/EnrootFacet.sol#L57) Copy function enrootDeposit( address token, int96 stem, uint256 amount ) external payable nonReentrant mowSender(token); Claims outstanding Revitalized Stalk and Seeds and updates BDV of a single Unripe Deposit. Parameter Type Description `token` `address` Address of whitelist Unripe ERC20. `stem` `int96` Stem of Deposit to Enroot. `amount` `uint256` Amount to Enroot. ### [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#enroot-deposits) [Enroot Deposits](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/EnrootFacet.sol#L116) Copy function enrootDeposits( address token, int96[] calldata stems, uint256[] calldata amounts ) external payable nonReentrant mowSender(token); Claims outstanding Revitalized Stalk and Seeds and updates BDV of multiple Unripe Deposits. Parameter Type Description `token` `address` Address of whitelist Unripe ERC20. `stems` `int96[]` Array of Stems of Deposits to Enroot. `amounts` `uint256[]` Array of amounts (corresponding to Stems) to Enroot. [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#view-functions) View Functions ------------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#events) Events --------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#event-remove-deposits) [Remove Deposit](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/EnrootFacet.sol#L22) Emitted when `account` removes a single Deposit from the Silo. Occurs during Withdraw and Convert. Parameter Type Description `account` `address` The Farmer whose Deposit was removed. `token` `address` Whitelisted token address. `stem` `int96` The Stem of the Deposit. `amount` `uint256` The token amount of the Deposit. `bdv` `uint256` The BDV associated with the Deposit. ### [](https://docs.bean.money/developers/protocol/silo/convert-facet-2#event-remove-deposits-1) [Remove Deposits](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/EnrootFacet.sol#L30) Emitted when `account` removes multiple Deposits from the Silo. Occurs during Withdraw and Convert. Parameter Type Description `account` `address` The Farmer whose Deposits were removed. `token` `address` Whitelisted token address. `stems` `int96[]` Stems of the Deposits. `amounts` `uint256[]` The token amounts of the Deposits, corresponding to `stems`. `amount` `uint256` Sum of `amounts`. `bdvs` `uint256[]` The BDVs associated with the Deposits, corresponding to `stems`. [PreviousConvert Getters Facet](https://docs.bean.money/developers/protocol/silo/convert-facet-1) [NextApproval Facet](https://docs.bean.money/developers/protocol/silo/approval-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/convert-facet-2#call-functions) * [Enroot Deposit](https://docs.bean.money/developers/protocol/silo/convert-facet-2#enroot-deposit) * [Enroot Deposits](https://docs.bean.money/developers/protocol/silo/convert-facet-2#enroot-deposits) * [View Functions](https://docs.bean.money/developers/protocol/silo/convert-facet-2#view-functions) * [Events](https://docs.bean.money/developers/protocol/silo/convert-facet-2#events) * [Remove Deposit](https://docs.bean.money/developers/protocol/silo/convert-facet-2#event-remove-deposits) * [Remove Deposits](https://docs.bean.money/developers/protocol/silo/convert-facet-2#event-remove-deposits-1) Copy event RemoveDeposit( address indexed account, address indexed token, int96 stem, uint256 amount, uint256 bdv ); Copy event RemoveDeposits( address indexed account, address indexed token, int96[] stems, uint256[] amounts, uint256 amount, uint256[] bdvs ); --- # Migration Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/migration-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Migration Facet contains functions related to [Silo V3](https://bean.money/bip-36) . Farmers are required to migrate to the new accounting system created by the Silo V3 upgrade. [](https://docs.bean.money/developers/protocol/silo/migration-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/migration-facet#mow-and-migrate) [Mow and Migrate](https://github.com/BeanstalkFarms/Beanstalk/blob/9f286e1f1b1e67bc40d35aaf4b16e5c6d83ebdd9/protocol/contracts/beanstalk/silo/MigrationFacet.sol#L41) Copy function mowAndMigrate( address account, address[] calldata tokens, uint32[][] calldata seasons, uint256[][] calldata amounts, uint256 stalkDiff, uint256 seedsDiff, bytes32[] calldata proof ) external payable; Migrates a Farmer's Deposits from the old (Seasons based) to the new Silo (Stems based) accounting system. When migrating an account, a user must submit all of the account's Deposits or the migration will not pass because the Seed check will fail. The Seed check adds up the BDV of all submitted Deposits, multiplies by the corresponding Seed amount for each token type, then compares that to the total Seeds stored for that user. If everything matches, the migration is valid. Parameter Type Description `account` `address` Address of the account to migrate. `tokens` `address[]` Array of whitelisted token addresses to migrate. `seasons` `uint256[][]` The Seasons for the Deposits. `amounts` `uint256[][]` The amounts of those Deposits which are to be migrated. `stalkDiff` `uint256` Discrepancy between the calculated Stalk and the actual Stalk the account has. `seedsDiff` `uint256` Discrepancy between the calculated Seeds and the actual Seeds the account has. `proof` `bytes32[]` The Merkle proof that confirms `stalkDiff` and `seedsDiff`. ### [](https://docs.bean.money/developers/protocol/silo/migration-facet#mow-and-migrate-no-deposits) [Mow and Migrate No Deposits](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/MigrationFacet.sol#L63) Migrate an account to Silo V3 that has no Deposits. Parameter Type Description `account` `address` Address of the account to migrate. [](https://docs.bean.money/developers/protocol/silo/migration-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/migration-facet#balance-of-legacy-seeds) [Balance Of Legacy Seeds](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/MigrationFacet.sol#L67) Gets balance of Seeds for a Farmer that hasn't migrated. Parameter Type Description `account` `address` A Farmer's address. Return Value Description `uint256` Balance of Seeds for an unmigrated Farmer. ### [](https://docs.bean.money/developers/protocol/silo/migration-facet#balance-of-grown-stalk-up-to-stems-deployment) [Balance Of Grown Stalk up to Stems Deployment](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/MigrationFacet.sol#L71) Gets a Farmer's balance of Grown Stalk at the time of Stems deployment (Silo V3 upgrade). Parameter Type Description `account` `address` Address of Farmer. Return Value Description `uint256` Grown Stalk balance for `account` at the time of Stems deployment. ### [](https://docs.bean.money/developers/protocol/silo/migration-facet#get-deposit-legacy) [Get Deposit Legacy](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/MigrationFacet.sol#L90) Locate the token amount and BDV for a Farmer's Deposit in legacy storage. Parameter Type Description `account` `address` Address of Farmer. `token` `address` Whitelisted token address to get Deposit for. `season` `uint32` Season of the Deposit in legacy storage. Return Value Description `uint128` Amount of `token` of the Deposit in legacy storage. `uint128` BDV of the Deposit in legacy storage. [](https://docs.bean.money/developers/protocol/silo/migration-facet#events) Events --------------------------------------------------------------------------------------- None. [PreviousMetadata Facet](https://docs.bean.money/developers/protocol/silo/metadata-facet) [NextLegacy Claim Withdrawal Facet](https://docs.bean.money/developers/protocol/silo/legacy-claim-withdrawal-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/migration-facet#call-functions) * [Mow and Migrate](https://docs.bean.money/developers/protocol/silo/migration-facet#mow-and-migrate) * [Mow and Migrate No Deposits](https://docs.bean.money/developers/protocol/silo/migration-facet#mow-and-migrate-no-deposits) * [View Functions](https://docs.bean.money/developers/protocol/silo/migration-facet#view-functions) * [Balance Of Legacy Seeds](https://docs.bean.money/developers/protocol/silo/migration-facet#balance-of-legacy-seeds) * [Balance Of Grown Stalk up to Stems Deployment](https://docs.bean.money/developers/protocol/silo/migration-facet#balance-of-grown-stalk-up-to-stems-deployment) * [Get Deposit Legacy](https://docs.bean.money/developers/protocol/silo/migration-facet#get-deposit-legacy) * [Events](https://docs.bean.money/developers/protocol/silo/migration-facet#events) Copy function mowAndMigrateNoDeposits(address account) external payable; Copy function balanceOfLegacySeeds(address account) external view returns (uint256); Copy function balanceOfGrownStalkUpToStemsDeployment(address account) external view returns (uint256); Copy function getDepositLegacy( address account, address token, uint32 season ) external view returns (uint128, uint128); --- # Unknown \> For the complete documentation index, see \[llms.txt\](https://docs.bean.money/developers/llms.txt). Markdown versions of documentation pages are available by appending \`.md\` to page URLs; this page is available as \[Markdown\](https://docs.bean.money/developers/protocol/overview.md). # Overview {% hint style="warning" %} Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. {% endhint %} Beanstalk can be broken down into 7 different Modules consisting of 25 Facets: \* \[Sun\](/developers/protocol/sun.md) (1 Facet) \* \[Silo\](/developers/protocol/silo.md) (10 Facets) \* \[Field\](/developers/protocol/field.md) (2 Facets) \* \[Barn\](/developers/protocol/barn.md) (2 Facets) \* \[Market\](/developers/protocol/market.md) (1 Facet) \* \[Farm\](/developers/protocol/depot.md) (5 Facets) \* \[Diamond\](/developers/protocol/diamond.md) (4 Facets) ### Sun The Sun handles moving time forward in Beanstalk. It advances Beanstalk to the next Season. The Sun consists of 1 Facet: \* \[\`SeasonFacet\`\](/developers/protocol/sun/season-facet.md) -> Contains the \`gm\` function. ### Silo The Silo offers a passive yield opportunity in the form of Bean seigniorage to Farmers who Deposit Beans and other whitelisted assets. Upon Deposit in the Silo, Farmers receive Stalk and Seeds based on the Bean Denominated Value (BDV) Deposited and the asset Deposited. The Silo consists of 10 Facets: \* \[\`SiloFacet\`\](/developers/protocol/silo/silo-facet.md) -> Where Farmers Deposit, Withdraw, Claim and Transfer assets in/from the Silo. \* \[\`BDVFacet\`\](/developers/protocol/silo/bdv-facet.md) -> Handles logic for retrieving the BDV of some amount of a whitelisted asset. \* \[\`WhitelistFacet\`\](/developers/protocol/silo/whitelist-facet.md) -> Handles the addition and removal of tokens from the \[Deposit Whitelist\](https://docs.bean.money/almanac/farm/silo#deposit-whitelist). \* \[\`ConvertFacet\`\](/developers/protocol/silo/convert-facet.md) -> Where Farmers Convert a Deposit of a whitelisted asset to a Deposit of another whitelisted asset. \* \[\`ConvertGettersFacet\`\](/developers/protocol/silo/convert-facet-1.md) -> Contains view functions for Convert data. \* \[\`EnrootFacet\`\](/developers/protocol/silo/convert-facet-2.md) -> Where Farmers Enroot their Unripe Deposits. \* \[\`ApprovalFacet\`\](/developers/protocol/silo/approval-facet.md) -> Contains logic for Deposit approvals and permits. \* \[\`MetadataFacet\`\](/developers/protocol/silo/metadata-facet.md) -> Contains on-chain metadata for the Deposit ERC-1155 tokens. \* \[\`MigrationFacet\`\](/developers/protocol/silo/migration-facet.md) -> Where Farmers migrate to the latest Silo accounting system. \* \[\`LegacyClaimWithdrawalFacet\`\](/developers/protocol/silo/legacy-claim-withdrawal-facet.md) -> Facilitates backwards compatibility for Farmers with unclaimed Withdrawals before the \[Silo V3 upgrade\](https://bean.money/bip-36). ### Field The Field is Beanstalk's native credit facility. Anytime Beanstalk is willing to borrow Beans from the market, it issues Soil in the Field. Beans are Sown in exchange for Pods, the Beanstalk-native debt asset. Loans to Beanstalk are issued with a fixed interest rate, known as the Temperature, and an unknown maturity date. Pods become Harvestable Pods that can be Harvested (redeemed) for 1 Bean each on a First In, First Out (FIFO) basis. There is no penalty for waiting to Harvest Pods. The Field consists of 2 Facets: \* \[\`FieldFacet\`\](/developers/protocol/field/field-facet.md) -> Where Farmers Sow Beans into Pods and Harvest Pods into Beans. \* \[\`FundraiserFacet\`\](/developers/protocol/field/fundraiser-facet.md) -> Where Farmers create and fund Fundraisers through Sowing non-Bean assets into Pods. ### Barn The Barn was built after Beanstalk was exploited on April 17, 2022. The Barn distributes Bean rewards to those who hold Fertilizer tokens from participation in the Barn Raise. It also handles the Chopping of Unripe Beans and Unripe LP into their underlying assets at a potential penalty. {% hint style="warning" %} In the Beanstalk ecosystem, \* \*\*Unfertilized Beans\*\* are referred to as \*\*Sprouts\*\*; \* \*\*Fertilized Beans\*\* are referred to as \*\*Rinsable Sprouts\*\* that can be \*\*Rinsed\*\*; and \* \*\*Underlying\*\* assets are referred to as \*\*Ripe\*\* assets. See \[Terminology Discrepancies\](/developers/misc/terminology-discrepancies.md). {% endhint %} Unfertilized Beans become Fertilized Beans that can be claimed (redeemed) for 1 Bean each on a pari passu basis. There is no penalty for waiting to claim Fertilized Beans. The Barn consists of 2 Facets: \* \[\`FertilizerFacet\`\](/developers/protocol/barn/fertilizer-facet.md) -> Where Farmers buy Fertilizer with USDC and claim Beans earned from Fertilizer. \* \[\`UnripeFacet\`\](/developers/protocol/barn/unripe-facet.md) -> Allows Farmers to Chop Unripe assets into their underlying assets at a potential penalty. ### Market The Market houses various DEXs for zero fee trading. Currently only Pods can be traded on the Market. Pods can be bought and sold in a decentralized, trustless fashion on the \[Pod Market\](https://docs.bean.money/almanac/farm/market#the-pod-market). The Pod Market creates liquidity for Pods through an on-chain order book. Sellers can List Pods or Fill open Pod Orders placed by buyers. Buyers can Order Pods or Fill open Pod Listings placed by sellers. The Market consists of 1 Facet: \* \[\`MarketplaceFacet\`\](/developers/protocol/market/marketplace-facet.md) -> Contains the Pod Market where Farmers create, Fill and Cancel Pod Listings and Orders, as well as transfer Pods. ### Farm The Farm allows Farmers to call multiple functions in a single transaction and use assets between different function in a composable manner, without those assets every leaving Beanstalk (thanks to \[Internal Balances\](/developers/overview/internal-balances.md)). The Farm consists of 5 Facets: \* \[\`FarmFacet\`\](/developers/protocol/depot/farm-facet.md) -> Contains the \`farm\` function, which allows Farmers to call a series of functions together within Beanstalk. \* \[\`DepotFacet\`\](/developers/protocol/depot/depot-facet.md) -> Wraps the standalone \[Pipeline\](https://evmpipeline.org/) contract, providing access to Pipeline from Beanstalk through the use of the \`farm\` function. \* \[\`TokenFacet\`\](/developers/protocol/depot/token-facet.md) -> Supports transferring assets between Internal and External Balances and between different accounts. Also supports Wrap/Unwrap logic for ETH. \* \[\`TokenSupportFacet\`\](/developers/protocol/depot/token-support-facet.md) -> Handles token permits. \* \[\`CurveFacet\`\](/developers/protocol/depot/curve-facet.md) -> Provides an interface to exchange and add/remove liquidity on Curve directly through Beanstalk. ### Diamond The Diamond Module controls and manages the Beanstalk contract by providing functionality to upgrade and view supported functions in Beanstalk. It also controls which address owns the Beanstalk contract. The Diamond Module consists of 4 Facets: \* \[\`DiamondCutFacet\`\](/developers/protocol/diamond/diamond-cut-facet.md) -> Provides functionality for the owner to add/remove/replace functions within the Beanstalk contract. \* \[\`DiamondLoupeFacet\`\](/developers/protocol/diamond/diamond-loupe-facet.md) -> Allows anyone to see the available functions within Beanstalk. \* \[\`OwnershipFacet\`\](/developers/protocol/diamond/ownership-facet.md) -> Manages which address owns Beanstalk. \* \[\`PauseFacet\`\](/developers/protocol/diamond/pause-facet.md) -> Allows the owner of Beanstalk to Pause/Unpause Beanstalk. --- # Curve Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/depot/curve-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Curve Facet handles swapping in, adding liquidity to, and removing liquidity from Curve pools without assets leaving Beanstalk. [](https://docs.bean.money/developers/protocol/depot/curve-facet#call-functions) Call Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/depot/curve-facet#exchange) [Exchange](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/CurveFacet.sol#L33) Copy function exchange( address pool, address registry, address fromToken, address toToken, uint256 amountIn, uint256 minAmountOut, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant; Swaps a token for another token in a Curve base, meta, plain or crypto pool. Slippage is tolerated on the amount out. It also verifies that the pool exists in the Curve Factory. This function does not support underlying tokens. * The stable pair Curve Factory can be found at: [`0xB9fC157394Af804a3578134A6585C0dc9cc990d4`](https://etherscan.io/address/0xB9fC157394Af804a3578134A6585C0dc9cc990d4) * The non-stable Curve factory can be found at: [`0x0959158b6040D32d04c301A72CBFD6b39E21c9AE`](https://etherscan.io/address/0x0959158b6040D32d04c301A72CBFD6b39E21c9AE) Parameter Type Description `pool` `address` The address of the pool to exchange in. The pool must be registered in one of the Curve Factories. `registry` `address` The Curve Registry to query `pool` data from. `fromToken` `address` The token to swap from. `toToken` `address` The token to swap to. `amountIn` `uint256` The amount to swap from. `minAmountOut` `uint256` The minimum amount to receive from the swap. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to send the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/curve-facet#exchange-underlying) [Exchange Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/CurveFacet.sol#L68) Swaps an underlying token for another underlying token in a Curve metapool. In a Curve metapool, one of the tokens is an LP token of another pool. Underlying tokens include the non-LP token in the pool as well as the tokens in the pool that the LP token belongs to. For example, in the [BEAN:3CRV metapool](https://curve.fi/factory/152) , the underlying tokens are Bean, USDC, Tether and Dai. Slippage is tolerated on the amount out. This function verifies that the pool exists in the Curve Factory. Parameter Type Description `pool` `address` The address of the pool to exchange in. The pool must be registered in one of the Curve Factories. `fromToken` `address` The underlying token to swap from. `toToken` `address` The underlying token to swap to. `amountIn` `uint256` The amount to swap from. `minAmountOut` `uint256` The minimum amount to receive from the swap. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to send the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/curve-facet#add-liquidity) [Add Liquidity](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/CurveFacet.sol#L100) Adds tokens into a liquidity pool on Curve in exchange for LP tokens. Parameter Type Description `pool` `address` The address of the pool to exchange in. The pool must be registered in one of the Curve Factories. `registry` `address` The Curve Registry to query `pool` data from. `amounts` `uint256[]` The amount of each token to add. `minAmountOut` `uint256` The minimum amount to receive from the swap. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to send the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/curve-facet#remove-liquidity) [Remove Liquidity](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/CurveFacet.sol#L159) Removes liquidity from a pool on Curve in exchange for equal amounts of all tokens in the liquidity pool. The Farmer burns their LP tokens in the process. Parameter Type Description `pool` `address` The address of the pool to exchange in. The pool must be registered in one of the Curve Factories. `registry` `address` The Curve Registry to query `pool` data from. `amountIn` `uint256` The amount of LP to remove. `minAmountsOut` `uint256[]` The minimum amount to receive in each of the tokens. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to sent the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/curve-facet#remove-liquidity-imbalance) [Remove Liquidity Imbalance](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/CurveFacet.sol#L236) Removes liquidity from a pool on Curve in exchange for an unequal amounts of tokens in the liquidity pool. The Farmer burns LP tokens in the process. Parameter Type Description `pool` `address` The address of the pool to exchange in. The pool must be registered in one of the Curve Factories. `registry` `address` The Curve Registry to query `pool` data from. `amountsOut` `uint256[]` The amount of each token to receive. `maxAmountIn` `uint256` The max amount of LP tokens to burn. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to send the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/curve-facet#remove-liquidity-one-token) [Remove Liquidity One Token](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/CurveFacet.sol#L306) Removes liquidity from a pool on Curve in exchange for an amount of one token in the liquidity pool. The Farmer burns LP tokens in the process. Parameter Type Description `pool` `address` The address of the pool to exchange in. The pool must be registered in one of the Curve Factories. `registry` `address` The Curve Registry to query `pool` data from. `toToken` `address` The token to receive in exchange for burning LP tokens. `amountIn` `uint256` The amount of LP tokens to burn. `minAmountOut` `uint256` The minimum amount of the token to receive. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to send the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). [](https://docs.bean.money/developers/protocol/depot/curve-facet#view-functions) View Functions ---------------------------------------------------------------------------------------------------- None. [](https://docs.bean.money/developers/protocol/depot/curve-facet#events) Events ------------------------------------------------------------------------------------ None. [PreviousToken Support Facet](https://docs.bean.money/developers/protocol/depot/token-support-facet) [NextDiamond](https://docs.bean.money/developers/protocol/diamond) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/depot/curve-facet#call-functions) * [Exchange](https://docs.bean.money/developers/protocol/depot/curve-facet#exchange) * [Exchange Underlying](https://docs.bean.money/developers/protocol/depot/curve-facet#exchange-underlying) * [Add Liquidity](https://docs.bean.money/developers/protocol/depot/curve-facet#add-liquidity) * [Remove Liquidity](https://docs.bean.money/developers/protocol/depot/curve-facet#remove-liquidity) * [Remove Liquidity Imbalance](https://docs.bean.money/developers/protocol/depot/curve-facet#remove-liquidity-imbalance) * [Remove Liquidity One Token](https://docs.bean.money/developers/protocol/depot/curve-facet#remove-liquidity-one-token) * [View Functions](https://docs.bean.money/developers/protocol/depot/curve-facet#view-functions) * [Events](https://docs.bean.money/developers/protocol/depot/curve-facet#events) Copy function exchangeUnderlying( address pool, address fromToken, address toToken, uint256 amountIn, uint256 minAmountOut, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant; Copy function addLiquidity( address pool, address registry, uint256[] memory amounts, uint256 minAmountOut, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant; Copy function removeLiquidity( address pool, address registry, uint256 amountIn, uint256[] calldata minAmountsOut, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant; Copy function removeLiquidityImbalance( address pool, address registry, uint256[] calldata amountsOut, uint256 maxAmountIn, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant; Copy function removeLiquidityOneToken( address pool, address registry, address toToken, uint256 amountIn, uint256 minAmountOut, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant; --- # Fertilizer Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/barn/fertilizer-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Fertilizer Facet handles the minting of Fertilizer and Beans paid to Fertilizer holders. [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#call-functions) Call Functions -------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#claim-fertilized-beans) [Claim Fertilized Beans](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L32) Copy function claimFertilized(uint256[] calldata ids, LibTransfer.To mode) external payable; WIP Parameter Type Description `ids` `uint256[]` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#mint-fertilizer) [Mint Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L40) Copy function mintFertilizer( uint128 amount, uint256 minLP, LibTransfer.From mode ) external payable; WIP Parameter Type Description `amount` `uint128` WIP `minLP` `uint256` WIP `mode` `From` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#add-fertilizer-owner) [Add Fertilizer Owner](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L61) WIP Parameter Type Description `id` `uint128` WIP `amount` `uint128` WIP `minLP` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#pay-fertilizer) [Pay Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L75) WIP Parameter Type Description `account` `address` WIP `amount` `uint256` WIP [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#view-functions) View Functions -------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#total-fertilized-beans) [Total Fertilized Beans](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L85) WIP Return Value Type Description `beans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#total-unfertilized-beans) [Total Unfertilized Beans](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L89) WIP Return Value Type Description `beans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#total-fertilizer-beans) [Total Fertilizer Beans](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L93) WIP Return Value Type Description `beans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-fertilizer) [Get Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L97) WIP Parameter Type Description `id` `uint128` WIP Return Type Description `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-next) [Get Next](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L101) WIP Parameter Type Description `id` `uint128` WIP Return Type Description `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-first) [Get First](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L105) WIP Return Type Description `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-last) [Get Last](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L109) WIP Return Type Description `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-active-fertilizer) [Get Active Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L113) WIP Return Type Description `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#is-fertilizing) [Is Fertilizing](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L117) WIP Return Type Description `bool` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#beans-per-fertilizer) [Beans Per Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L121) WIP Return Value Type Description `bpf` `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-humidity) [Get Humidity](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L125) WIP Parameter Type Description `_s` `uint128` WIP Return Value Type Description `humidity` `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-current-humidity) [Get Current Humidity](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L129) WIP Return Value Type Description `humidity` `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-end-bpf) [Get End BPF](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L133) WIP Return Value Type Description `endBpf` `uint128` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#remaining-recapitalization) [Remaining Recapitalization](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L137) WIP Return Type Description `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-unfertilized) [Balance of Unfertilized](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L141) WIP Parameter Type Description `account` `address` WIP `ids` `uint256[]` WIP Return Value Type Description `beans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-fertilized) [Balance of Fertilized](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L149) WIP Parameter Type Description `account` `address` WIP `ids` `uint256[]` WIP Return Value Type Description `beans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-fertilizer) [Balance of Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L157) WIP Parameter Type Description `account` `address` WIP `id` `uint256` WIP Return Type Description `IFertilizer.Balance` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-batch-fertilizer) [Balance of Batch Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L165) WIP Parameter Type Description `accounts` `address[]` WIP `ids` `uint256[]` WIP Return Type Description `IFertilizer.Balance[]` WIP ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-fertilizers) [Get Fertilizers](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L172) WIP Return Value Type Description `fertilizers` `Supply[]` WIP [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#events) Events ---------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#event-set-fertilizer) [Set Fertilizer](https://github.com/BeanstalkFarms/Beanstalk/blob/f0e29aae99ddca90085d8dfdc990cff88451d357/protocol/contracts/farm/facets/FertilizerFacet.sol#L23) WIP Parameter Type Description `id` `uint128` WIP `bpf` `uint128` WIP [PreviousBarn](https://docs.bean.money/developers/protocol/barn) [NextUnripe Facet](https://docs.bean.money/developers/protocol/barn/unripe-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#call-functions) * [Claim Fertilized Beans](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#claim-fertilized-beans) * [Mint Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#mint-fertilizer) * [Add Fertilizer Owner](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#add-fertilizer-owner) * [Pay Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#pay-fertilizer) * [View Functions](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#view-functions) * [Total Fertilized Beans](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#total-fertilized-beans) * [Total Unfertilized Beans](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#total-unfertilized-beans) * [Total Fertilizer Beans](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#total-fertilizer-beans) * [Get Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-fertilizer) * [Get Next](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-next) * [Get First](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-first) * [Get Last](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-last) * [Get Active Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-active-fertilizer) * [Is Fertilizing](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#is-fertilizing) * [Beans Per Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#beans-per-fertilizer) * [Get Humidity](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-humidity) * [Get Current Humidity](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-current-humidity) * [Get End BPF](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-end-bpf) * [Remaining Recapitalization](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#remaining-recapitalization) * [Balance of Unfertilized](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-unfertilized) * [Balance of Fertilized](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-fertilized) * [Balance of Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-fertilizer) * [Balance of Batch Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#balance-of-batch-fertilizer) * [Get Fertilizers](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#get-fertilizers) * [Events](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#events) * [Set Fertilizer](https://docs.bean.money/developers/protocol/barn/fertilizer-facet#event-set-fertilizer) Copy function addFertilizerOwner( uint128 id, uint128 amount, uint256 minLP ) external payable; Copy function payFertilizer(address account, uint256 amount) external payable Copy function totalFertilizedBeans() external view returns (uint256 beans); Copy function totalUnfertilizedBeans() external view returns (uint256 beans); Copy function totalFertilizerBeans() external view returns (uint256 beans); Copy function getFertilizer(uint128 id) external view returns (uint256); Copy function getNext(uint128 id) external view returns (uint128); Copy function getFirst() external view returns (uint128); Copy function getLast() external view returns (uint128); Copy function getActiveFertilizer() external view returns (uint256); Copy function isFertilizing() external view returns (bool); Copy function beansPerFertilizer() external view returns (uint128 bpf); Copy function getHumidity(uint128 _s) external pure returns (uint128 humidity); Copy function getCurrentHumidity() external view returns (uint128 humidity); Copy function getEndBpf() external view returns (uint128 endBpf); Copy function remainingRecapitalization() external view returns (uint256); Copy function balanceOfUnfertilized(address account, uint256[] memory ids) external view returns (uint256 beans); Copy function balanceOfFertilized(address account, uint256[] memory ids) external view returns (uint256 beans); Copy function balanceOfFertilizer(address account, uint256 id) external view returns (IFertilizer.Balance memory); Copy function balanceOfBatchFertilizer( address[] memory accounts, uint256[] memory ids ) external view returns (IFertilizer.Balance[] memory); Copy function getFertilizers() external view returns (Supply[] memory fertilizers); Copy event SetFertilizer(uint128 id, uint128 bpf); --- # Approval Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/silo/approval-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Approval Facet handles all approval and permit related functions for the Silo. [](https://docs.bean.money/developers/protocol/silo/approval-facet#call-functions) Call Functions ------------------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#approvals) Approvals ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#approve-deposit) [Approve Deposit](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L46) Copy function approveDeposit( address spender, address token, uint256 amount ) external payable nonReentrant; Approves an address to access a Farmer's Deposit. Parameter Type Description `spender` `address` Address to be given approval. `token` `address` Address of ERC20. `amount` `uint256` Amount to be approved. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#increase-deposit-allowance) [Increase Deposit Allowance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L63) Copy function increaseDepositAllowance( address spender, address token, uint256 addedValue ) public virtual nonReentrant returns (bool); Increases transfer allowance of a Deposit. Parameter Type Description `spender` `address` Address to increase approval for. `token` `address` Address of ERC20. `addedValue` `uint256` Additional approval value to be given. Return Value Description `bool` If the allowance increase was successful. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#decrease-deposit-allowance) [Decrease Deposit Allowance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L84) Decreases transfer allowance of a Deposit. Parameter Type Description `spender` `address` Address to decrease approval for. `token` `address` Address of ERC20. `subtractedValue` `uint256` Amount of approval value to be removed. Return Value Description `bool` Success. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#permits) Permits Farm balances and Silo Deposits support [EIP-2612 permits](https://eips.ethereum.org/EIPS/eip-2612) , which allows Farmers to delegate use of their Farm balances and Silo Deposits through permits without the need for a separate transaction. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#permit-deposits) [Permit Deposits](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L115) Permits multiple Deposits. Parameter Type Description `owner` `address` Owner of the Deposit. `spender` `address` Address to permit. `tokens` `address[]` Array of ERC20s to permit. `values` `uint256[]` Array of amount (corresponding to `tokens`) to permit. `deadline` `uint256` Expiration of signature (Unix time). `v` `uint8` Recovery ID. `r` `bytes32` ECDSA signature output. `s` `bytes32` ECDSA signature output. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#permit-deposit) [Permit Deposit](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L143) Permits a single Deposit. Parameter Type Description `owner` `address` Owner of the Deposit. `spender` `address` Address to permit. `token` `address` ERC20 to permit. `value` `uint256` Amount of `token` to permit. `deadline` `uint256` Expiration of signature (Unix time). `v` `uint8` Recovery ID. `r` `bytes32` ECDSA signature output. `s` `bytes32` ECDSA signature output. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#set-approval-for-all) [Set Approval for All](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L187) Set ERC-1155 approvals. Grants or revokes permission to `operator` to transfer the caller’s tokens, according to `approved`. Parameter Type Description `spender` `address` Address to approve spending for. `approved` `bool` Whether or not to approve. [](https://docs.bean.money/developers/protocol/silo/approval-facet#view-functions) View Functions ------------------------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#deposit-permit-nonces) [Deposit Permit Nonces](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L160) Returns the current nonce for Deposit permits. Parameter Type Description `owner` `address` Owner of the Deposit. Return Value Description `uint256` Current nonce for Deposit permits. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#deposit-permit-domain-separator) [Deposit Permit Domain Separator](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L167) Returns the domain separator for the current chain ([link](https://docs.openzeppelin.com/contracts/3.x/api/drafts#EIP712-_domainSeparatorV4--) ). Return Value Description `bytes32` The domain separator for the current chain. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#deposit-allowance) [Deposit Allowance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L178) Returns how much of a `token` Deposit that `spender` can transfer on behalf of `owner`. Parameter Type Description `owner` `address` Owner of the Deposit. `spender` `address` The address that can spend the Deposit. `token` `address` The token Deposit that `spender` can transfer. Return Value Description `uint256` The `token` Deposit amount that `spender` can transfer on behalf of `owner`. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#is-approved-for-all) [Is Approved for All](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L195) Returns true if `_operator` is approved to transfer `_owner`'s Deposit. Parameter Type Description `_owner` `address` Owner of the Deposit. `_operator` `address` Spender of the Deposit. Return Value Description `bool` True if `_operator` is approved to transfer `_owner`'s tokens. [](https://docs.bean.money/developers/protocol/silo/approval-facet#events) Events -------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#event-deposit-approval) [Deposit Approval](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L26) Emitted when a Deposit is approved to spend by another account. Parameter Type Description `owner` `address` Owner of the Deposit. `spender` `address` Spender of the Deposit. `token` `address` Deposit token that can be spent. `amount` `uint256` Amount of the Deposit token that can be spent. ### [](https://docs.bean.money/developers/protocol/silo/approval-facet#event-deposit-approval-1) [Approval for All](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/silo/ApprovalFacet.sol#L32) Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved` ([link](https://docs.openzeppelin.com/contracts/3.x/api/token/erc1155#IERC1155-ApprovalForAll-address-address-bool-) ). Parameter Type Description `account` `address` Owner of the Deposit. `operator` `address` Spender of the Deposit. `approved` `address` Whether or not the Deposit was approved. [PreviousEnroot Facet](https://docs.bean.money/developers/protocol/silo/convert-facet-2) [NextMetadata Facet](https://docs.bean.money/developers/protocol/silo/metadata-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/silo/approval-facet#call-functions) * [Approvals](https://docs.bean.money/developers/protocol/silo/approval-facet#approvals) * [Approve Deposit](https://docs.bean.money/developers/protocol/silo/approval-facet#approve-deposit) * [Increase Deposit Allowance](https://docs.bean.money/developers/protocol/silo/approval-facet#increase-deposit-allowance) * [Decrease Deposit Allowance](https://docs.bean.money/developers/protocol/silo/approval-facet#decrease-deposit-allowance) * [Permits](https://docs.bean.money/developers/protocol/silo/approval-facet#permits) * [Permit Deposits](https://docs.bean.money/developers/protocol/silo/approval-facet#permit-deposits) * [Permit Deposit](https://docs.bean.money/developers/protocol/silo/approval-facet#permit-deposit) * [Set Approval for All](https://docs.bean.money/developers/protocol/silo/approval-facet#set-approval-for-all) * [View Functions](https://docs.bean.money/developers/protocol/silo/approval-facet#view-functions) * [Deposit Permit Nonces](https://docs.bean.money/developers/protocol/silo/approval-facet#deposit-permit-nonces) * [Deposit Permit Domain Separator](https://docs.bean.money/developers/protocol/silo/approval-facet#deposit-permit-domain-separator) * [Deposit Allowance](https://docs.bean.money/developers/protocol/silo/approval-facet#deposit-allowance) * [Is Approved for All](https://docs.bean.money/developers/protocol/silo/approval-facet#is-approved-for-all) * [Events](https://docs.bean.money/developers/protocol/silo/approval-facet#events) * [Deposit Approval](https://docs.bean.money/developers/protocol/silo/approval-facet#event-deposit-approval) * [Approval for All](https://docs.bean.money/developers/protocol/silo/approval-facet#event-deposit-approval-1) Copy function decreaseDepositAllowance( address spender, address token, uint256 subtractedValue ) public virtual nonReentrant returns (bool); Copy function permitDeposits( address owner, address spender, address[] calldata tokens, uint256[] calldata values, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external payable nonReentrant; Copy function permitDeposit( address owner, address spender, address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external payable nonReentrant; Copy function setApprovalForAll( address spender, bool approved ) external; Copy function depositPermitNonces(address owner) public view virtual returns (uint256); Copy function depositPermitDomainSeparator() external view returns (bytes32); Copy function depositAllowance( address owner, address spender, address token ) public view virtual returns (uint256); Copy function isApprovedForAll( address _owner, address _operator ) external view returns (bool); Copy event DepositApproval( address indexed owner, address indexed spender, address token, uint256 amount ); Copy event ApprovalForAll(address indexed account, address indexed operator, bool approved); --- # Unripe Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/barn/unripe-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Unripe Facet handles logic for the vesting of Unripe assets. [](https://docs.bean.money/developers/protocol/barn/unripe-facet#call-functions) Call Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#chop) [Chop](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L51) Copy function chop( address unripeToken, uint256 amount, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable nonReentrant returns (uint256 underlyingAmount); WIP Parameter Type Description `unripeToken` `address` WIP `amount` `uint256` WIP `fromMode` `From` WIP `toMode` `To` WIP Return Value Type Description `underlyingAmount` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#pick) [Pick](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L72) WIP Parameter Type Description `token` `address` WIP `amount` `uint256` WIP `proof` `bytes32[]` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#add-unripe-token) [Add Unripe Token](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L227) WIP Parameter Type Description `unripeToken` `address` WIP `underlyingToken` `address` WIP `root` `bytes32` WIP [](https://docs.bean.money/developers/protocol/barn/unripe-facet#view-functions) View Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#picked) [Picked](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L97) WIP Parameter Type Description `account` `address` WIP `token` `address` WIP Return Type Description `bool` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-underlying) [Get Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L105) WIP Parameter Type Description `unripeToken` `address` WIP `amount` `uint256` WIP Return Value Type Description `redeem` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-penalty) [Get Penalty](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L123) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `penalty` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-penalized-underlying) [Get Penalized Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L131) WIP Parameter Type Description `unripeToken` `address` WIP `amount` `uint256` WIP Return Value Type Description `redeem` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-penalized-underlying-1) [\_Get Penalized Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L139) WIP Parameter Type Description `unripeToken` `address` WIP `amount` `uint256` WIP `supply` `uint256` WIP Return Value Type Description `redeem` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#is-unripe) [Is Unripe](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L149) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `unripe` `bool` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#balance-of-underlying) [Balance Of Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L153) WIP Parameter Type Description `unripeToken` `address` WIP `account` `address` WIP Return Value Type Description `underlying` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#balance-of-penalized-underlying) [Balance Of Penalized Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L162) WIP Parameter Type Description `unripeToken` `address` WIP `account` `address` WIP Return Value Type Description `underlying` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-recap-funded-percent) [Get Recap Funded Percent](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L174) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `percent` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-percent-penalty) [Get Percent Penalty](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L187) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `penalty` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-recap-paid-percent) [Get Recap Paid Percent](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L195) WIP Return Value Type Description `penalty` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-recap-paid-percent-amount) [Get Recap Paid Percent Amount](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L199) WIP Parameter Type Description `amount` `uint256` WIP Return Value Type Description `penalty` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-underlying-per-unripe-token) [Get Underlying Per Unripe Token](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L207) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `underlyingPerToken` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-total-underlying) [Get Total Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L219) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `underlying` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-underlying-token) [Get Underlying Token](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L238) WIP Parameter Type Description `unripeToken` `address` WIP Return Value Type Description `underlyingToken` `address` WIP [](https://docs.bean.money/developers/protocol/barn/unripe-facet#events) Events ------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-add-unripe-token) [Add Unripe Token](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L30) WIP Parameter Type Description `unripeToken` `address` WIP `underlyingToken` `address` WIP `merkleRoot` `bytes32` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-change-underlying) [Change Underlying](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L36) WIP Parameter Type Description `token` `address` WIP `underlying` `int256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-chop) [Chop](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L38) WIP Parameter Type Description `account` `address` WIP `token` `address` WIP `amount` `uint256` WIP `underlying` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-pick) [Pick](https://github.com/BeanstalkFarms/Beanstalk/blob/9ca85613d40a3883377de0d9377623d49fff5b9c/protocol/contracts/farm/facets/UnripeFacet.sol#L45) WIP Parameter Type Description `account` `address` WIP `token` `address` WIP `amount` `uint256` WIP [PreviousFertilizer Facet](https://docs.bean.money/developers/protocol/barn/fertilizer-facet) [NextMarket](https://docs.bean.money/developers/protocol/market) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/barn/unripe-facet#call-functions) * [Chop](https://docs.bean.money/developers/protocol/barn/unripe-facet#chop) * [Pick](https://docs.bean.money/developers/protocol/barn/unripe-facet#pick) * [Add Unripe Token](https://docs.bean.money/developers/protocol/barn/unripe-facet#add-unripe-token) * [View Functions](https://docs.bean.money/developers/protocol/barn/unripe-facet#view-functions) * [Picked](https://docs.bean.money/developers/protocol/barn/unripe-facet#picked) * [Get Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-underlying) * [Get Penalty](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-penalty) * [Get Penalized Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-penalized-underlying) * [\_Get Penalized Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-penalized-underlying-1) * [Is Unripe](https://docs.bean.money/developers/protocol/barn/unripe-facet#is-unripe) * [Balance Of Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#balance-of-underlying) * [Balance Of Penalized Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#balance-of-penalized-underlying) * [Get Recap Funded Percent](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-recap-funded-percent) * [Get Percent Penalty](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-percent-penalty) * [Get Recap Paid Percent](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-recap-paid-percent) * [Get Recap Paid Percent Amount](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-recap-paid-percent-amount) * [Get Underlying Per Unripe Token](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-underlying-per-unripe-token) * [Get Total Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-total-underlying) * [Get Underlying Token](https://docs.bean.money/developers/protocol/barn/unripe-facet#get-underlying-token) * [Events](https://docs.bean.money/developers/protocol/barn/unripe-facet#events) * [Add Unripe Token](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-add-unripe-token) * [Change Underlying](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-change-underlying) * [Chop](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-chop) * [Pick](https://docs.bean.money/developers/protocol/barn/unripe-facet#event-pick) Copy function pick( address token, uint256 amount, bytes32[] memory proof, LibTransfer.To mode ) external payable nonReentrant; Copy function addUnripeToken( address unripeToken, address underlyingToken, bytes32 root ) external payable nonReentrant; Copy function picked(address account, address token) public view returns (bool); Copy function getUnderlying(address unripeToken, uint256 amount) public view returns (uint256 redeem); Copy function getPenalty(address unripeToken) external view returns (uint256 penalty); Copy function getPenalizedUnderlying(address unripeToken, uint256 amount) public view returns (uint256 redeem); Copy function _getPenalizedUnderlying(address unripeToken, uint256 amount, uint256 supply) public view returns (uint256 redeem); Copy function isUnripe(address unripeToken) public view returns (bool unripe); Copy function balanceOfUnderlying(address unripeToken, address account) external view returns (uint256 underlying); Copy function balanceOfPenalizedUnderlying(address unripeToken, address account) external view returns (uint256 underlying); Copy function getRecapFundedPercent(address unripeToken) public view returns (uint256 percent); Copy function getPercentPenalty(address unripeToken) external view returns (uint256 penalty); Copy function getRecapPaidPercent() external view returns (uint256 penalty); Copy function getRecapPaidPercentAmount(uint256 amount) private view returns (uint256 penalty); Copy function getUnderlyingPerUnripeToken(address unripeToken) external view returns (uint256 underlyingPerToken); Copy function getTotalUnderlying(address unripeToken) external view returns (uint256 underlying); Copy function getUnderlyingToken(address unripeToken) external view returns (address underlyingToken) Copy event AddUnripeToken( address indexed unripeToken, address indexed underlyingToken, bytes32 merkleRoot ); Copy event ChangeUnderlying(address indexed token, int256 underlying); Copy event Chop( address indexed account, address indexed token, uint256 amount, uint256 underlying ); Copy event Pick( address indexed account, address indexed token, uint256 amount ); --- # Token Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/depot/token-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Token Facet handles the transfers of assets outside the Silo. [](https://docs.bean.money/developers/protocol/depot/token-facet#call-functions) Call Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/depot/token-facet#transfers) Transfers ### [](https://docs.bean.money/developers/protocol/depot/token-facet#transfer-token) [Transfer Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L56) Copy function transferToken( IERC20 token, address recipient, uint256 amount, LibTransfer.From fromMode, LibTransfer.To toMode ) external payable; Transfers an asset from a Farmer's Internal and/or External Balance to a Farmer's Internal or External Balance. Parameter Type Description `token` `IERC20` The token to be transferred. `recipient` `address` The recipient of the transferred tokens (can be `msg.sender`). `amount` `uint256` The amount of tokens to be transferred. `fromMode` `From` Specifies what balance to receive the tokens from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). `toMode` `To` Specifies what balance to send the tokens to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#transfer-internal-token-from) [Transfer Internal Token From](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L77) WIP Parameter Type Description `token` `IERC20` WIP `sender` `address` WIP `recipient` `address` WIP `amount` `uint256` WIP `toMode` `To` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#approvals) Approvals ### [](https://docs.bean.money/developers/protocol/depot/token-facet#approve-token) [Approve Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L104) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#increase-token-allowance) [Increase Token Allowance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L115) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#decrease-token-allowance) [Decrease Token Allowance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L133) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#token-allowance) [Token Allowance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L159) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#permits) Permits ### [](https://docs.bean.money/developers/protocol/depot/token-facet#permit-token) [Permit Token](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L172) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#token-permit-nonces) [Token Permit Nonces](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L189) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#token-permit-domain-separator) [Token Permit Domain Separator](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L236) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#erc-1155) ERC-1155 ### [](https://docs.bean.money/developers/protocol/depot/token-facet#on-erc-1155-received) [On ERC-1155 Received](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L206) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#on-erc-1155-batch-received) [On ERC-1155 Batch Received](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L222) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#weth) WETH ### [](https://docs.bean.money/developers/protocol/depot/token-facet#wrap-ether) [Wrap Ether](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenFacet.sol#L178) Wraps Ether into WETH. Parameter Type Description `amount` `uint256` The amount of Ether to wrap into WETH. Must be `<= msg.value`. `toMode` `To` Specifies what balance to send the WETH to (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). ### [](https://docs.bean.money/developers/protocol/depot/token-facet#unwrap-ether) [Unwrap Ether](https://github.com/BeanstalkFarms/Beanstalk/blob/fd132ae4eda02e502441c3d28d04ad2c21b4e339/protocol/contracts/farm/facets/TokenFacet.sol#L183) Unwraps WETH into Ether. Parameter Type Description `amount` `uint256` The amount of WETH to unwrap into Ether. `fromMode` `From` Specifies what balance to receive the WETH from (see [Internal Balances](https://docs.bean.money/developers/overview/internal-balances) ). [](https://docs.bean.money/developers/protocol/depot/token-facet#view-functions) View Functions ---------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-internal-balance) [Get Internal Balance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L262) Parameter Type Description `account` `address` WIP `token` `IERC20` WIP Return Value Type Description `balance` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-internal-balances) [Get Internal Balances](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L273) Parameter Type Description `account` `address` WIP `tokens` `IERC20[]` WIP Return Value Type Description `balances` `uint256[]` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-external-balance) [Get External Balance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L289) Parameter Type Description `account` `address` WIP `token` `IERC20` WIP Return Value Type Description `balance` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-external-balances) [Get External Balances](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L300) Parameter Type Description `account` `address` WIP `tokens` `IERC20[]` WIP Return Value Type Description `balances` `uint256[]` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-balance) [Get Balance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L316) Parameter Type Description `account` `address` WIP `token` `IERC20` WIP Return Value Type Description `balance` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-balances) [Get Balances](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L328) Parameter Type Description `account` `address` WIP `tokens` `IERC20[]` WIP Return Value Type Description `balances` `uint256[]` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-all-balance) [Get All Balance](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L343) Parameter Type Description `account` `address` WIP `token` `IERC20` WIP Return Value Type Description `b` `Balance` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#get-all-balances) [Get All Balances](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L357) Parameter Type Description `account` `address` WIP `tokens` `IERC20[]` WIP Return Value Type Description `balances` `Balance[]` WIP [](https://docs.bean.money/developers/protocol/depot/token-facet#events) Events ------------------------------------------------------------------------------------ ### [](https://docs.bean.money/developers/protocol/depot/token-facet#event-internal-balance-changed) [Internal Balance Changed](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L31) Parameter Type Description `account` `address` WIP `token` `IERC20` WIP `delta` `int256` WIP ### [](https://docs.bean.money/developers/protocol/depot/token-facet#event-token-approval) [Token Approval](https://github.com/BeanstalkFarms/Beanstalk/blob/master/protocol/contracts/beanstalk/farm/TokenFacet.sol#L37) Parameter Type Description `owner` `address` WIP `spender` `address` WIP `token` `IERC20` WIP `amount` `uint256` WIP [PreviousDepot Facet](https://docs.bean.money/developers/protocol/depot/depot-facet) [NextToken Support Facet](https://docs.bean.money/developers/protocol/depot/token-support-facet) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/depot/token-facet#call-functions) * [Transfers](https://docs.bean.money/developers/protocol/depot/token-facet#transfers) * [Transfer Token](https://docs.bean.money/developers/protocol/depot/token-facet#transfer-token) * [Transfer Internal Token From](https://docs.bean.money/developers/protocol/depot/token-facet#transfer-internal-token-from) * [Approvals](https://docs.bean.money/developers/protocol/depot/token-facet#approvals) * [Approve Token](https://docs.bean.money/developers/protocol/depot/token-facet#approve-token) * [Increase Token Allowance](https://docs.bean.money/developers/protocol/depot/token-facet#increase-token-allowance) * [Decrease Token Allowance](https://docs.bean.money/developers/protocol/depot/token-facet#decrease-token-allowance) * [Token Allowance](https://docs.bean.money/developers/protocol/depot/token-facet#token-allowance) * [Permits](https://docs.bean.money/developers/protocol/depot/token-facet#permits) * [Permit Token](https://docs.bean.money/developers/protocol/depot/token-facet#permit-token) * [Token Permit Nonces](https://docs.bean.money/developers/protocol/depot/token-facet#token-permit-nonces) * [Token Permit Domain Separator](https://docs.bean.money/developers/protocol/depot/token-facet#token-permit-domain-separator) * [ERC-1155](https://docs.bean.money/developers/protocol/depot/token-facet#erc-1155) * [On ERC-1155 Received](https://docs.bean.money/developers/protocol/depot/token-facet#on-erc-1155-received) * [On ERC-1155 Batch Received](https://docs.bean.money/developers/protocol/depot/token-facet#on-erc-1155-batch-received) * [WETH](https://docs.bean.money/developers/protocol/depot/token-facet#weth) * [Wrap Ether](https://docs.bean.money/developers/protocol/depot/token-facet#wrap-ether) * [Unwrap Ether](https://docs.bean.money/developers/protocol/depot/token-facet#unwrap-ether) * [View Functions](https://docs.bean.money/developers/protocol/depot/token-facet#view-functions) * [Get Internal Balance](https://docs.bean.money/developers/protocol/depot/token-facet#get-internal-balance) * [Get Internal Balances](https://docs.bean.money/developers/protocol/depot/token-facet#get-internal-balances) * [Get External Balance](https://docs.bean.money/developers/protocol/depot/token-facet#get-external-balance) * [Get External Balances](https://docs.bean.money/developers/protocol/depot/token-facet#get-external-balances) * [Get Balance](https://docs.bean.money/developers/protocol/depot/token-facet#get-balance) * [Get Balances](https://docs.bean.money/developers/protocol/depot/token-facet#get-balances) * [Get All Balance](https://docs.bean.money/developers/protocol/depot/token-facet#get-all-balance) * [Get All Balances](https://docs.bean.money/developers/protocol/depot/token-facet#get-all-balances) * [Events](https://docs.bean.money/developers/protocol/depot/token-facet#events) * [Internal Balance Changed](https://docs.bean.money/developers/protocol/depot/token-facet#event-internal-balance-changed) * [Token Approval](https://docs.bean.money/developers/protocol/depot/token-facet#event-token-approval) Copy function transferInternalTokenFrom( IERC20 token, address sender, address recipient, uint256 amount, LibTransfer.To toMode ) external payable nonReentrant; Copy function approveToken( address spender, IERC20 token, uint256 amount ) external payable nonReentrant; Copy function increaseTokenAllowance( address spender, IERC20 token, uint256 addedValue ) public virtual nonReentrant returns (bool); Copy function decreaseTokenAllowance( address spender, IERC20 token, uint256 subtractedValue ) public virtual nonReentrant returns (bool); Copy function tokenAllowance( address account, address spender, IERC20 token ) public view virtual returns (uint256); Copy function permitToken( address owner, address spender, address token, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external payable nonReentrant; Copy function tokenPermitNonces(address owner) public view virtual returns (uint256); Copy function tokenPermitDomainSeparator() external view returns (bytes32); Copy function onERC1155Received( address, address, uint256, uint256, bytes calldata ) external pure override returns (bytes4); Copy function onERC1155BatchReceived( address, address, uint256[] calldata, uint256[] calldata, bytes calldata ) external pure override returns (bytes4); Copy function wrapEth(uint256 amount, LibTransfer.To mode) external payable; Copy function unwrapEth(uint256 amount, LibTransfer.From mode) external payable; Copy function getInternalBalance(address account, IERC20 token) public view returns (uint256 balance); Copy function getInternalBalances(address account, IERC20[] memory tokens) external view returns (uint256[] memory balances); Copy function getExternalBalance(address account, IERC20 token) public view returns (uint256 balance); Copy function getExternalBalances(address account, IERC20[] memory tokens) external view returns (uint256[] memory balances); Copy function getBalance(address account, IERC20 token) public view returns (uint256 balance); Copy function getBalances(address account, IERC20[] memory tokens) external view returns (uint256[] memory balances); Copy function getAllBalance(address account, IERC20 token) public view returns (Balance memory b); Copy function getAllBalances(address account, IERC20[] memory tokens) external view returns (Balance[] memory balances); Copy event InternalBalanceChanged( address indexed account, IERC20 indexed token, int256 delta ); Copy event TokenApproval( address indexed owner, address indexed spender, IERC20 token, uint256 amount ); --- # Basin | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/ecosystem/basin.md) . Basin is a composable EVM-native decentralized exchange protocol. Well designed open source protocols enable anyone to (1) compose existing components together, (2) develop new components when existing ones fail to meet the needs of users or are cost-inefficient and (3) verify the proper use of existing components in a simple fashion. Basin allows for anyone to compose new and existing (1) _Well Functions_ (i.e. exchange functions), (2) _Pumps_ (i.e., network native oracles) and (3) _Well Implementations_ (i.e., exchange implementations) to create a _Well_ (i.e., a customized liquidity pool). _Aquifers_ (i.e., Well registries) store a mapping from Well addresses to Well Implementations to enable verification of a Well Implementation given a Well address. ### [](https://docs.bean.money/almanac/ecosystem/basin#links) Links Website: [https://basin.exchange](https://basin.exchange/) Basin Whitepaper: [https://basin.exchange/basin.pdf](https://basin.exchange/basin.pdf) Multi Flow Pump Whitepaper: [https://basin.exchange/multi-flow-pump.pdf](https://basin.exchange/multi-flow-pump.pdf) Basin GitHub: [https://github.com/BeanstalkFarms/Basin](https://github.com/BeanstalkFarms/Basin) Discord: [https://basin.exchange/discord](https://basin.exchange/discord) Twitter: [https://twitter.com/basinexchange](https://twitter.com/basinexchange) Docs: [https://docs.basin.exchange](https://docs.basin.exchange/) Halborn Audit Report: [https://basin.exchange/halborn-basin-audit.pdf](https://basin.exchange/halborn-basin-audit.pdf) Cyfrin Audit Report: [https://basin.exchange/cyfrin-basin-audit.pdf](https://basin.exchange/cyfrin-basin-audit.pdf) Code4rena Audit Report: [https://code4rena.com/reports/2023-07-basin](https://code4rena.com/reports/2023-07-basin) [PreviousBug Bounty](https://docs.bean.money/almanac/protocol/bug-bounty) [NextPipeline](https://docs.bean.money/almanac/ecosystem/pipeline) Last updated 1 year ago --- # BeaNFTs | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/beanfts.md) . Guides on minting BeaNFTs. * [Mint BeaNFTs](https://docs.bean.money/almanac/guides/beanfts/mint-beanfts) [PreviousMigrate to Arbitrum](https://docs.bean.money/almanac/guides/balances/migrate-to-arbitrum) [NextMint BeaNFTs](https://docs.bean.money/almanac/guides/beanfts/mint-beanfts) Last updated 1 year ago --- # Crop Ratio | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/peg-maintenance/crop-ratio.md) . Beanstalk is a credit-based stablecoin protocol. The main goal of Beanstalk is to regularly oscillate the Bean price across $1, indefinitely. Beanstalk's primary peg maintenance mechanism, and theoretical basis for existence, is the [Field](https://docs.bean.money/almanac/farm/field) (_i.e._, the Beanstalk credit facility). The ability for Beanstalk to borrow Beans from the open market at a reasonable interest rate is essential for long term peg maintenance. However, with the successful addition of Conversions within the Silo in December 2021, a second peg maintenance mechanism was discovered. The ability to add and remove Beans from liquidity pools to decrease and increase the Bean price, respectively, changes the Bean price without any outflows or inflows from the system. Currently, Converts are limited in that Depositors can only Convert between Beans and LP tokens, and vice versa (_i.e._, not across LP tokens). Furthermore, the incentives for Converting in a given direction with respect to peg (in particular, Seed allocations to the various assets whitelisted for Deposit) are not adjusted autonomously in response to Beanstalk's state. With the introduction of the Seed Gauge System, now Beanstalk also measures its liquidity level (in practice, the Liquidity to Supply Ratio, or L2SR). * * * In order to adjust the Crop Ratio, in practice Beanstalk adjusts a scalar (the Crop Scalar) between 0 and 1, where 0 results in the minimum Bean to Max LP Ratio and 1 results in the maximum Bean to Max LP Ratio. Therefore, the peg maintenance mechanism can adjust the Bean to Max LP Ratio independently of the minimum and maximum values (set to 50% and 100%, respectively). At the beginning of each [Season](https://docs.bean.money/almanac/farm/sun) , Beanstalk changes the Crop Scalar depending on its position ([price](https://docs.bean.money/almanac/peg-maintenance/overview#decentralized-price-oracle) , [debt level](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) and [liquidity level](https://docs.bean.money/almanac/peg-maintenance/overview#liquidity-level) ) with respect to its [ideal equilibrium](https://docs.bean.money/almanac/peg-maintenance/overview#ideal-equilibrium) . Considering the current state and the liquidity level, Beanstalk adjusts the Crop Scalar to move toward the optimal state: ### [](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#excessively-low-l2sr) Excessively Low L2SR ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FYq9IRPcwGkW98t1jpeNm%252Fimage.png%3Falt%3Dmedia%26token%3Dd7750e90-0aa2-4df9-9998-576bfce8962d&width=768&dpr=3&quality=100&sign=f73b5ff&sv=2) No matter the L2SR, when P > Q, Beanstalk should maximally incentivize Converting to LP Deposits by aggressively decreasing the Crop Ratio. By decreasing the scalar by 0.5 each Season, the Crop Ratio returns to the minimum value within 2 Seasons. When L2SR is excessively low, in all cases, Beanstalk should be similarly aggressive in incentivizing Conversions to LP Deposits by quickly reaching the minimum Crop Ratio. ### [](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#reasonably-low-l2sr) Reasonably Low L2SR ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FDuyWRIDS7G3xE4fhV8K3%252Fimage.png%3Falt%3Dmedia%26token%3Ddf16e8d7-f374-4eb4-99ba-f01215962ef4&width=768&dpr=3&quality=100&sign=ca31638b&sv=2) When the L2SR is reasonably low and Pod Rate is low, Beanstalk should be similarly aggressive in reaching the minimum Crop Ratio given that, at the margin, Beanstalk would rather take on debt than lose liquidity. When the L2SR is reasonably low and Pod Rate is high, Beanstalk should gradually increase the Crop Ratio when P > 1 (to incentivize Conversions above peg) and gradually decrease it when P < 1 (to incentivize Conversions below peg). By changing the scalar by 0.01 each Season, the Crop Ratio can change from the maximum to the minimum value (or vice versa) within 100 Seasons. ### [](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#reasonably-high-l2sr) Reasonably High L2SR ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252F3crTcGoqJyiekKnffYfX%252Fimage.png%3Falt%3Dmedia%26token%3D0a056835-e03d-4db8-81d2-681e8f5963c3&width=768&dpr=3&quality=100&sign=7820b144&sv=2) When L2SR is reasonably high and P < 1, Beanstalk should similarly gradually increase the Crop Ratio to incentivize Converting from LP Deposits to Bean Deposits, and vice versa when P > 1. ### [](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#excessively-high-l2sr) Excessively High L2SR ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fb1rG03v1WJpzS3ah7mlK%252Fimage.png%3Falt%3Dmedia%26token%3D2e15cf90-2f4a-47d3-9db0-d1abeabcdb58&width=768&dpr=3&quality=100&sign=5714bf9c&sv=2) When L2SR is excessively high, Beanstalk should be more willing to accept a loss of liquidity rather than an increase in debt level at the margin. Therefore, it should adjust the Crop Scalar just as it does when L2SR is reasonably high, except it can be slightly more aggressive when P < 1 and the Pod Rate is high. By increasing the Crop Scalar by 0.02, the Crop Ratio can change from the minimum to the maximum value within 50 Seasons. [PreviousTemperature](https://docs.bean.money/almanac/peg-maintenance/temperature) [NextConvert](https://docs.bean.money/almanac/peg-maintenance/convert) Last updated 1 year ago * [Excessively Low L2SR](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#excessively-low-l2sr) * [Reasonably Low L2SR](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#reasonably-low-l2sr) * [Reasonably High L2SR](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#reasonably-high-l2sr) * [Excessively High L2SR](https://docs.bean.money/almanac/peg-maintenance/crop-ratio#excessively-high-l2sr) --- # Mint BeaNFTs | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/beanfts/mint-beanfts.md) . BeaNFTs can be viewed and minted on the [BeaNFTs](https://app.bean.money/#/nft) page. See the [BeaNFT documentation](https://docs.bean.money/almanac/governance/beanfts) for more info. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Select ā€œMoreā€ then ā€œBeaNFTsā€ to navigate to the [BeaNFTs](https://app.bean.money/#/nft) page. 3. Switch the current tab to the collection in which you have an unminted BeaNFT. 4. If you would like to mint a single BeaNFT from the selected collection, select an unminted BeaNFT and select "Mint" in the modal. If you would like to mint all unminted BeaNFTs in the selected collection, select "Mint All \[Collection\]" in the top right of the component. 5. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 6. After the transaction has been confirmed by the network, the minted BeaNFT(s) will be sent to your wallet. You can still view them on the [BeaNFT](https://app.bean.money/#/nft) page or on a site like [OpenSea](https://opensea.io/account) . [PreviousBeaNFTs](https://docs.bean.money/almanac/guides/beanfts) [NextSwap](https://docs.bean.money/almanac/guides/swap) Last updated 1 year ago --- # Balances | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/balances.md) . Guides on understanding your Beanstalk balances. * [Understand My Balances](https://docs.bean.money/almanac/guides/balances/understand-my-balances) [PreviousSell Pods](https://docs.bean.money/almanac/guides/market/sell-pods) [NextUnderstand My Balances](https://docs.bean.money/almanac/guides/balances/understand-my-balances) Last updated 1 year ago --- # Sun | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/sun.md) . Guides on understanding the Bean price and how [the Sun](https://docs.bean.money/almanac/farm/sun) affects Beanstalk. * [Understand the Bean Price](https://docs.bean.money/almanac/guides/sun/understand-price) * [Understand the Sun](https://docs.bean.money/almanac/guides/sun/understand-sun) [PreviousAdd Bean to MetaMask](https://docs.bean.money/almanac/guides/getting-started/add-bean-to-metamask) [NextUnderstand the Bean Price](https://docs.bean.money/almanac/guides/sun/understand-price) Last updated 1 year ago --- # Swap | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/swap.md) . Guides on trading and transferring Beans. * [Trade Beans](https://docs.bean.money/almanac/guides/swap/trade-beans) * [Transfer Balances](https://docs.bean.money/almanac/guides/swap/transfer-balances) [PreviousMint BeaNFTs](https://docs.bean.money/almanac/guides/beanfts/mint-beanfts) [NextTrade Beans](https://docs.bean.money/almanac/guides/swap/trade-beans) Last updated 1 year ago --- # BIC Process | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk/bic-process.md) . **This document can be found on Arweave** [**here**](https://bean.money/bic-process) **.** The **Beanstalk Immunefi Committee**, **or BIC**, determines the categorization and payout of bug bounties in accordance with the bug bounty program structure approved by the Beanstalk DAO. The Immunefi Bug Bounty Program is primarily focused preventing loss of Farmers' Beanstalk assets in Beanstalk and other ecosystem smart contracts. You can read more about the current BIC Members and data on past Beans minted for bounties on the [BICM Dashboard](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard) in the Farmers' Almanac. All Immunefi bug reports and their responses are logged [here](https://community.bean.money/bug-reports) . [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#immunefi-program) Immunefi Program ----------------------------------------------------------------------------------------------------------- You can read the full program and submit bug reports on the [Immunefi Bug Bounty Program](https://immunefi.com/bounty/beanstalk) page. The latest version of the program approved by the DAO can be found on Arweave [here](https://arweave.net/IHajdEOSH3UcCy4gEUaSiEqI17-pCHCl_no3zbC8LPU) . In summary: * The max bounty is 1,100,000 Beans; * Bugs are categorized as Critical, High or Medium severity; * The BIC determines whether a whitehat is entitled to a bug bounty/reward, and if so, the amount of such bounty/reward according to the defined bug bounty program structure; and * Immunefi serves as a mediator in cases where a whitehat disputes the BIC's determination of whether the whitehat is entitled to any bug bounty/reward, or what the appropriate bounty/reward should be within each Impact range. Security is paramount to the success of Beanstalk. Immunefi is crypto's leading bug bounty platform that many other well-known DeFi protocols use to facilitate their bug bounty programs. This bounty program is competitive with the largest programs currently on Immunefi. This program establishes a method for the reporting and fixing bugs in a way that minimizes the risk to Beanstalk (and other ecosystem contracts) between the report and the fix, as well as the fair and transparent compensation for the reporting of bugs. The program gives bounty hunters a clear process and structure in order to increase the likelihood they attempt to find issues with Beanstalk and its related contracts and code. The BIC structure of community-known members (see [BICM Dashboard](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard) ) and public Snapshot proposals (see [Beanstalk Bug Bounty Snapshot space](https://snapshot.org/#/beanstalkbugbounty.eth) ) allows the Beanstalk community to scrutinize decisions, while still allowing the BIC to move swiftly in response to bug reports. The BIC consists of technical members of the Beanstalk community due to the nature of the BIC. The BIC can keep the bug information private while the bug is unfixed, and then has a clear process to disclose the bug to the public and compensate the whitehat. Having several members on the BIC and requiring a majority vote to execute bug bounty payments increases decentralization. [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#responsibilities) Responsibilities ----------------------------------------------------------------------------------------------------------- The BIC has the following primary responsibilities: * Following the processes outlined in [Response Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process#response-process) ; and * Updating the Immunefi Bug Bounty Program when necessary. The BIC may update the Immunefi Bug Bounty Program without a proposal in the following cases: * Adding/removing assets as in scope, particularly adding contracts that have been audited and/or have attracted large amounts of Beans/BDV; * Adding/removing impacts as in scope; * Adding/removing rules to the Out of Scope section; * Adding documentation and links; and * Updating language to improve clarity. Any other changes to the Immunefi Bug Bounty Program require a BOP (or BIP). [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#changing-members) Changing Members ----------------------------------------------------------------------------------------------------------- In the event that one or more members are deemed unfit for the BIC (or a member voluntarily chooses to be removed), the BIC will rotate them out and replace them with a backup member approved by the DAO (no Snapshot proposal required). [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#response-process) Response Process ----------------------------------------------------------------------------------------------------------- The following outlines the process that the BIC follows upon receipt of a bug report. ### [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#immediate-response) Immediate Response After a bug report is submitted through the Immunefi Dashboard, all BIC Members are notified via email. As mentioned in the bug bounty program, in order to be considered for the maximum potential reward, bug reports must come with a Proof of Concept (PoC). In response to each bug report, the BIC will immediately evaluate the validity and severity of the bug, as well as the PoC if included in the bug report. ### [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#bug-fix) Bug Fix If it is determined that the bug report is invalid, the BIC will close the report on the Immunefi Dashboard. BIC responses to all bug reports are logged [here](https://community.bean.money/bug-reports) . If it is determined that the bug report is valid, the BIC will work with the corresponding party (the [BCM](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard) , etc.) to resolve the issue as soon as possible via an emergency upgrade. The fix will be forwarded to an auditor for review, if applicable. For Beanstalk and Basin UI bug reports, the BIC will work with Beanstalk Farms to resolve the issue. ### [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#bir-proposal) BIR Proposal As soon as possible after completing the above, the BIC will prepare, but not publish, a BIR, which includes: * Whether the bug report qualifies for a Critical, High or Medium Impact bounty/reward; * What the potential practicable economic damage of the bug is (if categorized as Critical or High Impact); * What the appropriate bounty/reward should be within the Impact range; and * Whether the whitehat is entitled to a bug bounty/reward, and if so, the amount of such bounty/reward. In instances where there are multiple bugs reported in the same report, a BIR will be prepared for each bug. Before a BIR is proposed, its contents are confirmed with the submitter of the bug report via the Immunefi platform. As outlined in the bug bounty structure, in certain instances where the submitting party disputes the BIC’s proposal, Immunefi mediates. If the bounty/reward is less than 50,000 Beans, the BIC may pay the bounty without formally voting on the BIR on Snapshot. If the bounty/reward is greater than or equal to 50,000 Beans, as soon as possible after the implementation of a fix by the BCM, the BIC will: * Publish the BIR to Snapshot; * Announce the existence of the BIR to the Beanstalk community via the Discord; and * Vote on the BIR. BIR voting takes place on the [Beanstalk Bug Bounty Snapshot space](https://snapshot.org/#/beanstalkbugbounty.eth) and lasts for 3 days. Only BIC members propose and vote on BIRs, and each member has one vote. BIC members can either vote For or Against a BIR, and a majority of the BIC voting For is required to pass. ### [](https://docs.bean.money/almanac/governance/beanstalk/bic-process#bir-exection) BIR Exection Once a BIR passes, the BICM executes it by: * Transferring Beans from the BICM to the [Immunefi Vault](https://immunefisupport.zendesk.com/hc/en-us/articles/18233838041745-Vaults-System) , if necessary and to the extent that Beans remain available in the BICM; and * Transferring Beans in the Immunefi Vault to the submitting party’s address. [PreviousBCM Dashboard](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard) [NextBICM Dashboard](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard) Last updated 1 year ago * [Immunefi Program](https://docs.bean.money/almanac/governance/beanstalk/bic-process#immunefi-program) * [Responsibilities](https://docs.bean.money/almanac/governance/beanstalk/bic-process#responsibilities) * [Changing Members](https://docs.bean.money/almanac/governance/beanstalk/bic-process#changing-members) * [Response Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process#response-process) * [Immediate Response](https://docs.bean.money/almanac/governance/beanstalk/bic-process#immediate-response) * [Bug Fix](https://docs.bean.money/almanac/governance/beanstalk/bic-process#bug-fix) * [BIR Proposal](https://docs.bean.money/almanac/governance/beanstalk/bic-process#bir-proposal) * [BIR Exection](https://docs.bean.money/almanac/governance/beanstalk/bic-process#bir-exection) --- # Silo | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/silo.md) . The Silo is the Beanstalk DAO. The Silo uses the Stalk System to create protocol-native financial incentives that improve Beanstalk’s security and Bean’s liquidity and stability. Anyone can become a Silo Member by Depositing whitelisted assets in the Silo to earn Stalk and Seeds. Neither Stalk nor Seeds are liquid. Deposits are represented as ERC-1155 standard tokens. For guides on interacting with the Silo through the Beanstalk UI, go [here](https://docs.bean.money/almanac/guides/silo) . ### [](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) **Deposit Whitelist** To be Deposited into the Silo, an ERC-20 standard token must be on the Deposit Whitelist. Additional tokens may be added to the Deposit Whitelist via [Beanstalk governance](https://github.com/BeanstalkFarms/Farmers-Almanac/blob/master/farm/broken-reference/README.md) . In order for a token to be added to the Deposit Whitelist, Beanstalk requires: 1. The token address; 2. A function to calculate the Bean Denominated Value (BDV) of the token; and 3. The number of Stalk issued per BDV; 4. The number of initial Gauge Points (which determine Grown Stalk issuance across various LP tokens); 5. An oracle for calculating the price on the non-Bean asset in the Well; 6. A function to calculate how the Gauge Points change each Season; 7. A function to calculate what portion of liquidity counts towards the [Liquidity to Supply Ratio](https://docs.bean.money/almanac/peg-maintenance/overview#liquidity-level) calculation (_i.e._, Liquidity Weight); and 8. The optimal percentage of Deposited LP BDV. #### [](https://docs.bean.money/almanac/farm/silo#current-deposit-whitelist) **Current Deposit Whitelist** Whitelisted asset Stalk per BDV Optimal % Deposited LP BDV Liquidity weight [Bean](https://arbiscan.io/address/0xBEA0005B8599265D41256905A9B3073D397812E4) 1 N/A N/A [BEAN:WETH Well](https://arbiscan.io/address/0xBeA00Aa8130aCaD047E137ec68693C005f8736Ce) 1 16% 100% [BEAN:wstETH Well](https://arbiscan.io/address/0xBEa00BbE8b5da39a3F57824a1a13Ec2a8848D74F) 1 26% 100% [BEAN:weETH Well](https://arbiscan.io/address/0xBeA00Cc9F93E9a8aC0DFdfF2D64Ba38eb9C2e48c) 1 14% 100% [BEAN:WBTC Well](https://arbiscan.io/address/0xBea00DDe4b34ACDcB1a30442bD2B39CA8Be1b09c) 1 20% 100% [BEAN:USDC Well](https://arbiscan.io/address/0xBea00ee04D8289aEd04f92EA122a96dC76A91bd7) 1 12% 100% [BEAN:USDT Well](https://arbiscan.io/address/0xbEA00fF437ca7E8354B174339643B4d1814bED33) 1 12% 100%\\ [Unripe Bean](https://arbiscan.io/address/0x1BEA054dddBca12889e07B3E076f511Bf1d27543) \* 1 N/A N/A [Unripe LP](https://arbiscan.io/address/0x1BEA059c3Ea15F6C10be1c53d70C75fD1266D788) \* 1 N/A N/A \*See the [Unripe Assets](https://docs.bean.money/almanac/farm/barn#unripe-assets) section of the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. ### [](https://docs.bean.money/almanac/farm/silo#the-stalk-system) **The Stalk System** When whitelisted assets are Deposited into the Silo, Beanstalk rewards the Depositor with Stalk\* and Seeds. Seeds yield 1/10000 new Stalk every [Season](https://docs.bean.money/almanac/farm/sun) . Stalkholders are entitled to participate in Beanstalk governance and earn a portion of Bean mints. Governance power and distribution of Bean mints are proportional to each Stalkholder's Stalk balance relative to total outstanding Stalk. Older Deposits have their Stalk ownership diluted by newer Deposits upon Deposit. Stalk ownership, and each Stalkholder's share of Beanstalk governance voting power, decentralizes over time. Therefore, newly minted Beans are more widely distributed over time. A design that lowers the Gini coefficient of Beans and Stalk is essential to censorship resistance. Stalkholders can submit and vote on Beanstalk Improvement Proposals (BIPs). Stalkholders receive 1/3 of new Bean mints while there are more than zero Unfertilized Sprouts (Sprouts are issued by the [Barn](https://docs.bean.money/almanac/farm/barn) ). If there are no Unfertilized Sprouts, Stalkholders receive 1/2 of new Bean mints. #### [](https://docs.bean.money/almanac/farm/silo#germination) Germination \*Stalk is rewarded to a Deposit 2 `gm` calls after Deposit. In the interim, new Deposits are considered Germinating. Germinating Deposits can be Withdrawn or Transferred, but cannot be Converted. Germination adds flash loan and inter-block MEV manipulation resistance to the calculation of Deposited BDV (used by the Seed Gauge System). By preventing the accrual of Earned Beans for 1 full Season, Beanstalk further disincentivizes inorganic demand. ### [](https://docs.bean.money/almanac/farm/silo#the-seed-gauge-system) The Seed Gauge System Seeds generate opportunity cost for Withdrawing assets that have been Deposited for longer and marginal benefit for holding particular assets in the Silo in the form of Grown Stalk. There are 3 new primary tools that Beanstalk has at its disposal as a result of the Seed Gauge System: 1. The Target Seasons to Catch Up, which determines 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 of existing Deposits at the time of Deposit; 2. Bean vs LP Seed distribution, or more specifically, the [Crop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) , which determines the relative benefits of holding Bean exposure vs exposure to at least 1 particular LP token in the Silo over time; and 3. LP vs LP Seed distribution, which determines relative benefits of holding a given non-Bean asset in the Silo over time. See [Seed Gauge System](https://docs.bean.money/almanac/farm/silo/seed-gauge-system) section for more information. ### [](https://docs.bean.money/almanac/farm/silo#withdraw) **Withdraw** The associated amount of Stalk, Seeds, and Stalk from Seeds from a given Deposit must be forfeited when the Deposit is Withdrawn from the Silo. The requirement to forfeit Stalk that has grown from Seeds over time creates an opportunity cost to leave the Silo, thereby increasing the stickiness of Deposits the longer they stay Deposited. Deposits can be Withdrawn from the Silo at any time. Deposits can be Transferred to another address directly without the loss of Stalk, Seeds, and Stalk from Seeds. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FQcUU0ksgT5jJEKEQFUn8%252Fdeposit.png%3Falt%3Dmedia%26token%3Dff0c5fe9-661b-4cc8-a17f-34e5a2f9327d&width=768&dpr=3&quality=100&sign=88783bed&sv=2) ### [](https://docs.bean.money/almanac/farm/silo#convert) **Convert** Conversions within the Silo between Bean and LP Deposits serve a major role in peg maintenance. LP Deposits can also be Converted to other LP Deposit types for a potential gain in Stalk and/or Seeds. Conversions from one Deposited asset to another are permissioned by a Convert Whitelist. See [Convert](https://docs.bean.money/almanac/peg-maintenance/convert) section for more information. ### [](https://docs.bean.money/almanac/farm/silo#governance) **Governance** See [Governance](https://docs.bean.money/almanac/governance/beanstalk) section for more information. ### [](https://docs.bean.money/almanac/farm/silo#silo-rewards) **Silo Rewards** **Earned Beans** are Beans that have been paid to a Silo Member since the last Season the Silo Member Planted their Plantable Seeds (defined below). Upon Plant, Earned Beans are Deposited in the current Season. **Earned Stalk** are Stalk earned from Earned Beans. Earned Stalk automatically contribute to Stalk ownership and do not require any action to claim them. **Grown Stalk** is the Stalk earned from Seeds. Grown Stalk does not contribute to Stalk ownership until it is Mown. Mow can be called on its own, and it is also called at the beginning of any Silo interaction (Depositing, Withdrawing, Converting, Planting, etc.). **Revitalized Stalk** are Stalk that have vested for Unripe asset holders. Revitalized Stalk are minted as the BDV of Unripe assets increases. Revitalized Stalk does not contribute to Stalk ownership until Enrooted. See the [Revitalized Assets](https://docs.bean.money/almanac/farm/barn#revitalized-assets) section of the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-804b59ea255709b2a97dd2fc6718f9eee13d4fe6%252Fstalk.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=9b488ca&sv=2) **Plantable Seeds** are Seeds earned in conjunction with Earned Beans. Plantable Seeds must be Planted in order to grow Stalk. **Revitalized Seeds** are Seeds that have vested for Unripe asset holders. Revitalized Seeds are minted as the BDV of Unripe assets increases. Revitalized Seeds do not generate Stalk until Enrooted. See the [Revitalized Assets](https://docs.bean.money/almanac/farm/barn#revitalized-assets) section of the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-fe135b2cc10998883bffb72784f5236db9f8d75c%252Fseeds.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=7878e06e&sv=2) [PreviousSun](https://docs.bean.money/almanac/farm/sun) [NextSeed Gauge System](https://docs.bean.money/almanac/farm/silo/seed-gauge-system) Last updated 1 year ago * [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) * [The Stalk System](https://docs.bean.money/almanac/farm/silo#the-stalk-system) * [The Seed Gauge System](https://docs.bean.money/almanac/farm/silo#the-seed-gauge-system) * [Withdraw](https://docs.bean.money/almanac/farm/silo#withdraw) * [Convert](https://docs.bean.money/almanac/farm/silo#convert) * [Governance](https://docs.bean.money/almanac/farm/silo#governance) * [Silo Rewards](https://docs.bean.money/almanac/farm/silo#silo-rewards) --- # BFC Dashboard | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk-farms/bfc-dashboard.md) . The Beanstalk Farms Committee, or BFC, is the group of Beanstalk Farms contributors that has discretion over the Beanstalk Farms budget, including contributor compensation. The BFC hires contributors at and dismisses contributors from Beanstalk Farms. Read more [here](https://docs.bean.money/almanac/governance/beanstalk-farms#beanstalk-farms-committee) . ### [](https://docs.bean.money/almanac/governance/beanstalk-farms/bfc-dashboard#bfc-members) **BFC Members** There currently no BFC members. Adding members to the BFC requires a BFCP-A and removing BFC members requires a BFCP-B. You can read more about BFCPs [here](https://docs.bean.money/almanac/governance/proposals#bfcp) . [PreviousBFM Dashboard](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard) [NextBeaNFTs](https://docs.bean.money/almanac/governance/beanfts) Last updated 1 year ago --- # Seed Gauge System | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/silo/seed-gauge-system.md) . Seeds generate opportunity cost for Withdrawing assets that have been Deposited for longer and marginal benefit for holding particular assets in the Silo in the form of Grown Stalk. There are 3 new primary tools that Beanstalk has at its disposal as a result of implementing the Seed Gauge System: 1. The Target Seasons to Catchup, which determines 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 of existing Deposits at the time of Deposit; 2. Bean vs LP Seed distribution, or more specifically, the [Crop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) , which determines the relative benefits of holding Bean exposure vs exposure to at least 1 particular LP token in the Silo over time; and 3. LP vs LP Seed distribution, which determines relative benefits of holding a given non-Bean asset in the Silo over time. ### [](https://docs.bean.money/almanac/farm/silo/seed-gauge-system#grown-stalk-inflation-rate) Grown Stalk Inflation Rate The Grown Stalk per BDV for a Deposit can be thought of as the age of that Deposit—the longer the Deposit has been in the Silo, the higher its Grown Stalk is relative to its BDV. Thus, the average Grown Stalk per BDV is a measure for how old Deposits are across the entire Silo relative to the total BDV in the Silo. The Seed Gauge System enables Beanstalk to target an amount of Grown Stalk per BDV that should be issued each Season. In particular, Beanstalk sets 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 of existing Deposits at the time of Deposit, or in other words, the Target Seasons to Catch Up. The Target Seasons to Catchup is currently set to 4320 Seasons, or ~6 months. ### [](https://docs.bean.money/almanac/farm/silo/seed-gauge-system#gauge-points) **Gauge Points** Gauge Points determine how the Grown Stalk issued in a Season should be distributed between whitelisted LP tokens. Only whitelisted LP tokens have Gauge Points. Every Season, Beanstalk calculates the new amount of Gauge Points an LP token should have by calling each whitelisted LP token's Gauge Point function. Currently all whitelisted LP tokens use the same Gauge Point function that increases or decreases the Gauge Points based on whether the current Deposited BDV is lower or higher than optimal. ### [](https://docs.bean.money/almanac/farm/silo/seed-gauge-system#crop-ratio) **Crop Ratio** Gauge Points per BDV is the amount of Gauge Points allocated to a whitelisted LP token divided by the total BDV of that LP token Deposited in the Silo. The whitelisted LP token with the largest Gauge Points per BDV is used to determine the distribution of Grown Stalk to Beans in the Silo in order to ensure that at least 1 LP token always receives at least as much Grown Stalk as Deposited Beans. Ensuring that 1 whitelisted LP token (_i.e._, the LP token with the highest Gauge Points per BDV) is always allocated at least as many Seeds as Beans ensures that Beanstalk never incentivizes holding Beans over providing liquidity. The Crop Scalar (LLL) is a scalar between 0 and 1 that is adjusted by the peg maintenance mechanism. The Crop Ratio has a minimum (YYY) and maximum value (ZZZ). Currently, YYY and ZZZ are set to 1:2 (_i.e._, 50%) and 1:1 (_i.e._, 100%), respectively. BeanToMaxLPSeedRatio\=Y+L(Zāˆ’Y)Bean To Max LP Seed Ratio = Y + L(Z - Y)BeanToMaxLPSeedRatio\=Y+L(Zāˆ’Y) At L\=0L = 0L\=0, the Crop Ratio is at its minimum value (_i.e._, at 1:2, 1 Bean Deposited in the Silo receives half the amount of Grown Stalk as 1 BDV of the Max LP token), and at L\=1L = 1L\=1, the Crop Ratio is at its maximum value (_i.e._, at 1:1, 1 Bean Deposited in the Silo receives the same amount of Grown Stalk as 1 BDV of the the Max LP token). [PreviousSilo](https://docs.bean.money/almanac/farm/silo) [NextField](https://docs.bean.money/almanac/farm/field) Last updated 1 year ago * [Grown Stalk Inflation Rate](https://docs.bean.money/almanac/farm/silo/seed-gauge-system#grown-stalk-inflation-rate) * [Gauge Points](https://docs.bean.money/almanac/farm/silo/seed-gauge-system#gauge-points) * [Crop Ratio](https://docs.bean.money/almanac/farm/silo/seed-gauge-system#crop-ratio) --- # Asset States | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/protocol/asset-states.md) . Understanding the various states that Beanstalk assets can be in can help Farmers understand their balances on the Beanstalk UI. ### [](https://docs.bean.money/almanac/protocol/asset-states#balances) Balances **Deposited Balances** Assets that are Deposited in the Silo. **Farm Balances** Assets stored in Beanstalk. Farm assets can be used in transactions on the Farm. **Circulating Balances** Beanstalk assets in your wallet. ### [](https://docs.bean.money/almanac/protocol/asset-states#bean-states) Bean states **Pooled Beans** Beans in all liquidity pools. The Beanstalk UI does not include Beans that make up Ripe BEAN:wstETH under this category. **Deposited Beans** Beans Deposited in the Silo. Includes Earned Beans. **Farm Beans** Beans stored in Beanstalk. Farm Beans can be used in transactions on the Farm. **Circulating Beans** Beans in Farmers’ wallets. **Ripe Beans** Beans that are minted as Fertilizer is sold. Unripe Beans represent a pro rata share of underlying Ripe Beans. The Beanstalk UI does not include Beans that make up Ripe BEAN:wstETH under this category. **Ripe Pooled Beans** Pooled Beans that make up Ripe BEAN:wstETH. **Earned Beans** Beans that have been paid to a Silo Member since the last Season the Silo Member Planted their Plantable Seeds. Upon Plant, Earned Beans are Deposited in the current Season. **Harvestable Pods** Pods that are redeemable for 1 Bean each. Harvestable Pods must be Harvested in order to use them. **Rinsable Sprouts** Sprouts that are redeemable for 1 Bean each. Rinsable Sprouts must be Rinsed in order to use them. ### [](https://docs.bean.money/almanac/protocol/asset-states#lp-token-states) **LP Token states** LP Tokens can be in the following states, which are identical to the equivalent Bean states described above: * Deposited * Farm * Circulating * Ripe ### [](https://docs.bean.money/almanac/protocol/asset-states#unripe-asset-states) **Unripe asset states** Unripe assets can be in the following states, which are identical to the equivalent Bean states described above: * Deposited * Farm * Circulating ### [](https://docs.bean.money/almanac/protocol/asset-states#stalk-states) **Stalk states** **Earned Stalk** are Stalk earned from Earned Beans. Earned Stalk automatically contribute to Stalk ownership and do not require any action to claim them. **Grown Stalk** is the Stalk earned from Seeds. Grown Stalk does not contribute to Stalk ownership until it is Mown. Mow can be called on its own, and it is also called at the beginning of any Silo interaction (Depositing, Withdrawing, Converting, etc.). **Revitalized Stalk** are Stalk that have vested for Unripe asset holders. Revitalized Stalk are minted as the BDV of Unripe assets increases. Revitalized Stalk does not contribute to Stalk ownership until Enrooted. See the [Revitalized Assets](https://docs.bean.money/almanac/farm/barn#revitalized-assets) section of the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. ### [](https://docs.bean.money/almanac/protocol/asset-states#seed-states) **Seed states** **Plantable Seeds** are Seeds earned in conjunction with Earned Beans. Plantable Seeds must be Planted in order to grow Stalk. **Revitalized Seeds** are Seeds that have vested for Unripe asset holders. Revitalized Seeds are minted as the BDV of Unripe assets increases. Revitalized Seeds do not generate Stalk until Enrooted. See the [Revitalized Assets](https://docs.bean.money/almanac/farm/barn#revitalized-assets) section of the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. [PreviousGlossary](https://docs.bean.money/almanac/protocol/glossary) [NextContracts](https://docs.bean.money/almanac/protocol/contracts) Last updated 1 year ago * [Balances](https://docs.bean.money/almanac/protocol/asset-states#balances) * [Bean states](https://docs.bean.money/almanac/protocol/asset-states#bean-states) * [LP Token states](https://docs.bean.money/almanac/protocol/asset-states#lp-token-states) * [Unripe asset states](https://docs.bean.money/almanac/protocol/asset-states#unripe-asset-states) * [Stalk states](https://docs.bean.money/almanac/protocol/asset-states#stalk-states) * [Seed states](https://docs.bean.money/almanac/protocol/asset-states#seed-states) --- # Why Beanstalk | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/introduction/why-beanstalk.md) . Beanstalk is designed from first principles to issue capital-efficient, decentralized stablecoins that are accessible to anyone with an internet connection. Today’s predominant stablecoins suffer from one or more fundamental issues, primarily centralization and non-competitive carrying costs. ### [](https://docs.bean.money/almanac/introduction/why-beanstalk#centralization) **Centralization** Centralized stablecoins are currently the most widely used stablecoins by market capitalization. The businesses that issue these stablecoins are subject to external oversight and governmental coercion, and have the unilateral power to freeze their stablecoins. Beanstalk, on the other hand, is governed by a DAO and uses an on-chain price oracle to determine the price of a dollar. The yield-bearing governance token, known as [Stalk](https://docs.bean.money/almanac/farm/silo#the-stalk-system) , becomes more distributed over time. Beanstalk is highly resistant to censorship by design such that anyone, anywhere can access low-volatility assets in a fully permissionless manner. ### [](https://docs.bean.money/almanac/introduction/why-beanstalk#carrying-costs) **Carrying Costs** Real economic activity built on DeFi requires low-volatility assets for users to hold and transact with. However, borrowing rates of low-volatility on-chain assets exceed those of the off-chain assets to which they are pegged. This is due primarily to collateral requirements — there is an opportunity cost associated with locking up collateral to issue stablecoins. These collateralized stablecoins suffer from what’s known as **negative carry**—a condition in which the cost of holding an asset exceeds the yield earned while holding it. In other words, holding the collateral has an inherent inflation-adjusted cost, whether explicit in the form of an interest rate on a loan, or implicit in the form of an opportunity cost to lend it out to borrowers. Issuance and use of collateralized stablecoins is greatly inhibited by non-competitive carrying costs. Instead, Beanstalk utilizes a credit-based model to create endogenous value. By relying on its own creditworthiness to expand supply and maintain Bean price stability, rather than collateral, Beanstalk creates a scalable, capital-efficient alternative. Furthermore, because Beans require no collateral and Bean seigniorage is partially distributed to Bean holders in the [Silo](https://docs.bean.money/almanac/farm/silo) , Beans have **positive carry**. Beanstalk is designed to incentivize all capital entering the protocol to continuously maintain exposure to the Bean stablecoin, and in doing so, participate in the growth of Beanstalk. Volatility and yield are baked into the Bean token itself—when the Bean price is too high, Beanstalk mints new Beans and distributes them to various ecosystem participants in a deterministic fashion. This seigniorage is the positive carry that the Beanstalk economy is based on. Additional resources: * [Beanstalk Whitepaper](https://bean.money/beanstalk.pdf) * [Bank Runs, Airplanes, and Beanstalk](https://bean.money/blog/bank-runs-airplanes-and-beanstalk) * [Thoughts Before the Barn Raise from Publius](https://publius.money/blog/2022-06-05-thoughts-before-the-barn-raise) [PreviousDisclosures](https://docs.bean.money/almanac/disclosures) [NextHow Beanstalk Works](https://docs.bean.money/almanac/introduction/how-beanstalk-works) Last updated 2 years ago * [Centralization](https://docs.bean.money/almanac/introduction/why-beanstalk#centralization) * [Carrying Costs](https://docs.bean.money/almanac/introduction/why-beanstalk#carrying-costs) --- # Sun | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/sun.md) . The Beanstalk peg maintenance mechanism requires a protocol-native timekeeping mechanism and regular code execution on Arbitrum. The Sun keeps time on the Farm in Seasons and incentivizes cost-efficient and timely calling of the `gm` function. Beanstalk adjusts itself to return the Bean price to its value peg at the beginning of every Season. Each Season is ~1 hour long. The first Season began when Beanstalk was deployed on August 6, 2021 (initially on Ethereum). The exact beginning of each Season may vary as Seasons do not begin until the `gm` function has been called through an Arbitrum transaction. The first transaction that successfully calls the `gm` function after the top of each hour UTC begins a new Season. Beanstalk only accepts one `gm` function call per Season. Beanstalk covers the cost of calling the `gm` function by awarding the sender of an accepted `gm` function call with newly minted Beans. To encourage regular `gm` function calls even during periods of congestion on Arbitrum while minimizing cost, the award for successfully calling the `gm` function starts at 1 Bean and compounds 1.0201% every additional 2 seconds for 300 seconds. Upon acceptance of the `gm` call, the Sun: 1. Increments the Season number; 2. Calculates deltaB, the sum of the time-weighted average shortages or excesses Beans across liquidity pools on the [Minting Whitelist](https://docs.bean.money/almanac/protocol/glossary#minting-whitelist) ; 3. [Changes the Maximum Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) if necessary and checks for [Flood](https://docs.bean.money/almanac/peg-maintenance/flood) ; 4. Changes the [Crop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) (and updates the Gauge Points of each whitelisted asset); 5. Sets the initial [Soil supply](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply); 6. [Mints Beans](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) if necessary; and 7. Awards Beans to the address that successfully called the `gm` function. ### [](https://docs.bean.money/almanac/farm/sun#minting-whitelist) Minting Whitelist To be included in the calculation of [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) , a liquidity pool must be on the Minting Whitelist. Additional liquidity pools may be added to the Minting Whitelist via [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) . In order for a liquidity pool to be added to the Minting Whitelist, Beanstalk requires: 1. The pool address; and 2. A function to calculate the liquidity and time weighted average shortage or excess of Beans in the pool. #### [](https://docs.bean.money/almanac/farm/sun#current-minting-whitelist) Current Minting Whitelist Name Address BEAN:WETH Well [0xBeA00Aa8130aCaD047E137ec68693C005f8736Ce](https://arbiscan.io/address/0xBeA00Aa8130aCaD047E137ec68693C005f8736Ce) BEAN:wstETH Well [0xBEa00BbE8b5da39a3F57824a1a13Ec2a8848D74F](https://arbiscan.io/address/0xBEa00BbE8b5da39a3F57824a1a13Ec2a8848D74F) BEAN:weETH Well [0xBeA00Cc9F93E9a8aC0DFdfF2D64Ba38eb9C2e48c](https://arbiscan.io/address/0xBeA00Cc9F93E9a8aC0DFdfF2D64Ba38eb9C2e48c) BEAN:WBTC Well [0xBea00DDe4b34ACDcB1a30442bD2B39CA8Be1b09c](https://arbiscan.io/address/0xBea00DDe4b34ACDcB1a30442bD2B39CA8Be1b09c) BEAN:USDC Well [0xBea00ee04D8289aEd04f92EA122a96dC76A91bd7](https://arbiscan.io/address/0xBea00ee04D8289aEd04f92EA122a96dC76A91bd7) BEAN:USDT Well [0xbEA00fF437ca7E8354B174339643B4d1814bED33](https://arbiscan.io/address/0xbEA00fF437ca7E8354B174339643B4d1814bED33) [PreviousOverview](https://docs.bean.money/almanac/farm/overview) [NextSilo](https://docs.bean.money/almanac/farm/silo) Last updated 1 year ago --- # Convert | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/peg-maintenance/convert.md) . Conversions within the [Silo](https://docs.bean.money/almanac/farm/silo) between Bean and LP Deposits serve a major role in peg maintenance. Conversions from one Deposited asset to another are permissioned by a Convert Whitelist. Conversions can be added or removed from the Convert Whitelist via [Beanstalk governance](https://github.com/BeanstalkFarms/Farmers-Almanac/blob/master/peg-maintenance/broken-reference/README.md) . When the Bean price is above peg (_i.e._, [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) is positive), Deposited Beans may be Converted to Deposited LP tokens while retaining grown Stalk from Seeds. This Conversion allows the Silo Member to add Beans to liquidity pools, which has the practical effect of selling Beans above peg. In doing so, Beanstalk incentivizes Stalkholders to grow liquidity for Beans at the expense of additional Bean mints, as the Bean price is decreased back towards peg. When the Bean price is below peg (_i.e._, deltaB is negative), Deposited LP tokens may be Converted to Deposited Beans without forfeiting grown Stalk from Seeds or any Stalk due to LP impermanent loss. This Conversion allows Stalkholders to remove excess Beans from liquidity pools and increase the price back towards peg without leaving the Silo, minimizing debt issuance. Unripe Beans are also convertible to Unripe BEAN:ETH LP, and vice versa, in a similar fashion. See the [Unripe Assets](https://docs.bean.money/almanac/farm/barn#unripe-assets) section of the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. ### [](https://docs.bean.money/almanac/peg-maintenance/convert#convert-whitelist) Convert Whitelist In order for a Farmer to be able to Convert a Deposited asset to another, that Conversion must be on the Convert Whitelist. Additional Conversions may be added to the Convert Whitelist via [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) . In order for a Conversion to be added to the Convert Whitelist, Beanstalk requires: 1. The From token address; 2. The To token address; 3. Conditions under which the From token can be converted to the To token; and 4. A function to determine the number of To tokens received for Converting a given number of From tokens (see [Section 14.4 in the whitepaper](https://bean.money/beanstalk.pdf#subsection.14.4) for complete formulas). #### [](https://docs.bean.money/almanac/peg-maintenance/convert#current-convert-whitelist) Current Convert Whitelist From token To token Conditions Any token on the Deposit Whitelist\* The same token as From token Anytime Unripe token Underlying token Anytime Unripe Bean Unripe BEAN:wstETH LP deltaB in the BEAN:wstETH Well > 0 Unripe BEAN:wstETH LP Unripe Bean deltaB in the BEAN:wstETH Well < 0 Bean Whitelisted Well LP token deltaB in the given Well > 0 Whitelisted Well LP token Bean deltaB in the given Well < 0 \*Any token on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) can be Converted to the same token in order to allow Stalkholders to update the BDV of their LP tokens when their BDV increases due to impermanent loss. #### [](https://docs.bean.money/almanac/peg-maintenance/convert#performance) Performance Convert functionality was first added in [BIP-7](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-07-convert.md) , and generalized to support a Convert Whitelist in [BIP-21](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-21-replant.md) . Since BIP-7 was committed, Conversions by Stalkholders have played a significant role in peg maintenance. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252F4dZ4Y8pH9K3lNcity586%252FScreen%2520Shot%25202022-09-12%2520at%252010.39.44%2520AM.png%3Falt%3Dmedia%26token%3Dac40f326-deba-4ee7-ade2-79aa1f2df4d3&width=768&dpr=3&quality=100&sign=3ebc7588&sv=2) This screenshot of the Bean price chart is from September 12, 2022. See [app.bean.money](https://app.bean.money/#/analytics) for the latest data. ### [](https://docs.bean.money/almanac/peg-maintenance/convert#generalized-convert) Generalized Convert With the introduction of Generalized Convert in [BIP-50](https://bean.money/bip-50) , which supports LP token -> LP token Converts as well as Converts against peg (with an associated Stalk penalty). A per-block Convert cap mechanism protects against flash loan attacks. #### [](https://docs.bean.money/almanac/peg-maintenance/convert#stalk-penalty) Stalk Penalty Generalized Convert introduced the ability to Convert against peg and a Stalk penalty for doing so. The penalty applies a 100% reduction in Grown Stalk of the Converted Deposit based on the amount that was Converted against peg. > For example, if 20 BDV is Converted, and only 10 of the BDV Converted is against peg, then 50% of the Grown Stalk associated with Deposit will be burned. No penalty is applied if the Convert brings the cumulative deltaB closer to 0. #### [](https://docs.bean.money/almanac/peg-maintenance/convert#convert-capacity) Convert Capacity To prevent flash loan attacks that allow Converting against peg without incurring the Stalk penalty, a Convert capacity mechanism was introduced. Every Convert updates the amount of BDV Converted per block on a per Well and overall basis. The total capacity available before a penalty applies is based on deltaB for each corresponding Well and the overall deltaB. [PreviousCrop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) [NextFlood](https://docs.bean.money/almanac/peg-maintenance/flood) Last updated 1 year ago * [Convert Whitelist](https://docs.bean.money/almanac/peg-maintenance/convert#convert-whitelist) * [Generalized Convert](https://docs.bean.money/almanac/peg-maintenance/convert#generalized-convert) --- # BDM Dashboard | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard.md) . BeaNFT contracts are custodied by the BeaNFT DAO Multisig, or BDM. The BDM is deployed using Safe. Its m-of-n configuration is currently 4-of-7 on Ethereum mainnet. This means any upgrade of the BeaNFT contracts must be approved by at least 4 of the 7 signers. **BeaNFT DAO Multisig Safe address:** [0x2D92a7Ba42472001111C1A1614EF6A8737bDf278](https://etherscan.io/address/0x2D92a7Ba42472001111C1A1614EF6A8737bDf278) [![Logo](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2Fapp.safe.global%2Ffavicons%2Fapple-touch-icon.png&width=20&dpr=3&quality=100&sign=5fefc37a&sv=2)Safe{Wallet}safe](https://app.safe.global/home?safe=eth:0x2D92a7Ba42472001111C1A1614EF6A8737bDf278) ### [](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard#bdm-signers) **BDM Signers** The current BDM signers are as follows, in no particular order: * blc * Brean * Safisynai * guy * Rex * pizzaman1337 * MrMochi The following people serve as backup signers for the BDM, in no particular order: * Silo Chad * Sowphocles * CanadianBennett Rotating BDM signers requires a [BNP](https://docs.bean.money/almanac/governance/proposals#beanft-proposal) unless a signer voluntarily leaves the BDM or for rotating in a backup signer. Address [0xee7cbf28a01fb4285ac0b5c5a9f367d76fc30015](https://etherscan.io/verifiedSignatures?q=0xee7cbf28a01fb4285ac0b5c5a9f367d76fc30015) [0x5513946107b5389ffc5e638b8a351f8bf9a40bfa](https://etherscan.io/verifiedSignatures?q=0x5513946107b5389ffc5e638b8a351f8bf9a40bfa) [0x198eCE0f3584210cAf2a511224Ca418EDab98335](https://etherscan.io/verifiedSignatures?q=0x198eCE0f3584210cAf2a511224Ca418EDab98335) [0xb83a613cf24a62175e37776a7dbbeed7d9114338](https://etherscan.io/verifiedSignatures?q=0xb83a613cf24a62175e37776a7dbbeed7d9114338) [0x5ba7d66a03f8361e0c982e159757f64508bf0185](https://etherscan.io/verifiedSignatures?q=0x5ba7d66a03f8361e0c982e159757f64508bf0185) [0xdb2Fd876B27657449b05A04AE1040d0aA26D5154](https://etherscan.io/verifiedSignatures?q=0xdb2Fd876B27657449b05A04AE1040d0aA26D5154) [0x97dae5976ee1d6409f44906bea9bf88fee0bf672](https://etherscan.io/address/0x97dae5976ee1d6409f44906bea9bf88fee0bf672) [PreviousBeaNFTs](https://docs.bean.money/almanac/governance/beanfts) [NextProposals](https://docs.bean.money/almanac/governance/proposals) Last updated 1 year ago --- # Barn | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/barn.md) . On April 17, 2022, Beanstalk was exploited via a governance attack. The attacker used a flash loan to exploit the protocol’s then on-chain governance mechanism and transferred all of the Deposited assets in the Silo to an address they controlled, resulting in a theft of ~$77M in non-Bean assets. Upon exploit, Beanstalk was Paused and the on-chain governance mechanism was removed. Stalkholders voted [via Snapshot](https://snapshot.org/#/beanstalkfarms.eth/proposal/0xb87854d7f6f40f0877a1333028eab829b213fbcce03f16f9dd3832c8a98ab99b) on how Beanstalk should proceed. The Barn is the Beanstalk recapitalization facility used to Replant Beanstalk. The Barn Raise started on June 6, 2022 while the protocol was offline. For guides on interacting with the Barn through the Beanstalk UI, go [here](https://docs.bean.money/almanac/guides/barn) . #### [](https://docs.bean.money/almanac/farm/barn#timeline) Timeline * April 17, 2022: Governance exploit * June 6, 2022: Barn Raise starts * August 6, 2022: Beanstalk Replant * October 20, 2023: Migration of Unripe liquidity from BEAN:3CRV to the BEAN:ETH Well * July 26, 2024: Migration of Unripe liquidity from BEAN:ETH to BEAN:wstETH ### [](https://docs.bean.money/almanac/farm/barn#fertilizer) **Fertilizer** Fertilizer is a semi-fungible limited debt issuance to recapitalize $77M in stolen liquidity. At the beginning of the Barn Raise, there was 77M Available Fertilizer. Available Fertilizer is the number of Fertilizer that can be bought from Beanstalk in exchange for 1 USD worth of wstETH each. Fertilizer becomes Active when it is bought, at which point the ERC-1155 Fertilizer token is minted. Active Fertilizer comes with an associated number of Sprouts. Sprouts represent the debt left to be repaid to Active Fertilizer holders. Fertilizer becomes Used after all of its associated Sprouts are Fertilized into Rinsable Sprouts that can be Rinsed (redeemed) for 1 Bean each. When there are more than zero Unfertilized Sprouts, 1/3 of new Bean mints are allocated towards Fertilizer on a [pari passu](https://docs.bean.money/almanac/protocol/glossary#pari-passu) basis. This is in contrast to the FIFO Harvest schedule of the Pod Line in the Field. * If Fertilizer is not sold yet, it’s Available. * If Fertilizer still has Sprouts (is owed Bean mints), it’s Active. * If Fertilizer has no more Sprouts (is done earning Bean mints), it’s Used. When Fertilizer is sold, Beanstalk adds liquidity to the BEAN:wstETH Well at a ratio of 1:0.866616. Adding liquidity at this ratio causes the deltaB in the BEAN:wstETH Well to trend towards the pre-exploit deltaB. ### [](https://docs.bean.money/almanac/farm/barn#humidity) **Humidity** The Humidity is the interest rate on Fertilizer purchases. At 200% Humidity, each Fertilizer purchased comes with 3 Sprouts. The Humidity is constant each [Season](https://docs.bean.money/almanac/farm/sun) . The Humidity was 500% prior to Replant, after which it dropped to 250% and then decreased by an additional 0.5% each Season until it reached 20%. The Humidity will remain at 20% until all Available Fertilizer is purchased. ### [](https://docs.bean.money/almanac/farm/barn#barn-process) Barn Process ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FPSjkFgaLI8EJUxyjVikn%252FScreenshot%25202023-10-17%2520at%25206.41.50%25E2%2580%25AFPM.png%3Falt%3Dmedia%26token%3De85c1940-e83d-4a69-8743-d4d2147b1bf9&width=768&dpr=3&quality=100&sign=b5e48990&sv=2) 1. Fertilizer is bought with wstETH. Active Fertilizer comes with Sprouts. 2. Sprouts become Rinsable on a pari passu basis when Beanstalk [mints new Beans](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) according to the peg maintenance mechanism. 3. Rinsable Sprouts can be Rinsed to be redeemed for Beans. ### [](https://docs.bean.money/almanac/farm/barn#unripe-assets) **Unripe Assets** Beanstalk uses the proceeds from the Fertilizer sales to recapitalize liquidity stolen from Silo Members in the April 17th, 2022 governance exploit. Beanstalk will sell enough Fertilizer to fully recapitalize all non-Bean liquidity stolen from Silo Members. Prior to Replant, Farmers who held Beans in the block prior to the exploit received 1 Unripe Bean for every pre-exploit Bean; Farmers who held whitelisted LP Tokens in the block prior to the exploit received 1 Unripe LP for every 1 Bean Denominated Value (BDV) of each pre-exploit whitelisted LP Token. > For example, a Farmer with 1000 Beans and 2000 BDV of whitelisted LP tokens in the block prior to the exploit received 1000 Unripe Beans and 2000 Unripe LP. Unripe assets are placed on a vesting schedule in accordance with the success of the Barn Raise and growth of the Bean supply thereafter. #### [](https://docs.bean.money/almanac/farm/barn#ripe-assets) Ripe Assets More specifically, Unripe assets entitle holders to an associated number of underlying Ripe assets. Ripe Beans and Ripe BEAN:wstETH are minted as Fertilizer is sold. On October 20th, 2023 Ripe BEAN:3CRV LP was migrated to Ripe BEAN:ETH LP. As a result, Unripe BEAN:3CRV LP became Unripe BEAN:ETH LP (with the same token address). See [BIP-38](https://bean.money/bip-38) . On July 26, 2024 Ripe BEAN:ETH LP was migrated to Ripe BEAN:wstETH LP. As a result, Unripe BEAN:ETH LP became Unripe BEAN:wstETH LP (with the same token address). See [BIP-](https://bean.money/bip-38) [48](https://bean.money/bip-48) . ### [](https://docs.bean.money/almanac/farm/barn#chopping) **Chopping** The percentage of Ripe assets that can be claimed by Chopping a pro rata portion of Unripe assets is a the \[% recapitalization\]^2, where the % recapitalization represents the amount of Ripe assets per Unripe. Chopped Unripe assets are burned. Beans and BEAN:wstETH LP received for Chopping are distributed from the set of Ripe Beans and Ripe BEAN:wstETH LP, respectively. > For example, if there are 0.22 Ripe Beans for every Unripe Bean, an Unripe Bean can be Chopped in exchange for 0.0484 Ripe Beans. Because Available Fertilizer is a function of how much non-Bean liquidity still needs to be recapitalized, if Available Fertilizer is non-zero and Unripe BEAN:wstETH LP is Chopped, the amount of Available Fertilizer (and thus how much non-Bean liquidity Beanstalk needs to recapitalize) decreases. The same is true of Conversions from Unripe BEAN:wstETH LP to Unripe Beans in the Silo, while the converse is true of Conversions from Unripe Beans to Unripe BEAN:wstETH LP. > For example, say there’s 50M Available Fertilizer and a Farmer Chops 2M Unripe BEAN:wstETH LP in exchange for 1M BEAN:wstETH Well LP. If non-Beans make up 50% of the BEAN:wstETH Well by dollar value, then 500k less Fertilizer needs to be sold, resulting in 49.5M Available Fertilizer. ### [](https://docs.bean.money/almanac/farm/barn#revitalized-assets) **Revitalized Assets** Upon Replant, Silo Members in the block prior to the exploit received a portion of their Stalk and Seeds based on the percentage of Fertilizer sold prior to Replant. As the BDV of Unripe assets increases, additional Stalk and Seeds become Revitalized and can be Enrooted. Revitalized Stalk and Seeds start earning Bean seigniorage and Grown Stalk, respectively, upon being Enrooted. > If 20% of total Fertilizer has sold before Replant, a Silo Member receives 20% of their Stalk, Seed and Plantable Seed balances at the time of the Replant. As an example, if the percentage of Fertilizer sold increases by 5%, the additional 5% is distributed to the Silo Member in the form of Revitalized Stalk and Seeds. Once Enrooted, a Silo Member brings their balances to 25% of their pre-exploit Stalk and Seed balances, independent of any Stalk or Seeds they may have earned since Replant. [PreviousField](https://docs.bean.money/almanac/farm/field) [NextToolshed](https://docs.bean.money/almanac/farm/toolshed) Last updated 1 year ago * [Fertilizer](https://docs.bean.money/almanac/farm/barn#fertilizer) * [Humidity](https://docs.bean.money/almanac/farm/barn#humidity) * [Barn Process](https://docs.bean.money/almanac/farm/barn#barn-process) * [Unripe Assets](https://docs.bean.money/almanac/farm/barn#unripe-assets) * [Chopping](https://docs.bean.money/almanac/farm/barn#chopping) * [Revitalized Assets](https://docs.bean.money/almanac/farm/barn#revitalized-assets) --- # Toolshed | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/toolshed.md) . The Toolshed offers a suite of tools for efficient use of Beanstalk and other Arbitrum-native protocols. * [Depot](https://docs.bean.money/almanac/farm/toolshed/depot) * [Pod Market](https://docs.bean.money/almanac/farm/toolshed/market) * [Tractor](https://docs.bean.money/almanac/farm/toolshed/tractor) [PreviousBarn](https://docs.bean.money/almanac/farm/barn) [NextDepot](https://docs.bean.money/almanac/farm/toolshed/depot) Last updated 1 year ago --- # Tractor | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/toolshed/tractor.md) . Tractor is currently not supported in the Beanstalk UI. Maintaining and optimizing a position in Beanstalk requires manual intervention (Mowing, Planting, Harvesting Pods and Depositing the Beans, etc.). Smaller Farmers do not necessarily have the resources to automate the execution of their Beanstalk transactions, and existing generalized function call systems (i.e., smart contract accounts, Depot + Pipeline) only support the use of assets from the sender of the transaction. Tractor is a peer-to-peer transaction marketplace that allows third party operators to perform Beanstalk actions on behalf of a Farmer. Blueprints are off-chain data structures that are [EIP-712](https://eips.ethereum.org/EIPS/eip-712) signed to verify the intent of the publishing Farmer. Blueprints allow Farmers to define arbitrary sequences of on-chain function calls, which can be executed permissionlessly by other Farmers known as Tractor Operators. Blueprints contain the Publisher, an Advanced Farm function call containing an arbitrary sequence of internal function calls, a set of copy instructions that define how to interpret Operator calldata, expiry parameters and the EIP-712 signature from the Publisher. Any Tractor Operator can execute any Blueprint with any calldata at anytime through the `tractor(...)` function provided that the Blueprint does not revert. Junctions are contracts that are contain basic operations as external functions that are used by Tractor orders. Junctions allow Farmers to define Blueprints that will fail under a predefined set of conditions, such as balance limits, price thresholds, etc. **Examples** * A Farmer creates a Blueprint for an Operator to Plant on their behalf any time they have more than 100 Earned Beans and will pay the caller 1 Earned Bean. * A Farmer creates a Blueprint for an Operator to Mow on their behalf any time that P > 1 and will pay the caller 5 USDC. [PreviousPod Market](https://docs.bean.money/almanac/farm/toolshed/market) [NextOverview](https://docs.bean.money/almanac/peg-maintenance/overview) Last updated 1 year ago --- # Understand the Sun | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/sun/understand-sun.md) . The Sun keeps time on the Farm in [Seasons](https://docs.bean.money/almanac/protocol/glossary#season) and incentivizes cost-efficient and timely calling of the [gm](https://docs.bean.money/almanac/protocol/glossary#gm) function. You can view [the Sun](https://docs.bean.money/almanac/farm/sun) at the upper left corner of [app.bean.money](https://app.bean.money/) . ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FGgosTnjVDMMWjuVSYkzi%252Fimage.png%3Falt%3Dmedia%26token%3D74870611-0f40-4331-856f-0a9451a5f65f&width=768&dpr=3&quality=100&sign=442ffc59&sv=2) The Sun displays the current Season, which is the number of Seasons completed since `gm` was called for the first time. If [Beans were minted](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) during the current Season based on the [peg maintenance mechanism](https://docs.bean.money/almanac/peg-maintenance/overview) , the Sun will appear as a rain cloud icon. Selecting the Sun displays more detail on historical Seasons and a forecast for the next Season. The following information is shown for each Season: * Number of new Beans minted, * [Soil](https://docs.bean.money/almanac/farm/field#soil) made available in the [Field](https://docs.bean.money/almanac/farm/field) , * [Temperature](https://docs.bean.money/almanac/farm/field#temperature) for [Sowing Beans](https://docs.bean.money/almanac/protocol/glossary#sow) , * [Pod Rate](https://docs.bean.money/almanac/protocol/glossary#pod-rate) , and * [Delta Demand](https://docs.bean.money/almanac/protocol/glossary#delta-demand) , if it was used to measure Demand for Soil. If there is between 0 and 1 Soil remaining at the end of any Season, [Delta Demand is not used](https://docs.bean.money/almanac/peg-maintenance/temperature#demand-for-soil) . [PreviousUnderstand the Bean Price](https://docs.bean.money/almanac/guides/sun/understand-price) [NextSilo](https://docs.bean.money/almanac/guides/silo) Last updated 1 year ago --- # Understand the Bean Price | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/sun/understand-price.md) . Beanstalk uses credit instead of collateral to create Bean price stability relative to its value peg of $1. In practice, this means the protocol incentivizes the regular oscillation of the Bean price above and below its peg. The Bean price will almost never be exactly equal to its peg. Read more about [how Beanstalk works](https://docs.bean.money/almanac/introduction/how-beanstalk-works) or an in-depth overview of the [peg maintenance mechanism](https://docs.bean.money/almanac/peg-maintenance/overview) . You can view the current Bean price in US dollars at the upper left corner of [app.bean.money](https://app.bean.money/) . ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FRg9BnaVZ0utzsedlBY8R%252Fimage.png%3Falt%3Dmedia%26token%3D7bea0352-ddd2-465b-b32f-5c5ec0bcabac&width=768&dpr=3&quality=100&sign=dd177149&sv=2) Selecting the Bean price displays more detail of the liquidity pools that Beans trade in. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FJCq7wi40ZOI9ewDjPwtb%252Fimage.png%3Falt%3Dmedia%26token%3Df4894fe9-c0fc-4446-9446-a536ac5c8149&width=768&dpr=3&quality=100&sign=1669e0a4&sv=2) The detail view shows the: * USD denominated price of Bean in the liquidity pool; * USD denominated total liquidity in the liquidity pool, including non-Bean assets; and * deltaB, the shortage or excess of Beans in the liquidity pool. Read more about how deltaB impacts the [Bean supply](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) and [Soil supply](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) . [PreviousSun](https://docs.bean.money/almanac/guides/sun) [NextUnderstand the Sun](https://docs.bean.money/almanac/guides/sun/understand-sun) Last updated 1 year ago --- # Bean Sprout | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/archives/bean-sprout.md) . Bean Sprout is currently inactive. Bean Sprout is a Beanstalk accelerator program to facilitate rapid development on and around Beanstalk in a decentralized fashion. Bean Sprout is responsible for the incubation of [Root](https://roottoken.org/) . ### [](https://docs.bean.money/almanac/archives/bean-sprout#funding) Funding Like Beanstalk Farms, Bean Sprout does not have a treasury and has historically been minted a a budget by the Beanstalk DAO via BIP. Budget funds are custodied by the [Bean Sprout Multisig (BSM)](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard) . Past BIPs that funded Beanstalk Sprout: * [BIP-8: Beanstalk Q1 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-08-beanstalk-budget-q1-2022.md) (included Beanstalk Farms and Bean Sprout) * [BIP-23: Bean Sprout Q3 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-23-bs-budget-q3-2022.md) * [BIP-27: Bean Sprout Q4 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-27-bs-budget-q4-2022.md) Monthly reports on how Bean Sprout spent its budget can be found [here](https://github.com/BeanstalkFarms/Beanstalk-Farms-Operations/tree/main/bean-sprout) . ### [](https://docs.bean.money/almanac/archives/bean-sprout#spending) Spending Currently, Bean Sprout is not actively funded. The last Bean Sprout budget was the Q4 2022 budget. Past BSPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bsp) . Bean Sprout Proposals, or BSPs, are proposals to use the Bean Sprout budget. Anyone with 0.1% of the Stalk supply or [BSM](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard) signers can propose a BSP. BSPs are voted on by Stalkholders. BSPs that propose to spend less than or equal to 25,000 Beans are optimistically approved unless a quorum of 10% of the Stalk supply is reached, after which the majority vote determines the outcome of the vote. BSPs that propose to spend more than 25,000 Beans must reach a quorum of 10% of the Stalk supply and a majority vote For in order to pass. A BSP is not required for the BSM to send payments valued at under 4,000 Beans. [PreviousLinks](https://docs.bean.money/almanac/community/links) [NextBSM Dashboard](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard) Last updated 1 year ago * [Funding](https://docs.bean.money/almanac/archives/bean-sprout#funding) * [Spending](https://docs.bean.money/almanac/archives/bean-sprout#spending) --- # Contributing | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/community/contributing.md) . Beanstalk belongs to the Beanstalk DAO and is developed as an open source, permissionless public good. Anyone can contribute to Beanstalk and the Bean-based economy by: * [Participating in Beanstalk governance](https://docs.bean.money/almanac/community/contributing#participating-in-beanstalk-governance) ; * [Building with Beanstalk and Beans](https://docs.bean.money/almanac/community/contributing#building-with-beanstalk-and-beans) ; * [Submitting improvements to the Beanstalk protocol](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-beanstalk-documentation) ; * [Submitting improvements to Beanstalk development tooling](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-the-beanstalk-protocol) ; * [Submitting improvements to Beanstalk documentation](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-beanstalk-development-tooling) ; * [Becoming a member of the Beanstalk Farms Committee](https://docs.bean.money/almanac/community/contributing#becoming-a-member-of-the-beanstalk-farms-committee) ; or * [Funding your own development organization](https://docs.bean.money/almanac/community/contributing#funding-your-own-organization) . ### [](https://docs.bean.money/almanac/community/contributing#participating-in-beanstalk-governance) Participating in Beanstalk governance Become a [Stalkholder](https://docs.bean.money/almanac/protocol/glossary#stalkholders) and participate in Beanstalk governance by [Depositing whitelisted assets](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) in the [Silo](https://docs.bean.money/almanac/farm/silo) to earn [Stalk](https://docs.bean.money/almanac/farm/silo#the-stalk-system) . Read more about [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) and the various [proposals](https://docs.bean.money/almanac/governance/proposals). Each governance proposal has a channel for discussion on the Beanstalk Discord. ### [](https://docs.bean.money/almanac/community/contributing#building-with-beanstalk-and-beans) Building with Beanstalk and Beans Beanstalk's [capital efficient model](https://docs.bean.money/almanac/introduction/why-beanstalk) is designed to facilitate a Bean-based economy of protocols and businesses benefiting from building on Beanstalk and using Beans. Beanstalk welcomes builders and provides a competitive edge to your project. Discuss business ideas in the **(#šŸ’”ćƒ»business-ideas)** channel on the Beanstalk Discord. ### [](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-the-beanstalk-protocol) Submitting improvements to the Beanstalk protocol The Beanstalk protocol is deployed on Ethereum mainnet. The code base is open source and developed on [GitHub](https://github.com/BeanstalkFarms/Beanstalk) . Discuss improvements to Beanstalk in the **(#šŸ’”ćƒ»beanstalk-ideas)** channel in the Beanstalk Discord. Protocol changes are submitted as [Beanstalk Improvement Proposals](https://docs.bean.money/almanac/governance/proposals#bip) (BIPs) and are committed if passed by Stalkholders. ### [](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-beanstalk-development-tooling) Submitting improvements to Beanstalk development tooling All Beanstalk development tooling, such as the [Beanstalk UI](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/ui) , [SDK](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/sdk) and [Subgraph](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/subgraph-beanstalk) , are open source. Leave feedback on the Beanstalk UI in the **(#🌐・ui-feedback)** channel and discuss improvements to Beanstalk development tooling in the **(#🪵・development)** channel in the Beanstalk Discord. ### [](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-beanstalk-documentation) Submitting improvements to Beanstalk documentation Documentation around Beanstalk is continually improving and help is more than welcome. Leave feedback in the **(#šŸ“œćƒ»docs-feedback)** channel on the Beanstalk Discord or make a pull request directly to: * the [Farmers' Almanac repository](https://github.com/BeanstalkFarms/Farmers-Almanac) ; * the [Beanstalk Whitepaper repository](https://github.com/BeanstalkFarms/Beanstalk-Whitepaper) ; or * the [Pipeline Whitepaper repository](https://github.com/BeanstalkFarms/Pipeline-Whitepaper) . ### [](https://docs.bean.money/almanac/community/contributing#becoming-a-member-of-the-beanstalk-farms-committee) Becoming a member of the Beanstalk Farms Committee Hiring for Beanstalk Farms is performed by the [Beanstalk Farms Committee](https://docs.bean.money/almanac/governance/beanstalk-farms#beanstalk-farms-committee) (BFC). You can join the BFC yourself through a [BFCP-A proposal](https://docs.bean.money/almanac/governance/proposals#bfcp-a) . ### [](https://docs.bean.money/almanac/community/contributing#funding-your-own-development-organization) Funding your own development organization Decentralization of development of the Beanstalk protocol is critical to the long term success of Beanstalk. Anyone can propose a [BIP](https://docs.bean.money/almanac/governance/proposals#bip) to the DAO in order to mint Beans to fund their own organization. [PreviousPipeline](https://docs.bean.money/almanac/ecosystem/pipeline) [NextDiscord Roles](https://docs.bean.money/almanac/community/discord-roles) Last updated 11 months ago * [Participating in Beanstalk governance](https://docs.bean.money/almanac/community/contributing#participating-in-beanstalk-governance) * [Building with Beanstalk and Beans](https://docs.bean.money/almanac/community/contributing#building-with-beanstalk-and-beans) * [Submitting improvements to the Beanstalk protocol](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-the-beanstalk-protocol) * [Submitting improvements to Beanstalk development tooling](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-beanstalk-development-tooling) * [Submitting improvements to Beanstalk documentation](https://docs.bean.money/almanac/community/contributing#submitting-improvements-to-beanstalk-documentation) * [Becoming a member of the Beanstalk Farms Committee](https://docs.bean.money/almanac/community/contributing#becoming-a-member-of-the-beanstalk-farms-committee) * [Funding your own development organization](https://docs.bean.money/almanac/community/contributing#funding-your-own-development-organization) --- # BCM Dashboard | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard.md) . The Beanstalk Community Multisig (BCM) custodies ownership of the [Beanstalk contract](https://docs.bean.money/almanac/protocol/contracts) . The BCM has the exclusive ability upgrade Beanstalk. In the future, it is expected that BIPs will remove governance entirely, revoking these abilities from the BCM. **Beanstalk Community Multisig Safe address:** [0xDd5b31E73dB1c566Ca09e1F1f74Df34913DaaF69](https://arbiscan.io/address/0xDd5b31E73dB1c566Ca09e1F1f74Df34913DaaF69) [![Logo](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2Fapp.safe.global%2Ffavicons%2Fapple-touch-icon.png&width=20&dpr=3&quality=100&sign=5fefc37a&sv=2)Safe{Wallet}safe](https://app.safe.global/transactions/queue?safe=arb1:0xDd5b31E73dB1c566Ca09e1F1f74Df34913DaaF69) The Beanstalk contract is guarded by a 5-of-9 multisig. This means any changes to the Beanstalk contract must be approved by at least 5 of the 9 signers. ### [](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard#bcm-signers) BCM Signers Publius currently holds 1 of the 9 keys on the BCM. The identities of the remaining signers are anonymous per [Anonymous Signers](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#anonymous-signers) . See the [BCM Verification](https://community.bean.money/bcm-verification) page for more information on how the BCM is verifying transactions. Address Verifications Date of Last Verification [0x0451c257e4f5035532cd0bdc7ca1ad78487574c4](https://arbiscan.io/address/0x0451c257e4f5035532cd0bdc7ca1ad78487574c4) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x0451c257e4f5035532cd0bdc7ca1ad78487574c4) 07/20/24 [0x8078974b59204fbA16Fc0186E7a2CD8AF88eD600](https://arbiscan.io/address/0x8078974b59204fbA16Fc0186E7a2CD8AF88eD600) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x8078974b59204fba16fc0186e7a2cd8af88ed600) 07/26/24 [0x66ddd36c7c211244117d2464cb90699caaeb78a5](https://arbiscan.io/address/0x66ddd36c7c211244117d2464cb90699caaeb78a5) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x66ddd36c7c211244117d2464cb90699caaeb78a5) 05/30/24 [0x44e05045853027c0e9b7ab03b33a42da6337faf7](https://arbiscan.io/address/0x44e05045853027c0e9b7ab03b33a42da6337faf7) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x44e05045853027c0e9b7ab03b33a42da6337faf7) 10/04/24 [0x47a473Eb2bDfe6599dac638FFFE0D427d8Ad6888](https://arbiscan.io/address/0x47a473Eb2bDfe6599dac638FFFE0D427d8Ad6888) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x47a473eb2bdfe6599dac638fffe0d427d8ad6888) 10/02/24 [0xDdafb4ad2db5828199fae64878F848F75509Cae7](https://arbiscan.io/address/0xDdafb4ad2db5828199fae64878F848F75509Cae7) [Etherscan](https://etherscan.io/verifiedSignatures?q=0xDdafb4ad2db5828199fae64878F848F75509Cae7) 05/30/24 [0x29f8f1edf070af11e7cdf5759010ec711411f538](https://arbiscan.io/address/0x29f8f1edf070af11e7cdf5759010ec711411f538) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x29f8f1edf070af11e7cdf5759010ec711411f538) 07/25/24 [0x25f32ae88e433770dd95e683b5f182a1e914e745](https://arbiscan.io/address/0x25f32ae88e433770dd95e683b5f182a1e914e745) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x25f32ae88e433770dd95e683b5f182a1e914e745) 10/04/24 [0x08ee6140804917e6f95334781597ee9ae3ecb13f](https://arbiscan.io/address/0x08ee6140804917e6f95334781597ee9ae3ecb13f) [Etherscan](https://etherscan.io/verifiedSignatures?q=0x08ee6140804917e6f95334781597ee9ae3ecb13f) 10/05/24 ### [](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard#signer-hashes) Signer Hashes Signers hashes are published from [0x925753106fcdb6d2f30c3db295328a0a1c5fd1d1](https://etherscan.io/address/0x925753106fcdb6d2f30c3db295328a0a1c5fd1d1) , the address that Publius used to [deploy Beanstalk](https://etherscan.io/tx/0x40b23cea3aa6e1a7dd89bbcd24c67f6fa1f6d663d7609f14046cd6cf50b6ce86) on August 6, 2021. * [05/24/2024 Signer Hash](https://etherscan.io/verifySig/176651) * [07/22/2023 Signer Hash](https://etherscan.io/verifySig/22066) * [09/16/2022 Signer Hash](https://etherscan.io/verifySig/10511) * [06/13/2022 Signer Hash](https://etherscan.io/verifySig/7236) * [06/06/2022 Signer Hash](https://etherscan.io/verifySig/7236) [PreviousBCM Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) [NextBIC Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process) Last updated 1 year ago * [BCM Signers](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard#bcm-signers) * [Signer Hashes](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard#signer-hashes) --- # Silo | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo.md) . Guides on interacting with [the Silo](https://docs.bean.money/almanac/farm/silo) . * [Understand Silo vAPY](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy) * [Deposit in the Silo](https://docs.bean.money/almanac/guides/silo/deposit) * [Understand Silo Deposit Performance](https://docs.bean.money/almanac/guides/silo/understand-silo-deposit-performance) * [Convert in the Silo](https://docs.bean.money/almanac/guides/silo/convert) * [Transfer Deposits](https://docs.bean.money/almanac/guides/silo/transfer) * [Withdraw from the Silo](https://docs.bean.money/almanac/guides/silo/withdraw) * [Claim Silo Rewards](https://docs.bean.money/almanac/guides/silo/claim-rewards) [PreviousUnderstand the Sun](https://docs.bean.money/almanac/guides/sun/understand-sun) [NextUnderstand Silo vAPY](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy) Last updated 2 years ago --- # Transfer Deposits | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/transfer.md) . Deposits can be [Transferred](https://docs.bean.money/almanac/protocol/glossary#transfer) from one address to another without the loss of Stalk and Seeds. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. At the bottom of the page, there is a table showing the various assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . 4. Select the Deposited asset you want to Transfer. 5. Select ā€œTransferā€ and enter the amount of the Deposit you want to Transfer, up to the ā€œDeposited Balanceā€ shown below the input box. More recent Deposits are Transferred first to minimize the loss of [Stalk and Seeds](https://docs.bean.money/almanac/farm/silo#the-stalk-system) by the sender. No net Stalk or Seeds are lost in a Transfer. 6. Enter the Ethereum address to Transfer to under ā€œTransfer toā€. 7. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 8. Select ā€œTransferā€. 9. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. After the transaction has been confirmed by the network, the Transferred Deposit will appear at the recipient’s address on the ā€œSiloā€ page for the asset that was Transferred. [PreviousConvert in the Silo](https://docs.bean.money/almanac/guides/silo/convert) [NextWithdraw from the Silo](https://docs.bean.money/almanac/guides/silo/withdraw) Last updated 1 year ago --- # Deposit in the Silo | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/deposit.md) . Assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) can be Deposited in [the Silo](https://docs.bean.money/almanac/farm/silo) to earn Stalk and Seeds. You can find more information about Depositing in the Silo [here](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. At the bottom of the page, there is a table showing the various assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . 3. Select the asset you want to Deposit. 4. In the ā€œDepositā€ tab, there is a drop down menu to select the token you would like to Deposit. * For example, a Bean Deposit can be made in either Beans or ETH. ETH will be converted to Beans during the Deposit transaction. 5. Enter the amount you want to Deposit. A transaction preview showing the [Stalk and Seeds](https://docs.bean.money/almanac/farm/silo#the-stalk-system) to be rewarded will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 6. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 7. If you are Depositing ETH or have previously approved the asset being spent, skip to Step 10. For all other assets, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to spend the asset, but does not Deposit it yet. 8. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 9. Select ā€œDepositā€. 10. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 11. After the transaction has been confirmed by the network, your Deposit will appear in the ā€œDepositsā€ table at the bottom of the current page. [PreviousUnderstand Silo vAPY](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy) [NextUnderstand Silo Deposit Performance](https://docs.bean.money/almanac/guides/silo/understand-silo-deposit-performance) Last updated 1 year ago --- # Convert in the Silo | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/convert.md) . Silo Members can participate in peg maintenance by Converting certain Deposited assets to others within the Silo. You can find more information about Conversions [here](https://docs.bean.money/almanac/peg-maintenance/convert) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. At the bottom of the page, there is a table showing the various assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . 4. Select the asset you want to Convert from. For example, to Convert from Bean to another asset, select Bean. You must already have a Deposit of this asset in order to Convert from it. Assets may or may not be convertible at a given time based on [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) . See [Convert Whitelist](https://docs.bean.money/almanac/peg-maintenance/convert#convert-whitelist) for additional information. 5. Select ā€œConvertā€ and enter the amount of the Deposited asset you would like to Convert. 6. Below the input box, select the asset to ā€œConvert toā€. Available pairs are listed in the [Current Convert Whitelist](https://docs.bean.money/almanac/peg-maintenance/convert#convert-whitelist) . 7. A transaction preview will appear below the inputs showing the change in asset and change in [Stalk and Seeds](https://docs.bean.money/almanac/farm/silo#the-stalk-system) . Select the ā€œTransaction Details'' dropdown to review each step of the transaction. 8. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 9. Select ā€œConvertā€. 10. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 11. After the transaction has been confirmed by the network, your Converted Deposit will appear at the ā€œSiloā€ page for the asset you Converted to under the ā€œDepositsā€ table. [PreviousUnderstand Silo Deposit Performance](https://docs.bean.money/almanac/guides/silo/understand-silo-deposit-performance) [NextTransfer Deposits](https://docs.bean.money/almanac/guides/silo/transfer) Last updated 1 year ago --- # Connect to Beanstalk | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/getting-started/connect-wallet.md) . In addition to an internet connection, interacting with Beanstalk requires: 1. A supported Arbitrum wallet with an ETH balance. * [Selecting and Funding a Wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#selecting-a-wallet) 2. Connecting your Arbitrum wallet to Beanstalk. * [Connect to Beanstalk with MetaMask - Desktop](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-metamask-desktop) * [Connect to Beanstalk with MetaMask - Mobile](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#undefined) * [Connect to Beanstalk with WalletConnect](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-walletconnect) * [Connect to Beanstalk with Coinbase Wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-coinbase-wallet) ### [](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#selecting-and-funding-a-wallet) **Selecting and Funding a Wallet** Arbitrum wallets are applications that let you manage your Arbitrum account. Your wallet lets you connect to decentralized applications such as Beanstalk and authorize transactions. On Arbitrum, you are responsible for the security of your own funds. If you are new to decentralized finance, it strongly recommend to research best practices in wallet security before proceeding. Beanstalk officially supports MetaMask, WalletConnect and Coinbase Wallet on desktop and mobile. WalletConnect is a protocol supported by many wallet applications. Although not officially supported, you may be able to connect other wallets such as Brave, Frame or Rabby by selecting MetaMask on [app.bean.money](https://app.bean.money/) . Some wallets allow purchasing ETH directly within the wallet. Alternatively, send ETH from a cryptocurrency exchange to your wallet address. Make sure both sending and receiving addresses are on the Arbitrum network. ### [](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-metamask-desktop) **Connect to Beanstalk with MetaMask - Desktop** **1\. Create a MetaMask Wallet** MetaMask is an Arbitrum wallet that facilitates interaction with the Beanstalk website. 1. Visit [metamask.io/download](https://metamask.io/download/) . 2. Select "Install MetaMask For \[your browser\]". 3. Select "Add to \[your browser\]". 4. Select "Add Extension". 5. Select "Get Started". 6. Follow the instructions to set up your MetaMask wallet. Be sure to save your Secret Recovery Phrase somewhere safe! For better security, use a hardware wallet. 7. In the top right of your browser, click the "Puzzle Piece" icon and then click the "Pin" next to the MetaMask icon to pin MetaMask to your browser toolbar. The MetaMask icon should now appear next to the puzzle piece icon. **2\. Optional: Connect Your Hardware Wallet to MetaMask** 1. Select the MetaMask icon and then click the circle to the right of your MetaMask address. 2. Select "Connect Hardware Wallet". 3. Select your hardware wallet. 4. Select "Connect." 5. Connect and unlock your hardware wallet. 6. Select the wallet address(es) you want to pair with MetaMask. 7. Select "Unlock". **3\. Fund Your MetaMask Wallet with ETH** This step may be unnecessary if you performed Step 2. 1. Copy your MetaMask Arbitrum wallet address. 2. Send your ETH to your MetaMask wallet address from your current ETH wallet or an exchange. **4\. Connect Your MetaMask Wallet to Beanstalk** 1. Visit [app.bean.money](https://app.bean.money/) . 2. Select "Connect Wallet" in the top right of the page. 3. Click the MetaMask icon and confirm that you are on the Arbitrum network. If not, click the down arrow at the top of the window and click "Arbitrum". 4. Congratulations, you are now connected to Beanstalk. Double check that your wallet address in the top right of the website is the same as your MetaMask wallet address. ### [](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-metamask-mobile) **Connect to Beanstalk with MetaMask - Mobile** 1. Download MetaMask from the [App Store](https://apps.apple.com/us/app/metamask-blockchain-wallet/id1438144202) or [Google Play](https://play.google.com/store/apps/details?id=io.metamask) . 2. Follow the instructions to set up your MetaMask wallet. Be sure to save your Secret Recovery Phrase somewhere safe! For better security, use a hardware wallet. 3. From the menu, select "Browser" and visit [app.bean.money](https://app.bean.money/) . 4. Select "Connect Wallet" in the top right of the page and select "MetaMask". Confirm the connection in MetaMask. 5. The "Connect" button will change into an icon representing your wallet. Congratulations, you are now connected to Beanstalk. ### [](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-walletconnect) **Connect to Beanstalk with WalletConnect** 1. Visit [app.bean.money](https://app.bean.money/) . 2. Click ā€œConnect Walletā€ in the top right of the page. 3. Click ā€œWalletConnectā€. 4. Scan the QR code with your mobile wallet and tap ā€œConnectā€. Or, select ā€œDesktopā€ in the toggle and select your wallet of choice and follow the necessary flow. Confirm that you are on the Arbitrum network via the network dropdown in the top right. If so, congratulations, you are now connected to Beanstalk. Double check that your wallet address in the top right of the website is the address you connected through WalletConnect. ### [](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-coinbase-wallet) **Connect to Beanstalk with Coinbase Wallet** 1. Visit [app.bean.money](https://app.bean.money/) . 2. Click ā€œConnect Walletā€ in the top right of the page. 3. Click ā€œCoinbase Walletā€. 4. If you are using the Coinbase Wallet mobile app, scan the QR code. Confirm that you are on the Arbitrum network via the network dropdown in the top right. If so, congratulations, you are now connected to Beanstalk. Double check that your wallet address in the top right of the website is the same as your Coinbase Wallet address. [PreviousWhere to Begin?](https://docs.bean.money/almanac/guides/getting-started/where-to-begin) [NextWhere Are My Assets and How to Use Them?](https://docs.bean.money/almanac/guides/getting-started/where-are-my-assets-and-how-to-use-them) Last updated 1 year ago * [Selecting and Funding a Wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#selecting-and-funding-a-wallet) * [Connect to Beanstalk with MetaMask - Desktop](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-metamask-desktop) * [Connect to Beanstalk with MetaMask - Mobile](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-metamask-mobile) * [Connect to Beanstalk with WalletConnect](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-walletconnect) * [Connect to Beanstalk with Coinbase Wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet#connect-to-beanstalk-with-coinbase-wallet) --- # Understand Fert vAPY | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy.md) . The Beanstalk UI displays vAPY (_variable_ APY_)_ statistics for Fertilizer. APYs are called _variable_ because they are not enforced by Beanstalk in any way. Rather, the APY uses historical data about Beans earned by Fertilizer holders to estimate future returns. The APY calculation has two parts: 1. Estimating the number of Beans that will be minted per Season using recent historical data. 2. Estimating the number of Beans that a Farmer will receive over time for holding Fertilizer. This takes some [assumptions](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#estimating-vapy-for-silo-deposits) about Fertilizer holder behavior. ### [](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#fert-vapy) Fert vAPY Fertilizer holder earn Bean seignorage when [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) is greater than 0 over the previous Season. Estimated annual Beans earned by a Fertilizer holder is called the **Fert vAPY**. ### [](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#estimating-sprouts-fertilized-per-season) Estimating Sprouts Fertilized per Season The Beanstalk UI and Subgraph use a 30-day [exponential moving average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average) (EMA) of Beans earned by Fertilizer holders to estimate future returns. The formula uses a weighted average in which recent Seasons are weighted more heavily. The current EMA value can be located on the Barn page by hovering over the **Fert vAPY**. ### [](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#estimating-vapy-for-fertilizer) Estimating vAPY for Fertilizer The vAPY is determined by the estimated return of holding Fertilizer in 8760 Seasons (1 year). The vAPY calculation makes the following assumptions: * No more Available Fertilizer is purchased; and * No Active Fertilizer becomes Used. ### [](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#calculations) Calculations #### [](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#exponential-moving-average-ema) Exponential Moving Average (EMA) The window of the EMA (uuu), i.e., the number of Seasons in 30 days: u\=24āˆ—30\=720u = 24 \* 30 = 720u\=24āˆ—30\=720 The weighting multiplier (β\\betaβ); a constant between 0 and 1 that determines how much weight is given to the most recent data point: β\=2(u+1)\\beta=\\frac{2}{(u+1)}β\=(u+1)2​ The 30-day exponential moving average at Season ttt (nˉte\\bar{n}^e\_tnˉte​): nˉte\=Ī²āˆ‘i\=tāˆ’ui≤t(1āˆ’Ī²)tāˆ’inie\\bar{n}^e\_t = \\beta \\sum\_{i=t-u}^{i \\leq t}(1-\\beta)^{t-i} n^e\_{i}nˉte​\=βi\=tāˆ’uāˆ‘i≤t​(1āˆ’Ī²)tāˆ’inie​ #### [](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#fert-vapy-1) Fert vAPY The formulas for the Fert vAPY (vAPYFert\\text{vAPY}^{\\text{Fert}}vAPYFert​) take the following variables as inputs: * nˉte\\bar{n}^e\_tnˉte​, the 30-day EMA of Beans earned by Fertilizer holders at Season ttt​; * hhh, the Humidity at Season ttt​; and * FFF, the Active Fertilizer supply. vAPYFert\\text{vAPY}^{\\text{Fert}}vAPYFert​ is calculated using the estimated number of Beans owned by the Fertilizer holder a year from now (8760 Seasons from now). First, calculate the delta Beans earned per Fertilizer (dBPF\\text{dBPF}dBPF​): dBPF\=nˉteF\\text{dBPF}=\\frac{\\bar{n}^e\_t}{F}dBPF\=Fnˉte​​ We define vAPYFert\\text{vAPY}^{\\text{Fert}}vAPYFert​ as: vAPYFert\=(h1+hBPFĆ·8760)\\text{vAPY}^{\\text{Fert}}=(\\frac{h}{ \\frac{1 + h}{\\text{BPF}} \\div 8760})vAPYFert\=(BPF1+h​÷8760h​) [PreviousBarn](https://docs.bean.money/almanac/guides/barn) [NextBuy Fertilizer](https://docs.bean.money/almanac/guides/barn/buy-fertilizer) Last updated 1 year ago * [Fert vAPY](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#fert-vapy) * [Estimating Sprouts Fertilized per Season](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#estimating-sprouts-fertilized-per-season) * [Estimating vAPY for Fertilizer](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#estimating-vapy-for-fertilizer) * [Calculations](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy#calculations) --- # Farmers' Almanac | Beanstalk ![Page cover](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-2d13d1f6b9680ed053c9bc0715d5721d3b661eaa%252Fbackground-barn.png%3Falt%3Dmedia&width=1248&dpr=3&quality=100&sign=6ed69e37&sv=2) For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/readme.md) . ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-7272ad5f08c2297da03500f564de26d764805117%252Flogo.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=be748236&sv=2) Beanstalk is a permissionless fiat stablecoin protocol built on Arbitrum. Beanstalk forms the monetary basis of an Arbitrum-native, rent-free economy facilitated by the seigniorage of its native fiat currency, a stablecoin called Bean. A stablecoin that does not compromise on decentralization nor require collateral, has competitive carrying costs, and trends toward more stability and liquidity, will unlock the potential of DeFi. Beanstalk's primary objective is to incentivize independent market participants to regularly cross the price of 1 Bean over its dollar peg in a sustainable fashion. You can find an overview of why Beanstalk was created here: Beanstalk is an experiment. Before interacting with Beanstalk, consider reading the [Disclosures](https://docs.bean.money/almanac/disclosures) prepared by the DAO. * If you are looking for complete formulas behind the different mechanisms of Beanstalk, check out the [Beanstalk whitepaper](https://bean.money/beanstalk.pdf) (being updated to reflect [BIP-50](https://bean.money/bip-50) and the migration to Arbitrum). Please share any feedback on the Farmers' Almanac in the **(#šŸ“œćƒ»docs-feedback)** channel in Discord. You can submit a pull request to the Farmers' Almanac yourself [here](https://github.com/BeanstalkFarms/Farmers-Almanac) . ### [](https://docs.bean.money/almanac#links) Links * [Introduction](https://docs.bean.money/almanac/introduction/why-beanstalk) * [Beanstalk Mechanics](https://docs.bean.money/almanac/introduction/how-beanstalk-works) * [Guides to Using Beanstalk](https://docs.bean.money/almanac/guides/directory) * [Peg Maintenance](https://github.com/BeanstalkFarms/Farmers-Almanac/blob/master/broken-reference/README.md) * [Governance](https://docs.bean.money/almanac/governance/beanstalk) * [Glossary](https://docs.bean.money/almanac/protocol/glossary) * [Contracts](https://docs.bean.money/almanac/protocol/contracts) * [Other Links](https://docs.bean.money/almanac/community/links) [NextDisclosures](https://docs.bean.money/almanac/disclosures) Last updated 11 months ago --- # Chop Unripe Assets | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/unripe-assets/chop-unripe-assets.md) . [Unripe assets](https://docs.bean.money/almanac/farm/barn#unripe-assets) can be Chopped in exchange for the underlying. You can find more information about Chopping [here](https://docs.bean.money/almanac/farm/barn#chopping) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Select your wallet address on the top right of the page and in the dropdown menu select ā€œChop Unripe Assetsā€. 3. The ā€œChop Conditionsā€ component shows the current ā€œ[Chop Penalty](https://docs.bean.money/almanac/farm/barn#chopping) ā€. Note that Chopping with a greater than 0% Chop Penalty forfeits a claim to future Ripe assets. 4. Select the asset you want to Chop using the drop down menu and enter the amount to Chop, up to the ā€œBalanceā€ shown below the input box. 5. Under ā€œDestinationā€, select ā€œCirculating Balanceā€ or ā€œFarm Balanceā€. Circulating Balance sends the Chopped assets to your wallet, separate from Beanstalk. [Farm Balance](https://docs.bean.money/almanac/protocol/asset-states) keeps the assets stored in Beanstalk which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. 6. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 7. Select ā€œChopā€. 8. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 9. After the transaction has been confirmed by the network, the location of your assets will depend on the option selected in Step 5: * If ā€œCirculating Balanceā€ was selected, the Chopped assets will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œFarm Balanceā€ was selected, the Chopped assets will be shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousUnripe Assets](https://docs.bean.money/almanac/guides/unripe-assets) [NextGlossary](https://docs.bean.money/almanac/protocol/glossary) Last updated 1 year ago --- # Field | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/field.md) . The Field is Beanstalk's credit facility. Beanstalk relies on a decentralized set of creditors to maintain Bean price stability. Farmers who Sow Beans (lend Beans to Beanstalk) in exchange for Pods are known as Sowers. The Temperature is the interest rate on Bean loans. The Morning is the first 5 minutes of each Season. Beanstalk changes the Soil and Temperature throughout the Morning according to the peg maintenance mechanism. For guides on interacting with the Field through the Beanstalk UI, go [here](https://docs.bean.money/almanac/guides/field) . ### [](https://docs.bean.money/almanac/farm/field#soil) **Soil** Anytime Beanstalk is willing to issue debt, there is Soil in the Field. Soil represents the number of Beans that Beanstalk is currently willing to borrow. When Beans are Sown, Beanstalk burns them, permanently removing the Sown Beans from the Bean supply. For example, if there's 10 Soil available and 10 Beans are Sown, the Soil supply becomes 0 and 10 Beans are removed from the Bean supply. If the market is in some sort of equilibrium, Beans are bought to be Sown, which drives the Bean price upward towards its value peg. When P ≄ 1 (_i.e._, [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) ≄ 0), the Soil supply decreases logarithmically at the beginning of each block in the Morning. When P < 1 (_i.e._, deltaB < 0), Beanstalk sets the Soil supply to the minimum of (1) the deltaB calculated using the instantaneous reserves from [Multi Flow](https://docs.bean.money/almanac/peg-maintenance/overview#decentralized-price-oracle) and (2) the time-weighted deltaB over the previous Season. See the [Soil Supply](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) section. ### [](https://docs.bean.money/almanac/farm/field#pods) **Pods** Beans are Sown in exchange for Pods, the Beanstalk-native debt asset. Loans to Beanstalk are issued with a fixed interest rate, known as Temperature, and an unknown maturity date. The number of Pods received from 1 Sown Bean is determined by the Temperature at the time of Sowing. Newly issued Pods accumulate in the back of the Pod Line. The front of the Pod Line receives 1/3 of new Bean mints when there are more than zero Unfertilized Sprouts (Sprouts are issued by the [Barn](https://docs.bean.money/almanac/farm/barn) ). If there are no Unfertilized Sprouts, the front of the Pod Line receives 1/2 of new Bean mints. Pods Ripen into Harvestable Pods that can be Harvested (redeemed) for 1 Bean each on a First In, First Out ([FIFO](https://docs.bean.money/almanac/protocol/glossary#fifo) ) basis. There is no penalty for waiting to Harvest Pods. Pods are tradeable on the [Pod Market](https://docs.bean.money/almanac/farm/toolshed/market#the-pod-market) . Pods can also be Transferred to another address directly. ### [](https://docs.bean.money/almanac/farm/field#temperature) **Temperature** The Temperature is the interest rate for Sowing Beans in the Field. At 500% Temperature, 1 Bean can be Sown in exchange for 6 Pods. Once those Pods become Harvestable, they can be Harvested in exchange for 6 Beans. Beanstalk [changes the Maximum Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) it is willing to offer each Season at the beginning of each Season according to the peg maintenance mechanism. [During the Morning](https://docs.bean.money/almanac/peg-maintenance/temperature#morning) of each Season, the Temperature is the result of a Dutch auction, where the Temperature increases logarithmically from 1% in the block of a successful `gm` function call up to the Maximum Temperature over the course of 5 minutes. During times of short-term excess demand for Soil, the Morning results in Beanstalk paying significantly less to attract creditors. ### [](https://docs.bean.money/almanac/farm/field#field-process) **Field Process** ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-0809b81a9d267190146616179d975e392977d97e%252Ffield.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=8285e11a&sv=2) 1. Beans are Sown in exchange for Pods. 2. Pods Ripen into Harvestable Pods on a FIFO basis when Beanstalk mints new Beans according to the peg maintenance mechanism. 3. Harvestable Pods can be Harvested into Beans. ### [](https://docs.bean.money/almanac/farm/field#economics) **Economics** Beanstalk is credit based and only fails if it can no longer attract creditors. A reasonable level of debt, a strong credit history and a competitive interest rate attract creditors. Beanstalk never defaults on debt (although in the event of Beanstalk no longer attracting creditors, the loan maturity date would become infinitely far in the future—see [Disclosures](https://docs.bean.money/almanac/disclosures#debt-maturity-risk) ). Beanstalk is willing to issue Pods every Season. The combination of non-expiry, the FIFO Harvest schedule and transferability encourages Farmers to Sow Beans as efficiently as possible. By maximizing the efficiency of the Soil market, Beanstalk minimizes its cost to attract creditors, the durations and magnitudes of price deviations below its value peg, and excess Bean minting. [PreviousSeed Gauge System](https://docs.bean.money/almanac/farm/silo/seed-gauge-system) [NextBarn](https://docs.bean.money/almanac/farm/barn) Last updated 1 year ago * [Soil](https://docs.bean.money/almanac/farm/field#soil) * [Pods](https://docs.bean.money/almanac/farm/field#pods) * [Temperature](https://docs.bean.money/almanac/farm/field#temperature) * [Field Process](https://docs.bean.money/almanac/farm/field#field-process) * [Economics](https://docs.bean.money/almanac/farm/field#economics) --- # Market | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/market.md) . Guides on using [the Pod Market](https://docs.bean.money/almanac/farm/toolshed/market#the-pod-market) . * [Buy Pods](https://docs.bean.money/almanac/guides/market/buy-pods) * [Sell Pods](https://docs.bean.money/almanac/guides/market/sell-pods) [PreviousTrade Fertilizer](https://docs.bean.money/almanac/guides/barn/trade-fertilizer) [NextBuy Pods](https://docs.bean.money/almanac/guides/market/buy-pods) Last updated 1 year ago --- # Governance | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/governance.md) . Guides on participating in [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) . * [Vote on Governance Proposals](https://docs.bean.money/almanac/guides/governance/vote-on-proposals) * [Delegate Votes](https://docs.bean.money/almanac/guides/governance/delegate-votes) [PreviousTransfer Balances](https://docs.bean.money/almanac/guides/swap/transfer-balances) [NextVote on Governance Proposals](https://docs.bean.money/almanac/guides/governance/vote-on-proposals) Last updated 1 year ago --- # Migrate to Arbitrum | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/balances/migrate-to-arbitrum.md) . [BIP-50](https://arweave.net/sl_UxJFZbThaTxOMgH8ewLo7cwODJh54s9HtbU8MOl0) migrated Beanstalk from Ethereum mainnet to Arbitrum One. Many users were automatically migrated, however, given that Beanstalk does not have control of Beans outside of the Beanstalk contract, Circulating Beans need to be manually migrated to Arbitrum. Beanstalk assets in smart contract accounts could not be automatically migrated given that Beanstalk cannot assume an owner of a smart contract is able to gain ownership of the same address on Arbitrum. If you need to manually migrate to Arbitrum: 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Enter the wallet address on Arbitrum One to receive your Beanstalk assets. 3. Select "Delegate Beanstalk Balances". 4. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should [verify](https://docs.bean.money/almanac/protocol/contracts) that the transaction is interacting with the correct contract before signing it. For contract migrations only: 1. Connect the Arbitrum One wallet entered in step #2. 2. Select "Claim Beanstalk Balances". 3. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should [verify](https://docs.bean.money/almanac/protocol/contracts) that the transaction is interacting with the correct contract before signing it. [PreviousUnderstand My Balances](https://docs.bean.money/almanac/guides/balances/understand-my-balances) [NextBeaNFTs](https://docs.bean.money/almanac/guides/beanfts) Last updated 1 year ago --- # Delegate Votes | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/governance/delegate-votes.md) . [Stalkholders](https://docs.bean.money/almanac/governance/beanstalk) and [BeaNFT holders](https://docs.bean.money/almanac/governance/beanfts) can delegate their Stalk and BeaNFTs in the [beanstalkdao.eth](https://app.bean.money/#/governance?type=dao) , [beanstalkfarms.eth](https://app.bean.money/#/governance?type=beanstalk-farms) , [wearebeansprout.eth](https://app.bean.money/#/governance?type=bean-sprout) and [beanft.eth](https://app.bean.money/#/governance?type=beanft) Snapshot spaces to any other Farmer. The delegate can then vote on their behalf in governance proposals. Stalk must be delegated on each Snapshot space individually. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Select ā€œMoreā€ then ā€œGovernanceā€ to navigate to the [Governance](https://app.bean.money/#/governance) page. 3. Under the "DAO", "Beanstalk Farms" and "Bean Sprout" tabs the Stalk you own and any Stalk that has been delegated to you is shown. Under the "BeanNFT DAO" tab the BeaNFTs you own and any BeaNFTs that have been delegated to you is shown. 4. To delegate your Stalk or BeaNFTs to another Farmer, select "Delegate your \[Stalk/BeaNFT\] votes to another Farmer on \[Snapshot space\]". 5. Enter the address to delegate to. View delegate applications on the [Beanstalk Discord](https://discord.com/channels/880413392916054098/1092912362295668828) or you may delegate to any Arbitrum address. * If Farmer A delegates to Farmer B and both of them vote, then the delegated voting power is not calculated—in this instance the votes of the two Farmers will be calculated as if the delegation did not happen. The vote of B will be counted if A does not vote. 6. Select "Set Delegate". 7. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 8. After the transaction has been confirmed by the network, the Delegation page for the Snapshot space you delegated will reflect the delegation. * You can also verify your delegations on [Snapshot](https://snapshot.org/#/delegate) . * Stalk must be delegated on each Snapshot space individually. [PreviousVote on Governance Proposals](https://docs.bean.money/almanac/guides/governance/vote-on-proposals) [NextUnripe Assets](https://docs.bean.money/almanac/guides/unripe-assets) Last updated 1 year ago --- # BeaNFTs | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanfts.md) . BeaNFTs were the first project built on top of Beanstalk. BeaNFTs have historically been awarded to Farmers for interacting with Beanstalk during certain time periods. BeaNFT contract addresses can be found on the [Contracts](https://docs.bean.money/almanac/protocol/contracts) page. You can read more about them here: * [Announcing the BeaNFT Genesis Collection](https://bean.money/blog/announcing-beanft-genesis-collection) * [BeaNFT Genesis: Utility, Structure and Rarity](https://bean.money/blog/beanft-genesis-utility-structure-rarity) * [The BeaNFT Winter Collection](https://bean.money/blog/beanft-winter-collection) * [The BeaNFT Barn Raise Collection](https://bean.money/blog/beanft-barn-raise-collection) * [The Basin BeaNFT Collection](https://bean.money/blog/basin-beanft-collection) OpenSea: * [Genesis Collection](https://opensea.io/collection/beanft-genesis) * [Winter Collection](https://opensea.io/collection/beanft-winter) * [Barn Raise Collection](https://opensea.io/collection/beanft-barn-raise) * [Basin Collection](https://opensea.io/collection/beanft-basin) [](https://docs.bean.money/almanac/governance/beanfts#governance) Governance --------------------------------------------------------------------------------- BeaNFT Proposals, or BNPs, are proposals through which the BeaNFT DAO votes on the direction of BeaNFTs (new collections, collection upgrades, etc.). Anyone with 0.1% of the BeaNFT supply can propose a BNP. BNPs are voted on by BeaNFT holders and have two voting choices: For and Against. The Voting Period for BNPs is 7 days. If at the end of the Voting Period: * Less than or equal to 15% of the BeaNFT supply is voting For or the majority of participating BeaNFTs is voting Against the BNP, it fails, or * More than 15% of the BeaNFT supply is voting For and the majority of participating BeaNFTs is voting For the BNP, it passes. A BNP to create a new BeaNFT collection should include, at a minimum: (1) criteria to qualify for a BeaNFT in the new collection and (2) any rarity boost criteria. Including high level information about the theme of the collection, whether qualifying Farmers will be required to mint them, etc. is recommended. After the passage of the BNP, it is on the proposer to see through the completion of the art, the creation and deployment of the contracts, etc. Due to this, there is no guarantee that a new collection gets created after the passage of this type of BNP. A BNP seeking to upgrade an existing BeaNFT collection should outline (1) the proposed upgrade, (2) the rationale for the upgrade and (3) any technical criteria required to be implement the upgrade. A BNP can also be used to change the configuration or signers on the [BeaNFT DAO Multisig (BDM)](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard) . BNPs are proposed on the [BeaNFT DAO Snapshot space](https://snapshot.org/#/beanft.eth) . BeaNFT holders can vote on BNPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=beanft) . Past BNPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bnp) . [PreviousBFC Dashboard](https://docs.bean.money/almanac/governance/beanstalk-farms/bfc-dashboard) [NextBDM Dashboard](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard) Last updated 1 year ago --- # Withdraw from the Silo | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/withdraw.md) . The associated amount of Stalk, Seeds, and Stalk from Seeds from a given Deposit must be forfeited when the Deposit is Withdrawn from the Silo. You can find more information about Withdrawals [here](https://docs.bean.money/almanac/farm/silo#withdraw) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. At the bottom of the page, there is a table showing the various assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . 4. Select the asset you want to Withdraw. You must already have a Deposit of this asset in order to Withdraw. 5. Select the ā€œWithdrawā€ tab and enter the amount of the Deposited asset you would like to Withdraw. You may Withdraw any amount up to your ā€œDeposited Balanceā€ shown below the input box. 6. Under ā€œDestinationā€, select ā€œCirculating Balanceā€ or ā€œFarm Balanceā€. Selecting Circulating Balance returns Withdrawn assets to your wallet. Selecting Farm Balance keeps the asset stored in Beanstalk which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. 7. LP Tokens have a ā€œClaim asā€ option that allows you to receive the asset in a different form. For example, BEAN:3CRV LP may be Withdrawn as BEAN:3CRV, Bean or 3CRV. If the option selected is different from the Withdrawn asset, the transaction will convert the Withdrawn asset. * If the transaction involves trading between assets, you may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 8. A transaction preview showing the [decrease in Stalk and Seeds](https://docs.bean.money/almanac/farm/silo#the-stalk-system) will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 9. Select ā€œWithdrawā€. 10. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should [verify](https://docs.bean.money/almanac/protocol/contracts) that the transaction is interacting with the correct contract before signing it. 11. After the transaction has been confirmed by the network, the location of your assets will depend on the option selected in Step 6: * If ā€œCirculating Balanceā€ was selected, the assets will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œFarm Balanceā€ was selected, the assets will be shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousTransfer Deposits](https://docs.bean.money/almanac/guides/silo/transfer) [NextClaim Silo Rewards](https://docs.bean.money/almanac/guides/silo/claim-rewards) Last updated 1 year ago --- # Marketplace Facet | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/developers/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/developers/protocol/market/marketplace-facet.md) . Note that this page has not been updated to reflect the current state of Beanstalk, but is left here as a reference. The Marketplace Facet handles logic for buying and selling Pods on the [Pod Market](https://docs.bean.money/almanac/farm/market#pods) . [](https://docs.bean.money/developers/protocol/market/marketplace-facet#call-functions) Call Functions ----------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-listing) [Create Pod Listing](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L24) Copy function createPodListing( uint256 index, uint256 start, uint256 amount, uint24 pricePerPod, uint256 maxHarvestableIndex, uint256 minFillAmount, LibTransfer.To mode ) external payable; WIP Parameter Type Description `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `pricePerPod` `uint24` WIP `maxHarvestableIndex` `uint256` WIP `minFillAmount` `uint256` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-listing-v2) [Create Pod Listing V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L44) WIP Parameter Type Description `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `maxHarvestableIndex` `uint256` WIP `minFillAmount` `uint256` WIP `pricingFunction` `bytes` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-listing) [Fill Pod Listing](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L65) WIP Parameter Type Description `l` `PodListing` WIP `beanAmount` `uint256` WIP `mode` `From` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-listing-v2) [Fill Pod Listing V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L81) WIP Parameter Type Description `l` `PodListing` WIP `beanAmount` `uint256` WIP `pricingFunction` `bytes` WIP `mode` `From` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#cancel-pod-listing) [Cancel Pod Listing](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L99) WIP Parameter Type Description `index` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-order) [Create Pod Order](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L113) WIP Parameter Type Description `beanAmount` `uint256` WIP `pricePerPod` `uint24` WIP `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP `mode` `From` WIP Return Value Type Description `id` `bytes32` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-order-v2) [Create Pod Order V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L124) Parameter Type Description `beanAmount` `uint256` WIP `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP `pricingFunction` `bytes` WIP `mode` `From` WIP Return Value Type Description `id` `bytes32` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-order) [Fill Pod Order](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L136) WIP Parameter Type Description `o` `PodOrder` WIP `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-order-v2) [Fill Pod Order V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L146) WIP Parameter Type Description `o` `PodOrder` WIP `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `pricingFunction` `bytes` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#cancel-pod-order) [Cancel Pod Order](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L158) WIP Parameter Type Description `pricePerPod` `uint24` WIP `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#cancel-pod-order-v2) [Cancel Pod Order V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L167) WIP Parameter Type Description `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP `pricingFunction` `bytes` WIP `mode` `To` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#transfer-plot) [Transfer Plot](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L219) WIP Parameter Type Description `sender` `address` WIP `recipient` `address` WIP `id` `uint256` WIP `start` `uint256` WIP `end` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#approve-pods) [Approve Pods](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L244) WIP Parameter Type Description `spender` `address` WIP `amount` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#get-amount-pods-from-fill-listing-v2) [Get Amount Pods From Fill Listing V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Listing.sol#L258) WIP Parameter Type Description `placeInLine` `uint256` WIP `podListingAmount` `uint256` WIP `fillBeanAmount` `uint256` WIP `pricingFunction` `bytes` WIP Return Value Type Description `amount` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#get-amount-beans-to-fill-order-v2) [Get Amount Beans To Fill Order V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Order.sol#L191) WIP Parameter Type Description `placeInLine` `uint256` WIP `amountPodsFromOrder` `uint256` WIP `pricingFunction` `bytes` WIP Return Value Type Description `beanAmount` `uint256` WIP [](https://docs.bean.money/developers/protocol/market/marketplace-facet#view-functions) View Functions ----------------------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-order) [Pod Order](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L178) WIP Parameter Type Description `account` `address` WIP `pricePerPod` `uint24` WIP `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP Return Value Description `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-order-v2) [Pod Order V2](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L194) WIP Parameter Type Description `account` `address` WIP `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP `pricingFunction` `bytes` WIP Return Type Description `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-order-by-id) [Pod Order By Id](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L211) WIP Parameter Type Description `id` `bytes32` WIP Return Type Description `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-listing) [Pod Listing](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/MarketplaceFacet.sol#L104) WIP Parameter Type Description `index` `uint256` WIP Return Type Description `bytes32` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#allowance-pods) [Allowance Pods](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/PodTransfer.sol#L41) WIP Parameter Type Description `owner` `address` WIP `spender` `address` WIP Return Type Description `uint256` WIP [](https://docs.bean.money/developers/protocol/market/marketplace-facet#events) Events ------------------------------------------------------------------------------------------- ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-listing-created) [Pod Listing Created](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Listing.sol#L32) WIP Parameter Type Description `account` `address` WIP `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `pricePerPod` `uint24` WIP `maxHarvestableIndex` `uint256` WIP `minFillAmount` `uint256` WIP `pricingFunction` `bytes` WIP `mode` `To` WIP `pricingType` `PriceType` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-listing-filled) [Pod Listing Filled](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Listing.sol#L45) WIP Parameter Type Description `from` `address` WIP `to` `address` WIP `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `costInBeans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-listing-cancelled) [Pod Listing Cancelled](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Listing.sol#L54) WIP Parameter Type Description `account` `address` WIP `index` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-order-created) [Pod Order Created](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Order.sol#L26) WIP Parameter Type Description `account` `address` WIP `id` `bytes32` WIP `amount` `uint256` WIP `pricePerPod` `uint24` WIP `maxPlaceInLine` `uint256` WIP `minFillAmount` `uint256` WIP `pricingFunction` `bytes` WIP `priceType` `PriceType` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-order-filled) [Pod Order Filled](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Order.sol#L37) WIP Parameter Type Description `from` `address` WIP `to` `address` WIP `id` `bytes32` WIP `index` `uint256` WIP `start` `uint256` WIP `amount` `uint256` WIP `costInBeans` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-order-cancelled) [Pod Order Cancelled](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/Order.sol#L47) WIP Parameter Type Description `account` `address` WIP `id` `bytes32` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-plot-transfer) [Plot Transfer](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/PodTransfer.sol#L25) WIP Parameter Type Description `from` `address` WIP `to` `address` WIP `id` `uint256` WIP `pods` `uint256` WIP ### [](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-approval) [Pod Approval](https://github.com/BeanstalkFarms/Beanstalk/blob/c20cd7d920643016b5d73eacdfd1b7179d0ea9c2/protocol/contracts/farm/facets/MarketplaceFacet/PodTransfer.sol#L31) WIP Parameter Type Description `owner` `address` WIP `spender` `address` WIP `pods` `uint256` WIP [PreviousMarket](https://docs.bean.money/developers/protocol/market) [NextFarm](https://docs.bean.money/developers/protocol/depot) Last updated 1 year ago * [Call Functions](https://docs.bean.money/developers/protocol/market/marketplace-facet#call-functions) * [Create Pod Listing](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-listing) * [Create Pod Listing V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-listing-v2) * [Fill Pod Listing](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-listing) * [Fill Pod Listing V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-listing-v2) * [Cancel Pod Listing](https://docs.bean.money/developers/protocol/market/marketplace-facet#cancel-pod-listing) * [Create Pod Order](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-order) * [Create Pod Order V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#create-pod-order-v2) * [Fill Pod Order](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-order) * [Fill Pod Order V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#fill-pod-order-v2) * [Cancel Pod Order](https://docs.bean.money/developers/protocol/market/marketplace-facet#cancel-pod-order) * [Cancel Pod Order V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#cancel-pod-order-v2) * [Transfer Plot](https://docs.bean.money/developers/protocol/market/marketplace-facet#transfer-plot) * [Approve Pods](https://docs.bean.money/developers/protocol/market/marketplace-facet#approve-pods) * [Get Amount Pods From Fill Listing V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#get-amount-pods-from-fill-listing-v2) * [Get Amount Beans To Fill Order V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#get-amount-beans-to-fill-order-v2) * [View Functions](https://docs.bean.money/developers/protocol/market/marketplace-facet#view-functions) * [Pod Order](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-order) * [Pod Order V2](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-order-v2) * [Pod Order By Id](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-order-by-id) * [Pod Listing](https://docs.bean.money/developers/protocol/market/marketplace-facet#pod-listing) * [Allowance Pods](https://docs.bean.money/developers/protocol/market/marketplace-facet#allowance-pods) * [Events](https://docs.bean.money/developers/protocol/market/marketplace-facet#events) * [Pod Listing Created](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-listing-created) * [Pod Listing Filled](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-listing-filled) * [Pod Listing Cancelled](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-listing-cancelled) * [Pod Order Created](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-order-created) * [Pod Order Filled](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-order-filled) * [Pod Order Cancelled](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-order-cancelled) * [Plot Transfer](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-plot-transfer) * [Pod Approval](https://docs.bean.money/developers/protocol/market/marketplace-facet#event-pod-approval) Copy function createPodListingV2( uint256 index, uint256 start, uint256 amount, uint256 maxHarvestableIndex, uint256 minFillAmount, bytes calldata pricingFunction, LibTransfer.To mode ) external payable; Copy function fillPodListing( PodListing calldata l, uint256 beanAmount, LibTransfer.From mode ) external payable; Copy function fillPodListingV2( PodListing calldata l, uint256 beanAmount, bytes calldata pricingFunction, LibTransfer.From mode ) external payable; Copy function cancelPodListing(uint256 index) external payable; Copy function createPodOrder( uint256 beanAmount, uint24 pricePerPod, uint256 maxPlaceInLine, uint256 minFillAmount, LibTransfer.From mode ) external payable returns (bytes32 id); Copy function createPodOrderV2( uint256 beanAmount, uint256 maxPlaceInLine, uint256 minFillAmount, bytes calldata pricingFunction, LibTransfer.From mode ) external payable returns (bytes32 id); Copy function fillPodOrder( PodOrder calldata o, uint256 index, uint256 start, uint256 amount, LibTransfer.To mode ) external payable; Copy function fillPodOrderV2( PodOrder calldata o, uint256 index, uint256 start, uint256 amount, bytes calldata pricingFunction, LibTransfer.To mode ) external payable; Copy function cancelPodOrder( uint24 pricePerPod, uint256 maxPlaceInLine, uint256 minFillAmount, LibTransfer.To mode ) external payable; Copy function cancelPodOrderV2( uint256 maxPlaceInLine, uint256 minFillAmount, bytes calldata pricingFunction, LibTransfer.To mode ) external payable; Copy function transferPlot( address sender, address recipient, uint256 id, uint256 start, uint256 end ) external payable nonReentrant; Copy function approvePods(address spender, uint256 amount) external payable nonReentrant; Copy function getAmountPodsFromFillListingV2( uint256 placeInLine, uint256 podListingAmount, uint256 fillBeanAmount, bytes calldata pricingFunction ) public pure returns (uint256 amount); Copy function getAmountBeansToFillOrderV2( uint256 placeInLine, uint256 amountPodsFromOrder, bytes calldata pricingFunction ) public pure returns (uint256 beanAmount); Copy function podOrder( address account, uint24 pricePerPod, uint256 maxPlaceInLine, uint256 minFillAmount ) external view returns (uint256); Copy function podOrderV2( address account, uint256 maxPlaceInLine, uint256 minFillAmount, bytes calldata pricingFunction ) external view returns (uint256); Copy function podOrderById(bytes32 id) external view returns (uint256); Copy function podListing(uint256 index) external view returns (bytes32); Copy function allowancePods(address owner, address spender) public view returns (uint256); Copy event PodListingCreated( address indexed account, uint256 index, uint256 start, uint256 amount, uint24 pricePerPod, uint256 maxHarvestableIndex, uint256 minFillAmount, bytes pricingFunction, LibTransfer.To mode, LibPolynomial.PriceType pricingType ); Copy event PodListingFilled( address indexed from, address indexed to, uint256 index, uint256 start, uint256 amount, uint256 costInBeans ); Copy event PodListingCancelled(address indexed account, uint256 index); Copy event PodOrderCreated( address indexed account, bytes32 id, uint256 amount, uint24 pricePerPod, uint256 maxPlaceInLine, uint256 minFillAmount, bytes pricingFunction, LibPolynomial.PriceType priceType ); Copy event PodOrderFilled( address indexed from, address indexed to, bytes32 id, uint256 index, uint256 start, uint256 amount, uint256 costInBeans ); Copy event PodOrderCancelled(address indexed account, bytes32 id); Copy event PlotTransfer( address indexed from, address indexed to, uint256 indexed id, uint256 pods ); Copy event PodApproval( address indexed owner, address indexed spender, uint256 pods ); --- # Links | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/community/links.md) . * [**Website**](https://bean.money/) * [**Beanstalk UI**](https://app.bean.money/) * [**Whitepaper**](https://bean.money/beanstalk.pdf) * [**GitHub**](https://github.com/BeanstalkFarms) * [**Beanstalk State Space**](https://bean.money/beanstalk-state-space.pdf) * [Blog](https://bean.money/blog) * [Bug Bounty Program](https://immunefi.com/bounty/beanstalk/) ### [](https://docs.bean.money/almanac/community/links#development) Development * [**Beanstalk GitHub**](https://github.com/BeanstalkFarms/Beanstalk) * [Beanstalk Protocol](https://github.com/BeanstalkFarms/Beanstalk/tree/master/protocol) * [Beanstalk UI](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/ui) * [Beanstalk SDK](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/sdk) * [Beanstalk Subgraph](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/subgraph-beanstalk) * [Bean Subgraph](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/subgraph-bean) * [Beanstalk SDK on npm](https://www.npmjs.com/package/@beanstalk/sdk) * [Beanstalk Py (Bot Tooling) Repo](https://github.com/BeanstalkFarms/beanstalk-py) * [Beanstalk Landing Page Repo](https://github.com/BeanstalkFarms/Beanstalk-Landing) ### [](https://docs.bean.money/almanac/community/links#pipeline) Pipeline * [Pipeline Repositories](https://github.com/BeanstalkFarms#pipeline-1) ### [](https://docs.bean.money/almanac/community/links#basin) Basin * [Basin Repositories](https://github.com/BeanstalkFarms#basin-1) ### [](https://docs.bean.money/almanac/community/links#analytics) Analytics * [**Beanstalk UI Analytics Page**](https://app.bean.money/#/analytics) * [**Beanstalk Farms Dune**](https://dune.com/beanstalkfarms/beanstalk) * [Beanstalk Dashboard](https://dashboard.bean.money/) #### [](https://docs.bean.money/almanac/community/links#listings) Listings * [Bean on CoinGecko](https://www.coingecko.com/en/coins/bean) * [Bean on DeFi Llama](https://defillama.com/stablecoin/bean) * [Beanstalk on DeFi Llama](https://defillama.com/protocol/beanstalk) ### [](https://docs.bean.money/almanac/community/links#documentation) Documentation * [**Farmers' Almanac** (non-technical docs)](https://docs.bean.money/almanac) * [**Beanstalk State Space**](https://bean.money/beanstalk-state-space.pdf) * [Farmers' Almanac Repo](https://github.com/BeanstalkFarms/Farmers-Almanac) * [Beanstalk Whitepaper Repo](https://github.com/BeanstalkFarms/Beanstalk-Whitepaper) * [Pipeline Whitepaper Repo](https://github.com/BeanstalkFarms/Pipeline-Whitepaper) * [Beanstalk Governance Proposals Repo](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/) * [Beanstalk Farms Operations Repo](https://github.com/BeanstalkFarms/Beanstalk-Farms-Operations) * [Beanstalk Brand Assets Repo](https://github.com/BeanstalkFarms/Beanstalk-Brand-Assets) ### [](https://docs.bean.money/almanac/community/links#notion) Notion * [**Beanstalk Notion**](https://community.bean.money/) * [Recordings](https://community.bean.money/recordings) * [Past Community Grants](https://community.bean.money/community-grants) * [Bug Reports](https://community.bean.money/bug-reports) * [BCM Verification](https://community.bean.money/bcm-verification) ### [](https://docs.bean.money/almanac/community/links#security) Security * [**Immunefi Bug Bounty Program**](https://immunefi.com/bounty/beanstalk) * [**Beanstalk Audits Repo**](https://github.com/BeanstalkFarms/Beanstalk-Audits) ### [](https://docs.bean.money/almanac/community/links#governance) Governance * [**Beanstalk UI Governance Page**](https://app.bean.money/#/governance) * [**Beanstalk DAO Snapshot**](https://snapshot.org/#/beanstalkdao.eth) * [Beanstalk Farms Snapshot](https://snapshot.org/#/beanstalkfarms.eth) * [Beanstalk Farms Budget Snapshot](https://snapshot.org/#/beanstalkfarmsbudget.eth) * [Beanstalk Bug Bounty Snapshot](https://snapshot.org/#/beanstalkbugbounty.eth) * [BeaNFT DAO Snapshot](https://snapshot.org/#/beanft.eth) * [**Beanstalk Twitter**](https://twitter.com/beanstalkmoney) * [**Beanstalk Farms Twitter**](https://twitter.com/BeanstalkFarms) * [Beanstalk Farms YouTube](https://www.youtube.com/@BeanstalkFarms) * [Beanstalk Telegram](https://t.me/beanstalkusd) * [Beanstalk Telegram Tracker](https://t.me/beanstalktracker) ### [](https://docs.bean.money/almanac/community/links#recordings-and-meeting-notes) Recordings and Meeting Notes * [**Beanstalk Recordings**](https://community.bean.money/recordings) * Beanstalk Farms [YouTube](https://www.youtube.com/@BeanstalkFarms) , [Anchor](https://anchor.fm/beanstalk-farms) , [Spotify](https://open.spotify.com/show/70lfZOSaqWjhTFujgkhVOu) , [Apple Podcasts](https://podcasts.apple.com/gb/podcast/beanstalk-farms/id1624827919) ### [](https://docs.bean.money/almanac/community/links#opensea) OpenSea * [BeaNFT Genesis Collection](https://opensea.io/collection/beanft-genesis) * [BeaNFT Winter Collection](https://opensea.io/collection/beanft-winter) * [BeaNFT Barn Raise Collection](https://opensea.io/collection/beanft-barn-raise) * [BeaNFT Basin Collection](https://opensea.io/collection/beanft-basin) * [Fertilizer](https://opensea.io/collection/bean-fertilizer) * [Silo Deposits](https://opensea.io/collection/silo-deposits) ### [](https://docs.bean.money/almanac/community/links#inactive) Inactive * [Commonwealth](https://commonwealth.im/beanstalk/) * [Reddit](https://www.reddit.com/r/BeanstalkProtocol/) * [TikTok](https://www.tiktok.com/@beanstalkprotocol) * [Layer3](https://beta.layer3.xyz/communities/beanstalk) * [BeaNFT Twitter](https://twitter.com/beanstalknfts) * [Bean Sprout Snapshot](https://snapshot.org/#/wearebeansprout.eth) * [Bean Sprout Twitter](https://twitter.com/WeAreBeanSprout) * [Bi-Weekly Bean Newsletter](https://beanstalkfarms.substack.com/) * [RadioDeFi Website](https://www.radio-defi.com/) * [RadioDeFi Twitter](https://twitter.com/RadioDefiPod) * RadioDeFi [YouTube](https://www.youtube.com/channel/UC_zZp7XgQ7ndgcXpTrFxGxw) , [Anchor](https://anchor.fm/radiodefi) , [Spotify](https://open.spotify.com/show/38EWMCQ8wipEGRFJjHhQfE) , [Apple Podcasts](https://podcasts.apple.com/us/podcast/radiodefi/id1653827749) * [The Bean Pod Twitter](https://twitter.com/The_Bean_Pod) * The Bean Pod [YouTube Playlist](https://www.youtube.com/playlist?list=PLyqLJA5Mbo9a6kL3vhJGM0HtRjqALfoD_) , [Anchor](https://anchor.fm/thebeanpodpodcast) , [Spotify](https://open.spotify.com/show/5VZRhgtCQqw9xGIXXHqi8m) , [Apple Podcasts](https://podcasts.apple.com/us/podcast/the-bean-pod/id1615215031) * [Bean Price Tracker Chrome Extension](https://chrome.google.com/webstore/detail/bean-tracker/aodkdgdikbdeeaknenojacllnnjlhodj) [PreviousContent](https://docs.bean.money/almanac/community/content) [NextBean Sprout](https://docs.bean.money/almanac/archives/bean-sprout) Last updated 11 months ago * [Development](https://docs.bean.money/almanac/community/links#development) * [Pipeline](https://docs.bean.money/almanac/community/links#pipeline) * [Basin](https://docs.bean.money/almanac/community/links#basin) * [Analytics](https://docs.bean.money/almanac/community/links#analytics) * [Documentation](https://docs.bean.money/almanac/community/links#documentation) * [Notion](https://docs.bean.money/almanac/community/links#notion) * [Security](https://docs.bean.money/almanac/community/links#security) * [Governance](https://docs.bean.money/almanac/community/links#governance) * [Social](https://docs.bean.money/almanac/community/links#social) * [Recordings and Meeting Notes](https://docs.bean.money/almanac/community/links#recordings-and-meeting-notes) * [OpenSea](https://docs.bean.money/almanac/community/links#opensea) * [Inactive](https://docs.bean.money/almanac/community/links#inactive) --- # Understand Silo vAPY | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy.md) . The Beanstalk UI displays vAPY (_variable_ APY_)_ statistics for each asset on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) . APYs are called _variable_ because they are not enforced by Beanstalk in any way. Rather, the APY uses historical data about Beans earned by Stalkholders to estimate future returns for Depositing in the Silo. The APY calculation has two parts: 1. Estimating the number of Beans that will be minted per Season using recent historical data. 2. Estimating the number of Beans and Stalk that a Farmer will receive over time for Depositing their whitelisted assets in the Silo. This takes into account the Stalk supply and Seed supply and makes some [assumptions](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#estimating-vapy-for-silo-deposits) about Stalkholder behavior. ### [](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#bean-vapy-vs-stalk-vapy) Bean vAPY vs Stalk vAPY Stalkholders earn Bean seignorage when [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) is greater than 0 over the previous Season. Estimated annual Beans earned by a Stalkholder is called the **Bean vAPY**. Seeds grow Stalk each Season, regardless of deltaB. Estimated annual Stalk growth for a Stalkholder is called the **Stalk vAPY**. ### [](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#estimating-earned-beans-per-season) Estimating Earned Beans per Season The Beanstalk UI and Subgraph use a 30-day [exponential moving average](https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average) (EMA) of Beans earned by Stalkholders to estimate future Beans earned by Stalkholders. The formula uses a weighted average in which recent Seasons are weighted more heavily. The current EMA value can be located on the Silo page by hovering over the **Bean vAPY** values for any whitelisted asset. ### [](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#estimating-vapy-for-silo-deposits) Estimating vAPY for Silo Deposits The vAPY for Depositing a whitelisted asset in the Silo is determined by the value of 1 newly Deposited [BDV](https://docs.bean.money/almanac/protocol/glossary#bean-denominated-value) in 8760 Seasons (1 year). The vAPY calculations make the following assumptions: * No new assets are Deposited into or Withdrawn from the Silo; * No liquidity is added or removed from liquidity pools that Beans trade in; * There are 30-day EMA of Beans earned by Stalkholders each Season (which assumes that the Bean to Max LP Seed Ratio will approach its max value if there are any Seasons where Stalkholders earned Beans in the last 30 days); and * Every Stalkholder Mows their Grown Stalk and Plants their Plantable Seeds each Season. ### [](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#calculations) Calculations #### [](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#exponential-moving-average-ema) Exponential Moving Average (EMA) The window of the EMA (uuu), i.e., the number of Seasons in 30 days: u\=24āˆ—30\=720u = 24 \* 30 = 720u\=24āˆ—30\=720 The weighting multiplier (β\\betaβ); a constant between 0 and 1 that determines how much weight is given to the most recent data point: β\=2(u+1)\\beta=\\frac{2}{(u+1)}β\=(u+1)2​ The 30-day exponential moving average at Season ttt (nˉte\\bar{n}^e\_tnˉte​): nˉte\=Ī²āˆ‘i\=tāˆ’u+1i≤t(1āˆ’Ī²)tāˆ’inie\\bar{n}^e\_t = \\beta \\sum\_{i=t-u+1}^{i \\leq t}(1-\\beta)^{t-i} n^e\_{i}nˉte​\=βi\=tāˆ’u+1āˆ‘i≤t​(1āˆ’Ī²)tāˆ’inie​ #### [](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#strategy) Strategy The Beanstalk UI shows the vAPYs for a Deposit with the average amount of Grown Stalk\* based on a simulation of the Farmer's increase in Bean and Stalk positions compounded over the next year. The complete formulas for the vAPYs can be read in the code [here](https://github.com/BeanstalkFarms/Beanstalk-API/blob/main/src/utils/apy/gauge.js) . \*The [APYs on DeFiLlama](https://defillama.com/yields?token=BEAN) are based on a new Deposit with no Grown Stalk. [PreviousSilo](https://docs.bean.money/almanac/guides/silo) [NextDeposit in the Silo](https://docs.bean.money/almanac/guides/silo/deposit) Last updated 1 year ago * [Bean vAPY vs Stalk vAPY](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#bean-vapy-vs-stalk-vapy) * [Estimating Earned Beans per Season](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#estimating-earned-beans-per-season) * [Estimating vAPY for Silo Deposits](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#estimating-vapy-for-silo-deposits) * [Calculations](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy#calculations) --- # Content | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/community/content.md) . For more content, check out the [Recordings](https://community.bean.money/recordings) page, the [blog](https://bean.money/blog) or the [Beanstalk Farms YouTube channel](https://www.youtube.com/c/BeanstalkFarms/videos) . ### [](https://docs.bean.money/almanac/community/content#beanstalk-farms-authored-articles) Beanstalk Farms Authored Articles * May 26th, 2022 — [Bank Runs, Airplanes, and Beanstalk](https://bean.money/blog/bank-runs-airplanes-and-beanstalk) * June 29th, 2022 — [Water Clocks and the Beanstalk Helmsman](https://bean.money/blog/water-clocks-and-the-beanstalk-helmsman) * November 1st, 2022 — [A Framework for Stablecoins](https://bean.money/blog/a-framework-for-stablecoins) * January 1st, 2023 — [Beanstalk Farms' 2022 Roundup](https://bean.money/blog/beanstalk-farms-2022-roundup) ### [](https://docs.bean.money/almanac/community/content#publius-authored-articles) Publius Authored Articles * September 24, 2021 — [🌱 Beanstalk šŸ¤ EIP-2535 šŸ’Ž](https://publius.money/blog/2021-09-24-beanstalk-eip-2535) * June 5th, 2022 — [Thoughts Before the Barn Raise](https://publius.money/blog/2022-06-05-thoughts-before-the-barn-raise) * January 6th, 2023 — [Beanstalk Development Update](https://publius.money/blog/2023-01-06-beanstalk-development-update) * January 6th, 2023 — [Worthless Tech](https://publius.money/blog/2023-01-06-worthless-tech) ### [](https://docs.bean.money/almanac/community/content#community-authored-content) Community Authored Content * [stablecoins.wtf Analysis](https://stablecoins.wtf/articles/beanstalk-protocol) * [RadioDeFi](https://www.radio-defi.com/) * [The Bean Pod](https://www.youtube.com/playlist?list=PLyqLJA5Mbo9a6kL3vhJGM0HtRjqALfoD_) * [Beanstalk Songs](https://www.youtube.com/playlist?list=PLyqLJA5Mbo9Y9ZA7m2qip8tdNY37HBAlo) ### [](https://docs.bean.money/almanac/community/content#podcasts) Podcasts * August 11th, 2022 — [Hash Rate](https://www.youtube.com/watch?v=YD08SefiJ8Q) * August 24th, 2022 — [MarketCapping](https://youtu.be/5LHsIES6THs) * September 9th, 2022 — [MissionDeFi](https://youtu.be/hotl8RA-IxY) * October 1st, 2022 — [The Block Runner](https://www.youtube.com/watch?v=8GTXUJV6mLs) ### [](https://docs.bean.money/almanac/community/content#media) Media * April 22nd, 2022 — [Wall Street Journal](https://www.wsj.com/articles/crypto-thieves-get-bolder-by-the-heist-stealing-record-amounts-11650582598) * April 27th, 2022 — [Wall Street Journal](https://www.wsj.com/articles/hacked-crypto-startups-get-capital-infusions-from-investors-11651053602) * June 2nd, 2022 — [CoinDesk](https://www.coindesk.com/business/2022/06/02/beanstalk-stablecoin-protocol-barn-raise-aims-to-restore-77m-in-lost-funds/) * July 26th, 2022 — [The Block](https://www.theblock.co/post/159618/root-raise-beanstalk-stablecoin) * July 27th, 2022 — [Blockworks](https://blockworks.co/news/hacked-stablecoin-beanstalk-raises-9m-for-market-protocol) * August 6th, 2022 — [The Block](https://www.theblock.co/post/161915/beanstalk-stablecoin-relaunches-four-months-after-182-million-exploit) * August 6th, 2022 — [Decrypt](https://decrypt.co/106882/beanstalk-celebrates-anniversary-with-safe-replant-and-unpause-months-after-182m-exploit) * August 8th, 2022 — [Blockworks](https://blockworks.co/news/algo-stablecoin-protocol-beanstalk-relaunches-following-180m-hack) * August 8th, 2022 — [Cointelegraph](https://cointelegraph.com/news/once-hacked-for-77m-beanstalk-s-algo-stablecoin-protocol-relaunches) * September 28th, 2022 — [New York Times](https://www.nytimes.com/2022/09/28/technology/crypto-hacks-defi.html) * September 29th, 2022 — [Blockworks](https://blockworks.co/news/playing-the-were-not-terra-stablecoin-game) [PreviousDiscord Roles](https://docs.bean.money/almanac/community/discord-roles) [NextLinks](https://docs.bean.money/almanac/community/links) Last updated 2 years ago * [Beanstalk Farms Authored Articles](https://docs.bean.money/almanac/community/content#beanstalk-farms-authored-articles) * [Publius Authored Articles](https://docs.bean.money/almanac/community/content#publius-authored-articles) * [Community Authored Content](https://docs.bean.money/almanac/community/content#community-authored-content) * [Podcasts](https://docs.bean.money/almanac/community/content#podcasts) * [Media](https://docs.bean.money/almanac/community/content#media) --- # Depot | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/toolshed/depot.md) . Current complex interactions with Arbitrum-native protocols are tedious, cumbersome and expensive. The Depot facilitates complex, gas-efficient interactions with other Arbitrum-native protocols in a single transaction. Any protocol with a Pipeline to the Depot can be used via Beanstalk in a single transaction. Pipelines to the Depot can be added via [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) . ### [](https://docs.bean.money/almanac/farm/toolshed/depot#pipeline) Pipeline The [Pipeline](https://docs.bean.money/almanac/ecosystem/pipeline) Pipeline allows anyone to perform an arbitrary series of actions in the EVM in a single transaction by using [0xb1bE000644bD25996b0d9C2F7a6D6BA3954c91B0](https://arbiscan.io/address/0xb1bE000644bD25996b0d9C2F7a6D6BA3954c91B0) as a sandbox for execution. The following functions to interact with Pipeline can be called through the [Pipeline](https://docs.bean.money/almanac/ecosystem/pipeline) Pipeline. * `pipe(...)` * `multiPipe(...)` * `advancedPipe(...)` [PreviousToolshed](https://docs.bean.money/almanac/farm/toolshed) [NextPod Market](https://docs.bean.money/almanac/farm/toolshed/market) Last updated 1 year ago --- # BSM Dashboard | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard.md) . Bean Sprout is currently inactive. Bean Sprout budget funds are custodied by the Bean Sprout Multisig, or BSM. The BSM is deployed using Safe. Its m-of-n configuration is currently 4-of-7 on Ethereum mainnet. This means any use of the budget funds must be approved by at least 4 of the 7 signers. **Bean Sprout Multisig Safe address:** [0xb7ab3f0667eFF5e2299d39C23Aa0C956e8982235](https://etherscan.io/address/0xb7ab3f0667eFF5e2299d39C23Aa0C956e8982235) [![Logo](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2Fapp.safe.global%2Ffavicons%2Fapple-touch-icon.png&width=20&dpr=3&quality=100&sign=5fefc37a&sv=2)Safe{Wallet}safe](https://app.safe.global/eth:0xb7ab3f0667eFF5e2299d39C23Aa0C956e8982235/transactions/history) ### [](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard#bsm-signers) **BSM Signers** The current BSM signers are as follows, in no particular order: * mistermanifold * guy * Bean Merchant * Brean * Michael Montoya * MarcoOnMulberry (ereal) * aloceros The following Farmers serve as backup signers for the BSM, in no particular order: * mod323 * sweetredbeans Rotating BSM signers requires a [BOP](https://docs.bean.money/almanac/governance/proposals#bop) (or [BIP](https://docs.bean.money/almanac/governance/proposals#bip) ) unless a signer voluntarily leaves the BSM or for rotating in a backup signer. Address [0x0F53F811f603449293840DcE4CE981493569C262](https://etherscan.io/address/0x0F53F811f603449293840DcE4CE981493569C262) [0x3E5de69794E023757a4995Cfe97eAF399de7BbED](https://etherscan.io/address/0x3E5de69794E023757a4995Cfe97eAF399de7BbED) [0x336C5185B9f27b40fcD8E852d4B9e15A08084743](https://etherscan.io/address/0x336C5185B9f27b40fcD8E852d4B9e15A08084743) [0xfcf646f41Da372f0b2bd7f1C56895b379fB86c23](https://etherscan.io/address/0xfcf646f41Da372f0b2bd7f1C56895b379fB86c23) [0xF808adAAb2B3A2dfa1d658cB9E187fF3b74CC0aC](https://etherscan.io/address/0xF808adAAb2B3A2dfa1d658cB9E187fF3b74CC0aC) [0x063272862c4A2CA153123c7D31342E15053b9460](https://etherscan.io/address/0x063272862c4A2CA153123c7D31342E15053b9460) [0x2e4Ea01753f30B837813EF14CC547674AeA1fe88](https://etherscan.io/address/0x2e4Ea01753f30B837813EF14CC547674AeA1fe88) [PreviousBean Sprout](https://docs.bean.money/almanac/archives/bean-sprout) [NextGovernance Proposals (June 2023)](https://docs.bean.money/almanac/archives/governance-proposals) Last updated 1 year ago --- # Economics | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/advanced/economics.md) . Beanstalk is designed from economic first principles to create a useful trustless fiat currency. Over time, trustlessness, stability and liquidity increase, while [carrying costs](https://docs.bean.money/almanac/introduction/why-beanstalk#carrying-costs) decrease but remain competitive. The following principles inspire Beanstalk: * [Low concentration of ownership](https://docs.bean.money/almanac/advanced/economics#ownership-concentration) ; * [Strong credit](https://docs.bean.money/almanac/advanced/economics#strong-credit) ; * [The marginal rate of substitution](https://docs.bean.money/almanac/advanced/economics#marginal-rate-of-substitution) ; * [Low friction](https://docs.bean.money/almanac/advanced/economics#low-friction) ; * [Equilibrium](https://docs.bean.money/almanac/advanced/economics#equilibrium) ; and * [Incentive structures determine behaviors of financially motivated actors](https://docs.bean.money/almanac/advanced/economics#incentives) . ### [](https://docs.bean.money/almanac/advanced/economics#ownership-concentration) Ownership Concentration A design that lowers the [Gini coefficient](https://en.wikipedia.org/wiki/Gini_coefficient) of Beans and Stalk over time is essential to censorship resistance. Older [Deposits](https://docs.bean.money/almanac/farm/silo) have their [Stalk from Seeds](https://docs.bean.money/almanac/farm/silo#the-stalk-system) diluted relative to newer Deposits every [Season](https://docs.bean.money/almanac/protocol/glossary#season) . Therefore, newly minted Beans are more widely distributed over time. Beanstalk does not require a pre-mine. The first 100 Beans are created when the `init` function is called to deploy Beanstalk. ### [](https://docs.bean.money/almanac/advanced/economics#strong-credit) Strong Credit Beanstalk is credit based and only fails if it can no longer attract creditors. A reasonable level of debt, strong credit history and competitive interest rate attract creditors. Beanstalk changes the [Temperature](https://docs.bean.money/almanac/protocol/glossary#temperature) to return the Pod Rate to the [optimal Pod Rate](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) while regularly crossing the Bean price over its value peg. Beanstalk acts more aggressively when [the Pod Rate is excessively high or low](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) . Beanstalk never defaults on debt (although in the event of Beanstalk no longer attracting creditors, the loan maturity date would become infinitely far in the future—see [Disclosures](https://docs.bean.money/almanac/disclosures#debt-maturity-risk) ). Beanstalk is willing to issue Pods every Season. ### [](https://docs.bean.money/almanac/advanced/economics#marginal-rate-of-substitution) Marginal Rate of Substitution There are a wide variety of opportunities Beanstalk has to compete with for creditors. Therefore, Beanstalk does not define an optimal Temperature, but instead [adjusts it to move closer to ideal equilibrium](https://docs.bean.money/almanac/peg-maintenance/temperature#current-and-optimal-state) . ### [](https://docs.bean.money/almanac/advanced/economics#low-friction) Low Friction Minimizing the cost of using Beans and barriers to the [Farm](https://docs.bean.money/almanac/farm/overview) maximizes utility for users and appeal to creditors. The [Depot](https://docs.bean.money/almanac/farm/toolshed/depot) realizes the full benefits of composability on Arbitrum. The [FIFO](https://docs.bean.money/almanac/protocol/glossary#fifo) Pod Harvest schedule allows smaller [Sowers](https://docs.bean.money/almanac/farm/field) to participate in peg maintenance and decreases the benefit of large scale price manipulation. The combination of non-expiry, the FIFO Harvest schedule, transferability and a [liquid secondary market](https://docs.bean.money/almanac/farm/toolshed/market) enables Sowers to Sow Beans as efficiently as possible. By maximizing the efficiency of the Soil market, Beanstalk minimizes its cost to attract creditors, the durations and magnitudes of price deviations below its value peg, and excess Pod issuance. ### [](https://docs.bean.money/almanac/advanced/economics#equilibrium) Equilibrium Equilibrium is a state of equivalent marginal quantity supplied and demanded. Beanstalk affects the supply of and demand for Beans to regularly cross the equilibrium price of 1 Bean over its value peg. While Beanstalk can [arbitrarily increase the Bean supply](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) when the Bean price is above its value peg, Beanstalk cannot arbitrarily decrease the Bean supply when the Bean price is below it. Beanstalk relies on the codependence between the equilibria of Beans and Soil to work around this limitation. In order to Sow Beans, they must be acquired (_i.e._, marginal demand for [Soil](https://docs.bean.money/almanac/farm/field#soil) affects marginal demand for Beans). The marginal demand for Soil and Beans are functions of the Temperature and the Bean price. By [changing the Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) , Beanstalk affects decreases in the Bean supply and changes in demand for Beans. ### [](https://docs.bean.money/almanac/advanced/economics#incentives) Incentives Beanstalk-native financial incentives consistently increase trustlessness, stability and liquidity over time by coordinating independently financially motivated actors (_i.e._, Stalkholders and Sowers). [The Stalk System](https://docs.bean.money/almanac/farm/silo#the-stalk-system) incentivizes (1) leaving assets Deposited in the Silo continuously by creating opportunity cost to [Withdraw](https://docs.bean.money/almanac/farm/silo#withdraw) assets from the Silo, (2) adding value to liquidity pools with Beans by [rewarding more Seeds to Deposited LP tokens](https://docs.bean.money/almanac/farm/silo#current-deposit-whitelist) than Deposited Beans, and (3) returning the Bean price to its value peg by allowing [Conversions](https://docs.bean.money/almanac/peg-maintenance/convert) within the Silo without forfeiting Stalk. Beanstalk is governed by Stalkholders. Anyone with Stalk stands to profit from future growth of Beanstalk, but are not owed anything by Beanstalk. When the Bean price is below $1, there is an incentive to Withdraw assets from the Silo. The combination of the Stalk System and Withdrawal Freeze reduces this incentive significantly. When the Bean price is above $1, there is an incentive to buy Beans to earn a portion of the upcoming Bean seigniorage. This is exacerbated when the Pod Rate is lower. The commitment to automatically return the Bean price to its value peg and distribute proceeds from the sale to current Stalkholders based on Stalk ownership when the Farm became Oversaturated ([Flood](https://docs.bean.money/almanac/peg-maintenance/flood) ) and the Withdrawal Freeze, removes this incentive entirely during Seasons where the previous Season's Pod Rate was excessively low, and reduces it significantly otherwise. Thus, Beanstalk consistently increases trustlessness, stability and liquidity over time. [PreviousTypes of Stablecoins](https://docs.bean.money/almanac/advanced/types-of-stablecoins) [NextBeanstalk](https://docs.bean.money/almanac/governance/beanstalk) Last updated 1 year ago * [Ownership Concentration](https://docs.bean.money/almanac/advanced/economics#ownership-concentration) * [Strong Credit](https://docs.bean.money/almanac/advanced/economics#strong-credit) * [Marginal Rate of Substitution](https://docs.bean.money/almanac/advanced/economics#marginal-rate-of-substitution) * [Low Friction](https://docs.bean.money/almanac/advanced/economics#low-friction) * [Equilibrium](https://docs.bean.money/almanac/advanced/economics#equilibrium) * [Incentives](https://docs.bean.money/almanac/advanced/economics#incentives) --- # Understand Silo Deposit Performance | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/understand-silo-deposit-performance.md) . The [Silo](https://app.bean.money/#/silo) page is a dashboard for monitoring the balances and performance of your [Silo Deposits](https://docs.bean.money/almanac/protocol/glossary#deposit) . After [connecting a wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) on [app.bean.money](https://app.bean.money/) , navigate to the "Silo" page. The first module provides an overview of your Silo Deposits and their performance over time. * The "Deposits" tab shows your current USD denominated "Value Deposited" and a chart of historical value. As Silo Deposits generate [Earned Beans](https://docs.bean.money/almanac/protocol/glossary#earned-beans) , [Planting](https://docs.bean.money/almanac/protocol/glossary#plant) them will increase "Value Deposited". * For pre-exploit Farmers, the value of [Unripe Assets](https://docs.bean.money/almanac/protocol/glossary#unripe-assets) is calculated after the [Chop Penalty](https://docs.bean.money/almanac/protocol/glossary#chop-penalty) . * The "Stalk" tab shows your total "Stalk Balance" and a chart of historical Stalk balances, "Stalk Ownership" and "Stalk Grown per Day". * [Stalk](https://docs.bean.money/almanac/protocol/glossary#stalk) is the governance token of the [Beanstalk DAO](https://docs.bean.money/almanac/governance/beanstalk) received by Depositing assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) and from [Seeds](https://docs.bean.money/almanac/protocol/glossary#seeds) . Your "Stalk Balance" will grow as your Seeds yield more Stalk. * Stalk entitles holders to passive interest in the form of a share of future [Bean mints](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) , and the right to propose and vote in [governance](https://docs.bean.money/almanac/governance/proposals) . Your Stalk is forfeited when you [Withdraw](https://docs.bean.money/almanac/protocol/glossary#withdraw) your Deposited assets from the Silo. * "Stalk Ownership" is your current ownership of Beanstalk displayed as a percentage. Ownership is determined by your proportional ownership of the total Stalk supply. * "Stalk Grown per Day" is the amount of Stalk grown each day from Seeds. Seeds yield 1/10,000 Stalk each [Season](https://docs.bean.money/almanac/protocol/glossary#season) . * The "Seeds" tab shows your "Seeds Balance" and a chart of historical Seed balances. * Seeds are received by Depositing assets on the Deposit Whitelist and yield 1/10,000 Stalk each Season. The second module provides an overview of your [Silo Rewards](https://docs.bean.money/almanac/protocol/glossary#silo-rewards) . Read how to [Claim Silo Rewards](https://docs.bean.money/almanac/guides/silo/claim-rewards) . * Earned Beans are the number of Beans earned since your last Plant. Upon Plant, Earned Beans are Deposited in the current Season. * Earned Stalk is the Stalk associated with Earned Beans. Earned Stalk automatically contribute to Stalk ownership and do not require any action to claim them. * [Plantable Seeds](https://docs.bean.money/almanac/protocol/glossary#plantable-seeds) are Seeds earned in conjunction with Earned Beans. Plantable Seeds must be Planted in order to grow Stalk. * [Grown Stalk](https://docs.bean.money/almanac/protocol/glossary#grown-stalk) are Stalk earned from Seeds. Grown Stalk does not contribute to Stalk ownership until it is [Mown](https://docs.bean.money/almanac/protocol/glossary#mow) . Grown Stalk is Mown at the beginning of any Silo interaction. * [Revitalized Stalk](https://docs.bean.money/almanac/protocol/glossary#revitalized-stalk) are Stalk that have vested for pre-exploit Silo Members. Revitalized Stalk are minted as the percentage of [Fertilizer](https://docs.bean.money/almanac/protocol/glossary#fertilizer) sold increases. Revitalized Stalk does not contribute to Stalk ownership until [Enrooted](https://docs.bean.money/almanac/protocol/glossary#enroot) . * [Revitalized Seeds](https://docs.bean.money/almanac/protocol/glossary#revitalized-seeds) are Seeds that have vested for pre-exploit Silo Members. Revitalized Seeds are minted as the percentage of Fertilizer sold increases. Revitalized Seeds do not generate Stalk until Enrooted. The third module provides information on Deposits categorized by asset. This module can be switched between USD and BDV by selecting your wallet address, "Settings", and choosing a "Fiat display" option. * The "Rewards" column shows the number of Stalk and Seeds per Bean denominated value (BDV) Deposited. Hover over the column to see the BDV of each asset. * See [Understand vAPY](https://docs.bean.money/almanac/guides/silo/understand-silo-vapy) for details on the Variable APY calculation. * "TVD" is the Total Value Deposited from all Depositors. Unripe Assets are scaled by the USD value of the underlying Beans or LP as recapitalized through the [Barn](https://docs.bean.money/almanac/farm/barn) . * The "Amount Deposited" is your amount of Beans or LP Deposited. Note that one unit of LP is not expected to be equal to one Bean. See the current BDV under the "Rewards" column. * The "Value Deposited" is the value of your Deposits in USD or BDV. Unripe Assets are calculated after the Chop Penalty. [PreviousDeposit in the Silo](https://docs.bean.money/almanac/guides/silo/deposit) [NextConvert in the Silo](https://docs.bean.money/almanac/guides/silo/convert) Last updated 1 year ago --- # Field | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/field.md) . Guides on interacting with [the Field](https://docs.bean.money/almanac/farm/field) . * [Sow Beans](https://docs.bean.money/almanac/guides/field/sow) * [Transfer Pods](https://docs.bean.money/almanac/guides/field/transfer) * [Harvest Pods](https://docs.bean.money/almanac/guides/field/harvest) [PreviousClaim Silo Rewards](https://docs.bean.money/almanac/guides/silo/claim-rewards) [NextSow Beans](https://docs.bean.money/almanac/guides/field/sow) Last updated 1 year ago --- # Transfer Pods | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/field/transfer.md) . Pods can be [Transferred](https://docs.bean.money/almanac/protocol/glossary#transfer) from one address to another directly. Note that Pods can be exchanged in a trustless fashion on [the Pod Market](https://docs.bean.money/almanac/farm/toolshed/market#the-pod-market) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œFieldā€ page. 3. In the ā€œTransferā€ tab, there is a dropdown menu to select the Plot you would like to transfer. The menu lists all Plots ordered by place in the [Pod Line](https://docs.bean.money/almanac/protocol/glossary#pod-line) . 4. Enter the number of Pods you want to Transfer, up to the ā€œPlot Sizeā€ shown below the input box. 5. Transfers of partial Plots send the end of the Plot by default. * To specify the portion of the Plot to send, select ā€œAdvancedā€. Use the slider or text boxes to select the portion of the Plot to Transfer. 6. Enter the Ethereum address to Transfer the Pods to under ā€œTransfer toā€. 7. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 8. Select ā€œTransferā€. 9. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. After the transaction has been confirmed by the network, the Transferred Pods will appear at the recipient’s address on the ā€œFieldā€ page under the ā€œPod Balanceā€ component. [PreviousSow Beans](https://docs.bean.money/almanac/guides/field/sow) [NextHarvest Pods](https://docs.bean.money/almanac/guides/field/harvest) Last updated 1 year ago --- # Overview | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/peg-maintenance/overview.md) . Beanstalk faces the fundamental limitation that it cannot fix the Bean price at its value peg, but instead must encourage widespread participation in peg maintenance through protocol-native financial incentives. Stability is a function of how regularly the price of a Bean oscillates across its peg and the magnitude of price deviations from it. Beanstalk has five direct peg maintenance tools available: 1. Increase the [Bean supply](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) ; 2. Change the [Soil supply](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) ; 3. Change the [Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) ; 4. Change the [Crop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) ; and 5. Sell Beans ([Flood](https://docs.bean.money/almanac/peg-maintenance/flood) ). At the beginning of every [Season](https://docs.bean.money/almanac/farm/sun) , Beanstalk evaluates its position (i.e., price, debt level and liquidity level) and current state (i.e., direction and acceleration) with respect to ideal equilibrium, and dynamically adjusts the Bean supply, Soil supply, Temperature and Crop Ratio to move closer to ideal equilibrium. [Conversions](https://docs.bean.money/almanac/peg-maintenance/convert) within the [Silo](https://docs.bean.money/almanac/farm/silo) between Bean and LP Deposits serve a major role in peg maintenance. ### [](https://docs.bean.money/almanac/peg-maintenance/overview#ideal-equilibrium) **Ideal Equilibrium** Beanstalk is in ideal equilibrium when the Bean price, the debt level and liquidity level are all stable at their optimal levels. In practice, this requires that four conditions are met: 1. The price of Bean is regularly oscillating around the peg; 2. The Beanstalk debt level is optimal; 3. The Beanstalk liquidity level is optimal; and 4. Demand for Soil is steady. In order to return to ideal equilibrium, Beanstalk affects the supply of and demand for Beans in response to the Bean price, the Beanstalk debt level, the Beanstalk liquidity level and changing demand for Soil. It does so by adjusting the Bean supply, Soil supply, Temperature and Crop Ratio. Bean supply increases primarily affect the Bean price. Soil supply impacts the Bean supply and the debt level. Temperature changes primarily affect demand for Soil. Crop Ratio changes primarily affect demand for Conversions. In order to make the proper adjustments, Beanstalk reassesses the states of both the Bean and Soil markets at the beginning of each Season. In practice, maintaining ideal equilibrium is impossible. Deviations from ideal equilibrium are normal and expected. As Beanstalk grows, the durations and magnitudes of deviations are expected to decrease. ### [](https://docs.bean.money/almanac/peg-maintenance/overview#decentralized-price-oracle) **Decentralized Price Oracle** Beanstalk's core objective is to oscillate the price of Bean above and below its dollar peg. To do this, Beanstalk must be able to reliably measure the price of a dollar on-chain without trusting a centralized third-party to provide it. A robust, decentralized stablecoin requires a tamper-proof, manipulation-resistant and decentralized price oracle. Using [Multi Flow](https://basin.exchange/multi-flow-pump.pdf) , Beanstalk can calculate an inter-block MEV manipulation resistant price in Wells. #### [](https://docs.bean.money/almanac/peg-maintenance/overview#p-greater-than-q) P > Q Price spikes makes Beans less attractive to borrow and price other assets against. Beanstalk should be more aggressive in returning the price to peg when the price reaches a particular threshold above $1. Currently Q is set to $1.05, a reasonable threshold while the Bean supply is small. It does not seem that there is a natural opposite to Q when P < 1. * * * In practice, Beanstalk does not calculate the price of 1 Bean. Instead, at the beginning of each Season, Beanstalk calculates the sum of the time weighted average shortages or excesses of Beans across the liquidity pools on the [Minting Whitelist](https://docs.bean.money/almanac/farm/sun#minting-whitelist) over the previous Season (i.e., [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) ). ### [](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) **Debt Level** The Pod Rate represents the Beanstalk debt level relative to the Bean supply. The Pod Rate is often used as a proxy for Beanstalk’s health. If the Bean supply is 1000 and there are 2000 [Pods](https://docs.bean.money/almanac/farm/field#pods) , the Pod Rate is 200%. Beanstalk defines a handful of Pod Rate ranges that it uses as an input to determine how to change the Temperature: * Excessively low debt: Pod Rate < 5% * Reasonably low debt: 5% ≤ Pod Rate < 15% * Optimal level of debt: Pod Rate = 15% * Reasonably high debt: 15% < Pod Rate ≤ 25% * Excessively high debt: Pod Rate > 25% ### [](https://docs.bean.money/almanac/peg-maintenance/overview#liquidity-level) Liquidity Level The Liquidity to Supply Ratio (L2SR) represents the Beanstalk liquidity level relative to the Bean supply. The L2SR is a useful indicator of Beanstalk's health. In the context of the L2SR, liquidity is defined as the sum of the USD values of the non-Bean assets in each whitelisted liquidity pool multiplied by their respective liquidity weights. Supply is defined as the total Bean supply minus Locked Beans (defined below). Beanstalk can be in 4 different states in relation to its L2SR: * Excessively low liquidity: L2SR < 12%; * Reasonably low liquidity: 12% ≤ L2SR < 40%; * Optimal level of liquidity: L2SR = 40% * Reasonably high liquidity: 40% < L2SR ≤ 80%; or * Excessively high liquidity: L2SR > 80%. #### [](https://docs.bean.money/almanac/peg-maintenance/overview#locked-beans) Locked Beans Due to the Barn Raise and the associated Beans underlying Unripe assets, the number of tradable Beans does not equal the total Bean supply. As of May 2024, ~0.224 Beans underlying each Unripe Bean, but holders can only redeem ~0.0102 Beans per Unripe Bean. Thus, ~0.2138 Beans Per Unripe are considered not tradable. By excluding Locked Beans from the Bean supply in the L2SR calculation, Beanstalk can determine its health in terms of liquidity based on only the number of Beans that can reasonably be sold. This is preferable over factoring in Beans that cannot be sold. ### [](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) **Bean Supply** At the beginning of each Season, Beanstalk increases the Bean supply by deltaB if there was a time weighted average shortages of Beans across the pools in the [Minting Whitelist](https://docs.bean.money/almanac/farm/sun#minting-whitelist) over the previous Season, subject to the cap in [EBIP-2](https://arweave.net/3GyVJLO0YqhwJHWZeiykWYu4G6SsfcV0alP-1DfMygk) . Essentially, Beanstalk will mint the number of Beans that need to be sold in the pools on the Minting Whitelist to return the Bean price to a dollar. [Stalkholders](https://docs.bean.money/almanac/farm/silo#the-stalk-system) , Pod holders, and [Active Fertilizer](https://docs.bean.money/almanac/farm/barn#fertilizer) holders receive 1/3 of new Bean mints each while there are [Unfertilized Sprouts](https://docs.bean.money/almanac/farm/barn#fertilizer) outstanding. If there is no Active Fertilizer, Stalkholders and Pod holders receive 1/2 of new Bean mints each. If there are neither Pods nor Active Fertilizer, Stalkholders receive 100% of new Bean mints. ### [](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) **Soil Supply** When P < 1 over the previous Season (_i.e._, deltaB < 0), the Soil supply is equal to the minimum of (1) cumulative deltaB calculated using the instantaneous reserves from Multi Flow and (2) the cumulative TWA deltaB, the sum of the time-weighted average excess of Beans across the liquidity pools on the [Minting Whitelist](https://docs.bean.money/almanac/farm/sun#minting-whitelist) over the previous Season, subject to the cap in EBIP-2. When P ≄ 1 over the previous Season (_i.e._, deltaB ≄ 0), Beanstalk is still willing to issue debt in order to measure changing demand for [Soil](https://docs.bean.money/almanac/farm/field#soil) . The Soil supply is based on the number of Pods that Ripen and become Harvestable at the beginning of the Season, the Temperature (see [Morning](https://docs.bean.money/almanac/peg-maintenance/temperature#morning) section), and the Beanstalk debt level. A greater number of Pods Ripening increases the Soil supply. Higher Temperature and debt level decrease the Soil supply. See [Section 8.11 in the whitepaper](https://bean.money/beanstalk.pdf#subsection.8.11) for complete formulas. [PreviousTractor](https://docs.bean.money/almanac/farm/toolshed/tractor) [NextTemperature](https://docs.bean.money/almanac/peg-maintenance/temperature) Last updated 1 year ago * [Ideal Equilibrium](https://docs.bean.money/almanac/peg-maintenance/overview#ideal-equilibrium) * [Decentralized Price Oracle](https://docs.bean.money/almanac/peg-maintenance/overview#decentralized-price-oracle) * [Debt Level](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) * [Liquidity Level](https://docs.bean.money/almanac/peg-maintenance/overview#liquidity-level) * [Bean Supply](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) * [Soil Supply](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) --- # Harvest Pods | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/field/harvest.md) . Once [Pods](https://docs.bean.money/almanac/farm/field#pods) reached the front of the Pod Line, they become Harvestable. Harvestable Pods are redeemable for 1 Bean each. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œFieldā€ page. 3. Select the ā€œHarvestā€ tab. The amount of ā€œHarvestable Balanceā€ will be shown. These are the Pods that can be Harvested in exchange for Beans. 4. Under ā€œDestinationā€, select ā€œCirculating Balanceā€ or ā€œFarm Balanceā€. Circulating Balance sends the Beans to your wallet, separate from Beanstalk. [Farm Balance](https://docs.bean.money/almanac/protocol/asset-states) keeps the Beans stored in Beanstalk which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. 5. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 6. Select ā€œHarvestā€. 7. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 8. After the transaction has been confirmed by the network, the location of the Beans from your Harvestable Pods will depend on the option selected in Step 4: * If ā€œCirculating Balanceā€ was selected, the Beans will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œFarm Balanceā€ was selected, the Beans will be shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousTransfer Pods](https://docs.bean.money/almanac/guides/field/transfer) [NextBarn](https://docs.bean.money/almanac/guides/barn) Last updated 1 year ago --- # Beanstalk Farms | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk-farms.md) . The Beanstalk DAO is responsible for the formation of two independent, symbiotic organizations with distinct mandates: Beanstalk Farms and [Bean Sprout](https://docs.bean.money/almanac/archives/bean-sprout) (a Beanstalk accelerator program). Beanstalk Farms is a decentralized development organization of core contributors working on Beanstalk, operating across the stack on technical and non-technical problems. ### [](https://docs.bean.money/almanac/governance/beanstalk-farms#funding) Funding Neither Beanstalk Farms nor Beanstalk have a treasury. Beanstalk Farms has historically been funded by the Beanstalk DAO. Beanstalk Farms proposes budget BIPs that mint Beans to cover operating expenses and compensate contributors. Budget funds are custodied by the [Beanstalk Farms Multisig (BFM)](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard) . Larger payments in non-Bean assets like audits have historically been paid for via [Fundraiser](https://docs.bean.money/almanac/archives/fundraiser) . Past BIPs that funded Beanstalk Farms: * [BIP-1: Beanstalk Farms Q4 2021 Dev and Marketing Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-01-bf-budget-q4-2021.md) * [BIP-8: Beanstalk Q1 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-08-beanstalk-budget-q1-2022.md) (included Beanstalk Farms and Bean Sprout) * [BIP-14: Beanstalk Farms Q2 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-14-bf-budget-q2-2022.md) * [BIP-22: Beanstalk Farms Q3 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-22-bf-budget-q3-2022.md) * [BIP-25: Beanstalk Farms Q4 2022 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-25-bf-budget-q4-2022.md) * [BIP-33: Beanstalk Farms H1 2023 Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-33-bf-budget-h1-2023.md) * [BIP-40: Beanstalk Farms 2024 Development Budget](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-40-bf-budget-2024.md) Monthly reports on how Beanstalk Farms is spending its budget can be found [here](https://github.com/BeanstalkFarms/Beanstalk-Farms-Operations/tree/main/beanstalk-farms) . ### [](https://docs.bean.money/almanac/governance/beanstalk-farms#beanstalk-farms-committee) Beanstalk Farms Committee The Beanstalk Farms Committee (BFC) is the group of Beanstalk Farms contributors that has discretion over the Beanstalk Farms budget, including contributor compensation. The BFC hires at and dismisses contributors from Beanstalk Farms. Beanstalk Farms Committee Proposals, or BFCPs, are proposals related to personnel on the BFC. The Beanstalk DAO governs the BFC. The Beanstalk DAO adds contributors to the BFC via BFCP-As, removes contributors from the BFC via BFCP-Bs, and renews the terms of existing BFC members via BFCP-Cs. Any Stalkholder with 0.1% of the Stalk supply can propose a BFCP-A or BFCP-B. There is no maximum number of BFC members, which facilitates permissionlessness. See [Beanstalk Farms Committee Proposal](https://docs.bean.money/almanac/governance/proposals#bfcp) for more info on each BFCP proposal type. BFCPs are proposed on the [Beanstalk Farms Snapshot page](https://snapshot.org/#/beanstalkfarms.eth) . Stalkholders can vote on BFCPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=beanstalk-farms) . Past BFCPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bfcp) . Beanstalk Farms Budget Proposals, or BFBPs, are proposals related to the use of the Beanstalk Farms budget. Only BFC members can propose and vote on BFBPs. The BFC hires contributors via BFBP-As, dismisses contributors via BFBP-Bs, and otherwise uses the Beanstalk Farms budget via BFBP-Cs. See [Beanstalk Farms Budget Proposal](https://docs.bean.money/almanac/governance/proposals#bfbp) for more info on each BFBP proposal type. BFBPs are proposed on the [Beanstalk Farms Budget Snapshot page](https://snapshot.org/#/beanstalkfarmsbudget.eth) , which is where BFC members vote. Past BFBPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bfbp) . [PreviousBICM Dashboard](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard) [NextBFM Dashboard](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard) Last updated 1 year ago * [Funding](https://docs.bean.money/almanac/governance/beanstalk-farms#funding) * [Beanstalk Farms Committee](https://docs.bean.money/almanac/governance/beanstalk-farms#beanstalk-farms-committee) --- # Claim Silo Rewards | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/silo/claim-rewards.md) . Assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) can be Deposited in [the Silo](https://docs.bean.money/almanac/farm/silo) to earn Stalk and Seeds. You can find more information about Silo Rewards [here](https://docs.bean.money/almanac/farm/silo#silo-rewards) . * [Mow Grown Stalk](https://docs.bean.money/almanac/guides/silo/claim-rewards#mow) * [Plant Plantable Seeds](https://docs.bean.money/almanac/guides/silo/claim-rewards#plant) * [Enroot Revitalized Stalk and Seeds](https://docs.bean.money/almanac/guides/silo/claim-rewards#enroot) * [Claim all Silo Rewards](https://docs.bean.money/almanac/guides/silo/claim-rewards#undefined) * [Add Additional Transactions to Save Gas](https://docs.bean.money/almanac/guides/silo/claim-rewards#add-additional-transactions-to-save-gas) ### [](https://docs.bean.money/almanac/guides/silo/claim-rewards#mow) Mow Mowing [Grown Stalk](https://docs.bean.money/almanac/protocol/glossary#grown-stalk) adds the Grown Stalk to your Stalk balance, which determines your governance power and portion of Bean seigniorage earned. Note: The ā€œMowā€ function is called anytime a Farmer interacts with the Silo. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. Select the green ā€œClaimā€ button. * Note: You must have Grown Stalk in order to Mow. 4. Check ā€œMowā€ for the Silo assets you would like to Mow. 5. Select the green ā€œClaim Rewardsā€ button. An estimated transaction fee based on current gas costs is displayed below. 6. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 7. After the transaction has been confirmed by the network, your Grown Stalk will be added to the Stalk balance at the top of the "Silo" page. ### [](https://docs.bean.money/almanac/guides/silo/claim-rewards#plant) Plant Planting [Plantable Seeds](https://docs.bean.money/almanac/protocol/glossary#plantable-seeds) adds them to your Seed balance, which determines how many Grown Stalk you receive each Season. Planting also Deposits your [Earned Beans](https://docs.bean.money/almanac/protocol/glossary#earned-beans) in the current Season. [Earned Stalk](https://docs.bean.money/almanac/protocol/glossary#earned-stalk) already contributes to your Stalk ownership and does not need to be claimed, but is claimed upon Plant. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. Select the green ā€œClaim" button. * Note: You must have Plantable Seeds in order to ā€œPlantā€. 4. Check the items you would like to Plant. 5. Select the green ā€œClaim Rewardsā€ button. An estimated transaction fee based on current gas costs is displayed below. 6. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 7. After the transaction has been confirmed by the network, your Plantable Seeds will be added to the Seed balance at the top of the "Silo" page. ### [](https://docs.bean.money/almanac/guides/silo/claim-rewards#enroot) Enroot [Enrooting](https://docs.bean.money/almanac/protocol/glossary#enroot) adds [Revitalized Stalk and Seeds](https://docs.bean.money/almanac/farm/barn#revitalized-assets) to your Stalk and Seed balances, respectively. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. Select the green ā€œClaimā€ button. * Note: You must have Revitalized Stalk and Seeds in order to Enroot. 4. Select to Enroot your Revitalized Stalk and/or Revitalized Seeds. 5. Select the green ā€œClaim Rewardsā€ button. An estimated transaction fee based on current gas costs is displayed below. 6. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 7. After the transaction has been confirmed by the network, your Revitalized Stalk and Seeds will be added to the Stalk and Seed balances on the top of the "Silo" page, respectively. ### [](https://docs.bean.money/almanac/guides/silo/claim-rewards#claim-all) Claim all Silo Rewards Claiming all Silo Rewards calls [Mow](https://docs.bean.money/almanac/guides/silo/claim-rewards#mow) , [Plant](https://docs.bean.money/almanac/guides/silo/claim-rewards#plant) and [Enroot](https://docs.bean.money/almanac/guides/silo/claim-rewards#enroot) in one transaction. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œSiloā€ page. 3. Select the green ā€œClaimā€ button. * Note: You must have claimable Silo Rewards. 4. All Claimable Silo Rewards are selected by default. 5. Select the green ā€œClaim Rewardsā€ button. An estimated transaction fee based on current gas costs is displayed below. 6. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 7. After the transaction has been confirmed by the network, your Silo Rewards will be added to your Stalk and Seed balances on the top of the "Silo" page, respectively. ### [](https://docs.bean.money/almanac/guides/silo/claim-rewards#add-additional-transactions-to-save-gas) Add Additional Transactions to Save Gas 1. An alternative way to Claim Silo Rewards is as an add-on to another Beanstalk transaction. 2. If eligible, an "Add additional transactions to save gas" dropdown menu will appear under the primary transaction. 3. Select "Mow", "Plant", "Enroot" or use the "Claim All" toggle. 4. The Silo Rewards transaction will appear under "Transaction Details". [PreviousWithdraw from the Silo](https://docs.bean.money/almanac/guides/silo/withdraw) [NextField](https://docs.bean.money/almanac/guides/field) Last updated 1 year ago * [Mow](https://docs.bean.money/almanac/guides/silo/claim-rewards#mow) * [Plant](https://docs.bean.money/almanac/guides/silo/claim-rewards#plant) * [Enroot](https://docs.bean.money/almanac/guides/silo/claim-rewards#enroot) * [Claim all Silo Rewards](https://docs.bean.money/almanac/guides/silo/claim-rewards#claim-all) * [Add Additional Transactions to Save Gas](https://docs.bean.money/almanac/guides/silo/claim-rewards#add-additional-transactions-to-save-gas) --- # BICM Dashboard | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard.md) . The Beanstalk Immunefi Committee (BIC) has the exclusive ability to determine the categorization and payout of bug bounties in accordance with the bug bounty program structure approved by the DAO. BIC members serve as signers on the BICM. The BICM is deployed using Safe. Its m-of-n configuration is currently 4-of-7 on Arbitrum. See [BIC Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process) for more information. **Beanstalk Community Multisig Safe address:** [0x390b023d316c2e92dd96A9bcC7fAe8dB12A2fBC1](https://arbiscan.io/address/0x390b023d316c2e92dd96A9bcC7fAe8dB12A2fBC1) [![Logo](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2Fapp.safe.global%2Ffavicons%2Fapple-touch-icon.png&width=20&dpr=3&quality=100&sign=5fefc37a&sv=2)Safe{Wallet}safe](https://app.safe.global/transactions/queue?safe=arb1:0x390b023d316c2e92dd96A9bcC7fAe8dB12A2fBC1) ### [](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard#bicm-signers) **BICM Signers** The current BICM signers are as follows, in no particular order: * aloceros * Brean * Chaikitty * deadmanwalking * funderberker * mod323 * pizzaman1337 The following Farmers serve as backups for the BICM, in no particular order: * uncoolzero * MrMochi * guy Rotating members (to a backup member listed here) on the BIC requires a majority vote of the BIC, for which a Snapshot proposal is not necessary. Address [0x2CC7554bc906e52e1B39dA62D6271f95e239DF8d](https://arbiscan.io/address/0x2CC7554bc906e52e1B39dA62D6271f95e239DF8d) [0xAbdD39129af9DEAeE7c1Ca3268D69F4850292cAB](https://arbiscan.io/address/0xAbdD39129af9DEAeE7c1Ca3268D69F4850292cAB) [0x6e7308fd175b51c4eee8a422a4219d8b9c380a0b](https://arbiscan.io/address/0x6e7308fd175b51c4eee8a422a4219d8b9c380a0b) [0xd1f4544975D265f1c87f618351e8BFa8f4EEd77E](https://arbiscan.io/address/0xd1f4544975D265f1c87f618351e8BFa8f4EEd77E) [0x8C0AEd103709f44888476f5B5A13E9AAf2831511](https://arbiscan.io/address/0x8C0AEd103709f44888476f5B5A13E9AAf2831511) [0x5f6a6c6E242eDe2020008c4137e239A80590ddF5](https://arbiscan.io/address/0x5f6a6c6E242eDe2020008c4137e239A80590ddF5) [0x243CbEd862854262eD3d617f7d19277A787A4148](https://arbiscan.io/address/0x243CbEd862854262eD3d617f7d19277A787A4148) ### [](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard#beans-paid) **Beans Paid** **Total to Whitehats**: 1,536,350 Beans **Total to Immunefi**: 138,335 Beans (excluding the annual Immunefi subscription fee beginning after [BIP-41](https://arweave.net/uI_aXutcoWvZajzcSoJOfJNeKCpJ8DcLuPPhR-8NOKk) ) **Remaining in Immunefi Vault**: 2,447,000 Beans **Bugs found**: 21 Response Beans to Whitehat Beans to Immunefi Transaction [BIR-1](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x1da231494fe8cf85edc50bf148b8557b3de8b0354018602b92075634d0e1f409) 7,500 750 Etherscan [1](https://etherscan.io/tx/0x1f3d3aaf1e24541400e0cc4c9f6985b21dbdccd1fa01df2b7873d62fb598d165) , [2](https://etherscan.io/tx/0x5fa42d868c8df19fea6c12e49041583536fba3767b6aeaa62c3adf8415ef9ee4) [BIR-2](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0xb07c3ff8112c01849681a62980b5499599990e26e01d9ca244fd6483783ece2c) 11,000 1,100 [Etherscan](https://etherscan.io/tx/0x89c4c574545d9243313aeab5a4e11ade0d9071766d93b9888a632e251b6dbb83) [BIR-3](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x63fddb1e9c22a5b98defb607a5b6520444a0ef08736445238132c702a2a0e4fa) 181,850 18,185 [Etherscan](https://etherscan.io/tx/0x1372a7f5bdf16690b126655b8325b6767fefc8061a6ffb6897a1edc5718d5718) [BIR-4](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x60f6fcf25c3fe76003535708d9b14396dace659fddb2d6c7076da8ecce84840e) 10,000 1,000 [Etherscan](https://etherscan.io/tx/0xc63edb49c81b7b0d637f7454801a9ab08a1ac691994f93b1fa64f2e2402578d1) [BIR-5](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x32b1d929858088dc7a42527ba1b7c4cf87f9e15f8f70756d6032214479e8ec1d) 100,000 \- [Etherscan](https://etherscan.io/tx/0x879f935e6ed752267da12cc447443eb0b35af200f8f19209c55643a6e16ac4c2) [BIR-6](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x7c620c229c051514562e270f583b915932563b4bd323f35b4287fb2ed2458513) 10,000 1,000 [Etherscan](https://etherscan.io/tx/0x879f935e6ed752267da12cc447443eb0b35af200f8f19209c55643a6e16ac4c2) [BIR-7](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x3df4899741db63e66e51939166df737bdb1166be18633dd2dd78fdce45dd22bd) 1,100,000 110,000 [Etherscan](https://etherscan.io/tx/0x1b8305998bb9a20eb87cd547afc3d06e2b9424b34a1336148d4c4bcd2c439243) [BIR-8](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x75bc2bffeb4c38e3bc64b0bde09b4545a523f66334d61e0866db2d884c56162f) 1,000 100 [Etherscan](https://etherscan.io/tx/0xba0ca36674e9a492d8ea4df619544a780a997d960ce95f34a3b4a3c9f291a409) [BIR-9](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x3a6ce826f65fc198565a6d35852f21cde955141741052ad34e2f15d375820e12) 1,000 100 [Etherscan](https://etherscan.io/tx/0xba0ca36674e9a492d8ea4df619544a780a997d960ce95f34a3b4a3c9f291a409) [BIR-11](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0xc9c24e53808bf7de86f54c27a2d0a71b9dcbb916b74e9493d521e6b64fe8d63e) 1,000 100 [Etherscan](https://etherscan.io/tx/0x559ebc39c3111906ec704dbafd1e5833d4b9ec467b9bcc583caeec968c8ffb76) [BIR-12](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x66b7fa7d5cab3f97f8a685004bf465b8ab603edc55bb9d5b24ea92d64173a50a) 50,000 5,000 [Etherscan](https://etherscan.io/tx/0x559ebc39c3111906ec704dbafd1e5833d4b9ec467b9bcc583caeec968c8ffb76) [BIR-13](https://snapshot.org/#/beanstalkbugbounty.eth/proposal/0x971214b1ae7847c743704c3014c92f47e8c8a151cc786a4f0519c2c8624beecd) 10,000 1,000 [Etherscan](https://etherscan.io/tx/0x511d493cf7eceb23305f5526a1b94782aabb961c0d9b9c6e943c93570c53565f) [BIR-14](https://arweave.net/NcqX06mQ0c_FSkLxzVt1IEmWNrW7_03GXww-EsZKFq4) 10,000 \- [Etherscan](https://etherscan.io/tx/0xd0bc786d99f0ca544d1ee30cfc728c4edb309d4c27fa27ed4884adbda5ec5b96) [BIR-15](https://arweave.net/2GnAIkoxbYpsixL65QL7tgYsxUtOHj9t1qxDxDaI-Rw) 1,000 \- [Etherscan](https://etherscan.io/tx/0x5f4b03a71568a5504df74cb586380c360cdcbbec087a5a88a619cffd21056375) [BIR-16](https://arweave.net/s13-Tri7UQCUSilW5-ojVfl9I6eHwVhmCIWbIa3TjCc) 10,000 \- [Etherscan](https://etherscan.io/tx/0x7edbf455880c8d932600893c6a577e6529bc8647453a8f7e16a1ec73b70420e3) [BIR-17](https://arweave.net/0ypUVw7uhueyT0D0OZswuBqGz_vumJ6AnZyjIxO41Og) 10,000 \- [Etherscan](https://etherscan.io/tx/0x90b57345c209fe7867f66e51130d35233cffd2ed0095ce5fd15c602dec108b7d) [BIR-18](https://arweave.net/qmprTnP-8vB-gc9eF6exJhqO0vl23ue5plNr5cK0WAU) 10,000 \- [Etherscan](https://etherscan.io/tx/0xc892c81a7458a3480592a00ac9a7677a09a0fc0e3dbf4ce8e84f91daa3229079) [BIR-19](https://arweave.net/NMcEunsrgx-sPPMgBxGG-cCFTrWbo6vbbdSGKydZaWs) 3,000 \- [Etherscan](https://etherscan.io/tx/0xaebb350ef5de6d359f94b260bcb20cae0e001d0fe9d755954c196e403386a143) [BIR-20](https://arweave.net/AJeMZ-XbvTTv_WssrmoTzhmsKfQEMMJOrow1Z2sck-M) 3,000 \- [Etherscan](https://etherscan.io/tx/0xe1c96785e2475b6c9ae79665be81a69fb9c693b99fded8958d000a718d1cdd94) [BIR-21](https://arweave.net/iq85yCgAd-S6W7p3yQGY1kDt58bCOuXN6Skh6_TCTgg) 5,000 \- [Arbiscan](https://arbiscan.io/tx/0x70df7393caf7c98aaea596728a74d97fb9e86740ff1f91c30bf628a8d57dcbd3) [BIR-22](https://arweave.net/TdrTxJk7NKPCJNboCejXnOUkiFhvlPiltzj_TwU_1m4) 1,000 \- [Arbiscan](https://arbiscan.io/tx/0x70df7393caf7c98aaea596728a74d97fb9e86740ff1f91c30bf628a8d57dcbd3) ### [](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard#links) Links * [Past BIRs](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bir) * [Bug Reports](https://community.bean.money/bug-reports) [PreviousBIC Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process) [NextBeanstalk Farms](https://docs.bean.money/almanac/governance/beanstalk-farms) Last updated 1 year ago * [BICM Signers](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard#bicm-signers) * [Beans Paid](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard#beans-paid) * [Links](https://docs.bean.money/almanac/governance/beanstalk/bicm-dashboard#links) --- # Proposals | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/proposals.md) . This page is a comprehensive overview of all proposals types in Beanstalk-related governance. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FuRBcfAxNNxDqCtdf06Tm%252Fproposals.png%3Falt%3Dmedia%26token%3Db04a07f5-a608-47a7-8996-12b74e5fd970&width=768&dpr=3&quality=100&sign=d9d2996f&sv=2) [](https://docs.bean.money/almanac/governance/proposals#table-of-contents) Table of Contents ------------------------------------------------------------------------------------------------- * [Notes](https://docs.bean.money/almanac/governance/proposals#notes) * [Beanstalk Improvement Proposal](https://docs.bean.money/almanac/governance/proposals#bip) (BIP) * [Emergency Beanstalk Improvement Proposal](https://docs.bean.money/almanac/governance/proposals#ebip) (EBIP) * [Beanstalk Operations Proposal](https://docs.bean.money/almanac/governance/proposals#bop) (BOP) * [Beanstalk Farms Committee Proposal](https://docs.bean.money/almanac/governance/proposals#bfcp) (BFCP) * [Beanstalk Farms Budget Proposal](https://docs.bean.money/almanac/governance/proposals#bfbp) (BFBP) * [Beanstalk Immunefi Response](https://docs.bean.money/almanac/governance/proposals#bir) (BIR) * [Bean Sprout Proposal](https://docs.bean.money/almanac/governance/proposals#bsp) (BSP) * [BeaNFT Proposal](https://docs.bean.money/almanac/governance/proposals#bnp) (BNP) [](https://docs.bean.money/almanac/governance/proposals#notes) Notes ------------------------------------------------------------------------- In all proposals where Stalkholders vote: * A Stalkholder's vote for a given proposal is counted as their Stalk at the beginning of the Voting Period that still exists; * 1 Stalk equals 1 vote; and * The proposer must have at least 0.1% of total Stalk at the beginning and end of the Voting Period (including delegated Stalk) in order for the proposal to pass. Any proposal that proposes for another party to perform work upon, or at any point after, the passage of the proposal must have that party's explicit approval. All past proposals can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals) . [](https://docs.bean.money/almanac/governance/proposals#bip) Beanstalk Improvement Proposal ------------------------------------------------------------------------------------------------ Beanstalk Improvement Proposals, or BIPs, are proposals to: * Change the Beanstalk protocol; * Mint Beans; and/or * Change Beanstalk governance. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BIP. Any Stalkholder can vote For or Against a BIP. The Voting Period opens when the Snapshot proposal for a BIP can be voted on and closes after 7 days or when it is committed with a supermajority. If at the end of the Voting Period: * Less than or equal to one-third of the total outstanding Stalk, plus the amount of Stalk voting Against, is voting For, it fails, or * More than one-third of the total outstanding Stalk, plus the amount of Stalk voting Against, is voting For, or more than half of total outstanding Stalk is voting For, it passes. If at any time 24 hours or more after the beginning and before the end of the Voting Period more than two-thirds of the total Stalk is voting For the BIP, the [Beanstalk Community Multisig (BCM)](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) can execute the BIP. BIPs are proposed on the [Beanstalk DAO Snapshot space](https://snapshot.org/#/beanstalkdao.eth/) . Stalkholders can vote on BIPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance) . Past BIPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/) . See [BIP Proposal Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#bip-proposal-process) for more information on proposing a BIP. [](https://docs.bean.money/almanac/governance/proposals#bop) Beanstalk Operations Proposal ----------------------------------------------------------------------------------------------- Beanstalk Operations Proposals, or BOPs, are proposals for the DAO to agree on processes that do not involve (1) changing the Beanstalk protocol, (2) minting Beans or (3) changing Beanstalk governance. A BIP can include any changes that would otherwise be in a BOP. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BOP. Any Stalkholder can vote For or Against. The Voting Period opens when the Snapshot proposal for a BOP can be voted on and closes after 7 days. If at the end of the Voting Period: * Less than or equal to 25% of the total outstanding Stalk, plus the amount of Stalk voting Against, is voting For, it fails, or * More than 25% of the total outstanding Stalk, plus the amount of Stalk voting Against, is voting For, or more than half of total outstanding Stalk is voting For, it passes. BOPs are proposed on the [Beanstalk DAO Snapshot space](https://snapshot.org/#/beanstalkdao.eth/) . Stalkholders can vote on BOPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance) . Past BOPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bop) . See [BOP Proposal Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#bop-proposal-process) for more information on proposing a BOP. [](https://docs.bean.money/almanac/governance/proposals#ebip) Emergency Beanstalk Improvement Proposal ----------------------------------------------------------------------------------------------------------- Emergency Beanstalk Improvement Proposals, or EBIPs, are emergency upgrades to Beanstalk. EBIPs are submitted and executed by the BCM in order to protect Beanstalk. EBIPs are shared with the Beanstalk community after commitment. Past EBIPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/ebip) . See [Emergency Response Procedures](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#emergency-response-procedures) for more information. [](https://docs.bean.money/almanac/governance/proposals#bfcp) Beanstalk Farms Committee Proposal ----------------------------------------------------------------------------------------------------- Beanstalk Farms Committee Proposals, or BFCPs, are proposals related to personnel on the [Beanstalk Farms Committee (BFC)](https://docs.bean.money/almanac/governance/beanstalk-farms/bfc-dashboard) . The BFC is the group of Beanstalk Farms contributors that has discretion over the Beanstalk Farms budget, including contributor compensation. Stalkholders vote to: * Add members to the BFC via [BFCP-A](https://docs.bean.money/almanac/governance/proposals#bfcp-a) ; * Remove members from the BFC via [BFCP-B](https://docs.bean.money/almanac/governance/proposals#bfcp-b) ; and * Extend the terms of existing BFC members via [BFCP-C](https://docs.bean.money/almanac/governance/proposals#bfcp-c) . The Voting Period opens when the Snapshot proposal for a BFCP can be voted on and closes after 7 days. BFCPs are proposed on the [Beanstalk Farms Snapshot space](https://snapshot.org/#/beanstalkfarms.eth) . Stalkholders can vote on BFCPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=beanstalk-farms) . Past BFCPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bfcp) . ### [](https://docs.bean.money/almanac/governance/proposals#bfcp-a) **BFCP-A** BFCP-As are proposals to add someone to the BFC. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BFCP-A. Any Stalkholder can vote For or Against. If at the end of the Voting Period: * Less than or equal to 25% of total Stalk is voting For or the majority of participating Stalk is voting Against the BFCP-A, it fails, or * More than 25% of total Stalk is voting For and the majority of participating Stalk is voting For the BFCP-A, it passes. The term of a BFC member whose BFCP-A passes ends two quarters after the end of the current quarter (end of March, June, September or December). There is no guarantee that payment terms in a BFCP-A can be fulfilled until the end of a BFC member's term given that the Beanstalk DAO must continually choose to fund Beanstalk Farms. A BFCP-A is also the proposed BFC member's hiring proposal. Therefore, a BFCP-A must contain payment information at minimum, but should also contain information about what makes the person a good candidate for the BFC, their proposed responsibilities within Beanstalk Farms, etc. ### [](https://docs.bean.money/almanac/governance/proposals#bfcp-b) **BFCP-B** BFCP-Bs are proposals to remove someone from the BFC. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BFCP-B. Any Stalkholder can vote For or Against. If at the end of the Voting Period: * Less than or equal to 35% of total Stalk is voting For or the majority of participating Stalk is voting Against the BFCP-B, it fails, or * More than 35% of total Stalk votes For and the majority of participating Stalk is voting For the BFCP-B, it passes. A BFCP-B is not required if the BFC member voluntarily leaves Beanstalk Farms or the BFC. ### [](https://docs.bean.money/almanac/governance/proposals#bfcp-c) **BFCP-C** BFCP-Cs are proposals to extend the terms of current BFC members. Only BFC members can propose a BFCP-C. BFCP-Cs are multi-choice votes where each voting choice corresponds to extending the term of a current BFC member (approval voting style). If at the end of the Voting Period: * Less than or equal to 25% of total Stalk is voting For a BFC member's proposal, that BFC member's proposal fails, or * More than 25% of total Stalk is voting For a BFC member's proposal, that BFC member's proposal passes. BFC members whose BFCP-C passes shall have their term extended by two quarters after the end of their current term, with a maximum term length of three quarters after the end of the current quarter. There is no term limit for BFC members. BFC members have the option to update their previous hiring proposal terms in a BFCP-C. There is no guarantee that payment terms in a BFCP-C can be fulfilled until the end of a BFC member's term given that the Beanstalk DAO must continually choose to fund Beanstalk Farms. [](https://docs.bean.money/almanac/governance/proposals#bfbp) Beanstalk Farms Budget Proposal -------------------------------------------------------------------------------------------------- Beanstalk Farms Budget Proposals, or BFBPs, are proposals related to the use of the Beanstalk Farms budget. The Beanstalk Farms budget is custodied by the [Beanstalk Farms Multisig (BFM)](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard) . The BFM executes the will of the BFC. Only BFC members can propose and vote on BFBPs and each member has 1 vote. Any BFC member can vote For or Against. BFC members vote to: * Hire contributors to Beanstalk Farms via [BFBP-A](https://docs.bean.money/almanac/governance/proposals#bfbp-a) ; * Dismiss contributors from Beanstalk Farms via [BFBP-B](https://docs.bean.money/almanac/governance/proposals#bfbp-b) ; and * Otherwise use the Beanstalk Farms budget via [BFBP-C](https://docs.bean.money/almanac/governance/proposals#bfbp-c) . The Voting Period opens when the Snapshot proposal for a BFBP can be voted on and closes after 2 days. BFBPs are proposed on the [Beanstalk Farms Budget Snapshot page](https://snapshot.org/#/beanstalkfarmsbudget.eth) , which is where BFC members vote. Past BFBPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bfbp) . ### [](https://docs.bean.money/almanac/governance/proposals#bfbp-a) **BFBP-A** BFBP-As are proposals to hire a contributor to Beanstalk Farms. A BFBP-A passes if at the end of the Voting Period there are at least 3 votes For, but this can be vetoed by a majority of the BFC voting Against. Once hired via BFBP-A, a contributor's term length is indefinite unless otherwise specified. There is no guarantee that payment terms in a BFBP-A can be fulfilled indefinitely given that the Beanstalk DAO must continually choose to fund Beanstalk Farms. Current (non-BFC) contributors only require another BFBP-A if their pay rate has increased or role/commitment has significantly changed since the terms of the proposal in effect. ### [](https://docs.bean.money/almanac/governance/proposals#bfbp-b) **BFBP-B** BFBP-Bs are proposals to dismiss a contributor from Beanstalk Farms. If at the end of the Voting Period: * Less than a majority of the BFC is voting For the BFBP-B, it fails, or * At least a majority of the BFC is voting For the BFBP-B, it passes. A BFBP-B is not required in circumstances where a contributor is leaving Beanstalk Farms voluntarily or gracefully. BFBP-Bs shall not mention the contributor's name, but instead shall include a hash, where the input of the hash indicates the contributor being dismissed. The input of the hash shall only be shared with the BFC and the contributor in question. This allows the contributor to verify the result of the vote while preserving their privacy during the Voting Period and if the vote fails. ### [](https://docs.bean.money/almanac/governance/proposals#bfbp-c) **BFBP-C** BFBP-Cs are proposals to use the Beanstalk Farms budget outside of hiring contributors. A BFBP-C passes if at the end of the Voting Period there are at least 3 votes For, but this can be vetoed by a majority of the BFC voting Against. A BFBP-C is not required for payments valued at less than or equal to 25,000 Beans or USDC. [](https://docs.bean.money/almanac/governance/proposals#bir) Beanstalk Immunefi Response --------------------------------------------------------------------------------------------- Beanstalk Immunefi Responses, or BIRs, are responses to bug reports on [Immunefi](https://immunefi.com/) . Only BIC members can propose and vote on BIRs and each member has 1 vote. Any BIC member can vote For or Against. The Voting Period opens when the Snapshot proposal for a BIR can be voted on and closes after 3 days. If at the end of the Voting Period: * Less than a two-thirds majority of the BIC is voting For the BIR, it fails, or * At least a two-thirds majority of the BIC is voting For the BIR, it passes. See [BIC Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process) for more information. BIRs are proposed on the [Beanstalk Bug Bounty Snapshot page](https://snapshot.org/#/beanstalkbugbounty.eth) , which is where BIC members vote. Past BIRs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bir) . [](https://docs.bean.money/almanac/governance/proposals#bnp) BeaNFT Proposal --------------------------------------------------------------------------------- BeaNFT Proposals, or BNPs, are proposals through which the BeaNFT DAO votes on the direction of BeaNFTs (new collections, collection upgrades, etc.). Anyone with 0.1% of the BeaNFT supply can propose a BNP. BNPs are voted on by BeaNFT holders and have two voting choices: For and Against. The Voting Period for BNPs is 7 days. If at the end of the Voting Period: * Less than or equal to 15% of the BeaNFT supply is voting For or the majority of participating BeaNFTs is voting Against the BNP, it fails, or * More than 15% of the BeaNFT supply is voting For and the majority of participating BeaNFTs is voting For the BNP, it passes. A BNP to create a new BeaNFT collection should include, at a minimum: (1) criteria to qualify for a BeaNFT in the new collection and (2) any rarity boost criteria. Including high level information about the theme of the collection, whether qualifying Farmers will be required to mint them, etc. is recommended. After the passage of the BNP, it is on the proposer to see through the completion of the art, the creation and deployment of the contracts, etc. Due to this, there is no guarantee that a new collection gets created after the passage of this type of BNP. A BNP seeking to upgrade an existing BeaNFT collection should outline (1) the proposed upgrade, (2) the rationale for the upgrade and (3) any technical criteria required to be implement the upgrade. A BNP can also be used to change the configuration or signers on the [BeaNFT DAO Multisig (BDM)](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard) . BNPs are proposed on the [BeaNFT DAO Snapshot space](https://snapshot.org/#/beanft.eth) . BeaNFT holders can vote on BNPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=beanft) . Past BNPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bnp) . [PreviousBDM Dashboard](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard) [NextDirectory](https://docs.bean.money/almanac/guides/directory) Last updated 1 year ago * [Table of Contents](https://docs.bean.money/almanac/governance/proposals#table-of-contents) * [Notes](https://docs.bean.money/almanac/governance/proposals#notes) * [Beanstalk Improvement Proposal](https://docs.bean.money/almanac/governance/proposals#bip) * [Beanstalk Operations Proposal](https://docs.bean.money/almanac/governance/proposals#bop) * [Emergency Beanstalk Improvement Proposal](https://docs.bean.money/almanac/governance/proposals#ebip) * [Beanstalk Farms Committee Proposal](https://docs.bean.money/almanac/governance/proposals#bfcp) * [BFCP-A](https://docs.bean.money/almanac/governance/proposals#bfcp-a) * [BFCP-B](https://docs.bean.money/almanac/governance/proposals#bfcp-b) * [BFCP-C](https://docs.bean.money/almanac/governance/proposals#bfcp-c) * [Beanstalk Farms Budget Proposal](https://docs.bean.money/almanac/governance/proposals#bfbp) * [BFBP-A](https://docs.bean.money/almanac/governance/proposals#bfbp-a) * [BFBP-B](https://docs.bean.money/almanac/governance/proposals#bfbp-b) * [BFBP-C](https://docs.bean.money/almanac/governance/proposals#bfbp-c) * [Beanstalk Immunefi Response](https://docs.bean.money/almanac/governance/proposals#bir) * [BeaNFT Proposal](https://docs.bean.money/almanac/governance/proposals#bnp) --- # Disclosures | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/disclosures.md) . **Before interacting with Beanstalk, consider reading the following disclosures** **prepared by the Beanstalk DAO. This document can be found on Arweave** [**here**](https://arweave.net/T1oQYQu8YSJjRCSwVDatIMIgnaJLKmQrAff70fazPn0) **.** Interacting with Beanstalk involves many risks. Before interacting with Beanstalk, you should review the relevant documentation to make sure you understand how Beanstalk works, as well as information about the current state of Beanstalk. The Beanstalk DAO has created this set of disclosures to assist in the educational process. These disclosures are not exhaustive. The [Beanstalk whitepaper](https://bean.money/beanstalk.pdf) , the [Farmers' Almanac](https://docs.bean.money/almanac) , and other Beanstalk resources, as well as participating in the Beanstalk community, can help to understand the protocol. Before participating in the protocol, everyone should do their own research, investigation and analysis. Transparency is the cornerstone of DeFi. The Beanstalk DAO endeavors to be as transparent as possible, particularly as it pertains to communicating the risks of interacting with Beanstalk. #### [](https://docs.bean.money/almanac/disclosures#governance-exploit) **1\. BEANSTALK WAS ATTACKED ON APRIL 17, 2022 VIA ON-CHAIN GOVERNANCE. ALL ~$77M IN NON-BEAN ASSETS WERE STOLEN. PROTOCOL GOVERNANCE HAS BEEN CHANGED TO A 5-OF-9 COMMUNITY MULTISIG.** On April 17, 2022, Beanstalk was attacked via on-chain governance resulting in a theft of all ~$77M in non-Beanstalk user assets. The attacker used a flash loan to compromise the governance mechanism and steal the assets deposited in the DAO. Shortly after the attack, Beanstalk was Paused and on-chain governance was removed. Since the attack, governance votes have taken place on Snapshot. Beanstalk is now owned by a community-run multisig wallet (the Beanstalk Community Multisig, or BCM) responsible for executing the will of the DAO as indicated via Snapshot vote. The keys to the BCM are custodied by a group of nine anonymous Beanstalk community members and contributors. All contract changes under the BCM structure require the signature of 5-of-9 BCM signers. This serves as a temporary security measure until either (1) a secure and fully decentralized governance mechanism has been developed and sufficiently audited, or (2) governance is removed altogether. The [old Bean token](https://etherscan.io/token/0xdc59ac4fefa32293a95889dc396682858d52e5db) was replaced with [another token on Ethereum](https://etherscan.io/address/0xBEA0000029AD1c77D3d5D23Ba2D8893dB9d1Efab) , which was then replaced with [the latest Bean token on Arbitrum](https://arbiscan.io/address/0xBEA0005B8599265D41256905A9B3073D397812E4) . The obsolete tokens have no value according to Beanstalk. More information: * [Past BIPs](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bip) * [Beanstalk Governance Exploit](https://bean.money/blog/beanstalk-governance-exploit) * [BCM Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) #### [](https://docs.bean.money/almanac/disclosures#infinite-supply) **2\. THERE IS NO MAXIMUM BEAN SUPPLY. THE BEAN SUPPLY CAN GROW INFINITELY THROUGH DEMAND-BASED MINTING AND GOVERNANCE.** Beanstalk increases the Bean supply every Season where the time weighted average price of 1 Bean is greater than $1 over the previous Season. Enough Beans are minted such that if all the newly minted Beans were sold, the Bean price would return to $1. Those Beans are distributed to Stalkholders, Pod holders and Active Fertilizer holders. The Bean supply is uncapped and grows as demand for Beans increases. Beans can also be minted arbitrarily through governance (see [#7](https://docs.bean.money/almanac/disclosures#governance-risk) ). More information: * [Beanstalk Analytics Links](https://docs.bean.money/almanac/community/links#analytics) * [Whitepaper, Section 8.10, Bean Supply](https://bean.money/beanstalk.pdf#subsection.8.10) * [Bean Supply Documentation](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) #### [](https://docs.bean.money/almanac/disclosures#no-pre-mine) **3\. BEANSTALK DID NOT HAVE A PRE-MINE, PRE-SALE, OR TEAM ALLOCATION. ALL BEANS HAVE BEEN MINTED IN ACCORDANCE WITH EITHER THE MINTING SCHEDULE OR GOVERNANCE.** Beanstalk did not have a pre-mine, pre-sale or team allocation of any kind. The first 100 Beans were minted when the `init` function was called to deploy Beanstalk. Beanstalk launched without the need to raise capital. However, after an on-chain governance attack on April 17, 2022 (see [#1](https://docs.bean.money/almanac/disclosures#governance-exploit) ), a fundraiser known as the Barn Raise is being used to recapitalize the non-Bean funds stolen in the exploit. The terms offered in the fundraiser are available to any Arbitrum address. More information: * [BFP-72: The Path Forward, No Haircuts](https://bean.money/bfp-72) * [Whitepaper, Section 7, Barn](https://bean.money/beanstalk.pdf#section.7) * [Barn Raise Documentation](https://docs.bean.money/almanac/farm/barn) #### [](https://docs.bean.money/almanac/disclosures#credit-risk) **4\. BEANSTALK RELIES ON THIRD PARTIES TO PROVIDE CREDIT TO RETURN THE BEAN PRICE TO ITS PEG. THERE IS NO LENDER OF LAST RESORT.** Beanstalk uses a credit based model, allowing anyone to lend Beans to the protocol to participate in peg maintenance. Beanstalk burns any Beans it borrows. As a consequence, the ability of the protocol to return the price of a Bean to the peg relies on the availability of willing creditors, which is not guaranteed. The economic design of Beanstalk fails if it can no longer attract creditors. More information: * [Whitepaper, Section 6, Field](https://bean.money/beanstalk.pdf#section.6) * [Field Documentation](https://docs.bean.money/almanac/farm/field) #### [](https://docs.bean.money/almanac/disclosures#oscillations) **5\. BEANSTALK DOES NOT GUARANTEE THE BEAN PRICE. INSTEAD BEANSTALK INCENTIVIZES THE REGULAR OSCILLATION OF THE BEAN PRICE ABOVE AND BELOW ITS PEG THROUGH PROTOCOL-NATIVE INCENTIVES.** Bean is not a collateralized stablecoin and Beanstalk offers no guarantee of the value of Bean. Beanstalk was deployed on August 6, 2021, and since then, the Bean price has crossed its dollar peg thousands of times. Even so, Beanstalk is still in an early stage and various parts of its economic design continue to be improved through governance. Beanstalk tries to incentivize the regular oscillation of the Bean price above and below its peg. While the protocol's incentives are designed to return the price of a Bean to its peg, the timing of oscillations is indeterminate. The price will almost never be exactly equal to its peg. Crossing the peg in the past is no guarantee of it happening again in the future. More information: * [Whitepaper, Section 8.1, Ideal Equilibrium](https://bean.money/beanstalk.pdf#subsection.8.1) * [Peg Maintenance Documentation](https://docs.bean.money/almanac/farm/overview) #### [](https://docs.bean.money/almanac/disclosures#debt-maturity-risk) **6\. BEANSTALK-NATIVE DEBT DOES NOT HAVE A MATURITY DATE AND THEREFORE MAY NEVER BECOME REDEEMABLE FOR BEANS.** Beanstalk borrows Beans from lenders in exchange for Pods and Sprouts. Bean loans have fixed interest rates but do not have fixed maturity dates. Pods and Sprouts are repaid when the time weighted average price of 1 Bean is greater than $1 over the previous Season, but there is no guarantee this will continue until all Pods and Sprouts become redeemable (see [#4](https://docs.bean.money/almanac/disclosures#credit-risk) ). Governance may also arbitrarily modify the redeemability of Beanstalk debt (see [#7](https://docs.bean.money/almanac/disclosures#governance-risk) ). More information: * [Whitepaper, Section 11.2, Strong Credit](https://bean.money/beanstalk.pdf#subsection.11.2) * [Economics Documentation](https://docs.bean.money/almanac/advanced/economics) #### [](https://docs.bean.money/almanac/disclosures#governance-risk) **7\. STALKHOLDERS CAN MAKE ARBITRARY CHANGES TO BEANSTALK THROUGH GOVERNANCE, IF ENACTED BY THE BEANSTALK COMMUNITY MULTISIG. THERE IS NO GUARANTEE THE CHANGES WILL BE BENEFICIAL TO BEANSTALK.** Beanstalk is governed by the Beanstalk DAO—the Silo, which is comprised of Stalkholders. Stalkholders vote on Beanstalk Improvement Proposals (BIPs), which can arbitrarily change Beanstalk. Voting rights come from Stalk ownership (see [#8](https://docs.bean.money/almanac/disclosures#earlier-depositor-governance-power) for details on Stalk). Any community member that meets a certain Stalk ownership threshold may propose a BIP. If the BIP passes, the Beanstalk Community Multisig (see [#9](https://docs.bean.money/almanac/disclosures#multisig-risk) for details on the BCM) executes the will of the DAO based on the results of the vote, unless the Stalk distribution is compromised in a flash loan or other governance attack. Through this governance process, Stalkholders may make arbitrary changes to Beanstalk. More information: * [Beanstalk DAO Snapshot](https://snapshot.org/#/beanstalkdao.eth/) * [Past BIPs](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bip) #### [](https://docs.bean.money/almanac/disclosures#earlier-depositor-governance-power) **8\. ANYONE CAN RECEIVE STALK BY DEPOSITING WHITELISTED ASSETS IN THE SILO. EARLIER DEPOSITORS IN THE SILO HAVE PROPORTIONALLY GREATER GOVERNANCE POWER RELATIVE TO THE BEAN DENOMINATED VALUE ORIGINALLY DEPOSITED.** Depositors earn Stalk and Seeds. Seeds yield 1/10000 new Stalk every Season. Stalkholders participate in governance and earn Bean seigniorage. Stalk ownership, and thus governance power, decentralizes over time. As earlier Depositors in the Silo have been accruing Stalk from Seeds for more Seasons compared to later Depositors, these Depositors have greater governance power in proportion to the Bean Denominated Value (BDV) of their original Deposits. More information: * [Whitepaper, Section 5.1, The Stalk System](https://bean.money/beanstalk.pdf#subsection.5.1) * [The Stalk System Documentation](https://docs.bean.money/almanac/farm/silo#the-stalk-system) #### [](https://docs.bean.money/almanac/disclosures#multisig-risk) **9\. THE BEANSTALK CONTRACT IS OWNED BY THE BEANSTALK COMMUNITY MULTISIG. THE MULTISIG CAN MAKE ARBITRARY CHANGES TO BEANSTALK WITH 5-OF-9 SIGNATURES FROM THE ANONYMOUS SIGNERS. THERE IS NO GUARANTEE THE MULTISIG ENACTS THE GOVERNANCE DECISIONS OF THE DAO.** Ownership of the Beanstalk contracts is held by a 5-of-9 multisig known as the Beanstalk Community Multisig (BCM). The BCM is an extension of the Beanstalk DAO. The BCM's role is to enact on-chain the decisions Stalkholders make via off-chain voting on Snapshot. Besides Publius (one of the members), all members of the BCM are anonymous. Publius selects the other members, who Publius believes will act in the best interest of Beanstalk. This process was approved via governance. Off-chain governance introduces significant risks related to security and censorship. The BCM is designed to mitigate as many of those risks as possible by distributing the multisig keys across reputable community members and Beanstalk core contributors, and collectively implementing and adhering to a set of best practices. There is no guarantee the BCM enacts the governance decisions the DAO voted on via Snapshot. More information: * [BFP-73: Beanstalk Community Multisig](https://bean.money/bfp-73) * [BCM Multisig Powers Documentation](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#multisig-powers) * [Anonymous Multisig Signers Documentation](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#anonymous-signers) * [BCM Dashboard](https://docs.bean.money/almanac/governance/beanstalk/bcm-dashboard) #### [](https://docs.bean.money/almanac/disclosures#hypernative) **10\. MOST BEANSTALK FUNCTIONS CAN BE ARBITRARILY REMOVED BY HYPERNATIVE, A PROACTIVE THREAT PREVENTION AND REAL-TIME MONITORING PLATFORM. THERE IS NO GUARANTEE THAT FUNCTIONS ARE ONLY REMOVED WHEN APPROPRIATE.** The Beanstalk DAO implemented Hypernative into Beanstalk, a proactive threat prevention and real-time monitoring platform. Hypernative has the ability to remove any Beanstalk function unrelated to the Arbitrum Diamond and upgradability of Beanstalk. Hypernative introduces significant risks related to security and censorship. There is no guarantee that: * Hypernative only removes functions during high confidence pre-exploit and exploit-in-progress detections; * The BCM will remove Hypernative protections when necessary for the security or censorship resistance of Beanstalk; or that * The BCM only removes Hypernative protections when it beneficial to Beanstalk. More information: * [Hypernative](https://hypernative.io/) * [BIP-46: Hypernative](https://arweave.net/2enPPzc5mkN18bXnApmCJNRkxwYc-CiCsU71XPualj4) * [Emergency Response Procedures Documentation](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#hypernative) #### [](https://docs.bean.money/almanac/disclosures#stalk-governance-power) **11\. AS GOVERNANCE POWER IS DETERMINED THROUGH STALK OWNERSHIP, SUFFICIENT CAPITAL COULD PURCHASE SIGNIFICANT GOVERNANCE POWER AND TAKE OVER BEANSTALK.** Beanstalk is governed by Stalkholders, as described in [#7](https://docs.bean.money/almanac/disclosures#governance-risk) . Stalk ownership, and thus governance power, decentralizes over time given the inflationary nature of Stalk. However, there is no maximum Stalk supply. Stalk is minted for Deposits based on the Bean Denominated Value (BDV) of the Deposit, up to any arbitrary BDV. Stalk ownership was previously compromised via flash loan, which enabled the on-chain governance attack on April 17, 2022 (see [#1](https://docs.bean.money/almanac/disclosures#governance-exploit) ). The Beanstalk Community Multisig serves as a temporary security measure until either (1) a secure and fully decentralized governance mechanism has been developed and sufficiently audited, or (2) governance is removed altogether. More information: * [Whitepaper, Section 5.1, The Stalk System](https://bean.money/beanstalk.pdf#subsection.5.1) * [BCM Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) #### [](https://docs.bean.money/almanac/disclosures#ethereum-risk) **12\. A VULNERABILITY IN ETHEREUM OR ARBITRUM COULD RESULT IN A LOSS OF FUNDS. BEANSTALK ASSUMES THE SECURITY OF ETHEREUM AND ARBITRUM.** Ethereum is the largest smart contract blockchain by market capitalization, total value deposited, and dollar denominated transaction value. Arbitrum is the largest L2 on Ethereum by TVL. In general, open source networks with large amounts of value on them and long track records indicate security, but there is no guarantee. Beanstalk assumes the security of Ethereum and Arbitrum. #### [](https://docs.bean.money/almanac/disclosures#basin-risk) **13\. A VULNERABILITY IN BASIN OR ITS COMPONENTS COULD RESULT IN A LOSS OF FUNDS. BEANSTALK ASSUMES THE SECURITY OF BASIN AND ITS CORRESPONDING COMPONENTS.** Beans trade in Wells on Basin. Well LP tokens are whitelisted in the Silo and used by Beanstalk to determine how many Beans and/or Soil to mint. Basin and the corresponding components that Beanstalk uses (the Constant Product Well Function, the Stable Well Function, the Well Implementation, Multi Flow, etc.) were audited by [Halborn](https://halborn.com/) , [Cyfrin](https://www.cyfrin.io/) and [Code4rena](https://code4rena.com/) . While all are reputable auditors, there is no guarantee that Basin or its components are secure. Beanstalk assumes the security of Basin and its corresponding components. More information: * [BIP-37: Basin Integration](https://bean.money/bip-37) * [Basin Audit Reports](https://github.com/BeanstalkFarms/Beanstalk-Audits#ecosystem-audit-reports-on-arweave) * [Basin Whitepaper](https://basin.exchange/basin.pdf) * [Multi Flow Pump Whitepaper](https://basin.exchange/multi-flow-pump.pdf) #### [](https://docs.bean.money/almanac/disclosures#pipeline-risk) **14\. A VULNERABILITY IN PIPELINE COULD RESULT IN A LOSS OF FUNDS. BEANSTALK ASSUMES THE SECURITY OF PIPELINE.** Through Beanstalk, users can perform complex, gas-efficient interactions with other Arbitrum-native protocols, like Pipeline. Pipeline is a sandbox contract allows anyone to perform an arbitrary series of actions in the EVM in a single transaction. Pipeline was audited by Halborn, but there is no guarantee that Pipeline is secure. Beanstalk assumes the security of Pipeline. More information: * [BIP-30: Generalized Pipeline](https://bean.money/bip-30) * [Pipeline Audit Report](https://evmpipeline.org/pipeline-audit-halborn.pdf) * [Pipeline Whitepaper](https://evmpipeline.org/pipeline.pdf) * [Whitepaper, Section 10, Depot](https://bean.money/beanstalk.pdf#section.10) #### [](https://docs.bean.money/almanac/disclosures#non-bean-liquidity-risk) **15\. THE BEAN PRICE IS DERIVED FROM THE VALUE OF ASSETS IT TRADES AGAINST IN DECENTRALIZED AMMS. THERE IS NO GUARANTEE ANY OF THESE ASSETS RETAIN VALUE.** The value of Beans is derived from the non-Bean assets trading against it in decentralized liquidity pools. Each of these assets have their own set of associated risks, unique to the asset. Beanstalk implicitly assumes risk associated with these assets. #### [](https://docs.bean.money/almanac/disclosures#not-all-bean-holders-can-exit-at-a-dollar-of-value) **16\. BECAUSE BEANS DERIVE THEIR VALUE FROM THE ASSETS THEY TRADE AGAINST, AND NOT COLLATERAL, IT IS NOT POSSIBLE FOR ALL BEAN HOLDERS TO EXIT AT A DOLLAR OF VALUE FOR EVERY BEAN.** Beans are not redeemable for any other asset; they can only be traded for another asset that Beans are trading against. As Bean holders sell their Beans, there is less and less value trading against Beans. Thus, unlike collateralized stablecoins, it is not possible for the Bean supply to scale down to zero with every Bean holder getting a dollar of value for every Bean sold. #### [](https://docs.bean.money/almanac/disclosures#oracle-risk) **17\. BEANSTALK REQUIRES TRUSTLESS AND RELIABLE ACCESS TO A MANIPULATION RESISTANT PRICE ORACLE FOR A DOLLAR. BEANSTALK USES A CHAINLINK DATA FEED AND THE ON-CHAIN PRICES OF OTHER STABLECOINS TO DETERMINE THE PRICE OF A DOLLAR. THERE IS RISK ASSOCIATED WITH BOTH OF THESE METHODS THAT CAN COMPROMISE THEIR INTEGRITY AS ACCURATE PRICE ORACLES.** Beanstalk's core objective is to oscillate the price of a Bean above and below its dollar peg. To do this, Beanstalk must be able to reliably measure the price of a dollar on-chain without trusting a centralized third-party to provide it. A robust, decentralized stablecoin requires a tamper-proof, manipulation resistant and decentralized price oracle. A disruption in the reliability of various Chainlink data feeds could impact Bean minting, resulting in adverse consequences for Beanstalk. The Chainlink data feeds are inherently centralized. More information: * [Whitepaper, Section 8.2, Decentralized Price Oracle](https://bean.money/beanstalk.pdf#subsection.8.2) * [Decentralized Price Oracle Documentation](https://docs.bean.money/almanac/peg-maintenance/overview#decentralized-price-oracle) #### [](https://docs.bean.money/almanac/disclosures#sunrise-incentivization-risk) **18\. BEANSTALK REQUIRES THAT THE GM FUNCTION IS CALLED AT THE TOP OF EACH HOUR ON ARBITRUM. FAILURE TO SUCCESSFULLY INCENTIVIZE THE CALLING OF THE GM FUNCTION COULD HAVE AN ADVERSE AFFECT ON BEANSTALK'S ABILITY TO OSCILLATE THE BEAN PRICE ABOVE AND BELOW ITS PEG.** Beans and/or Soil are minted upon a successful call of the `gm` function. Beanstalk covers the cost of `gm` by awarding the sender of an accepted `gm` function call with newly minted Beans. The failure of Beanstalk to successfully incentivize the calling of `gm` would effectively result in the failure of Beanstalk to influence the size of the Bean supply, and thereby the Bean price. More information: * [Whitepaper, Section 4, Sun](https://bean.money/beanstalk.pdf#section.4) * [Sun Documentation](https://docs.bean.money/almanac/farm/sun) #### [](https://docs.bean.money/almanac/disclosures#open-source-risk) **19\. THE BEANSTALK CONTRACTS ARE OPEN SOURCE. ANYONE CAN VIEW THE SOURCE CODE AND ATTEMPT TO FIND VULNERABILITIES.** The Beanstalk contracts are open source and deployed on Arbitrum. There may be bugs, flaws, or other unintended consequences from using open source code to govern irreversible financial transactions on a decentralized network. These issues may lead to a loss of funds if present and discovered by malicious actors, and has in the past (see [#1](https://docs.bean.money/almanac/disclosures#governance-exploit) ). More information: * [Beanstalk on GitHub](https://github.com/BeanstalkFarms/Beanstalk) #### [](https://docs.bean.money/almanac/disclosures#audit-risk) **20\. BEANSTALK IS AUDITED BUT AUDITS CANNOT GUARANTEE SECURITY. IT IS ANTICIPATED THAT FUTURE CODE WILL NOT BE AUDITED BEFORE BEING COMMITTED BY THE DAO.** Security is paramount to Beanstalk's success. Prior to Replant in August 2022, the majority of Beanstalk’s code was audited by Halborn and [Trail of Bits](https://www.trailofbits.com/) . Up to October 2024, the majority of new Beanstalk code since Replant has been audited by Halborn, Cyfrin and Codehawks. While all are reputable audit firms, there is no guarantee Beanstalk is secure. Beanstalk was audited by [Omniscia](https://omniscia.io/) prior to the April 2022 governance exploit. In the future, it is anticipated that the DAO will vote to commit unaudited code. There is always additional risk associated with implementing unaudited code. There is no guarantee that interacting with Beanstalk through the Beanstalk UI and SDK is secure. Any issues could lead to a loss of funds. More information: * [Beanstalk Audits](https://github.com/BeanstalkFarms/Beanstalk-Audits) #### [](https://docs.bean.money/almanac/disclosures#closed-source-ui-risk) **21\. THE APP.BEAN.MONEY FRONTEND CAN BE CENSORED AS IT IS HOSTED ON A CLOUD PROVIDER.** The Beanstalk UI hosted at [app.bean.money](https://app.bean.money/) is hosted on Netlify, a privately held, United States based cloud provider. Netlify could censor the frontend at will, or a technical disruption could prevent access. In either scenario, Beanstalk would not be accessible from a web browser until (1) Beanstalk Farms, the decentralized development organization that manages the site, could deploy the frontend elsewhere, or (2) other parties could use the open source code to deploy their own frontends to interact with the Beanstalk contracts. There have been multiple instances of Netlify getting compromised, resulting in phishing attacks. There is no guarantee that the Beanstalk UI will not be subjected to similar attacks. More information: * [Beanstalk UI on GitHub](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/ui) * [Beanstalk Farms Documentation](https://docs.bean.money/almanac/governance/beanstalk-farms) #### [](https://docs.bean.money/almanac/disclosures#subgraph-data) **22\. THE APP.BEAN.MONEY FRONTEND DEPENDS ON THE SUBGRAPHS FOR DISPLAYING VARIOUS ON-CHAIN DATA. THERE IS NO GUARANTEE THAT SUBGRAPH DATA IS ACCURATE OR AVAILABLE.** The Beanstalk UI hosted at [app.bean.money](https://app.bean.money/) depends on the Beanstalk and Bean Subgraphs for displaying various data. By default the Beanstalk UI uses a version of the subgraph hosted on Hetzner, a privately held, Germany based cloud provider. Hetzner could censor the subgraph or a technical disruption could prevent access. More information: * [Beanstalk Subgraph on GitHub](https://github.com/BeanstalkFarms/Beanstalk/tree/master/projects/subgraph-beanstalk) #### [](https://docs.bean.money/almanac/disclosures#regulatory-risk) **23\. REGULATORY INTEREST IN STABLECOINS AND DECENTRALIZED FINANCE WILL RESULT IN NEW INDUSTRY REGULATIONS. THE IMPACT OF FUTURE REGULATIONS ON BEANSTALK IS UNCERTAIN.** In alignment with the ethos of DeFi, Beanstalk has been designed to be permissionless and censorship resistant, without the requirement for any trust-providing intermediary. It is unclear what regulations, if any, governments will attempt to impose on DeFi. Therefore, it is impossible to predict how any new government regulations of DeFi will affect Beanstalk, or any of the protocols or networks Beanstalk relies on as part of its ecosystem. #### [](https://docs.bean.money/almanac/disclosures#regulatory-risk-1) **24\. BEANSTALK IS NOT A FINISHED PROTOCOL AND REQUIRES ONGOING DEVELOPMENT. THERE IS NO GUARANTEE OF FURTHER DEVELOPMENT.** Beanstalk is likely not at a point where it can sustain itself in perpetuity without additional development of itself and the surrounding ecosystem. High quality improvements are essential but are not guaranteed. Publius, the pseudonym for the three co-founders of Beanstalk, continues to be influential within the Beanstalk DAO. The identities of Publius are public. The identities of most of the remaining Beanstalk contributors are anonymous. [PreviousFarmers' Almanac](https://docs.bean.money/almanac) [NextWhy Beanstalk](https://docs.bean.money/almanac/introduction/why-beanstalk) Last updated 1 year ago --- # BFM Dashboard | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard.md) . Beanstalk Farms budget funds are custodied by the Beanstalk Farms Multisig, or BFM. The BFM is deployed using Safe. Its m-of-n configuration is currently 4-of-7 on Arbitrum. This means any use of the budget funds must be approved by at least 4 of the 7 signers. **Beanstalk Farms Multisig Safe address:** [0xd39A31e5f23D90371D61A976cACb728842e04ca9](https://arbiscan.io/address/0xd39A31e5f23D90371D61A976cACb728842e04ca9) [![Logo](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2Fapp.safe.global%2Ffavicons%2Fapple-touch-icon.png&width=20&dpr=3&quality=100&sign=5fefc37a&sv=2)Safe{Wallet}safe](https://app.safe.global/transactions/queue?safe=arb1:0xd39A31e5f23D90371D61A976cACb728842e04ca9) ### [](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard#bfm-signers) **BFM Signers** The current BFM signers are as follows, in no particular order: * Michael Montoya * Brean * guy * sweetredbeans * mod323 * aloceros * Cujo The following Farmers serve as backup signers for the BFM, in no particular order: * pizzaman1337 * CanadianBennett * MrMochi Rotating BFM signers requires a [BOP](https://docs.bean.money/almanac/governance/proposals#bop) (or [BIP](https://docs.bean.money/almanac/governance/proposals#bip) ) unless a signer voluntarily leaves the BFM or for rotating in a backup signer. Address [0x696a43f4Bf353685E1666f700bB929b8042E5e1b](https://arbiscan.io/address/0x696a43f4Bf353685E1666f700bB929b8042E5e1b) [0x0703B2b27Ee333B3f5249f7C96ad1445D4A09A17](https://arbiscan.io/address/0x0703B2b27Ee333B3f5249f7C96ad1445D4A09A17) [0x6D1E1EC2891EdC25fdB3E3D0f7E02F469Cc1Bcbb](https://arbiscan.io/address/0x6D1E1EC2891EdC25fdB3E3D0f7E02F469Cc1Bcbb) [0xABf65fD0D887235D45898B09D66a67871EC23d1a](https://arbiscan.io/address/0xABf65fD0D887235D45898B09D66a67871EC23d1a) [0xcFDC487C7a347aA7B275221c2A663e1004f656b8](https://arbiscan.io/address/0xcFDC487C7a347aA7B275221c2A663e1004f656b8) [0x336C5185B9f27b40fcD8E852d4B9e15A08084743](https://arbiscan.io/address/0x336C5185B9f27b40fcD8E852d4B9e15A08084743) [0x2e4Ea01753f30B837813EF14CC547674AeA1fe88](https://arbiscan.io/address/0x2e4Ea01753f30B837813EF14CC547674AeA1fe88) [PreviousBeanstalk Farms](https://docs.bean.money/almanac/governance/beanstalk-farms) [NextBFC Dashboard](https://docs.bean.money/almanac/governance/beanstalk-farms/bfc-dashboard) Last updated 1 year ago --- # Temperature | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/peg-maintenance/temperature.md) . Beanstalk relies on a decentralized set of creditors to maintain Bean price stability. Anytime Beanstalk is willing to issue debt, it issues [Soil](https://docs.bean.money/almanac/farm/field#soil) . Soil represents the number of Beans that Beanstalk is currently willing to borrow. Loans to Beanstalk are issued with a fixed interest rate, known as Temperature. If the Temperature is 500%, 1 Bean can be Sown in exchange for 6 Pods. Once those Pods become Harvestable, they can be Harvested in exchange for 6 Beans. At the beginning of each [Season](https://docs.bean.money/almanac/farm/sun) , Beanstalk changes the Maximum Temperature depending on its position ([price](https://docs.bean.money/almanac/peg-maintenance/overview#decentralized-price-oracle) and [debt level](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) ) and current state ([direction](https://docs.bean.money/almanac/peg-maintenance/temperature#direction) and [acceleration](https://docs.bean.money/almanac/peg-maintenance/temperature#acceleration) ) with respect to its [ideal equilibrium](https://docs.bean.money/almanac/peg-maintenance/overview#ideal-equilibrium) . The Temperature increases at the beginning of each block of the [Morning](https://docs.bean.money/almanac/peg-maintenance/temperature#morning) of each Season (25 blocks) according to a Dutch auction. ### [](https://docs.bean.money/almanac/peg-maintenance/temperature#direction) **Direction** The current state of Beanstalk is in part determined by the direction of change with respect to ideal equilibrium. The direction of change of Beanstalk with respect to ideal equilibrium is considered either toward or away from ideal equilibrium, based on the current debt level and the [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) over the previous Season. When the deltaB over the previous Season is > 0, debt is paid back. Therefore, if there is more debt than optimal, Beanstalk is moving toward the ideal equilibrium. If there is less debt than optimal, Beanstalk is moving away from the ideal equilibrium. When the deltaB over the previous Season is < 0, debt can only increase or remain constant. Therefore, if there is more debt than optimal, Beanstalk is moving away from ideal equilibrium. If there is less debt than optimal, Beanstalk is moving toward ideal equilibrium. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-69289627b2c3fc75986bec8398b5411446eb6563%252Fdirection.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=e17e363a&sv=2) ### [](https://docs.bean.money/almanac/peg-maintenance/temperature#demand-for-soil) **Demand for Soil** Demand for Soil is a factor in the acceleration of Beanstalk with respect to ideal equilibrium, which affects Maximum Temperature changes. Demand for Soil is considered decreasing, steady or increasing. * The number of Sown Beans each Season (utu\_tut​) indicated demand for Soil over the course of that Season. * The rate of change in the number of Sown Beans each Season (Delta Demand) is calculated as the number of Sown Beans in the previous Season (utāˆ’1u\_{t-1}utāˆ’1​) divided by the number of Sown Beans two Seasons ago (utāˆ’2u\_{t-2}utāˆ’2​). Based on this ratio of the number of Sown Beans over the prior two Seasons, or Delta Demand: * If Delta Demand < 95%, demand for Soil is decreasing. * If 95% ≤ Delta Demand < 105%, demand for Soil is steady. * If 105% ≤ Delta Demand, demand for Soil is increasing. However, when there is between 0 and 1 Soil remaining at the end of any Season, the ratio is not used. Instead, Beanstalk checks the following conditions to determine the current demand for Soil: * After one or more Seasons in which there was > 1 Soil remaining, if there is between 0 and 1 Soil remaining at the end of the latest Season, demand for Soil is increasing. * When there is at most 1 Soil remaining in consecutive Seasons, the difference in time it takes for the excess Soil (S > 1) to be Sown over the previous two Seasons can provide a more accurate measurement. * If S > 1 was Sown in the first 10 minutes of the previous Season, demand for Soil is increasing. * If S > 1 was not Sown in the first 10 minutes of the previous Season, Beanstalk compares the time it took for all S > 1 to be Sown in the previous two Seasons (utāˆ’1u\_{t-1}utāˆ’1​ and utāˆ’2u\_{t-2}utāˆ’2​). * If it took less than one minute longer for all S > 1 to be Sown in utāˆ’2u\_{t-2}utāˆ’2​ than utāˆ’1u\_{t-1}utāˆ’1​, demand for Soil is decreasing. If it took longer than one minute, demand for Soil is increasing. Otherwise, demand for Soil is steady. ### [](https://docs.bean.money/almanac/peg-maintenance/temperature#acceleration) **Acceleration** The current state of Beanstalk with respect to ideal equilibrium is in part determined by the acceleration of change. The acceleration of Beanstalk affects the magnitude of Maximum Temperature changes and is considered decelerating, steady or accelerating based on the price over the previous Season and the demand for Soil. ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-bc203a7077cc2e72e2a103948314160460b5164a%252Fdemand-for-soil.png%3Falt%3Dmedia&width=768&dpr=3&quality=100&sign=c201f444&sv=2) ### [](https://docs.bean.money/almanac/peg-maintenance/temperature#current-and-optimal-state) **Current and Optimal State** Based on a combination of Beanstalk’s direction and acceleration, Beanstalk has six potential current states: * Accelerating away from ideal equilibrium; * Accelerating toward ideal equilibrium; * Steady away from ideal equilibrium; * Steady toward ideal equilibrium; * Decelerating away from ideal equilibrium; and * Decelerating toward ideal equilibrium. Beanstalk’s optimal state is that which moves Beanstalk toward ideal equilibrium in the healthiest fashion, given the current position. When the debt level is excessively high or low, an optimal state is accelerating toward ideal equilibrium. When the debt level is reasonably high or low, an optimal state is either steady or decelerating toward ideal equilibrium. Considering the current state and the debt level, Beanstalk adjusts the Maximum Temperature to move toward the optimal state: ![](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252FloLUoN5eCHYai80Kqqah%252Fcases.png%3Falt%3Dmedia%26token%3Dc5b4e705-4b7a-4813-b85c-85c90fba8599&width=768&dpr=3&quality=100&sign=86179d0f&sv=2) The [Maximum Temperature Flow Chart](https://www.figma.com/file/ri6N8czFLXcvuJKWfQtAr8/[PUBLIC]-Temperature-Flow-Chart?node-id=0%3A1&t=27N3RhfE52pum1U8-1) contains a graphical representation of each possible state and an explanation for each Maximum Temperature adjustment. ### [](https://docs.bean.money/almanac/peg-maintenance/temperature#morning) Morning During the Morning of each Season (the first 5 minutes), the Temperature increases logarithmically from 1% in the block of a successful `gm` function call up to the Maximum Temperature over the course of 5 minutes (See [Section 8.12.2 of the whitepaper](https://bean.money/beanstalk.pdf#subsubsection.8.12.2) for complete formulas). During times of short-term excess demand for Soil, the Morning results in Beanstalk paying significantly less to attract creditors. [PreviousOverview](https://docs.bean.money/almanac/peg-maintenance/overview) [NextCrop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) Last updated 2 years ago * [Direction](https://docs.bean.money/almanac/peg-maintenance/temperature#direction) * [Demand for Soil](https://docs.bean.money/almanac/peg-maintenance/temperature#demand-for-soil) * [Acceleration](https://docs.bean.money/almanac/peg-maintenance/temperature#acceleration) * [Current and Optimal State](https://docs.bean.money/almanac/peg-maintenance/temperature#current-and-optimal-state) * [Morning](https://docs.bean.money/almanac/peg-maintenance/temperature#morning) --- # Audits | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/protocol/audits.md) . Codehawks completed its audit of [BIP-50](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/08-09-24-bip-50-codehawks-report.md) on **August 9, 2024**, identifying 8 findings. The final report can be found [here](https://bean.money/08-09-24-bip-50-codehawks-report) . Codehawks completed its audit of [BIP-49](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/05-30-24-bip-49-codehawks-report.md) on **May 30, 2024**, identifying 4 findings. The final report can be found [here](https://bean.money/05-30-24-bip-49-codehawks-report) . Codehawks completed its audit of [BIP-48](https://bean.money/05-04-24-bip-48-codehawks-report) on **May 4, 2024**, identifying 8 findings. The final report can be found [here](https://bean.money/05-04-24-bip-48-codehawks-report) . Codehawks completed its audit of [BIP-45](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/04-06-24-bip-45-codehawks-report.md) on **April 6, 2024**, identifying 8 findings. The final report can be found [here](https://bean.money/04-06-24-bip-45-codehawks-report) . [Cyfrin](https://cyfrin.io/) completed its audit of [BIP-38](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/10-13-23-bip-38-cyfrin-report.pdf) on **October 13, 2023**, identifying 16 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/10-13-23-bip-38-cyfrin-report) . Cyfrin complete its audit of [Beanstalk](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/09-12-23-cyfrin-report.pdf) on **September 12, 2023**, identifying 63 findings. The final report can be found [here](https://arweave.net/JQodlB-9fil-OWfWOwYy6Q8eqWITJXtyaN5z_Anq1S0) . [Halborn](https://halborn.com/) completed its audit of [BIP-37](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/07-24-23-bip-37-halborn-report.pdf) on **July 24, 2023**, identifying 3 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/07-24-23-bip-37-halborn-report) . Halborn completed its audit of [BIP-36](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/06-30-23-bip-36-halborn-report.pdf) on **June 30, 2023**, identifying 4 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/06-30-23-bip-36-halborn-report) . Halborn completed its audit of [BIP-34](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/04-18-23-bip-34-halborn-report.pdf) on **April 18, 2023**, identifying 2 findings that were solved prior to the release of the report. The final report can be found [here](https://bean.money/04-18-23-bip-34-halborn-report) . Halborn completed another audit of [Beanstalk](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/12-13-22-halborn-report.pdf) on **December 13, 2022**, identifying 12 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/12-13-22-halborn-report) . Halborn completed its audit of [BIP-30](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-30-generalized-pipeline-permit.md) on **December 1, 2022**, identifying 9 findings that were acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/12-01-22-bip-30-halborn-report) . Halborn completed its audit of [BIP-29](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-29-pod-market-price-functions.md) on **November 4, 2022**, identifying 3 findings that were solved prior to the release of the report (one additional issue was reported by Beanstalk Farms). The final report can be found [here](https://bean.money/11-04-22-bip-29-halborn-report) . Halborn completed its penetration testing of the [Beanstalk UI](https://app.bean.money/) on **October 19, 2022**, identifying 5 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/10-19-22-beanstalk-ui-halborn-report) . Halborn completed its audit of [BIP-24](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-24-fungible-bdv-support.md) on **September 23, 2022**, identifying 5 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/09-23-22-bip-24-halborn-report) . [Trail of Bits](https://www.trailofbits.com/) completed its audit of [Beanstalk](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/07-22-22-tob-report.pdf) on **July 22, 2022**, identifying 13 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/07-22-22-tob-report) and the fix review can be found [here](https://bean.money/07-22-22-tob-fix-review) . Halborn completed its audit of [Beanstalk](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/07-13-22-halborn-report.pdf) on **July 13, 2022**, identifying 17 findings that were solved or acknowledged prior to the release of the report. The final report can be found [here](https://bean.money/07-13-22-halborn-report) . [Omniscia](https://omniscia.io/) completed its audit of [Beanstalk](https://github.com/BeanstalkFarms/Beanstalk-Audits/blob/main/beanstalk/04-02-22-omniscia-report.md) on **April 2, 2022**, identifying 8 findings using statistical analysis and 68 findings during the manual review. All 76 findings were promptly alleviated prior to the release of the audit report. The final report can be found [here](https://bean.money/04-02-22-omniscia-report) . All audit reports are uploaded to the [Beanstalk Audits GitHub repo](https://github.com/BeanstalkFarms/Beanstalk-Audits) . [PreviousContracts](https://docs.bean.money/almanac/protocol/contracts) [NextBug Bounty](https://docs.bean.money/almanac/protocol/bug-bounty) Last updated 1 year ago --- # Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/governance/beanstalk.md) . A robust decentralized governance mechanism must balance the principles of decentralization with resistance to attempted protocol changes, both malicious and ignorant, and the ability to quickly adapt to changing information. In practice, Beanstalk must balance ensuring sufficient time for all ecosystem participants to consider a Beanstalk Improvement Proposal (BIP) with the ability to be quickly upgraded in cases of emergency. Prior to Beanstalk’s April 17, 2022 exploit, Beanstalk Improvement Proposals (BIPs) were entirely on-chain and autonomous. However, after the exploit, Beanstalk was Paused and the ability to propose BIPs on-chain halted. Until governance is removed entirely, BIPs will be voted on off-chain via Snapshot and will be executed on-chain by the [Beanstalk Community Multisig (BCM)](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) . Stalkholders are able to vote on BIPs via Snapshot. BIPs are proposed on the [Beanstalk DAO Snapshot page](https://snapshot.org/#/beanstalkdao.eth/) . Stalkholders can vote on BIPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance) . Past BIPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/) . ### [](https://docs.bean.money/almanac/governance/beanstalk#participation) **Participation** Anyone can become a Stalkholder and participate in Beanstalk governance by Depositing whitelisted assets in the Silo to earn Stalk. A Stalkholder’s voting power is proportional to their Stalk balance relative to the total Stalk supply. Any Stalkholder can vote For or Against on any BIP. A Stalkholder's vote for a given proposal is counted as their Stalk at the beginning of the Voting Period that still exists. Stalkholders have the ability to delegate their vote to any other user. Any Stalkholder that owns more than 0.1% of total outstanding Stalk can submit a BIP per the [BIP Proposal Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#bip-proposal-process) . The submitter of a BIP must still own more than 0.1% of Stalk at the end of the Voting Period for the BIP to be able to pass. ### [](https://docs.bean.money/almanac/governance/beanstalk#voting-period) **Voting Period** The Voting Period opens when the Snapshot proposal for a BIP can be voted on and ends 7 days later or when it is committed with a supermajority. If at the end of the Voting Period: * Less than or equal to one-third of the total outstanding Stalk, plus the amount of Stalk voting Against, is voting For, it fails, or * More than one-third of the total outstanding Stalk, plus the amount of Stalk voting Against, is voting For, or more than half of total outstanding Stalk is voting For, it passes. If at any time 24 hours or more after the beginning and before the end of the Voting Period more than two-thirds of the total outstanding Stalk is voting in favor of the BIP, the BCM can execute the BIP on-chain. Beanstalk governance is designed to move slow and steady. When trying to become an issuer of money, the potential for rapid monetary policy changes is unattractive. By requiring more than one-third of Stalk to vote in favor of a BIP for it to pass, it is quite difficult for a BIP to pass. Therefore, unless the proposed change is _significantly preferred_ by Stalkholders, it is unlikely to pass. ### [](https://docs.bean.money/almanac/governance/beanstalk#pause) **Pause** In case of a particularly dangerous vulnerability to Beanstalk, the BCM can Pause Beanstalk without a Snapshot. You can read more about which actions the BCM can take without a Snapshot proposal [here](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#snapshots) . The Beanstalk DAO can also Pause Beanstalk via BIP. When Paused, Beanstalk does not accept a `gm` function call. Once Unpaused, the `gm` function can be called at the beginning of the next hour. ### [](https://docs.bean.money/almanac/governance/beanstalk#commit) **Commit** The BCM address has the exclusive and unilateral ability to Pause or Unpause Beanstalk, and commit a BIP. In the future, it is expected that BIPs will remove governance entirely, revoking these abilities from the BCM. You can read more about the BCM [here](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) . [PreviousEconomics](https://docs.bean.money/almanac/advanced/economics) [NextBCM Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) Last updated 2 years ago * [Participation](https://docs.bean.money/almanac/governance/beanstalk#participation) * [Voting Period](https://docs.bean.money/almanac/governance/beanstalk#voting-period) * [Pause](https://docs.bean.money/almanac/governance/beanstalk#pause) * [Commit](https://docs.bean.money/almanac/governance/beanstalk#commit) --- # Approve Contracts | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/getting-started/approvals.md) . Certain transactions require approving certain smart contracts to process your transaction. When a mode is selected that requires an approval, if you have not yet approved the contract, a special notice will appear and the module will be unusable until you send an approve. To send an approval for the transaction in question: 1. Select "Approve \[Token\]". 2. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. [PreviousWhere Are My Assets and How to Use Them?](https://docs.bean.money/almanac/guides/getting-started/where-are-my-assets-and-how-to-use-them) [NextAdd Bean to MetaMask](https://docs.bean.money/almanac/guides/getting-started/add-bean-to-metamask) Last updated 1 year ago --- # Getting Started | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/getting-started.md) . Introductory guides on connecting to and interacting with Beanstalk. * [Where to Begin?](https://docs.bean.money/almanac/guides/getting-started/where-to-begin) * [Connect to Beanstalk](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) * [Where Are My Assets and How to Use Them?](https://docs.bean.money/almanac/guides/getting-started/where-are-my-assets-and-how-to-use-them) * [Approve Contracts](https://docs.bean.money/almanac/guides/getting-started/approvals) * [Add Bean to MetaMask](https://docs.bean.money/almanac/guides/getting-started/add-bean-to-metamask) [PreviousDirectory](https://docs.bean.money/almanac/guides/directory) [NextWhere to Begin?](https://docs.bean.money/almanac/guides/getting-started/where-to-begin) Last updated 1 year ago --- # Add Bean to MetaMask | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/getting-started/add-bean-to-metamask.md) . If you have Beans in your wallet but they do not appear under ā€œAssetsā€ in MetaMask, you can add the Bean ERC-20 token contract as a [custom token](https://metamask.zendesk.com/hc/en-us/articles/360015489031-How-to-add-unlisted-tokens-custom-tokens-in-MetaMask) so that MetaMask will recognize your Bean holdings. Note that MetaMask will only show your [Circulating Beans](https://docs.bean.money/almanac/protocol/asset-states) —your balances within Beanstalk can be seen on the [Balances](https://app.bean.money/#/balances) page. 1. At the bottom of the ā€œAssetsā€ tab in MetaMask, select ā€œimport tokensā€. 2. Select the ā€œCustom Tokenā€ tab. 3. Under ā€œToken Contract Addressā€, enter ā€œ0xBEA0005B8599265D41256905A9B3073D397812E4ā€. ā€œToken Symbolā€ will automatically be filled with ā€œBEANā€. 4. Select ā€œAdd Custom Tokenā€. 5. Select ā€œImport Tokensā€. [PreviousApprove Contracts](https://docs.bean.money/almanac/guides/getting-started/approvals) [NextSun](https://docs.bean.money/almanac/guides/sun) Last updated 1 year ago --- # Transfer Fertilizer | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/barn/transfer-fertilizer.md) . Active Fertilizer is an ERC-1155 token. ERC-1155 tokens can be transferred on OpenSea. Transferring Fertilizer to another address transfers the associated Sprouts as well. See the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. 1. Go your [OpenSea](https://opensea.io/account) account and connect your wallet. 2. Select the Fertilizer you would like to transfer. 3. On the top right of the page, select the send icon that says "Transfer" upon hover. 4. In the "Quantity" field, enter how many Fertilizer tokens you would like to transfer. 5. Enter the recipient address in the "Address" field. 6. Select "Transfer". 7. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 8. After the transaction has been confirmed by the network, the transferred Fertilizer (and associated Sprouts) will appear at the recipient’s address on the ā€œBarnā€ page of the Beanstalk UI. [PreviousRinse Sprouts](https://docs.bean.money/almanac/guides/barn/rinse) [NextTrade Fertilizer](https://docs.bean.money/almanac/guides/barn/trade-fertilizer) Last updated 1 year ago --- # Pod Market | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/toolshed/market.md) . For guides on interacting with the Market through the Beanstalk UI, go [here](https://docs.bean.money/almanac/guides/market) . [](https://docs.bean.money/almanac/farm/toolshed/market#pods) **Pods** --------------------------------------------------------------------------- [Pods](https://docs.bean.money/almanac/farm/field#pods) can be bought and sold in a decentralized, trustless fashion on the Market. The Market creates liquidity for Pods through an on-chain order book. Sellers can List Pods or Fill open Pod Orders placed by buyers. Buyers can Order Pods or Fill open Pod Listings placed by sellers. ### [](https://docs.bean.money/almanac/farm/toolshed/market#pod-listings) **Pod Listings** Pods from Beans Sown in a single transaction form a Plot. Anyone with a Plot can List a whole or partial Plot for sale in exchange for Beans. This is known as a Pod Listing. Pod Listings have the following inputs: **Pod Listing Inputs** **Example** 1\. Plot Place in Line: 140M, Pods: 4,000 2\. Position within the Plot 2,000 to 4,000 3\. Price per Pod 0.80 Beans 4\. Expiration 30M Pods _1\. Plot_ Farmers may own multiple Plots. Plots are identified by their place in the Pod Line. _2\. Position within the Plot_ As Pods are Harvested on a First In, First Out (FIFO) basis, if less than a whole Plot is Listed, the seller must choose which Pods within the Plot to List. A seller can List any contiguous set of Pods within a Plot. If only a portion of a Plot is Listed, the seller must choose which subset of Pods within that Plot are for sale. In the example above, the last 2,000 Beans in the Plot are Listed, while the first 2,000 (i.e. Pods 0 - 2,000) remain in the seller’s possession. _3\. Price per Pod_ The sale price of each Pod, denominated in Beans. _4\. Expiration_ The number of Pods that can Harvest before the expiration of the Listing. Setting this input to 30M Pods would remove this Listing from the Pod Market once 30M Pods are Harvested after the creation of the Listing. A Pod Listing can be Cancelled at any time until it is entirely Filled. Plots can only be Listed in a single Pod Listing at a time. Pod Listings are automatically Cancelled if the owner of the Plot transfers or re-Lists any Pods in the Plot. A Pod Listing can be entirely or partially Filled at any time by a buyer. If the Pod Listing is partially Filled, the rest of the Pod Listing remains Listed. ### [](https://docs.bean.money/almanac/farm/toolshed/market#pod-orders) **Pod Orders** A Pod Order is an offer to buy Pods at a given price, before a given place in the Pod Line. Any seller may Fill a Pod Order by selling Pods according to the terms of the Order. Anyone with Beans can Order Pods by creating a Pod Order. A Pod Order has the following inputs: **Pod Order Inputs** **Example** 1\. Maximum number of Pods to be purchased 4,000 Pods 2\. Price per Pod 0.80 Beans 3\. Maximum place in the Pod Line 140.0M _1\. Maximum number of Pods to be purchased_ Because Pod Orders can be partially or entirely Filled at any time by a seller, a Pod Order defines the maximum number of Pods the buyer would like to purchase at a given price. _2\. Price per Pod_ The price to be paid for each Pod, denominated in Beans. _3\. Maximum place in the Pod Line_ A Pod Order with a maximum place in the Pod Line of 140.0M could be Filled by any Pods with a position in the Pod Line of 140.0M or earlier. In general, Pods closer to the front of the Pod Line are more valuable, as they become Harvestable for Beans sooner due to the FIFO Harvest schedule. A Pod Order can be Cancelled at any time until it is Filled. To facilitate instant clearance, Beans are locked in a Pod Order until it is entirely Filled or Cancelled. If the Pod Order is partially Filled, the rest of the Pod Order remains Listed. [PreviousDepot](https://docs.bean.money/almanac/farm/toolshed/depot) [NextTractor](https://docs.bean.money/almanac/farm/toolshed/tractor) Last updated 1 year ago * [Pods](https://docs.bean.money/almanac/farm/toolshed/market#pods) * [Pod Listings](https://docs.bean.money/almanac/farm/toolshed/market#pod-listings) * [Pod Orders](https://docs.bean.money/almanac/farm/toolshed/market#pod-orders) --- # Governance Proposals (June 2023) | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/archives/governance-proposals.md) . This page is a comprehensive overview of all proposals types in Beanstalk-related governance as of June 2023. [](https://docs.bean.money/almanac/archives/governance-proposals#table-of-contents) Table of Contents ---------------------------------------------------------------------------------------------------------- * [Notes](https://docs.bean.money/almanac/archives/governance-proposals#notes) * [Beanstalk Improvement Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bip) (BIP) * [Emergency Beanstalk Improvement Proposal](https://docs.bean.money/almanac/archives/governance-proposals#ebip) (EBIP) * [Beanstalk Operations Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bop) (BOP) * [Beanstalk Farms Committee Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bfcp) (BFCP) * [Beanstalk Farms Budget Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bfbp) (BFBP) * [Beanstalk Immunefi Response](https://docs.bean.money/almanac/archives/governance-proposals#bir) (BIR) * [Bean Sprout Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bsp) (BSP) * [BeaNFT Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bnp) (BNP) [](https://docs.bean.money/almanac/archives/governance-proposals#notes) Notes ---------------------------------------------------------------------------------- In all proposals where Stalkholders vote: * A Stalkholder's vote for a given proposal is counted as their Stalk at the beginning of the Voting Period that still exists; * 1 Stalk equals 1 vote; * Voting Abstain (if applicable) is equivalent to voting Against; and * The proposer must have at least 0.1% of total Stalk at the beginning and end of the Voting Period (including delegated Stalk) in order for the proposal to pass. Any proposal that proposes for another party to perform work upon, or at any point after, the passage of the proposal must have that party's explicit approval. All past proposals can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals) . [](https://docs.bean.money/almanac/archives/governance-proposals#bip) Beanstalk Improvement Proposal --------------------------------------------------------------------------------------------------------- Beanstalk Improvement Proposals, or BIPs, are proposals to: * Change the Beanstalk protocol; * Mint Beans; and/or * Change Beanstalk governance. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BIP. Any Stalkholder can vote For, Abstain or Against (although voting Abstain or Against has the same the effect as not voting). The Voting Period opens when the Snapshot proposal for a BIP can be voted on and closes after 7 days or when it is committed with a supermajority. If at the end of the Voting Period: * Less than or equal to 50% of total Stalk is voting For the BIP, it fails, or * More than 50% of total Stalk is voting For the BIP, it passes. If at any time 24 hours or more after the beginning and before the end of the Voting Period more than two-thirds of the total Stalk is voting For the BIP, the [Beanstalk Community Multisig (BCM)](https://docs.bean.money/almanac/governance/beanstalk/bcm-process) can execute the BIP. BIPs are proposed on the [Beanstalk DAO Snapshot space](https://snapshot.org/#/beanstalkdao.eth/) . Stalkholders can vote on BIPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance) . Past BIPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/) . See [BIP Proposal Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#bip-proposal-process) for more information on proposing a BIP. [](https://docs.bean.money/almanac/archives/governance-proposals#bop) Beanstalk Operations Proposal -------------------------------------------------------------------------------------------------------- Beanstalk Operations Proposals, or BOPs, are proposals for the DAO to agree on processes that do not involve (1) changing the Beanstalk protocol, (2) minting Beans or (3) changing Beanstalk governance. A BIP can include any changes that would otherwise be in a BOP. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BOP. Any Stalkholder can vote For or Against. The Voting Period opens when the Snapshot proposal for a BOP can be voted on and closes after 7 days. If at the end of the Voting Period: * Less than or equal to 35% of total Stalk is voting For or the majority of participating Stalk is voting Against the BOP, it fails, or * More than 35% of total Stalk is voting For and the majority of participating Stalk is voting For the BOP, it passes. BOPs are proposed on the [Beanstalk DAO Snapshot space](https://snapshot.org/#/beanstalkdao.eth/) . Stalkholders can vote on BOPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance) . Past BOPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bop) . See [BOP Proposal Process](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#bop-proposal-process) for more information on proposing a BOP. [](https://docs.bean.money/almanac/archives/governance-proposals#ebip) Emergency Beanstalk Improvement Proposal -------------------------------------------------------------------------------------------------------------------- Emergency Beanstalk Improvement Proposals, or EBIPs, are emergency upgrades to Beanstalk. EBIPs are submitted and executed by the BCM in order to protect Beanstalk. EBIPs are shared with the Beanstalk community after commitment. Past EBIPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/ebip) . See [Emergency Response Procedures](https://docs.bean.money/almanac/governance/beanstalk/bcm-process#emergency-response-procedures) for more information. [](https://docs.bean.money/almanac/archives/governance-proposals#bfcp) Beanstalk Farms Committee Proposal -------------------------------------------------------------------------------------------------------------- Beanstalk Farms Committee Proposals, or BFCPs, are proposals related to personnel on the [Beanstalk Farms Committee (BFC)](https://docs.bean.money/almanac/governance/beanstalk-farms/bfc-dashboard) . The BFC is the group of Beanstalk Farms contributors that has discretion over the Beanstalk Farms budget, including contributor compensation. Stalkholders vote to: * Add members to the BFC via [BFCP-A](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-a) ; * Remove members from the BFC via [BFCP-B](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-b) ; and * Extend the terms of existing BFC members via [BFCP-C](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-c) . The Voting Period opens when the Snapshot proposal for a BFCP can be voted on and closes after 7 days. BFCPs are proposed on the [Beanstalk Farms Snapshot space](https://snapshot.org/#/beanstalkfarms.eth) . Stalkholders can vote on BFCPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=beanstalk-farms) . Past BFCPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bfcp) . ### [](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-a) **BFCP-A** BFCP-As are proposals to add someone to the BFC. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BFCP-A. Any Stalkholder can vote For or Against. If at the end of the Voting Period: * Less than or equal to 25% of total Stalk is voting For or the majority of participating Stalk is voting Against the BFCP-A, it fails, or * More than 25% of total Stalk is voting For and the majority of participating Stalk is voting For the BFCP-A, it passes. The term of a BFC member whose BFCP-A passes ends two quarters after the end of the current quarter (end of March, June, September or December). There is no guarantee that payment terms in a BFCP-A can be fulfilled until the end of a BFC member's term given that the Beanstalk DAO must continually choose to fund Beanstalk Farms. A BFCP-A is also the proposed BFC member's hiring proposal. Therefore, a BFCP-A must contain payment information at minimum, but should also contain information about what makes the person a good candidate for the BFC, their proposed responsibilities within Beanstalk Farms, etc. ### [](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-b) **BFCP-B** BFCP-Bs are proposals to remove someone from the BFC. Any Stalkholder that owns at least 0.1% of total Stalk can propose a BFCP-B. Any Stalkholder can vote For or Against. If at the end of the Voting Period: * Less than or equal to 35% of total Stalk is voting For or the majority of participating Stalk is voting Against the BFCP-B, it fails, or * More than 35% of total Stalk votes For and the majority of participating Stalk is voting For the BFCP-B, it passes. A BFCP-B is not required if the BFC member voluntarily leaves Beanstalk Farms or the BFC. ### [](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-c) **BFCP-C** BFCP-Cs are proposals to extend the terms of current BFC members. Only BFC members can propose a BFCP-C. BFCP-Cs are multi-choice votes where each voting choice corresponds to extending the term of a current BFC member (approval voting style). If at the end of the Voting Period: * Less than or equal to 25% of total Stalk is voting For a BFC member's proposal, that BFC member's proposal fails, or * More than 25% of total Stalk is voting For a BFC member's proposal, that BFC member's proposal passes. BFC members whose BFCP-C passes shall have their term extended by two quarters after the end of their current term, with a maximum term length of three quarters after the end of the current quarter. There is no term limit for BFC members. BFC members have the option to update their previous hiring proposal terms in a BFCP-C. There is no guarantee that payment terms in a BFCP-C can be fulfilled until the end of a BFC member's term given that the Beanstalk DAO must continually choose to fund Beanstalk Farms. [](https://docs.bean.money/almanac/archives/governance-proposals#bfbp) Beanstalk Farms Budget Proposal ----------------------------------------------------------------------------------------------------------- Beanstalk Farms Budget Proposals, or BFBPs, are proposals related to the use of the Beanstalk Farms budget. The Beanstalk Farms budget is custodied by the [Beanstalk Farms Multisig (BFM)](https://docs.bean.money/almanac/governance/beanstalk-farms/bfm-dashboard) . The BFM executes the will of the BFC. Only BFC members can propose and vote on BFBPs and each member has 1 vote. Any BFC member can vote For or Against. BFC members vote to: * Hire contributors to Beanstalk Farms via [BFBP-A](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-a) ; * Dismiss contributors from Beanstalk Farms via [BFBP-B](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-b) ; and * Otherwise use the Beanstalk Farms budget via [BFBP-C](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-c) . The Voting Period opens when the Snapshot proposal for a BFBP can be voted on and closes after 2 days. BFBPs are proposed on the [Beanstalk Farms Budget Snapshot page](https://snapshot.org/#/beanstalkfarmsbudget.eth) , which is where BFC members vote. Past BFBPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bfbp) . ### [](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-a) **BFBP-A** BFBP-As are proposals to hire a contributor to Beanstalk Farms. A BFBP-A passes if at the end of the Voting Period there are at least 3 votes For, but this can be vetoed by a majority of the BFC voting Against. Once hired via BFBP-A, a contributor's term length is indefinite unless otherwise specified. There is no guarantee that payment terms in a BFBP-A can be fulfilled indefinitely given that the Beanstalk DAO must continually choose to fund Beanstalk Farms. Current (non-BFC) contributors only require another BFBP-A if their pay rate has increased or role/commitment has significantly changed since the terms of the proposal in effect. ### [](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-b) **BFBP-B** BFBP-Bs are proposals to dismiss a contributor from Beanstalk Farms. If at the end of the Voting Period: * Less than a majority of the BFC is voting For the BFBP-B, it fails, or * At least a majority of the BFC is voting For the BFBP-B, it passes. A BFBP-B is not required in circumstances where a contributor is leaving Beanstalk Farms voluntarily or gracefully. BFBP-Bs shall not mention the contributor's name, but instead shall include a hash, where the input of the hash indicates the contributor being dismissed. The input of the hash shall only be shared with the BFC and the contributor in question. This allows the contributor to verify the result of the vote while preserving their privacy during the Voting Period and if the vote fails. ### [](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-c) **BFBP-C** BFBP-Cs are proposals to use the Beanstalk Farms budget outside of hiring contributors. A BFBP-C passes if at the end of the Voting Period there are at least 3 votes For, but this can be vetoed by a majority of the BFC voting Against. A BFBP-C is not required for payments valued at less than or equal to 25,000 Beans or USDC. [](https://docs.bean.money/almanac/archives/governance-proposals#bir) Beanstalk Immunefi Response ------------------------------------------------------------------------------------------------------ Beanstalk Immunefi Responses, or BIRs, are responses to bug reports on [Immunefi](https://immunefi.com/) . Only BIC members can propose and vote on BIRs and each member has 1 vote. Any BIC member can vote For or Against. The Voting Period opens when the Snapshot proposal for a BIR can be voted on and closes after 3 days. If at the end of the Voting Period: * Less than a two-thirds majority of the BIC is voting For the BIR, it fails, or * At least a two-thirds majority of the BIC is voting For the BIR, it passes. See [BIC Process](https://docs.bean.money/almanac/governance/beanstalk/bic-process) for more information. BIRs are proposed on the [Beanstalk Bug Bounty Snapshot page](https://snapshot.org/#/beanstalkbugbounty.eth) , which is where BIC members vote. Past BIRs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bir) . [](https://docs.bean.money/almanac/archives/governance-proposals#bsp) Bean Sprout Proposal ----------------------------------------------------------------------------------------------- Bean Sprout Proposals, or BSPs, are proposals to spend the [Bean Sprout](https://docs.bean.money/almanac/archives/bean-sprout) budget. Anyone with 0.1% of the Stalk supply or [BSM](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard) signers can propose a BSP. BSPs are voted on by Stalkholders and have two voting choices: For and Against. The Voting Period for BSPs is 5 days. BSPs that propose to spend less than or equal to 25,000 Beans are optimistically approved unless a quorum of 10% of total Stalk is reached, after which the majority vote determines the outcome of the vote. BSPs that propose to spend more than 25,000 Beans must reach a quorum of 10% of total Stalk and a majority voting For in order to pass. A BSP is not required for the BSM to send payments valued at under 4,000 Beans. BSPs are proposed on the [Bean Sprout Snapshot space](https://snapshot.org/#/wearebeansprout.eth) . Stalkholders can vote on BSPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=bean-sprout) . Past BSPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bsp) . [](https://docs.bean.money/almanac/archives/governance-proposals#bnp) BeaNFT Proposal ------------------------------------------------------------------------------------------ BeaNFT Proposals, or BNPs, are proposals through which the BeaNFT DAO votes on the direction of BeaNFTs (new collections, collection upgrades, etc.). Anyone with 0.1% of the BeaNFT supply can propose a BNP. BNPs are voted on by BeaNFT holders and have two voting choices: For and Against. The Voting Period for BNPs is 7 days. If at the end of the Voting Period: * Less than or equal to 15% of the BeaNFT supply is voting For or the majority of participating BeaNFTs is voting Against the BNP, it fails, or * More than 15% of the BeaNFT supply is voting For and the majority of participating BeaNFTs is voting For the BNP, it passes. A BNP to create a new BeaNFT collection should include, at a minimum: (1) criteria to qualify for a BeaNFT in the new collection and (2) any rarity boost criteria. Including high level information about the theme of the collection, whether qualifying Farmers will be required to mint them, etc. is recommended. After the passage of the BNP, it is on the proposer to see through the completion of the art, the creation and deployment of the contracts, etc. Due to this, there is no guarantee that a new collection gets created after the passage of this type of BNP. A BNP seeking to upgrade an existing BeaNFT collection should outline (1) the proposed upgrade, (2) the rationale for the upgrade and (3) any technical criteria required to be implement the upgrade. A BNP can also be used to change the configuration or signers on the [BeaNFT DAO Multisig (BDM)](https://docs.bean.money/almanac/governance/beanfts/bdm-dashboard) . BNPs are proposed on the [BeaNFT DAO Snapshot space](https://snapshot.org/#/beanft.eth) . BeaNFT holders can vote on BNPs on the [Beanstalk UI Governance page](https://app.bean.money/#/governance?type=beanft) . Past BNPs can be read [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/tree/master/bnp) . [PreviousBSM Dashboard](https://docs.bean.money/almanac/archives/bean-sprout/bsm-dashboard) [NextFundraiser](https://docs.bean.money/almanac/archives/fundraiser) Last updated 1 year ago * [Table of Contents](https://docs.bean.money/almanac/archives/governance-proposals#table-of-contents) * [Notes](https://docs.bean.money/almanac/archives/governance-proposals#notes) * [Beanstalk Improvement Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bip) * [Beanstalk Operations Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bop) * [Emergency Beanstalk Improvement Proposal](https://docs.bean.money/almanac/archives/governance-proposals#ebip) * [Beanstalk Farms Committee Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bfcp) * [BFCP-A](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-a) * [BFCP-B](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-b) * [BFCP-C](https://docs.bean.money/almanac/archives/governance-proposals#bfcp-c) * [Beanstalk Farms Budget Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bfbp) * [BFBP-A](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-a) * [BFBP-B](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-b) * [BFBP-C](https://docs.bean.money/almanac/archives/governance-proposals#bfbp-c) * [Beanstalk Immunefi Response](https://docs.bean.money/almanac/archives/governance-proposals#bir) * [Bean Sprout Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bsp) * [BeaNFT Proposal](https://docs.bean.money/almanac/archives/governance-proposals#bnp) --- # Pipeline | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/ecosystem/pipeline.md) . Pipeline is a sandbox contract that can execute an arbitrary number of actions within the EVM from an EOA in a single transaction. Pipeline enables the execution an arbitrary composition of valid actions within the EVM in a single transaction using Ether. Depot is a wrapper for Pipeline that supports (1) loading Ether and non-Ether assets into Pipeline, (2) using them and (3) unloading them from Pipeline, in a single transaction. Clipboard defines an Advanced Function Call (AFC) architecture that allows subsequent function calls to use the `returnData` of previous ones in a configurable fashion. The combination of Pipeline, Depot and Clipboard allows EVM users to perform arbitrary valid actions, through arbitrarily many protocols, in a single transaction. ### [](https://docs.bean.money/almanac/ecosystem/pipeline#links) Links Website: [https://evmpipeline.org](https://evmpipeline.org/) Whitepaper: [https://evmpipeline.org/pipeline.pdf](https://evmpipeline.org/pipeline.pdf) Pipeline GitHub: [https://github.com/BeanstalkFarms/Pipeline](https://github.com/BeanstalkFarms/evmpipeline) Halborn Audit Report: [https://bean.money/11-15-22-pipeline-halborn-report](https://bean.money/11-15-22-pipeline-halborn-report) [PreviousBasin](https://docs.bean.money/almanac/ecosystem/basin) [NextContributing](https://docs.bean.money/almanac/community/contributing) Last updated 1 year ago --- # Overview | Beanstalk ![Page cover](https://docs.bean.money/almanac/~gitbook/image?url=https%3A%2F%2F1726144830-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252F5SjsCK0fqV4JO7QPJe4U%252Fuploads%252Fgit-blob-2d13d1f6b9680ed053c9bc0715d5721d3b661eaa%252Fbackground-barn.png%3Falt%3Dmedia&width=1248&dpr=3&quality=100&sign=6ed69e37&sv=2) For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/farm/overview.md) . The Farm is the Beanstalk ecosystem. Anyone can become a Farmer by interacting with Beanstalk. The Farm has four primary components: the Sun, Silo, Field and Toolshed. The [Sun](https://docs.bean.money/almanac/farm/sun) offers payment for participation in timekeeping and regular code execution. Time on the Farm is kept in Seasons. The [Silo](https://docs.bean.money/almanac/farm/silo) —the Beanstalk DAO—offers passive yield opportunities to owners of Bean and other whitelisted assets for participation in governance of Beanstalk upgrades and contribution to security, liquidity and stability. The [Field](https://docs.bean.money/almanac/farm/field) offers yield opportunities to creditors for participating in peg maintenance. The [Toolshed](https://docs.bean.money/almanac/farm/toolshed) offers a suite of tools for efficient use of Beanstalk and other Arbitrum-native protocols. The [Barn](https://docs.bean.money/almanac/farm/barn) is the Beanstalk recapitalization facility being used to Replant Beanstalk but is not a primary component of the Farm. [PreviousHow Beanstalk Works](https://docs.bean.money/almanac/introduction/how-beanstalk-works) [NextSun](https://docs.bean.money/almanac/farm/sun) Last updated 1 year ago --- # How Beanstalk Works | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/introduction/how-beanstalk-works.md) . [https://drive.google.com/file/d/1AcHQG7MBeaxmZ1aZcBnpTiXZGJOb9j0U/view?usp=share\_linkdrive.google.com](https://drive.google.com/file/d/1AcHQG7MBeaxmZ1aZcBnpTiXZGJOb9j0U/view?usp=share_link) Publius explains how Beanstalk works Beanstalk does not have any collateral requirements. Beanstalk uses credit instead of collateral to create Bean price stability relative to its value peg of $1. The practicality of using DeFi is currently limited by the lack of decentralized low-volatility assets with competitive carrying costs. Borrowing rates on USD stablecoins have historically been higher than borrowing rates on USD, even when supply increases rapidly. Non-competitive carrying costs are due to collateral requirements. Beanstalk relies on three native assets and three interconnected facilities to regularly oscillate the price of Bean across its value peg: ### [](https://docs.bean.money/almanac/introduction/how-beanstalk-works#tokens) **Tokens** Beanstalk issues 3 tokens: 1. Beans — Beanstalk ERC-20 fiat stablecoins; 2. [Stalk](https://docs.bean.money/almanac/farm/silo#the-stalk-system) — illiquid yield-generating governance tokens; and 3. [Seeds](https://docs.bean.money/almanac/farm/silo#the-stalk-system) — illiquid tokens which yield 1/10000 Stalk each Season. ### [](https://docs.bean.money/almanac/introduction/how-beanstalk-works#primary-facilities) **Primary Facilities** #### [](https://docs.bean.money/almanac/introduction/how-beanstalk-works#the-sun) **1\. The Sun** Beanstalk uses [the Sun](https://docs.bean.money/almanac/farm/sun) to create a cost-efficient and protocol-native timekeeping mechanism. The Sun keeps time on the Farm in Seasons. Each Season is ~1 hour long. Beanstalk adjusts itself to return the Bean price to its value peg at the beginning of every Season. In practice, Beanstalk does not calculate the price of 1 Bean. Instead, at the beginning of a Season, Beanstalk calculates [deltaB](https://docs.bean.money/almanac/protocol/glossary#deltab) , the sum of the time-weighted average shortages or excesses Beans across liquidity pools on the [Minting Whitelist](https://docs.bean.money/almanac/farm/sun#minting-whitelist) ; The Sun uses deltaB to determine how to change the Bean supply and [Soil](https://docs.bean.money/almanac/farm/field#soil) supply. #### [](https://docs.bean.money/almanac/introduction/how-beanstalk-works#the-silo) **2\. The Silo** Beanstalk uses [the Silo](https://docs.bean.money/almanac/farm/silo) , the Beanstalk DAO, to create a robust decentralized governance mechanism. Farmers can earn yield from passive participation in Beanstalk governance by Depositing assets on the [Deposit Whitelist](https://docs.bean.money/almanac/farm/silo#deposit-whitelist) in the Silo to receive Stalk and Seeds. Stalkholders can submit and vote on [Beanstalk Improvement Proposals](https://github.com/BeanstalkFarms/Farmers-Almanac/blob/master/introduction/broken-reference/README.md) (BIPs) and collect a portion of Bean supply increases. A diverse community of Stalkholders creates decentralization. To encourage consistent security: * Seeds yield Stalk every Season. * The associated amount of Stalk and Seeds from a given Deposit must be forfeited when it is Withdrawn from the Silo. Deep and consistent liquidity in liquidity pools that Beans trade in improves stability. Liquidity providers to liquidity pools whose LP tokens are whitelisted can also Deposit their LP tokens in the Silo to earn Stalk and Seeds. At least 1 LP token Deposit type earns at least as many Seeds as Bean Deposits. The Bean vs LP Seed distribution, or more specifically, the [Crop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) , determines the relative benefits of holding Bean exposure vs exposure to at least 1 particular LP token in the Silo over time. Conversions within the Silo between Bean and LP Deposits serve a major role in peg maintenance (see [Convert Whitelist](https://docs.bean.money/almanac/peg-maintenance/convert#convert-whitelist) ). #### [](https://docs.bean.money/almanac/introduction/how-beanstalk-works#the-field) **3\. The Field** [The Field](https://docs.bean.money/almanac/farm/field) is Beanstalk’s decentralized credit facility. Anytime the Bean price is too low, Beanstalk uses the Field to attract lenders who can lend their Beans to Beanstalk, which are subsequently burnt in exchange for Pods, Beanstalk’s native debt asset. Pods are paid out on a First In, First Out (FIFO) basis when new Beans are minted. Soil is the number of Beans that can be lent to Beanstalk at any given time. Any time Beanstalk is willing to issue debt, there is Soil available in the Field. Any Beans not in the Silo can be Sown (lent) to Beanstalk in exchange for Pods. Pods have a fixed interest rate and unknown maturity date. The number of Pods that grow from 1 Sown Bean is determined by the [Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) ā€”ā€Šthe Beanstalk-native interest rateā€Šā€”ā€Šat the time of Sowing. Pods become Harvestable (redeemable) for 1 Bean on a First In, First Out (FIFO) basis when new Beans are minted. ### [](https://docs.bean.money/almanac/introduction/how-beanstalk-works#creating-stability) **Creating Stability** Beanstalk requires a diverse set of participants, including Silo Members (people who Deposit assets in the Silo), Sowers (people who lend Beans to Beanstalk), and arbitrageurs. Beanstalk aligns the incentives of every individual participant to maximize price stability and create a diverse, decentralized economy. Beanstalk-native financial incentives consistently increase censorship resistance, stability and liquidity over time. At the beginning of each Season, the Sun calculates deltaB (the cumulative time-weighted average shortages or excesses of Beans across liquidity pools on the Minting Whitelist), Beanstalk's debt level, the change in demand for Soil over the previous 2 Seasons, and Beanstalk's liquidity level, and dynamically adjusts the Bean supply, Soil supply, Maximum Temperature and the Crop Ratio to bring the price back towards the peg. When the price of Bean is too low (_i.e._, deltaB is negative), Beanstalk: * Increases the Soil supply by deltaB, subject to the cap in [EBIP-2](https://arweave.net/3GyVJLO0YqhwJHWZeiykWYu4G6SsfcV0alP-1DfMygk) ; * Raises the Maximum Temperature; and * Adjusts the Crop Ratio based on Beanstalk's debt and liquidity levels. By increasing the Soil supply and raising the Maximum Temperature, Beanstalk can decrease the supply of Beans and therefore bring the price of Bean back up to its peg (assuming there are willing lenders at the given Temperature). In principle, a reasonable debt level and consistent credit history attracts lenders. When the Bean price is too high (_i.e._, deltaB is positive), Beanstalk: * Increases the Bean supply by deltaB, subject to the cap in EBIP-2; * Lowers the Maximum Temperature; and * Lowers the Crop Ratio. By increasing the Bean supply, lowering the Maximum Temperature and lowering the Crop Ratio, Beanstalk can bring the price of Bean back down to its peg. To align the interests of Stalkholders and Sowers, 1/3 of Bean supply increases are distributed to Stalkholders and 1/3 go to Pod Harvests. The other 1/3 are distributed to Active Fertilizer holders as part of Beanstalk’s recapitalization plan after the April 2022 governance exploit (see [Barn](https://docs.bean.money/almanac/farm/barn) section). In order to prevent inorganic growth, if the Bean price is too high and the debt level is excessively low for a Season, Beanstalk sells Beans directly in the liquidity pools on the [Flood Whitelist](https://docs.bean.money/almanac/peg-maintenance/flood#flood-whitelist) with the highest deltaB until the cumulative deltaB across all pools is 0. [PreviousWhy Beanstalk](https://docs.bean.money/almanac/introduction/why-beanstalk) [NextOverview](https://docs.bean.money/almanac/farm/overview) Last updated 1 year ago * [Tokens](https://docs.bean.money/almanac/introduction/how-beanstalk-works#tokens) * [Primary Facilities](https://docs.bean.money/almanac/introduction/how-beanstalk-works#primary-facilities) * [Creating Stability](https://docs.bean.money/almanac/introduction/how-beanstalk-works#creating-stability) --- # Sow Beans | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/field/sow.md) . When there is [Soil](https://docs.bean.money/almanac/farm/field#soil) in [the Field](https://docs.bean.money/almanac/farm/field) , Farmers can lend their Beans to Beanstalk for an interest rate known as the [Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œFieldā€ page. 3. The Available Soil and Temperature are displayed in the ā€œField Conditionsā€ component. The Soil supply is set by the Beanstalk peg maintenance mechanism. See [Soil Supply](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) for additional information. * During the first five minutes of each Season, the Temperature ramps from 1% to 100% of the Maximum Temperature in a Dutch auction known as the Morning Auction. 4. In the ā€œSowā€ tab, there is a dropdown menu to select the token you would like to use to buy and Sow Beans. 5. Enter the amount of the selected token you want to use to buy and Sow Beans. * The Soil available when preparing to buy and Sow Beans may not still be available at the time the transaction is confirmed by the network. If a transaction is submitted to Sow a greater amount of Soil than is available, the remaining Soil will be Sown, and all remaining Beans from the transaction will be sent to your [Farm Balance](https://docs.bean.money/almanac/protocol/asset-states) . * If you are Sowing during the Morning Auction, the number of Pods to be received will increase in real time on the UI with the increasing Temperature. The actual amount of Pods you receive depends upon Soil availability and the Temperature at the time your transaction is confirmed. 6. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 7. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 8. If you are buying and Sowing Beans with ETH or have previously approved the asset being spent, skip to Step 10. For all other assets, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to spend the asset, but does not use it to buy and Sow Beans yet. 9. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. Select ā€œSowā€. 11. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 12. After the transaction has been confirmed by the network, your Pods will appear in the ā€œPod Balanceā€ table at the bottom of the ā€œFieldā€ page. [PreviousField](https://docs.bean.money/almanac/guides/field) [NextTransfer Pods](https://docs.bean.money/almanac/guides/field/transfer) Last updated 1 year ago --- # Transfer Balances | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/swap/transfer-balances.md) . The [Swap](https://app.bean.money/#/swap) page can be used to transfer tokens between a Farmer’s [Farm Balance](https://docs.bean.money/almanac/protocol/glossary#farm-assets) and [Circulating Balance](https://docs.bean.money/almanac/protocol/glossary#circulating-beans) and between wallets. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Select ā€œMoreā€ then ā€œSwapā€ to navigate to the [Swap](https://app.bean.money/#/swap) page. Select the "Transfer" tab. 3. In the first field select the token you would like to transfer and its location: * "Circulating Balance" is the balance in your wallet, separate from Beanstalk. * "Farm Balance" is the balance stored in Beanstalk, which can save gas fees in future transactions. * "Combined Balance" is the sum of Circulating Balance and Farm Balance. Note Combined Balance cannot be used when transferring to yourself. 4. Enter the amount of the token to transfer, up to the amount held in your Farm, Circulating or Combined balances. 5. Under ā€œTransfer toā€, enter the address to transfer the tokens to, or select "Me" to move your Farm Balance to Circulating Balance or vice versa. 6. Under "Destination Balance" select either "Circulating Balance" or "Farm Balance". * If "Transfer to" is set to "Me", if the source of the token was ā€œFarm Balanceā€, the ā€œDestinationā€ will be ā€œCirculating Balanceā€ and vice versa. 7. A transaction preview will appear below the inputs. Select the ā€œTransfer Detailsā€ dropdown to review each step of the transaction. 8. If you are transferring a non-ETH token from your Circulating Balance and have not previously approved that token, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to move the token, but does not execute the transfer yet. Otherwise, skip to Step 10. 9. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. Select ā€œTransferā€. 11. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 12. After the transaction has been confirmed by the network, the location of your tokens will depend on the option selected in Step 6: * If the ā€œDestinationā€ is ā€œFarm Balanceā€, the tokens will be shown on the [Balances](https://app.bean.money/#/balances) page. * If the ā€œDestinationā€ is ā€œCirculating Balanceā€, the tokens will be in the destination wallet. The Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousTrade Beans](https://docs.bean.money/almanac/guides/swap/trade-beans) [NextGovernance](https://docs.bean.money/almanac/guides/governance) Last updated 1 year ago --- # Trade Beans | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/swap/trade-beans.md) . Beans can be bought and sold on the [Swap](https://app.bean.money/#/swap) page. To transfer between Farm and Circulating balances, see [Transfer Farm Balance](https://docs.bean.money/almanac/guides/swap/transfer-balances) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Select ā€œMoreā€ then ā€œSwapā€ to navigate to the [Swap](https://app.bean.money/#/swap) page. 3. In the first field select the input token, or the asset you would like to sell. The dropdown menu will show each available input token and your total [Farm Balance](https://docs.bean.money/almanac/protocol/glossary#farm-assets) and [Circulating Balance](https://docs.bean.money/almanac/protocol/glossary#circulating-beans) . * Farm Balance is the balance stored in Beanstalk, which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. * Circulating Balance is the balance in your wallet, separate from Beanstalk. 4. In the second field, select the output token, or the asset you would like to buy. * Note: Swap must be used to buy or sell Beans, or to wrap or unwrap ETH. Trading between other pairs is not currently supported. 5. Enter the amount of the input token to sell, up to the amount held in your Farm or Circulating balances. * Note: The Beanstalk UI first spends the balance that is most gas-efficient based on the specified amount. 6. Verify the amount of the output token you will receive in the output field. 7. Under ā€œDestinationā€, select ā€œFarm Balanceā€ or ā€œCirculating Balanceā€. 8. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 9. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 10. If you are trading ETH or have previously approved the token being spent, skip to Step 12. For all other tokens, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to spend the token, but does not execute the trade yet. 11. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 12. Select ā€œSwapā€. 13. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 14. After the transaction has been confirmed by the network, the location of your tokens will depend on the option selected in Step 7: * If ā€œFarm Balanceā€ was selected, the tokens will be shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œCirculating Balanceā€ was selected, the tokens will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousSwap](https://docs.bean.money/almanac/guides/swap) [NextTransfer Balances](https://docs.bean.money/almanac/guides/swap/transfer-balances) Last updated 1 year ago --- # Vote on Governance Proposals | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/governance/vote-on-proposals.md) . Beanstalk is [governed](https://docs.bean.money/almanac/governance/beanstalk) by Stalkholders. Anyone with Stalk can vote for [Beanstalk Improvement Proposals](https://docs.bean.money/almanac/governance/proposals#bip) (BIPs), [Beanstalk Operations Proposals](https://docs.bean.money/almanac/governance/proposals#bop) (BOPs), [Beanstalk Farms Committee Proposals](https://docs.bean.money/almanac/governance/proposals#bfcp) (BFCPs) and [Bean Sprout Proposals](https://docs.bean.money/almanac/governance/proposals#bsp) (BSPs). View past governance proposals [here](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/) . 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Select ā€œMoreā€ then ā€œGovernanceā€ to navigate to the [Governance](https://app.bean.money/#/governance) page. 3. Your voting power in Stalk is listed under "Stalkholder". 4. Select "[DAO](https://app.bean.money/#/governance?type=dao) ", "[Beanstalk Farms](https://app.bean.money/#/governance?type=beanstalk-farms) " or "[Bean Sprout](https://app.bean.money/#/governance?type=bean-sprout) " to view governance proposals. A green circle will appear by the category if there are active governance proposals. 5. Active governance proposals are listed first and have a green circle. Closed governance proposals have a gray circle. Select the active governance proposal you want to vote on. 6. Under the ā€œResultsā€ section select the choice you want to vote for. * Note: Selecting the ā€œAbstainā€ choice on a BIP or BOP is the same as not voting. It is not possible to remove a vote on Snapshot, so the ā€œAbstainā€ choice exists on some proposals to allow Farmers to unvote after voting. 7. Select ā€œVoteā€. 8. Sign the message in your wallet and your hardware wallet, if applicable. You should verify the message before signing it. Snapshot votes are plain text messages. An example is shown [below](https://docs.bean.money/almanac/guides/governance/vote-on-proposals#snapshot-vote-signature) . 9. After signing, it may take some time for your vote to appear on the Beanstalk UI. Check Snapshot by selecting "View on Snapshot" for the latest results. 10. You may change your vote by repeating this process before the proposal is closed at the time specified in "Vote ends in". The exact time a proposal closes is viewable by selecting "View on Snapshot". #### [](https://docs.bean.money/almanac/guides/governance/vote-on-proposals#example-snapshot-vote-signature) Example Snapshot Vote Signature Copy { "types": { "Vote": [\ {\ "name": "from",\ "type": "address"\ },\ {\ "name": "space",\ "type": "string"\ },\ {\ "name": "timestamp",\ "type": "uint64"\ },\ {\ "name": "proposal",\ "type": "bytes32"\ },\ {\ "name": "choice",\ "type": "uint32"\ },\ {\ "name": "app",\ "type": "string"\ }\ ] }, "domain": { "name": "snapshot", "version": "0.1.4" }, "primaryType": "Vote", "message": { "from": "[Arbitrum address]", "space": "beanstalkdao.eth", "timestamp": "1661055899", "proposal": "0x7b2d54f3691fa65fc784e3398425d518eab93d233f3ad0abd3d87b572cf5ab2f", "choice": "2", "app": "snapshot" } } [PreviousGovernance](https://docs.bean.money/almanac/guides/governance) [NextDelegate Votes](https://docs.bean.money/almanac/guides/governance/delegate-votes) Last updated 1 year ago --- # Buy Pods | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/market/buy-pods.md) . Pods can be exchanged in a trustless fashion on the Pod Market. Read the [Pod Market](https://docs.bean.money/almanac/farm/toolshed/market#the-pod-market) docs first for an introduction to Pod Market mechanics, [Pod Listings](https://docs.bean.money/almanac/protocol/glossary#pod-listing) and [Pod Orders](https://docs.bean.money/almanac/protocol/glossary#pod-order) . * [Fill Pod Listing](https://docs.bean.money/almanac/guides/market/buy-pods#_h7wv7iarhbgk) * [Order Pods](https://docs.bean.money/almanac/guides/market/buy-pods#_714q89jrln2n) ### [](https://docs.bean.money/almanac/guides/market/buy-pods#fill-pod-listing) Fill Pod Listing 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œMarketā€ page. 3. Open Pod Listings appear below the ā€œBuy Nowā€ tab. This view displays all the Pod Listings, sorted by ascending [Place in Line](https://docs.bean.money/almanac/protocol/glossary#pod-line) . * You may customize the sorting, display, or filtering of any column by selecting it. * The ā€œListingā€ # is a unique identifier for each Pod Listing. * The ā€œPlace in Lineā€ is the position in the Pod Line when the Pods in the Pod Listing will start to become Harvestable. * The ā€œPrice per Podā€ is the number of Beans requested per Pod. * The ā€œAmountā€ is the number of Pods left to be purchased from the Pod Listing. * If the Pod Line moves forward by the amount in the ā€œExpires inā€ field, the Pod Listing will automatically expire. 4. Select a Pod Listing to view details and to buy Pods from a Pod Listing. 5. Under the ā€œFillā€ component, select the token you would like to use to buy Pods, and enter the amount you would like to buy. You may buy up to the ā€œAmountā€ of Pods available from the Pod Listing. 6. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 7. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 8. If you are buying Pods with ETH, skip to Step 10. For all other assets, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to spend the asset, but does not buy Pods yet. 9. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. Select ā€œFillā€. 11. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 12. After the transaction has been confirmed by the network, your Pods will appear in the ā€œPod Balanceā€ table at the bottom of the ā€œFieldā€ page. ### [](https://docs.bean.money/almanac/guides/market/buy-pods#order-pods) Order Pods 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œMarketā€ page. 3. Select ā€œCreate Newā€. ā€œOrderā€ is selected by default, allowing you to create a Pod Order. * ā€œMax Place in Lineā€ is the maximum [Place in Line](https://docs.bean.money/almanac/protocol/glossary#pod-line) at which you are willing to buy Pods at the specified price. Any Pods at a lower Place in Line than the maximum Place in Line will be eligible to Fill the Pod Order. * ā€œPrice per Podā€ is how much you will pay for each Pod, denominated in Beans. * ā€œOrder usingā€ specifies the amount and the asset to be used to buy Pods. This amount will be locked in the Pod Order to allow for instant settlement. Pod Orders may be partially filled. 4. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 5. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 6. If you are buying Pods with ETH or have previously approved the asset being spent, skip to Step 8. For all other assets, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to spend the asset, but does not create the Pod Order yet. 7. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 8. Select ā€œOrderā€. 9. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. After the transaction has been confirmed by the network, your Pod Order will be shown on the [My Pod Market](https://app.bean.money/#/market/account) page under the ā€œOrdersā€ tab, where you can check the status of your Pod Order or Cancel it. [PreviousMarket](https://docs.bean.money/almanac/guides/market) [NextSell Pods](https://docs.bean.money/almanac/guides/market/sell-pods) Last updated 1 year ago * [Fill Pod Listing](https://docs.bean.money/almanac/guides/market/buy-pods#fill-pod-listing) * [Order Pods](https://docs.bean.money/almanac/guides/market/buy-pods#order-pods) --- # Sell Pods | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/market/sell-pods.md) . Pods can be exchanged in a trustless fashion on the Pod Market. Read the [Pod Market](https://docs.bean.money/almanac/farm/toolshed/market#the-pod-market) docs first for an introduction to Pod Market mechanics, [Pod Listings](https://docs.bean.money/almanac/protocol/glossary#pod-listing) and [Pod Orders](https://docs.bean.money/almanac/protocol/glossary#pod-order) . * [List Pods](https://docs.bean.money/almanac/guides/market/sell-pods#_f0v6b16fz4gt) * [Fill Pod Order](https://docs.bean.money/almanac/guides/market/sell-pods#_ypbvhjlyyqna) ### [](https://docs.bean.money/almanac/guides/market/sell-pods#list-pods) List Pods 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œMarketā€ page. 3. Select ā€œCreate Newā€ then select the ā€œListā€ tab. * The ā€œSelect Plotā€ dropdown shows all your Plots. Select the Plot that has the Pods you would like to List and enter the number of Pods to List. * By default, Listing less than an entire Plot Lists the Pods at the end of the Plot. If you would like to choose the Pods to List, select ā€œAdvancedā€. * ā€œPrice per Podā€ is how much to sell each Pod for, denominated in Beans. * If the Pod Line moves forward by the amount in ā€œExpires inā€, the Pod Listing will automatically expire. 4. Under ā€œSend proceeds toā€, select ā€œCirculating Balanceā€ or ā€œFarm Balanceā€. Circulating Balance sends the proceeds to your wallet, separate from Beanstalk. [Farm Balance](https://docs.bean.money/almanac/protocol/glossary#farm-assets) keeps the proceeds stored in Beanstalk which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. 5. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 6. Select ā€œListā€. 7. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 8. After the transaction has been confirmed by the network, your Pod Listing will be shown on the [My Pod Market](https://app.bean.money/#/market/account) page on the ā€œListingsā€ tab, where you can check the status of your Pod Listing or cancel it. 9. When your Pod Listing is Filled, the location of your Beans will depend on the option selected in Step 7: * If ā€œCirculating Balanceā€ was selected, the Beans will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œFarm Balanceā€ was selected, the Beans will be shown on the [Balances](https://app.bean.money/#/balances) page. ### [](https://docs.bean.money/almanac/guides/market/sell-pods#fill-pod-order) Fill Pod Order 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œMarketā€ page. 3. Below ā€œOverviewā€, switch to the Pod Order modal by selecting ā€œSell Nowā€. This view displays all the active Pod Orders, sorted by ascending [Place in Line](https://docs.bean.money/almanac/protocol/glossary#pod-line) . * You may customize the sorting, display, or filtering of any column by selecting it. * The ā€œOrderā€ ID is a unique identifier for each Pod Order. * Any Pods within the Pod Line range listed under ā€œPlace in Lineā€ are eligible to be sold to the Pod Order. * ā€œPods Requestedā€ is the number of Pods left to be sold to the Pod Order. 4. Select a Pod Order to view details or to sell Pods to a Pod Order. 5. Under the ā€œFillā€ modal, select the Plot you would like to use to Fill the Pod Order, and enter the number of Pods you would like to sell. You may sell up to the ā€œPods Requestedā€ to the Pod Order. 6. Under ā€œDestinationā€, select ā€œCirculating Balanceā€ or ā€œFarm Balanceā€. Circulating Balance sends the proceeds to your wallet, separate from Beanstalk. [Farm Balance](https://docs.bean.money/almanac/protocol/glossary#farm-assets) keeps the proceeds stored in Beanstalk which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. 7. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 8. Select ā€œFillā€. 9. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. After the transaction has been confirmed by the network, the location of your Beans will depend on the option selected in Step 6: * If ā€œCirculating Balanceā€ was selected, the Beans will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œFarm Balanceā€ was selected, the Beans will be shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousBuy Pods](https://docs.bean.money/almanac/guides/market/buy-pods) [NextBalances](https://docs.bean.money/almanac/guides/balances) Last updated 1 year ago * [List Pods](https://docs.bean.money/almanac/guides/market/sell-pods#list-pods) * [Fill Pod Order](https://docs.bean.money/almanac/guides/market/sell-pods#fill-pod-order) --- # Discord Roles | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/community/discord-roles.md) . Farmers in the Beanstalk Discord can earn various roles. Roles are given out based on the following criteria at the discretion of the Mods. **Publius** The pseudonym of Beanstalk’s founders. **Mods** Community members that enforce the Discord rules and update roles at their discretion. Mods are selected by Beanstalk Farms. **Contributors** Beanstalk contributors. **Master Farmer** The most prestigious role a Farmer can achieve. Master Farmers have demonstrated a deep understanding of both the ethos of Beanstalk and the protocol itself. Also given to Nick Mudge, the creator of the [EIP-2535 Diamond Standard](https://docs.bean.money/developers/overview/eip-2535-diamond) . **Expert Farmer** A Farmer that has demonstrated an extensive understanding of Beanstalk through their commitment to answering questions and helping Farmers in their Beanstalk journey. **BeaNFT Club Member** A Farmer who has a BeaNFT and has verified in the (# • collabland-join) channel in Discord. **Journeyman Farmer** A Farmer who is a longtime community member and has contributed to multiple high quality discussions. Also given to community members who have hosted podcasts, Twitter spaces or other events about Beanstalk. **Humble Farmer** A Farmer that has demonstrated interest in and/or understanding of Beanstalk and participated in community discussions in a constructive fashion. **Local Farmer** A new Farmer who has accepted the rules and completed the Discord verification process. [PreviousContributing](https://docs.bean.money/almanac/community/contributing) [NextContent](https://docs.bean.money/almanac/community/content) Last updated 1 year ago --- # Barn | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/barn.md) . Guides on interacting with [the Barn](https://docs.bean.money/almanac/farm/barn) . * [Understand Fert vAPY](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy) * [Buy Fertilizer](https://docs.bean.money/almanac/guides/barn/buy-fertilizer) * [Rinse Sprouts](https://docs.bean.money/almanac/guides/barn/rinse) [Fertilizer](https://docs.bean.money/almanac/farm/barn#fertilizer) is an ERC-1155 token, so it can be transferred and traded on [OpenSea](https://opensea.io/collection/bean-fertilizer) . * [Transfer Fertilizer](https://docs.bean.money/almanac/guides/barn/transfer-fertilizer) * [Trade Fertilizer](https://docs.bean.money/almanac/guides/barn/trade-fertilizer) [PreviousHarvest Pods](https://docs.bean.money/almanac/guides/field/harvest) [NextUnderstand Fert vAPY](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy) Last updated 1 year ago --- # Rinse Sprouts | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/barn/rinse.md) . Active Fertilizer holders receive Sprouts. Sprouts become Rinsable on a [pari passu](https://docs.bean.money/almanac/protocol/glossary#pari-passu) basis. Once Sprouts become Rinsable, they are redeemable for 1 Bean each. See the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œBarnā€ page. 3. Select the ā€œRinseā€ tab. The ā€œRinsable Balanceā€ will be shown. These are the Sprouts that are eligible to be Rinsed for Beans. 4. Under ā€œDestinationā€, select ā€œCirculating Balanceā€ or ā€œFarm Balanceā€. Circulating Balance sends the Rinsed Beans to your wallet, separate from Beanstalk. [Farm Balance](https://docs.bean.money/almanac/protocol/asset-states) keeps the asset stored in Beanstalk which can save gas fees in future transactions. See [Asset States](https://docs.bean.money/almanac/protocol/asset-states) for more information. 5. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 6. Select ā€œRinse Sproutsā€. 7. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 8. After the transaction has been confirmed by the network, the location of your assets will depend on the option selected in Step 4: * If ā€œCirculating Balanceā€ was selected, the Beans will be in your wallet. Your Circulating Balance is also shown on the [Balances](https://app.bean.money/#/balances) page. * If ā€œFarm Balanceā€ was selected, the Beans will be shown on the [Balances](https://app.bean.money/#/balances) page. [PreviousBuy Fertilizer](https://docs.bean.money/almanac/guides/barn/buy-fertilizer) [NextTransfer Fertilizer](https://docs.bean.money/almanac/guides/barn/transfer-fertilizer) Last updated 1 year ago --- # Fundraiser | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/archives/fundraiser.md) . Fundraisers were removed in [BIP-50](https://bean.money/bip-50) . Fundraisers allow Beanstalk to issue Pods in exchange for dollar-pegged assets other than Beans and independent of the [Soil minting schedule](https://docs.bean.money/almanac/peg-maintenance/overview#soil-supply) in order to raise funds to facilitate payments in other currencies (e.g., to cover the cost of an audit). Doing so in a way that does not directly affect Beanstalk’s normal peg maintenance model is ideal. Fundraisers are created via [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) . Each Fundraiser requires (1) a token address of the token to raise, (2) the number of tokens to raise, and (3) the wallet address to send the tokens to upon completion of the Fundraiser. The selected dollar-pegged asset can be exchanged for 1 Bean’s worth of [Pods](https://docs.bean.money/almanac/farm/field#pods) each, based on the [Maximum Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) at the time of the contribution to the Fundraiser. Tokens raised via a Fundraiser cannot be distributed until the entire Fundraiser is complete. Past BIPs that created Fundraisers: * [BIP-4: Trail of Bits Audit](https://arweave.net/Msk8Mbz7CPDN8vmQmMI8dtqCr4ydTZ8jN1jpPFqQ9lM) * [BIP-5: Omniscia Audit](https://arweave.net/EGXO6x0ko5mAaT45G22Sq4Gfh5qMi9KgM1zzRlQedLA) * [BIP-10: Omniscia Retainer](https://github.com/BeanstalkFarms/Beanstalk-Governance-Proposals/blob/master/bip/bip-10-omniscia-retainer.md) [PreviousGovernance Proposals (June 2023)](https://docs.bean.money/almanac/archives/governance-proposals) Last updated 1 year ago --- # Types of Stablecoins | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/advanced/types-of-stablecoins.md) . The three axes in [the previous section](https://docs.bean.money/almanac/advanced/stablecoin-overview#stablecoin-features) (value source, convertibility and network nativity) present a classification of 8 potential stablecoin types, some of which currently lack successful implementations: * [Non-network-native exogenous value convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-exogenous-value-convertible-stablecoin-protocols) * _Examples: USD Coin, Tether, BinanceUSD_ * [Network-native exogenous value convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-exogenous-value-convertible-stablecoin-protocols) * _Examples: wETH, Liquity, MakerDAO, Abracadabra_ * [Non-network-native exogenous value non-convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-exogenous-value-non-convertible-stablecoin-protocols) * _Examples: N/A_ * [Network-native exogenous value non-convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-exogenous-value-non-convertible-stablecoin-protocols) * _Examples: Olympus_ * [Non-network-native endogenous value convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-endogenous-value-convertible-stablecoin-protocols) * _Examples: N/A_ * [Network-native endogenous value convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-endogenous-value-convertible-stablecoin-protocols) * _Examples: Terra_ * [Non-network-native endogenous value non-convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-endogenous-value-non-convertible-stablecoin-protocols) * _Examples: US Dollars_ * [Network-native endogenous value non-convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-endogenous-value-non-convertible-stablecoin-protocols) * _Examples: Beanstalk, Ampleforth_ Additionally, implementations of exogenous value convertible stablecoin protocols with fractional reserves are considered: * [Non-network-native exogenous value fractional reserve convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-exogenous-value-fractional-reserve-convertible-stablecoin-protocols) * _Examples: Bank Notes_ * [Network-native exogenous value fractional reserve convertible stablecoin protocols](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-exogenous-value-fractional-reserve-convertible-stablecoin-protocols) * _Examples: Frax_ ### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#exogenous-value-stablecoins) Exogenous Value Stablecoins #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-exogenous-value-convertible-stablecoin-protocols) Non-network-native exogenous value convertible stablecoin protocols _Examples:_ [_USD Coin_](https://www.circle.com/en/usdc) _,_ [_Tether_](https://tether.to/en/) _,_ [_BinanceUSD_](https://www.binance.com/en/busd) Non-network-native exogenous value convertible stablecoin protocols issue tokens that are supposedly collateralized by, and require a custodian that facilitates the convertibility to, non-network-native exogenous value worth at least 100% of total outstanding protocol liabilities. These protocols function as low-volatility permissioned bridges between their respective networks and the rest of the world. Users of non-network-native exogenous value convertible stablecoins sacrifice trustlessness and carry: third parties custody the non-network-native assets, can freeze the network-native assets unilaterally and can retain yield earned on collateral. The absence of protocol-native opportunities for carry limits liquidity. _Trustlessness:_ Permissioned _Carrying Costs:_ Non-competitive as compared to the asset being pegged to, but best among exogenous value convertible stablecoins _Volatility:_ Best among exogenous value stablecoins, but frictions around convertibility remain significant, leading to imperfect peg maintenance _Liquidity:_ Best among exogenous value stablecoins, but limited by opportunity cost of using off-chain collateral as capital #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-exogenous-value-convertible-stablecoin-protocols) Network-native exogenous value convertible stablecoin protocols _Examples:_ [_wETH_](https://weth.io/) _,_ [_Liquity_](https://www.liquity.org/) _,_ [_MakerDAO_](https://makerdao.com/) _,_ [_Abracadabra_](https://abracadabra.money/) Network-native exogenous value convertible stablecoin protocols use excess network-native collateral to remove most points of centralization. Overcollateralization removes most risk associated with the volatility of the collateral but by necessity requires the introduction of rent payments in order to prevent the value of the stablecoin from trending towards the value of the underlying collateral. The combination of collateral requirements and rent payments significantly limits the potential liquidity of these stablecoins. [Liquity](https://www.liquity.org/) is an ideal simple iteration of this type of stablecoin protocol, without any points of centralization and with protocol-native positive carry (via [the Stability Pool](https://docs.liquity.org/faq/stability-pool-and-liquidations) ). In order to remove rent payments, Liquity does not target an exact price for its stablecoin, LUSD. The potential supply of LUSD is limited by the value of trustless network-native value. _Trustlessness:_ Can be totally permissionless; collateral distribution is the primary determinant of trustlessness _Carrying Costs:_ Non-competitive as compared to the asset being pegged to, unless at the expense of volatility _Volatility:_ Very low volatility when factoring in frictions around convertibility, unless in order to improve the competitivity of carrying costs _Liquidity:_ Limited by available network-native collateral, particularly trustless network-native collateral #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-exogenous-value-non-convertible-stablecoin-protocols) Non-network-native exogenous value non-convertible stablecoin protocols _Examples: N/A_ Convertibility is the main source of low price volatility and confidence in the custodian. Therefore, it is unlikely that a non-network-native exogenous value non-convertible stablecoin protocol will find product market fit. _Trustlessness:_ Permissioned _Carrying Costs:_ Non-competitive as compared to the asset being pegged to _Volatility:_ Speculation on the trustworthiness of the custodian of collateral will be higher due to the lack of convertibility, which should lead to more price volatility _Liquidity:_ Limited by opportunity cost of using off-chain collateral as capital, but less so because the custodian is unencumbered by the limited asset allocations necessary to facilitate convertibility #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-exogenous-value-non-convertible-stablecoin-protocols) Network-native exogenous value non-convertible stablecoin protocols _Examples:_ [_Olympus_](https://www.olympusdao.finance/) _(convertible under certain market conditions)_ Convertibility is the main source of low price volatility. The main benefit of collateralization is low price volatility, the majority of which is forfeited in the absence of convertibility. Therefore, it is unlikely that a network-native exogenous value non-convertible stablecoin protocol will find product market fit. _Trustlessness:_ Can be totally permissionless; collateral distribution is the primary determinant of trustlessness _Carrying Costs:_ Non-competitive as compared to the asset being pegged to, but potentially better than network-native exogenous value convertible stablecoin protocols because of the ability to take more risk with the underlying collateral at the cost of volatility _Volatility:_ There exists some tradeoff between carrying costs and volatility, dependent on protocol design _Liquidity:_ Limited by available network-native collateral, particularly trustless network-native collateral #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-exogenous-value-fractional-reserve-convertible-stablecoin-protocols) Non-network-native exogenous value fractional reserve convertible stablecoin protocols _Examples: Bank Notes (not implemented on any decentralized networks to date)_ Credit-based non-network-native exogenous value convertible stablecoin protocols most closely resemble traditional bank notes. The introduction of fractional reserves to create competitive carrying costs is a well documented historical phenomenon. The lending out of collateral creates yield that can be passed onto the users of the fractional reserve notes. However, the combination of convertibility and fractional reserves creates an asset liability duration mismatch that can lead to complete collapse. Fractional reserves are another example of currencies trading volatility for carry. _Trustlessness:_ Permissioned _Carrying Costs:_ Competitive as compared to the asset being pegged to, at the expense of tail risk in volatility _Volatility:_ Low volatility when factoring in frictions around convertibility; exposure to bank runs _Liquidity:_ Limited by available collateral #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-exogenous-value-fractional-reserve-convertible-stablecoin-protocols) Network-native exogenous value fractional reserve convertible stablecoin protocols _Examples:_ [_Frax_](https://frax.finance/) The use of fractional reserves by network-native exogenous value convertible stablecoin protocols has been used in an attempt to help remediate the negative effect on carrying costs of collateral requirements. However, the network-native nature of the system makes lowering the collateralization ratio difficult without spurring a bank run. While fractional reserve implementations of network-native exogenous value convertible stablecoins offer competitive carrying costs as compared to non-fractional reserve implementations, they do so at the cost of tail risk in volatility. _Trustlessness:_ Can be totally permissionless; collateral distribution is the primary determinant of trustlessness _Carrying Costs:_ Can be competitive as compared to the asset being pegged to at lower collateralization ratios _Volatility:_ Low volatility when factoring in frictions around convertibility; exposure to bank runs _Liquidity:_ Limited by available network-native collateral, particularly trustless network-native collateral #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#exogenous-value-stablecoins-summary) Summary Convertibility to exogenous value is the primary source of low price volatility, but it comes at the cost of competitive carrying costs and liquidity. In most implementations, trustlessness is sacrificed for deeper liquidity. Despite the shortcomings of exogenous value convertible stablecoin implementations, demand for their USD implementations continues to increase rapidly. Over the twelve months prior to the initial deployment of Beanstalk, the total market capitalization of exogenous value convertible USD stablecoins [increased more than 500% to over $100 billion](https://stablecoinindex.com/marketcap) . However, despite this rapid increase in supply, the [borrowing rates on exogenous value convertible USD stablecoins](https://app.aave.com/markets/) have historically been higher than [borrowing rates on USD](https://www.newyorkfed.org/markets/reference-rates/effr) . Non-competitive carrying costs are structural due to the opportunity costs associated with requirements of exogenous value collateral. Attempts to improve carrying costs through the introduction of fractional reserves have failed to do so. Businesses built on trustless primitives cannot compete with businesses built on centralized systems due to non-competitive carrying costs on low-volatility network-native trustless assets. ### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#endogenous-value-stablecoins) Endogenous Value Stablecoins #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-endogenous-value-convertible-stablecoin-protocols) Non-network-native endogenous value convertible stablecoin protocols _Examples: N/A_ It is difficult for network-native protocols to create and facilitate the conversion to non-network-native value. Therefore, it is unlikely that non-network-native endogenous value convertible stablecoin protocols find product market fit. In theory, this would be like a private company issuing a stablecoin that is convertible to company stock at market price. _Trustlessness:_ Permissioned _Carrying Costs:_ Can be competitive as compared to the asset being pegged to, but the issuer must create more than enough endogenous value to facilitate the carry _Volatility:_ Likely to maintain a tight peg due to convertibility, but exposed to collapse in the instance the issuer’s endogenous value source falters, or is expected to falter _Liquidity:_ Limited by the endogenous value of the issuer #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-endogenous-value-convertible-stablecoin-protocols) Network-native endogenous value convertible stablecoin protocols _Examples:_ [_Terra_](https://www.allcryptowhitepapers.com/terra-whitepaper/) To date, implementations of network-native endogenous value convertible stablecoin protocols have failed to regularly cross their stablecoin price over their value peg. This is primarily due to the fluctuation in value of endogenous value. The convertibility to endogenous value typically correlates with decreases in endogenous value, which creates excess reflexivity. It is unclear whether network-native endogenous value convertible stablecoin protocols can succeed. _Trustlessness:_ Permissionless _Carrying Costs:_ Can be competitive as compared to the asset being pegged to, but the issuer must create more than enough endogenous value to facilitate the carry _Volatility:_ Likely to maintain a tight peg due to convertibility, but exposed to collapse in the instance the issuer’s endogenous value source falters, or is expected to falter _Liquidity:_ Limited by the endogenous value of the issuer #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#non-network-native-endogenous-value-non-convertible-stablecoin-protocols) Non-network-native endogenous value non-convertible stablecoin protocols _Examples: US Dollars_ The current financial system (_i.e._, fiat money) can be thought of as an implementation of credit-based non-network-native endogenous value non-convertible stablecoin protocols, where the fiat money is pegged to a time-weighted discount of its current purchasing power. The non-network-native nature of the credit of the issuer introduces significant sacrifices to trustlessness. _Trustlessness:_ Permissioned _Carrying Costs:_ Very competitive _Volatility:_ Determined by a variety of factors; sufficiently low volatility is a prerequisite to adoption _Liquidity:_ Limited by the creditworthiness of the issuer #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#network-native-endogenous-value-non-convertible-stablecoin-protocols) Network-native endogenous value non-convertible stablecoin protocols _Examples:_ [_Beanstalk_](http://bean.money/) _,_ [_Ampleforth_](https://www.ampleforth.org/) Rebasing stablecoin protocols (_e.g._, [Ampleforth)](https://www.ampleforth.org/) have shown efficacy at crossing stablecoin prices over their value pegs, but without the regularity, low volatility or liquidity necessary to create utility. Extreme negative carrying costs during decreases in demand exacerbate difficulty of use. The value of fiat currency is derived from its utility and the credit of its issuer. Utility of fiat currency is a function of trustlessness, carrying costs, stability and liquidity. Decentralized credit can be used to issue a permissionless fiat stablecoin with competitive carrying costs, low volatility and deep liquidity. Credit-based network-native endogenous value non-convertible stablecoin protocols are network-native implementations of fiat currency. The value of such assets derive from the credit of its issuer, which exists in a network-native capacity. The network-native nature of the credit creates value in a trustless fashion. The creation of endogenous value through credit facilitates competitive carrying costs. A strong series of network-native incentives and diverse network of creditors can create price stability and deep liquidity without collateral requirements. Credit-based network-native endogenous value non-convertible stablecoin protocols present an opportunity to achieve trustlessness, competitive carrying costs, low price volatility and deep liquidity. The use of network-native credit can eliminate the negative carrying costs and reduce the excess price volatility associated with rebasing stablecoin protocols. #### [](https://docs.bean.money/almanac/advanced/types-of-stablecoins#endogenous-value-stablecoins-summary) Summary Convertibility to endogenous value prioritizes low price volatility at the expense of long term sustainability. Rebasing tokens have shown some efficacy and peg maintenance, but not enough to create utility. The introduction of network-native credit can reduce volatility. The current financial system runs on credit-based non-network-native endogenous value non-convertible stablecoin protocols. Implementations of network-native endogenous value non-convertible stablecoin protocols present a viable option for the creation of trustless currency with competitive carrying costs, low price volatility and deep liquidity that can facilitate the competition between businesses built on decentralized primitives against businesses built on centralized ones. [PreviousStablecoin Overview](https://docs.bean.money/almanac/advanced/stablecoin-overview) [NextEconomics](https://docs.bean.money/almanac/advanced/economics) Last updated 1 year ago * [Exogenous Value Stablecoins](https://docs.bean.money/almanac/advanced/types-of-stablecoins#exogenous-value-stablecoins) * [Endogenous Value Stablecoins](https://docs.bean.money/almanac/advanced/types-of-stablecoins#endogenous-value-stablecoins) --- # Unripe Assets | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/unripe-assets.md) . Guides on claiming and redeeming your [Unripe assets](https://docs.bean.money/almanac/farm/barn#unripe-assets) . * [Chop Unripe Assets](https://docs.bean.money/almanac/guides/unripe-assets/chop-unripe-assets) [PreviousDelegate Votes](https://docs.bean.money/almanac/guides/governance/delegate-votes) [NextChop Unripe Assets](https://docs.bean.money/almanac/guides/unripe-assets/chop-unripe-assets) Last updated 1 year ago --- # Buy Fertilizer | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/guides/barn/buy-fertilizer.md) . Beanstalk is hosting the Barn Raise — a fundraiser to restore $77M in non-Bean liquidity stolen from the Silo. The Barn Raise started on **June 6, 2022**. Active Fertilizer holders receive Sprouts. Sprouts become redeemable for Beans on a [pari passu](https://docs.bean.money/almanac/protocol/glossary#pari-passu) basis. See the [Barn](https://docs.bean.money/almanac/farm/barn) page for more info. 1. Make sure you are on [app.bean.money](https://app.bean.money/) and [connect your wallet](https://docs.bean.money/almanac/guides/getting-started/connect-wallet) . 2. Navigate to the ā€œBarnā€ page. 3. The Available Fertilizer is displayed in the "Barn Conditions" component. Available Fertilizer is a function of how much Unripe LP is left to be recapitalized. See [Fertilizer](https://docs.bean.money/almanac/farm/barn#fertilizer) for additional information. 4. In the ā€œBuyā€ tab, there is a dropdown menu to select the token you would like to use to buy Fertilizer. 5. Enter the amount of the selected token you want to use to buy Fertilizer. * The amount of Fertilizer received rounds down to the nearest dolalr. 6. A transaction preview will appear below the inputs. Select the ā€œTransaction Detailsā€ dropdown to review each step of the transaction. 7. You may select a slippage tolerance by selecting the gear icon. The default slippage tolerance is 0.1%. 8. If you are buying Fertilizer with ETH or have previously approved the asset being spent, skip to Step 10. For all other assets, select ā€œApprove \[Token\]ā€. This allows the Beanstalk contract to spend the asset, but does not use it to buy and Sow Beans yet. 9. Confirm the approval transaction in your wallet, and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 10. Select ā€œBuyā€. 11. Confirm the transaction in your wallet and your hardware wallet, if applicable. You should verify that the transaction is interacting with the [correct contract](https://docs.bean.money/almanac/protocol/contracts) before signing it. 12. After the transaction has been confirmed by the network, your Fertilizer and associated Sprouts will appear in the ā€œFertilizerā€ component at the bottom of the ā€œBarnā€ page. [PreviousUnderstand Fert vAPY](https://docs.bean.money/almanac/guides/barn/understand-fert-vapy) [NextRinse Sprouts](https://docs.bean.money/almanac/guides/barn/rinse) Last updated 1 year ago --- # Flood | Beanstalk For the complete documentation index, see [llms.txt](https://docs.bean.money/almanac/llms.txt) . This page is also available as [Markdown](https://docs.bean.money/almanac/peg-maintenance/flood.md) . Beanstalk sells newly minted Beans on the open market during long run increases in demand for Beans when [increasing the Bean supply](https://docs.bean.money/almanac/peg-maintenance/overview#bean-supply) , [lowering the Maximum Temperature](https://docs.bean.money/almanac/peg-maintenance/temperature) and [lowering the Crop Ratio](https://docs.bean.money/almanac/peg-maintenance/crop-ratio) have not crossed the Bean price over its peg. At the beginning of a [Season](https://docs.bean.money/almanac/farm/sun) , if it is currently Raining (the previous Season P > 1), and the [Pod Rate](https://docs.bean.money/almanac/peg-maintenance/overview#debt-level) is less than 5%, it Floods at the beginning of the next Season. At the beginning of a Season during a Flood, Beanstalk mints additional Beans and sells them directly in pools on the Flood Whitelist with the highest shortage of Beans at the end of the previous Season. Liquidity pools can be added to and removed from the Flood Whitelist via [Beanstalk governance](https://docs.bean.money/almanac/governance/beanstalk) . Proceeds from the sale are distributed to Stalkholders at the beginning of Season in proportion to their Stalk holdings when it began to Rain. At the beginning of each Season in which it Floods, up to 0.1% of the Bean supply worth of Pods that grew from Beans Sown before it began to Rain Ripen and become Harvestable. #### [](https://docs.bean.money/almanac/peg-maintenance/flood#current-flood-whitelist) Current Flood Whitelist Name Address BEAN:WETH Well [0xBeA00Aa8130aCaD047E137ec68693C005f8736Ce](https://arbiscan.io/address/0xBeA00Aa8130aCaD047E137ec68693C005f8736Ce) BEAN:wstETH Well [0xBEa00BbE8b5da39a3F57824a1a13Ec2a8848D74F](https://arbiscan.io/address/0xBEa00BbE8b5da39a3F57824a1a13Ec2a8848D74F) BEAN:weETH Well [0xBeA00Cc9F93E9a8aC0DFdfF2D64Ba38eb9C2e48c](https://arbiscan.io/address/0xBeA00Cc9F93E9a8aC0DFdfF2D64Ba38eb9C2e48c) BEAN:WBTC Well [0xBea00DDe4b34ACDcB1a30442bD2B39CA8Be1b09c](https://arbiscan.io/address/0xBea00DDe4b34ACDcB1a30442bD2B39CA8Be1b09c) BEAN:USDC Well [0xBea00ee04D8289aEd04f92EA122a96dC76A91bd7](https://arbiscan.io/address/0xBea00ee04D8289aEd04f92EA122a96dC76A91bd7) BEAN:USDT Well [0xbEA00fF437ca7E8354B174339643B4d1814bED33](https://arbiscan.io/address/0xbEA00fF437ca7E8354B174339643B4d1814bED33) [PreviousConvert](https://docs.bean.money/almanac/peg-maintenance/convert) [NextStablecoin Overview](https://docs.bean.money/almanac/advanced/stablecoin-overview) Last updated 1 year ago ---