# Table of Contents - [Yearn Docs](#yearn-docs) - [Yearn Docs](#yearn-docs) - [Yearn Docs](#yearn-docs) - [How to contribute to docs | Yearn Docs](#how-to-contribute-to-docs-yearn-docs) - [adding-assets | Yearn Docs](#adding-assets-yearn-docs) - [Migrate from veYFI | Yearn Docs](#migrate-from-veyfi-yearn-docs) - [Writing Style Guide | Yearn Docs](#writing-style-guide-yearn-docs) - [Frequently Asked Questions | Yearn Docs](#frequently-asked-questions-yearn-docs) - [yETH Overview | Yearn Docs](#yeth-overview-yearn-docs) - [yPRISMA Overview | Yearn Docs](#yprisma-overview-yearn-docs) - [yPools Roles and Modes | Yearn Docs](#ypools-roles-and-modes-yearn-docs) - [yPRISMA Contract Addresses | Yearn Docs](#yprisma-contract-addresses-yearn-docs) - [yPRISMA FAQ | Yearn Docs](#yprisma-faq-yearn-docs) - [Frontend Integrations | Yearn Docs](#frontend-integrations-yearn-docs) - [yTrade | Yearn Docs](#ytrade-yearn-docs) - [Governance Apps (Repo) | Yearn Docs](#governance-apps-repo-yearn-docs) - [Emergency Procedures for Yearn Finance | Yearn Docs](#emergency-procedures-for-yearn-finance-yearn-docs) - [Security Home | Yearn Docs](#security-home-yearn-docs) - [Yearn Multisig | Yearn Docs](#yearn-multisig-yearn-docs) - [Understanding The Risks | Yearn Docs](#understanding-the-risks-yearn-docs) - [Protocol Risks | Yearn Docs](#protocol-risks-yearn-docs) - [Risk Scores | Yearn Docs](#risk-scores-yearn-docs) - [Yearn Risk Score Framework | Yearn Docs](#yearn-risk-score-framework-yearn-docs) - [Strategy Risks | Yearn Docs](#strategy-risks-yearn-docs) - [Testing | Yearn Docs](#testing-yearn-docs) - [Vault Risks | Yearn Docs](#vault-risks-yearn-docs) - [Smart Contracts | Yearn Docs](#smart-contracts-yearn-docs) - [Deprecated Smart Contracts | Yearn Docs](#deprecated-smart-contracts-yearn-docs) - [v1 yVault Interfaces | Yearn Docs](#v1-yvault-interfaces-yearn-docs) - [v1 Vaults Overview | Yearn Docs](#v1-vaults-overview-yearn-docs) - [V2 yVault Smart Contracts | Yearn Docs](#v2-yvault-smart-contracts-yearn-docs) - [BaseFeeOracle.sol | Yearn Docs](#basefeeoracle-sol-yearn-docs) - [Governance and Operations | Yearn Docs](#governance-and-operations-yearn-docs) - [BaseStrategy.sol | Yearn Docs](#basestrategy-sol-yearn-docs) - [yEarn | Yearn Docs](#yearn-yearn-docs) - [yGift | Yearn Docs](#ygift-yearn-docs) - [yETH | Yearn Docs](#yeth-yearn-docs) - [yPools | Yearn Docs](#ypools-yearn-docs) - [Liquid Lockers (LLYFI) | Yearn Docs](#liquid-lockers-llyfi-yearn-docs) - [Proposal Repository | Yearn Docs](#proposal-repository-yearn-docs) - [Decision-Making Processes | Yearn Docs](#decision-making-processes-yearn-docs) - [OSC Levels | Yearn Docs](#osc-levels-yearn-docs) - [Proposal Process | Yearn Docs](#proposal-process-yearn-docs) - [stYFI (Governance Staking) | Yearn Docs](#styfi-governance-staking-yearn-docs) - [Budget Request Process | Yearn Docs](#budget-request-process-yearn-docs) - [yPRISMA Contract Addresses | Yearn Docs](#yprisma-contract-addresses-yearn-docs) - [Yearn DAO | Yearn Docs](#yearn-dao-yearn-docs) - [Yearn API | Yearn Docs](#yearn-api-yearn-docs) - [Specification | Yearn Docs](#specification-yearn-docs) - [YFI | Yearn Docs](#yfi-yearn-docs) - [veYFI FAQ | Yearn Docs](#veyfi-faq-yearn-docs) - [veYFI Boost Calculator | Yearn Docs](#veyfi-boost-calculator-yearn-docs) - [veYFI Overview | Yearn Docs](#veyfi-overview-yearn-docs) - [Comprehensive veYFI Guide | Yearn Docs](#comprehensive-veyfi-guide-yearn-docs) - [Core Yearn Contract Addresses | Yearn Docs](#core-yearn-contract-addresses-yearn-docs) - [Token & Contract Addresses | Yearn Docs](#token-contract-addresses-yearn-docs) - [Auctions | Yearn Docs](#auctions-yearn-docs) - [stYFI Contract Addresses | Yearn Docs](#styfi-contract-addresses-yearn-docs) - [Lens Contract Addresses | Yearn Docs](#lens-contract-addresses-yearn-docs) - [yVaults v2 Contract Addresses | Yearn Docs](#yvaults-v2-contract-addresses-yearn-docs) - [veYFI Contract Addresses | Yearn Docs](#veyfi-contract-addresses-yearn-docs) - [Kong | Yearn Docs](#kong-yearn-docs) - [yCRV Contract Addresses | Yearn Docs](#ycrv-contract-addresses-yearn-docs) - [yPools Contract Addresses | Yearn Docs](#ypools-contract-addresses-yearn-docs) - [Yearn Data Services | Yearn Docs](#yearn-data-services-yearn-docs) - [Yearn Stack + FE Features | Yearn Docs](#yearn-stack-fe-features-yearn-docs) - [Building on Yearn | Yearn Docs](#building-on-yearn-yearn-docs) - [yVaults v3 Contract Addresses | Yearn Docs](#yvaults-v3-contract-addresses-yearn-docs) - [yvUSD Contract Addresses | Yearn Docs](#yvusd-contract-addresses-yearn-docs) - [yDaemon | Yearn Docs](#ydaemon-yearn-docs) - [yYB Contract Addresses | Yearn Docs](#yyb-contract-addresses-yearn-docs) - [StableCredit | Yearn Docs](#stablecredit-yearn-docs) - [Woofy | Yearn Docs](#woofy-yearn-docs) - [Delegated Funding DAO Vaults | Yearn Docs](#delegated-funding-dao-vaults-yearn-docs) - [veCRV Boosts | Yearn Docs](#vecrv-boosts-yearn-docs) - [yBribe | Yearn Docs](#ybribe-yearn-docs) - [Yearn Lens | Yearn Docs](#yearn-lens-yearn-docs) - [yPRISMA Interface Guide | Yearn Docs](#yprisma-interface-guide-yearn-docs) - [yVaults V3 | Yearn Docs](#yvaults-v3-yearn-docs) - [Vault Tokens | Yearn Docs](#vault-tokens-yearn-docs) - [yBOLD | Yearn Docs](#ybold-yearn-docs) - [yVaults FAQ | Yearn Docs](#yvaults-faq-yearn-docs) - [Yearn Principles | Yearn Docs](#yearn-principles-yearn-docs) - [yvUSD | Yearn Docs](#yvusd-yearn-docs) - [CommonHealthCheck.sol | Yearn Docs](#commonhealthcheck-sol-yearn-docs) --- # Yearn Docs [Skip to main content](https://docs.yearn.fi/?utm_source=immunefi#__docusaurus_skipToContent_fallback) [Start your Yearn journey.\ -------------------------\ \ Everything you need to use Yearn\ \ User Docs\ =========](https://docs.yearn.fi/getting-started/intro) [Build the future of finance.\ ----------------------------\ \ Everything you need to build on Yearn\ \ Dev Docs\ ========](https://docs.yearn.fi/developers/building-on-yearn) [Tame the decentralized beast.\ -----------------------------\ \ Everything you need to govern Yearn\ \ DAO Docs\ ========](https://docs.yearn.fi/contributing/contribute) --- # Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/contribute#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn Contributors[​](https://docs.yearn.fi/contributing/contribute#yearn-contributors "Direct link to Yearn Contributors") ---------------------------------------------------------------------------------------------------------------------------- Help build the future of finance, shape your skills, and grow the Yearn ecosystem. Before joining our community, take some time to understand the philosophy behind Yearn through the [The Bluepill](https://bluepill.yearn.dev/) and [Yearn Manifesto](https://gov.yearn.fi/t/how-we-think-about-yearn/7137) . How to Contribute[​](https://docs.yearn.fi/contributing/contribute#how-to-contribute "Direct link to How to Contribute") ------------------------------------------------------------------------------------------------------------------------- ### Have an idea?[​](https://docs.yearn.fi/contributing/contribute#have-an-idea "Direct link to Have an idea?") We are always open to new suggestions or better ways of doing things. If you have an idea feel free to use the appropriate channel on [Discord](https://discord.gg/yearn) , [Reddit](https://www.reddit.com/r/yearn_finance/) , make a post on the governance [forum](https://gov.yearn.fi/c/general-chat/7) , or consider adding to the [Pool of Ideas](https://yearnfinance.notion.site/Pool-of-Ideas-d75383ade9154d8bb6163388c6c2b39b) . If the idea is thorough enough, make a post in the [Proposals](https://gov.yearn.fi/c/proposals/5) section on the governance forum. Be sure to follow the Proposal [Guidelines](https://gov.yearn.fi/t/proposal-how-to/106) and check previous [YIPs](https://yips.yearn.fi/all-yip) for guidance. ### File a Bug[​](https://docs.yearn.fi/contributing/contribute#file-a-bug "Direct link to File a Bug") If a Yearn product isn't working, please visit the appropriate GitHub repository listed under [General Resources](https://docs.yearn.fi/contributing/contribute#general-resources) — or search in the [Yearn GitHub Repositories](https://github.com/yearn/) — to see if the issue already exists. If it does not exist, please create a new issue following the template present in the repository. If no issue template is present, please include information such as your browser version, device, etc. for that project so the developers can replicate it and fix it. If the issue already exists, you can signal your support by adding a thumbs up to the existing issue or by adding helpful information. ### Leave Feedback[​](https://docs.yearn.fi/contributing/contribute#leave-feedback "Direct link to Leave Feedback") Use the [Feedback](https://gov.yearn.fi/c/feedback/2) section of the governance forum to provide feedback. ### Write Documentation[​](https://docs.yearn.fi/contributing/contribute#write-documentation "Direct link to Write Documentation") The Yearn ecosystem is expanding and, as a result, so is the need for documentation. You can find the "official" Yearn Documentation [here](https://docs.yearn.fi/) — which provides high-level overviews _and_ technical documentation. Whether it's writing _How To_ guides on using vaults or creating diagrams on how the protocol ties together, there is something for everyone. If you speak another language, translations might be up your alley! You can check existing [Yearn GitHub repos](https://github.com/yearn) to look for ones that need better document. Before contributing: Please see our [How to Use GitHub](https://hackmd.io/4U35op0ORoGT24lzPhbGNQ) guide and ensure that your PRs adhere to our [Writing Style Guide](https://hackmd.io/dXQecpkJQX6XRy4y7k7j3g) . We use a combination of HackMD, Docusaurus, and GitHub for our [Documentation](https://docs.yearn.fi/) and we use [DrawIO](https://draw.io/) with Google Drive for our diagrams & schemas. If you are a grammar stickler, you can see our [Reviewer Guide](https://hackmd.io/juTKNn3xTpKJgFDo2AglLw) . Last but not least, join the #documentation channel in [Discord](https://discord.gg/yearn) and introduce yourself. If this sounds confusing, please let us know what we can clear up. In the meantime: You can begin contributing to our HackMD docs immediately via the GitHub issues — we'll guide you through the rest. ### Build[​](https://docs.yearn.fi/contributing/contribute#build "Direct link to Build") #### Developers[​](https://docs.yearn.fi/contributing/contribute#developers "Direct link to Developers") If you're a developer, we need your help! Before you begin: Familiarize yourself with Yearn, its products, and its infrastructure by reading our [Documentation](https://docs.yearn.fi/) . If you are interested in working on a specific project, check out the list of Yearn products in the [General Resources](https://docs.yearn.fi/contributing/contribute#general-resources) section below or check out our list of repos [here](https://github.com/orgs/yearn/repositories) . If you're not sure where to start or have questions, it's best to join us on the #dev channel in [Discord](https://discord.gg/yearn) . If you want an overview of how our vaults work, please see the schema and accompanying descriptions in the [Vaults Overview](https://docs.yearn.fi/getting-started/products/yvaults/overview) . If you're wondering how **strategies** work, please check out [Yearn Vaults v2 Introduction](https://www.youtube.com/watch?v=C0fsYiCI54g) — hosted by our Yearn Devs. To start writing your own strategy, please check out our template [Yearn Brownie Mix](https://github.com/yearn/brownie-strategy-mix) . If you want to integrate with Yearn, please visit our [Integration Guide](https://docs.yearn.fi/developers/v3/Integrating_v3) and check out our [data services](https://docs.yearn.fi/developers/data-services/yearn-data/) . #### Designers[​](https://docs.yearn.fi/contributing/contribute#designers "Direct link to Designers") We invite designers, animators, artists, and more to share your skills with the Yearn ecosystem! If you're interested in creating graphics that describe Yearn's systems, creating video explainers, fixing Yearn's UI/UX, or any other combination of things — hop into the #ui-ux channel or #media-resources channels in [Discord](https://discord.gg/yearn) . #### Creating Strategies[​](https://docs.yearn.fi/contributing/contribute#creating-strategies "Direct link to Creating Strategies") ##### Workshop[​](https://docs.yearn.fi/contributing/contribute#workshop "Direct link to Workshop") The best introduction to V2 is the workshop done for Gitcoin Kernel Sessions. Even its focused on security, it's a great introduction to Vaults V2. * [Video](https://www.youtube.com/watch?v=C0fsYiCI54g) * [Slides](https://docs.google.com/presentation/d/1NsePa_hXV1vsbMixTSRsPKYBHYvmVQf7IvpI_8k4p_k/edit#slide=id.p) ##### Start coding[​](https://docs.yearn.fi/contributing/contribute#start-coding "Direct link to Start coding") When you decide to start, this reading material is going to come handy: * [Guide to v3 strategies](https://docs.yearn.fi/developers/v3/strategy_writing_guide) * [Template for Strategies](https://github.com/yearn/tokenized-strategy-foundry-mix) * [Vaults V3 Repository](https://github.com/yearn/yearn-vaults-v3) ##### Other reading material[​](https://docs.yearn.fi/contributing/contribute#other-reading-material "Direct link to Other reading material") This is complementary to the above, but it's not directly related to creating strategies. * [The Keep3r Network](https://macarse.medium.com/the-keep3r-network-experiment-bb1c5182bda3) * [Andre intro to Yearn Vaults](https://medium.com/iearn/yearn-finance-v2-af2c6a6a3613) * [Delegated vaults explanation](https://medium.com/iearn/delegated-vaults-explained-fa81f1c3fce2) General Resources[​](https://docs.yearn.fi/contributing/contribute#general-resources "Direct link to General Resources") ------------------------------------------------------------------------------------------------------------------------- ### Yearn Products[​](https://docs.yearn.fi/contributing/contribute#yearn-products "Direct link to Yearn Products") * [yearn.fi](https://yearn.fi/) , [GitHub](https://github.com/yearn/yearn.fi) * [Yearn Documentation](https://docs.yearn.fi/) , [GitHub](https://github.com/yearn/yearn-devdocs) * [Yearn Governance Forum](https://gov.yearn.fi/) * [Yearn Snapshot Governance Voting](https://snapshot.box/#/s:veyfi.eth) #### List of Yearn Data Tools[​](https://docs.yearn.fi/contributing/contribute#list-of-yearn-data-tools "Direct link to List of Yearn Data Tools") * yDaemon API, [GitHub](https://github.com/yearn/ydaemon) * Kong API, [GitHub](https://github.com/yearn/kong) ### Old Legacy Products and Websites[​](https://docs.yearn.fi/contributing/contribute#old-legacy-products-and-websites "Direct link to Old Legacy Products and Websites") * Former list of [open GitHub issues here](https://contribute.yearn.rocks/) . * [v1 yearn.fi](https://v1.yearn.fi/) , [GitHub](https://github.com/yearn/iearn-finance) * [v2 yearn.fi](https://yearn.fi/vaults) , [GitHub](https://github.com/yearn/yearn-finance) * v3 yearn.fi, [GitHub](https://github.com/yearn/yearn-finance-v3) * [Yearn Borrow](https://yborrow.finance/) , [GitHub](https://github.com/yearn/iborrow-finance) * [Yearn Governance](https://ygov.finance/) , [GitHub](https://github.com/yearn/ygov-finance) - V1 Governance * [Legacy Yearn Snapshot Governance Voting](https://snapshot.org/#/ybaby.eth) * [Yearn Newsletter](https://yearn.substack.com/) - Weekly YFI newsletter * [Trackavault](https://trackavault.com/) - Track V2 Vaults * [Yearn Watch](https://yearn.watch/) , [GitHub](https://github.com/yearn/yearn-watch) * [YFI Address Stats](https://www.yfistats.com/) - Yearn Financial Information * [yCosystem (Yearn Community Aggregator)](https://ycosystem.info/) - Repository Of Yearn Links * [GitHub Project Board](https://contribute.yearn.farm/) Copy page as Markdown * [Yearn Contributors](https://docs.yearn.fi/contributing/contribute#yearn-contributors) * [How to Contribute](https://docs.yearn.fi/contributing/contribute#how-to-contribute) * [Have an idea?](https://docs.yearn.fi/contributing/contribute#have-an-idea) * [File a Bug](https://docs.yearn.fi/contributing/contribute#file-a-bug) * [Leave Feedback](https://docs.yearn.fi/contributing/contribute#leave-feedback) * [Write Documentation](https://docs.yearn.fi/contributing/contribute#write-documentation) * [Build](https://docs.yearn.fi/contributing/contribute#build) * [General Resources](https://docs.yearn.fi/contributing/contribute#general-resources) * [Yearn Products](https://docs.yearn.fi/contributing/contribute#yearn-products) * [Old Legacy Products and Websites](https://docs.yearn.fi/contributing/contribute#old-legacy-products-and-websites) --- # Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/contributor-tools#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown This Guide introduces the tools used by the Yearn Community team and its contributors. Yearn contributors work with tools geared towards promoting open-source feedback, communication, transparency, and clarity. While there is no sophisticated software stack, contributors should be comfortable with the more heavily used tools and how they function within Yearn contribution workflows. Discussion Platforms[​](https://docs.yearn.fi/contributing/contributor-tools#discussion-platforms "Direct link to Discussion Platforms") ----------------------------------------------------------------------------------------------------------------------------------------- ### Discord[​](https://docs.yearn.fi/contributing/contributor-tools#discord "Direct link to Discord") Various Yearn teams (documentation, development, etc.) host AMAs, ideation, discussions, and follow-ups on Yearn's Discord Channel, an open-source platform geared towards improving team communication. The [Yearn Discord](https://discord.gg/yearn/) lists all channels and users. Start participating in public discussions by joining the recommended channels below. * [#general](https://discord.gg/Xvku8TrjyA) * [#governance](https://discord.gg/sPxb4duuhv) * [#support](https://discord.gg/QeFdQSPuPX) * [#dev](https://discord.gg/w89vVxeV9h) * [#documentation](https://discord.gg/freT6YRNSX) **Pro Tips:** * Visit [#documentation](https://discord.gg/freT6YRNSX) regularly. * It's an excellent channel for collaboration. * Coordinate with other members. * Share early and share often. * Ask for feedback. * Provide progress updates. ### Meetings[​](https://docs.yearn.fi/contributing/contributor-tools#meetings "Direct link to Meetings") Yearn contributors host meetings when necessary on Google Hangouts. These are not centrally organized and arise organically within discussions between contributors or teams, as such, invitations are up to the individuals organizing these discussions. Invitations are sent to contributors by Discord or Telegram and Google Calendar automatically schedules the event and sends reminders. * [Jitsi Meet](https://meet.jit.si/) * [Google Meet](https://meet.google.com/_meet) Writing Platforms[​](https://docs.yearn.fi/contributing/contributor-tools#writing-platforms "Direct link to Writing Platforms") -------------------------------------------------------------------------------------------------------------------------------- ### HackMD[​](https://docs.yearn.fi/contributing/contributor-tools#hackmd "Direct link to HackMD") Many Yearn Doc contributors prepare their long-form documentation in [HackMD](https://hackmd.io/) , a collaborative Markdown editor. HackMD also tracks versions, enables commenting, and allows multiple users to work on a document simultaneously. **Note:** Run all drafts through [Grammarly](https://app.grammarly.com/) regularly, and before final submissions. * Grammarly will catch most spelling and grammatical errors. * Review the suggestions to make sure they make sense. * **Do not blindly accept Grammarly edits.** * HackMD does not identify spelling and grammatical errors. * Copy text from the rendered preview into Grammarly and address any errors it flags. * Grammarly will miss errors if it’s given raw Markdown text. **Pro Tip:** Install the HackMD Google Chrome [extension](https://chrome.google.com/webstore/detail/hackmd-it/cnephjboabhkldgfpdokefccdofncdjh?hl=en) to make searching easier. ### Google Docs[​](https://docs.yearn.fi/contributing/contributor-tools#google-docs "Direct link to Google Docs") Google Docs is a collaborative writing platform, with features like suggestion editing and version naming. Docs simplify feedback and review and are easy to share between team members and contributors. **Suggestions:** * Start new projects and create first drafts in Google Docs. * Use "Suggesting Mode" and leave "Notes" when reviewing a document. * Suggestions draw attention to proposed changes. * Notes leave room for side discussions. * Avoid including direct links in a Google Doc. * Use the Markdown format to simplify conversion later on. * Incorrect: `https://bad.link.com` * Correct: `[link](https://link.com)` * Versions can be named, renamed, downloaded, or revisited at any time. * Versions help other contributors quickly find and see any changes. * Example: Naming a Version * Make sure to name versions before passing projects off for review. * Use descriptive names for versions. * Names should contain information specific to the contents of the file or version. * Include a version number in the name, along with any other relevant details. * Numbers after the decimal define draft iterations. * Example: V0.1, V0.2, V1.2, etc. ### Markdown[​](https://docs.yearn.fi/contributing/contributor-tools#markdown "Direct link to Markdown") Yearn documents hosted on GitHub are written in Markdown, a plaintext formatting syntax. Markdown allows for easy conversion to HTML and various other outputs, making documents easy to read on the web. * Learn the basics of Markdown: * [Daring Fireball](https://daringfireball.net/projects/markdown/) * [Markdown Syntax Guide](https://guides.github.com/features/mastering-markdown/) * [Practice Communicating Using Markdown](https://lab.github.com/githubtraining/communicating-using-markdown) The markdown files are compiled with [Docusaurus](https://docusaurus.io/) to bring you the styled documentation UI you see here. ### VSCode[​](https://docs.yearn.fi/contributing/contributor-tools#vscode "Direct link to VSCode") If you are using Google Docs to write, consider using Visual Studio Code and install the extensions below to facilitate formatting: * Markdown Preview Enhanced * Markdown Linter * Code Spell Checker * GitLens * Prettier * Prettier will auto-correct most Markdown mistakes. * The [vscode-markdownlint](https://github.com/DavidAnson/vscode-markdownlint#configure) GitHub repo describes how to edit the error settings JSON file. * Use it to address any Markdown errors that follow the Writing Style Guide. * How to integrate GitHub with VSCode: * **Video:** [Up and Running with Visual Studio Code and GitHub](https://youtu.be/ghL-KlAhBnc) Tools and Tips[​](https://docs.yearn.fi/contributing/contributor-tools#tools-and-tips "Direct link to Tools and Tips") ----------------------------------------------------------------------------------------------------------------------- ### Writing Specific[​](https://docs.yearn.fi/contributing/contributor-tools#writing-specific "Direct link to Writing Specific") #### Best Practices[​](https://docs.yearn.fi/contributing/contributor-tools#best-practices "Direct link to Best Practices") * Include line breaks above and below headings. * Use top-level headers `#` only once per document. * Do not make multiple top-level headings. * Avoid repeat headings. * They will break auto-generated navigation. * Avoid trailing spaces. * Do not use: * Em or en [dashes](https://en.wikipedia.org/wiki/Wikipedia:Hyphens_and_dashes) : `—`. * Ampersands `&` in titles and headers. * Pipes `|` in titles and headers. * Curly quotes. Use the plaintext version. * **Correct:** `"` * **Incorrect:** `“` * Escaping parentheses. Use normal parentheses. * **Correct:** `(SOMETHING)` * **Incorrect:** `\(SOMETHING\)` * Add tasks using check-boxes as projects grow. * A dash and brackets (`- []`) on a new line show up as a checkbox in GitHub's UI. * **Example:** * \[ \] * Ensure there is a single hard return at the end of a .md file. * Use in-text comments for extra visibility when collaborating with other contributors on HackMD documents. * Click on the comment icon in the toolbar and choose an appropriate style. * Consider including a timestamp or username: * **Markdown:** `> Look Here! [name=John Doe]` * **Rendered:** `Look Here! \[name=John Doe\]` * Make sure to delete comments before submitting Pull Requests. * Use an emoji to call attention to an important point, when necessary. * Practice discretion and use them sparingly. * Do not load documents with emojis. * This [cheat sheet](https://gist.github.com/rxaviers/7360908) lists emojis and their Markdown shortcuts. #### Naming Files and Versions[​](https://docs.yearn.fi/contributing/contributor-tools#naming-files-and-versions "Direct link to Naming Files and Versions") * Markdown file names should be lowercase. * Use dashes `-`, not spaces, to separate words within Markdown file names. * **Correct:** `meeting-transcript-ep-01.md` * **Incorrect:** `Meeting Transcript Episode 01.md` * Use descriptive names for Markdown files and versions. * Filenames should contain information specific to the contents of the file. * Context is provided from the directory or through the presentation layer (e.g., Docusaurus). * **Correct:** `meeting-summary-ep-01.md` * **Incorrect:** `scientific-governance-and-risk-meeting-summary-ep-01.md` **Pro Tip:** For a document's final draft, name it "Final draft, moving to GitHub." Post a link to the HackMD file or a relevant page on GitHub. ### Miscellaneous[​](https://docs.yearn.fi/contributing/contributor-tools#miscellaneous "Direct link to Miscellaneous") #### Important Links[​](https://docs.yearn.fi/contributing/contributor-tools#important-links "Direct link to Important Links") * [GitHub Desktop](https://desktop.github.com/) * [Broken Link Checker](https://ahrefs.com/broken-link-checker) * [Code Blocks](https://gsuite.google.com/marketplace/app/code_blocks/100740430168?pann=cwsdp&hl=en) : for formatting blocks of code in a doc or adding Markdown. * [Markdown Conversion](https://github.com/lmmx/gdocs2md-html) : for Google Drive. * A long [stack-exchange thread](https://webapps.stackexchange.com/questions/44047/how-can-google-docs-and-markdown-play-nice) on this use case. * [DrawIO](https://draw.io/) : Open source software using Google Drive for creating flowcharts and schemas. * [Figma](https://www.figma.com/) : Creates visual mockups, especially for team collaboration. #### Wallets and 3rd Party Services[​](https://docs.yearn.fi/contributing/contributor-tools#wallets-and-3rd-party-services "Direct link to Wallets and 3rd Party Services") * [Metamask](https://metamask.io/) : Wallet for sending and receiving YFI * [Zerion](https://zerion.io/) : For checking Yearn Treasury statistics. #### Keyboard Shortcuts[​](https://docs.yearn.fi/contributing/contributor-tools#keyboard-shortcuts "Direct link to Keyboard Shortcuts") * [Mac Shortcuts](https://www.mediaatelier.com/CheatSheet/?ref=producthunt) * [Windows Shortcuts](https://cheatkeys.com/) * [Use The Keyboard](https://usethekeyboard.com/) : Open-source collection of keyboard shortcuts for Mac apps, Windows programs, and websites. ### Acknowledgments[​](https://docs.yearn.fi/contributing/contributor-tools#acknowledgments "Direct link to Acknowledgments") This document could not be possible without the amazing work done by the MakerDAO team as this document is mostly based on their [Contributor Tools Guide](https://github.com/makerdao/community-portal/blob/r2d/content/en/contribute/content/contributor-tools.mdx) . Copy page as Markdown * [Discussion Platforms](https://docs.yearn.fi/contributing/contributor-tools#discussion-platforms) * [Discord](https://docs.yearn.fi/contributing/contributor-tools#discord) * [Meetings](https://docs.yearn.fi/contributing/contributor-tools#meetings) * [Writing Platforms](https://docs.yearn.fi/contributing/contributor-tools#writing-platforms) * [HackMD](https://docs.yearn.fi/contributing/contributor-tools#hackmd) * [Google Docs](https://docs.yearn.fi/contributing/contributor-tools#google-docs) * [Markdown](https://docs.yearn.fi/contributing/contributor-tools#markdown) * [VSCode](https://docs.yearn.fi/contributing/contributor-tools#vscode) * [Tools and Tips](https://docs.yearn.fi/contributing/contributor-tools#tools-and-tips) * [Writing Specific](https://docs.yearn.fi/contributing/contributor-tools#writing-specific) * [Miscellaneous](https://docs.yearn.fi/contributing/contributor-tools#miscellaneous) * [Acknowledgments](https://docs.yearn.fi/contributing/contributor-tools#acknowledgments) --- # How to contribute to docs | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/documentation/working-on-docs#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown **IF YOU HAVE ANY QUESTIONS** post in the #documentation channel on [discord](https://discord.gg/freT6YRNSX) Yearn's documentation repository is hosted on GitHub in order to foster and encourage open source collaboration. _Note for translators: Non-english docs are stored in separate branches. When merging your changes, direct your pull request to the corresponding branch_ Working with HackMD[​](https://docs.yearn.fi/contributing/documentation/working-on-docs#working-with-hackmd "Direct link to Working with HackMD") -------------------------------------------------------------------------------------------------------------------------------------------------- In order to contribute to Yearn docs, you will need to be able to write with Markdown syntax. It's extremely easy to learn. Use this [cheat sheet](https://www.markdownguide.org/cheat-sheet/) to get started. If you have no experience cloning and working on a repository, you can make your edits or additions in [HackMD](https://hackmd.io/) and then create an issue in GitHub that contains the Markdown copy. Just create a profile on Discord, and that can be linked to create a HackMD account. Here's how to contribute using issues: 1. Create an issue in [https://github.com/yearn/yearn-devdocs](https://github.com/yearn/yearn-devdocs) ![](https://i.imgur.com/m4J2vKh.jpg) 2. Title your proposed changes - Make it clear what you are editing or adding 3. Paste the changes directly from your HackMD into the 'Write' section 4. Click 'Submit new issue' ![](https://i.imgur.com/fbvUX1t.jpeg) * * * Editing through the documentation UI[​](https://docs.yearn.fi/contributing/documentation/working-on-docs#editing-through-the-documentation-ui "Direct link to Editing through the documentation UI") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Another simple way to contribute is through the built in 'Edit on GitHub' button that you will see on all pages of Yearn docs. For this, you won't need to use HackMD at all, just make sure to have a GitHub account. 1. Find the 'Edit on GitHub' button on the top right of the docs page. ![](https://i.imgur.com/raB4DUB.jpg) 2. Find the pencil button on the GitHub page that opens. It will say 'Edit the file in your fork of this project' ![](https://i.imgur.com/boWmvln.jpg) 3. From here, you will be able to edit any of the copy. Once you're finished, give your changes a title and a description at the bottom and 'Propose Changes' ![](https://i.imgur.com/oESKgwx.jpg) 4. After you 'Propose changes' GitHub will create a branch of the yearn-devdocs repository for you and show a summary of the changes you made. If everything looks right and complies with the [Writing Style Guide](https://docs.yearn.fi/contributing/documentation/writing-style-guide) , click 'Create pull request' 5. In your pull request (PR), give enough context about your changes for the repo admin to understand why they should be accepted. Afterwards, click 'Create pull request' and the admins will either merge, deny or make a comment. ![](https://i.imgur.com/iTGJanv.jpeg) * * * Cloning the docs repository[​](https://docs.yearn.fi/contributing/documentation/working-on-docs#cloning-the-docs-repository "Direct link to Cloning the docs repository") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Cloning a repository is ideal if you are working on more than one page. **This is a basic guide that doesn't involve using the command prompt.** There are multiple ways to go about cloning and contributing to a repository. We encourage you to learn more about GitHub as it will help you troubleshoot any issues that you might encounter. 1. Login to your GitHub account 2. Install [GitHub Desktop](https://desktop.github.com/) 3. Install [Visual Code Studio](https://code.visualstudio.com/) (VSCode) 4. Fork the [yearn/yearn-devdocs](https://github.com/yearn/yearn-devdocs) repository ![](https://i.imgur.com/vVpFt7a.jpeg) 5. Login to GitHub Desktop, find your forked repository and clone it ![](https://i.imgur.com/7ycrC2F.jpg) 6. Click 'contribute to parent project'. This only effects your upstream and origin and upstream branch, which can be edited through the command line 7. Open the repository in VSCode ![](https://i.imgur.com/Q0jWQic.jpg) 8. Create a new branch and give it a title that has to do with your current task. Keeping different tasks in different branches is important for organizational purposes 9. Find the page you are looking to edit in VSCode's sidebar. They follow the same structure as the Docs UI. README.md will always be ![](https://i.imgur.com/dIfrmfU.png) 10. Edit the .md file, save it and minimize VSCode 11. GitHub Desktop will now show that you have changed a file. Give your change (commit) a title and description, then click 'commit to master' ![](https://i.imgur.com/XE2Ghim.jpg) 12. Now, your changes are committed to your local branch. In order to push them to your public GitHub repo, click 'publish branch' 13. You now see a notification suggesting to make a pull request (PR) both on GitHub Desktop and the website. If you don't see this, you can go to [https://github.com/yearn/yearn-devdocs](https://github.com/yearn/yearn-devdocs) and create one from there 14. Click on 'create pull request' and you should see the following screen ![](https://i.imgur.com/r8JuC84.jpg) 15. Make sure the base repository is 'yearn/yearn-devdocs' and the base is 'master'. (unless you are contributing to translated versions, in which case, the base should be the name of the language you are translating) The head repository should be 'your-username/yearn-devdocs' and the compare should be 'your-branch-name' 16. Make sure that your PR has all of the information needed to contextualize the change and that your changes comply with the [Writing Style Guide](https://docs.yearn.fi/contributing/documentation/writing-style-guide) . Once you create a pull request, it will be sent to the repo admins who can approve it to be merged into the live site. Copy page as Markdown * [Working with HackMD](https://docs.yearn.fi/contributing/documentation/working-on-docs#working-with-hackmd) * [Editing through the documentation UI](https://docs.yearn.fi/contributing/documentation/working-on-docs#editing-through-the-documentation-ui) * [Cloning the docs repository](https://docs.yearn.fi/contributing/documentation/working-on-docs#cloning-the-docs-repository) --- # adding-assets | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Prerequisites You will need access to the necessary governance contracts and a sufficient voting weight of at least 100 to create proposals. You can check your voting weight [here](https://etherscan.io/address/0x583019fF0f430721aDa9cfb4fac8F06cA104d0B4#readContract#F13) . ![Yearn Logo](https://docs.yearn.fi/img/logo.svg) ##### Live yETH Governance Info Fetching contract data... Step 1: Enable One-Off Inclusion Vote[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#step-1-enable-one-off-inclusion-vote "Direct link to Step 1: Enable One-Off Inclusion Vote") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Since the adoption of [this proposal](https://snapshot.org/#/ylsd.eth/proposal/0x139698bed7752b80a16bb6d2fc0d9e8c82b622916ded2f064022be3c46ec9bb4) , inclusion voting is off by default and needs to be enabled for the next epoch. Here is how you do that. To enable a one-off inclusion vote, a governance call must be made to the `set_enable_epoch(next_epoch)` function on the [InclusionVote contract](https://etherscan.io/address/0x6bc0878939669339e82dbFa13d260c89230f2c31#code) . This requires crafting and getting a governance proposal approved. Follow the instructions below: 1. Create the text of your proposal and pin it to IPFS. The ipfs\_hash should point to a document hosted on IPFS with details explaining the proposal and its rationale. You can host your own IPFS document or use a provider like [Piñata](https://pinata.cloud/) . For this, you should explain why you want to enable an inclusion vote, what assets you want to propose, etc. 2. Generate a script by calling the `script(_to, _data)` view function on the yPools [Executor contract](https://etherscan.io/address/0x71258Ee726644f1D52d6A9F5E11C21d1E38c2bF1#readContract#F1) . In this case, you want this script to call `set_enable_epoch()` on the InclusionVote contract with the value of the next epoch. * Set the`_to(address)` field to the [InclusionVote contract](https://docs.yearn.fi/developers/addresses/ypools-contracts#yeth-contract-address) : `0x6bc0878939669339e82dbFa13d260c89230f2c31`. * Then create the ABI-encoded data for the function `set_enable_epoch()` with the argument set to the next epoch. Below is a ABI encoding widget that you can use. It should be pre-populated with the correct contract and function, but you need to enter the next epoch into the "Function Argument" box. The current epoch should be listed at the top of this page in the `Live Governance Info` admonition. Just add 1 to that number. Then hit "Encode" and take the output from the widget and put it in the `_data(bytes)` field on etherscan. * Click `query` and copy the result. Encode 3. You can now create the proposal via the [proposal page](https://yeth.yearn.fi/propose) or directly by calling the `propose(ipfs_hash, script)` function on the [GenericGovernor contract](https://etherscan.io/address/0xB7a528CF6D36F736Fa678A629b98A427d43E5ba5) . Enter the IPFS pin and the script value that you created in steps one and 2. 4. Once the proposal is created, the governance process will need to: * Approve the proposal. * Execute the set\_enable\_epoch(next\_epoch) function to enable the inclusion vote for the next epoch. Step 2: Apply for Inclusion[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#step-2-apply-for-inclusion "Direct link to Step 2: Apply for Inclusion") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- To apply to have an LST included in yETH's basket of tokens, you will need to fill out the application form and pay a non-refundable application fee. Any token that has applied for inclusion and has a rate provider set by Yearn will be eligible for the inclusion vote that was enabled above. Step 3: Outcome[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#step-3-outcome "Direct link to Step 3: Outcome") --------------------------------------------------------------------------------------------------------------------------------------------------- Once the vote is complete, the winner (if any) will be included into yETH. Copy page as Markdown * [Step 1: Enable One-Off Inclusion Vote](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#step-1-enable-one-off-inclusion-vote) * [Step 2: Apply for Inclusion](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#step-2-apply-for-inclusion) * [Step 3: Outcome](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/adding-assets#step-3-outcome) --- # Migrate from veYFI | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown This page covers the **legacy veYFI → current system** migration flow as implemented in the Yearn governance dashboards today. Where to migrate[​](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#where-to-migrate "Direct link to Where to migrate") ------------------------------------------------------------------------------------------------------------------------------------------- Use the **veYFI / LLYFI dashboard**: [https://veyfi.yearn.fi](https://veyfi.yearn.fi/) Who will see a migration action[​](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#who-will-see-a-migration-action "Direct link to Who will see a migration action") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- You’ll only see a **Migrate** call‑to‑action if all of the following are true: * your wallet has a non‑zero **legacy veYFI** position * your address is eligible to migrate (You didn't lock YFI after the snapshot) * you have not migrated previously If you don’t see the migration card, it usually means you’re not eligible or you don’t have a legacy lock on the connected address. What happens after migration[​](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#what-happens-after-migration "Direct link to What happens after migration") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- After you migrate, the dashboard switches from an action state to an informational state showing: * your legacy lock’s **unlock date** * the **current boost multiplier** (between **1.0× and 2.0×**) * an estimate of your **effective stYFI APR** (base stYFI APR × boost) Managing your legacy lock The migration UI does **not** manage lock extensions or other lock mechanics. Use [https://legacy-veyfi.yearn.fi](https://legacy-veyfi.yearn.fi/) for legacy lock management. Liquid lockers (LLYFI) after migration[​](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#liquid-lockers-llyfi-after-migration "Direct link to Liquid lockers (LLYFI) after migration") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The same dashboard is also where you manage supported **LLYFI** tokens (staking, cooldown/withdraw, and buy/sell to/from YFI when available). See: [Liquid Lockers (LLYFI)](https://docs.yearn.fi/contributing/governance/liquid-lockers) . Contract addresses[​](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#contract-addresses "Direct link to Contract addresses") ------------------------------------------------------------------------------------------------------------------------------------------------- Mainnet deployment addresses: [stYFI Contract Addresses](https://docs.yearn.fi/developers/addresses/styfi-contracts) . Copy page as Markdown * [Where to migrate](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#where-to-migrate) * [Who will see a migration action](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#who-will-see-a-migration-action) * [What happens after migration](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#what-happens-after-migration) * [Liquid lockers (LLYFI) after migration](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#liquid-lockers-llyfi-after-migration) * [Contract addresses](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi#contract-addresses) --- # Writing Style Guide | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/documentation/writing-style-guide#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown The Yearn Community Writing Style Guide summarizes the standards and best practices **writers** should follow when contributing to Yearn Documentation resources. Writing Intent and Tone[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#writing-intent-and-tone "Direct link to Writing Intent and Tone") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Yearn Community materials should cater to readers who are unfamiliar with the Yearn ecosystem. Writers should also assume that their readers have tight schedules and short attention spans, as after all, farming is honest but hard work. As such, Writers should focus on communicating concepts as clearly and succinctly as possible. * Use simple language. * Use short, concise sentences. * Avoid unnecessary words. * Remain open and objective. * Provide examples when possible. * Provide examples to help explain concepts, but avoid overcomplicating them. * Use math when necessary, but keep it simple and visually easy to understand. * Link to basic terms if necessary. Writer Guidelines[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#writer-guidelines "Direct link to Writer Guidelines") ------------------------------------------------------------------------------------------------------------------------------------------------ ### General Rules[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#general-rules "Direct link to General Rules") * Run all drafts through [Grammarly](https://app.grammarly.com/) regularly, and before final submissions. * Grammarly will catch most spelling and grammatical errors. * Copy rendered text into Grammarly and address any mistakes it flags. * HackMD does not identify spelling and grammatical errors. * Grammarly will miss errors if it’s given raw Markdown text. * Be careful of copy and pasting code from Grammarly to VScode, Grammarly may mess with formatting. **Please Note** * When migrating to a new document (i.e., from Google Docs to HackMD): * Leave a note in the old file. * Provide a link to the latest version. * Do not blindly accept Grammarly suggestions. * Review edits to make sure they make sense. **Use:** * [Oxford commas](https://en.wikipedia.org/wiki/Serial_comma) . * [Pluralized, gender-neutral pronouns](https://en.wikipedia.org/wiki/Singular_they) . * Use “they/their” instead of “he/she/his/hers.” * **Examples:** “When they…” or “If users choose to X, then their…” * The `%` symbol. Do not spell out "percent." * **Correct:** 15% * **Incorrect:** 15 percent * Double quotes `" "` for phrases, quotes, etc. * Do not use single `' '` quotes. **Avoid:** * [First-person language.](https://en.wikipedia.org/wiki/Grammatical_person) * **Examples:** I, we, our, etc. * [Second-person language](https://en.wikipedia.org/wiki/Grammatical_person) (unless it is appropriate for a guide or action page). * **Examples:** "You then..." or "Now you should..." * Exclamation points. * Footnotes. * References to deprecated names for Yearn Components. * **Examples:** yyCRV or yUSD instead of yvCurve-Y * Parentheses for stating additional information * **Incorrect:** Development Grants are larger sized (5,000to5,000 to 5,000to50,000) grants aimed at individuals or teams building projects around vaults and the broader Yearn ecosystem. * **Correct:** Development Grants are generally larger sized grants, ranging from 5,000to5,000 to 5,000to50,000, aimed at individuals or teams building projects around vaults and the broader Yearn ecosystem. ### Abbreviations[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#abbreviations "Direct link to Abbreviations") * Use parentheses to define abbreviated terms the first time they appear in a given document. * **Example:** A Yearn Improvement Proposal (YIP) is a proposal framework to support new initiatives and to expand the scope of existing ones. ### Acronyms, Decades and Cases[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#acronyms-decades-and-cases "Direct link to Acronyms, Decades and Cases") Do not use apostrophes to pluralize acronyms or indicate decades. Add an "s" at the end. #### Acronyms[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#acronyms "Direct link to Acronyms") * To make an acronym plural: * **Correct:** YIPs * **Incorrect:** YIP's #### Decades[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#decades "Direct link to Decades") * To indicate a decade: * **Correct:** 1990s * **Incorrect:** 1990's #### Capitalize[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#capitalize "Direct link to Capitalize") * Names and proper nouns. * Cities, countries, nationalities, and languages. * Terms with definitions provided by Yearn. #### Title Case[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#title-case "Direct link to Title Case") * **The [Title Case Converter](https://titlecaseconverter.com/) will keep titles consistent.** * Follow the New York Times standard. * Capitalize the first and last words, all nouns, pronouns, verbs, adverbs, and adjectives. * Lowercase all articles, conjunctions, and prepositions. ### Currencies[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#currencies "Direct link to Currencies") The examples below use dollars, but the same rules apply to all global currencies. * Use lowercase except when writing "US Dollar.” * Use figures and the "$" sign in all except casual references, or amounts without a figure. * **Standard:** "The book costs $4." * **Casual:** "Please give me a dollar." * For amounts under $1 million, follow this format: * **Correct:** 4,4, 4,25, 500,500, 500,1,000, $650,000. * For amounts over $1 million, use the word, not numerals. * **Correct:** "He is worth $4 million." * **Incorrect:** "He is worth $4,000,000." #### Cryptocurrencies[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#cryptocurrencies "Direct link to Cryptocurrencies") * When directly referring to the creation, destruction, or manipulation of a token (particularly as it relates to tooling) or when referencing the token as a currency, in an instructional or conversational setting, or as a conceptual product of the Foundation or its systems: * Use the proper prefix if necessary and capitalized TLA version: `wETH` * **Example:** “wETH is a token that represents Ether 1:1 and conforms to the ERC20 token standard.” * Similarly, when referring to exchange pairs: * Use: `wETH/DAI` #### Yearn[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#yearn "Direct link to Yearn") * When referring to Yearn as a smart contract system, use "The Yearn Protocol." * **Example:** “The Yearn Protocol is a set of contracts for yield optimization." * When referring to Yearn as a body of YFI voters and the general stakeholder community, use "Yearn Community" or simply "Yearn." * **Example:** "Yearn passed a vote to decrease the yCRV vault performance fee." * **Example:** "The Yearn Community passed a vote to add an additional vault." * Use "Yearn" for casual references to Yearn and the Yearn Protocol as a whole. * When referring to an audit assessment report follow the [Audit Citation Guidelines](https://github.com/trailofbits/publications/blob/master/citation_guidelines.pdf) ### Numbers[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#numbers "Direct link to Numbers") * Spell out numbers below 10. * **Examples:** one, two, three, etc. * Use numerals for numbers above 10, unless starting a sentence. * For numbers with million, billion, or trillion, use figures in all except casual cases. * **Standard:** "The nation has 1 million citizens." * **Casual:** "I'd like to make a billion dollars." ### Lists[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#lists "Direct link to Lists") When bulleted and numbered lists contain complete sentences, capitalize the first word, and follow each with a period. If list items are phrases, no capitalization or punctuation is required. * _Don't_ use a list with only 1 item. * Use [parallel construction](https://en.wikipedia.org/wiki/Parallelism_%28grammar%29) for each item in a list. * Start with the same [part of speech](https://en.wikipedia.org/wiki/Part_of_speech) for each item (in this case, a verb). * Use the same verb [tense](https://en.wikipedia.org/wiki/Grammatical_tense#English) for each item. * Use the same [voice](https://en.wikipedia.org/wiki/Voice_%28grammar%29) for each item. * Use the same sentence type (statement, question, exclamation) for each item. * List items that include definitions should look like this: * **Team:** Yearn Protocol Developers and Contributors * **Community**: General participants in Yearn forums and chat * Use dashes rather than asterisks for unordered lists. * **Correct:** `-` * **Incorrect:** `*` * Alphabetize lists of names unless there is a clear priority at work. * Do not use ordered (numbered) lists unless order matters. * Ordered list items should use the `1.` repeated. * Markdown will automatically generate numbers. **Example:** 1. Item 11. Item 21. Item 31. Item 3a1. Item 3b ### Links[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#links "Direct link to Links") * Use [absolute links](https://docs.microsoft.com/en-us/contribute/how-to-write-links) and standard web URLs when referencing external resources. * Create descriptive hyperlinks and avoid generic language. * **Correct - Descriptive:** Learn more at [Yearn Documentation](https://docs.yearn.fi/) * **Incorrect - Generic:** Learn more [here](https://docs.yearn.fi/) . * Include a `.`outside the link for sentences that end with a link. * When creating links for parallel translated documents, make sure to update relative links to reflect the correct heading. ### Tables of Contents[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#tables-of-contents "Direct link to Tables of Contents") * Include a table of contents for documents that span several pages and multiple sections. * Use the raw Markdown from the Table of Contents above as a template. * Be sure to include the line breaks `---` as well to keep formatting consistent. * The table of contents should list relevant sections for easy navigation. Markdown Guide[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#markdown-guide "Direct link to Markdown Guide") --------------------------------------------------------------------------------------------------------------------------------------- Yearn documents posted on GitHub are written in Markdown, a text-to-HTML conversion tool for web writers. * Include line breaks above and below headings. * Use top-level headers (`#`) only once per document. * Do not make multiple top-level headings. * Avoid repeat headings. * They will break auto-generated navigation. * Avoid trailing spaces. * Do not use: * Em or en [dashes:](https://en.wikipedia.org/wiki/Wikipedia:Hyphens_and_dashes) `—` * Ampersands `&` in titles and headers. * Pipes `|` in titles and headers. * Curly quotes. Use the plaintext version. * **Correct:** `"` * **Incorrect:** `“` * Escaping parentheses. Use normal parentheses. * **Correct:** `(SOMETHING)` * **Incorrect:** `\(SOMETHING\)` * Ensure there is a single hard return at the end of a .md file. * Use emojis to call attention to an important point, when necessary. * Practice discretion and use them sparingly. * This [cheat sheet](https://gist.github.com/rxaviers/7360908) lists emojis and their Markdown shortcuts. Best Practices and Resources[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#best-practices-and-resources "Direct link to Best Practices and Resources") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Writers and contributors familiar with Yearn and cryptocurrency basics will have a better sense of where to apply their skills best. * Spend some time learning about Yearn's function, history, and any recent events before contributing. * In-depth knowledge is appreciated but not required. ### Learn the Basics of Markdown[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#learn-the-basics-of-markdown "Direct link to Learn the Basics of Markdown") * [Daring Fireball](https://daringfireball.net/projects/markdown/) * [Markdown Syntax Guide](https://guides.github.com/features/mastering-markdown/) * [Practice Communicating Using Markdown](https://lab.github.com/githubtraining/communicating-using-markdown) ### Helpful Writing Tools[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#helpful-writing-tools "Direct link to Helpful Writing Tools") Make use of any writing tools that help improve workflow and writing quality. See the list below for some recommendations. #### Text Editors[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#text-editors "Direct link to Text Editors") * [Grammarly](https://app.grammarly.com/) - Mistake-free writing editor * [HemingwayApp](https://www.hemingwayapp.com/) - Make writing bold and clear #### Word Choice[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#word-choice "Direct link to Word Choice") * [Thesaurus](https://www.thesaurus.com/) - Synonyms * [Powerthesaurus](https://www.powerthesaurus.org/) - Synonyms and phrase suggestions * [WordHippo](https://www.wordhippo.com/) - Synonyms and phrase suggestions ### Review Community Guides[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#review-community-guides "Direct link to Review Community Guides") Review the respective Contribute.md for each repository where pertinent before starting work on any Yearn project. * Yearn contributor guides outline writing standards and help simplify the writing process. #### Document-Specific Maintenance Guides[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#document-specific-maintenance-guides "Direct link to Document-Specific Maintenance Guides") * Check for an associated maintenance guide before starting work on a given document if applicable. * A document maintenance guide outlines standards to help Reviewers and contributors when maintaining a given resource. * The rules described within a document-specific maintenance guide supersede other guides. * If a discrepancy is glaring or unreasonable, bring the issue to an admin in the [#documentation](https://discord.gg/freT6YRNSX) channel on Yearn's discord. #### Contributor Tools[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#contributor-tools "Direct link to Contributor Tools") * The [Contributor Tools Guide](https://docs.yearn.fi/contributing/contributor-tools) guide introduces the tools regularly used by Yearn contributors. ### Express Interest[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#express-interest "Direct link to Express Interest") * Check out the Getting Started guide for contributing to Documentation. * Join the [#documentation](https://discord.gg/freT6YRNSX) channel on Yearn's Discord, read the pinned messages, and reach out to a channel admin. * Yearn community team members and senior contributors help onboard new contributors via Discord or Telegram chats where applicable. * Feel free to discuss personal interests and relevant skills to help determine a well-suited project/issue and jump right in. * To understand strengths you can also provide relevant examples of past projects, work, and experience. * Demonstrate a reliable work ethic and offer quality work that speaks for itself. * Stand out by suggesting projects and adding insight to public discussions. ### Collaborate[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#collaborate "Direct link to Collaborate") * When accepting an assignment, be sure to collaborate early and often. * Visit [#documentation](https://discord.gg/freT6YRNSX) or corresponding Telegram chat regularly. * Coordinate with other members. * Ask as many questions as necessary * Ask for feedback when stuck. * Provide frequent progress updates. * Develop a plan that defines an approach for an assignment. * Produce a project outline. Clarify the what so we can agree on the how. * Set achievable deadlines. Timeboxing is good :) * Assign and divide tasks with other contributors. * Multiple contributors should not start work on similar projects individually. Please check that the same issue does not already exist in the GitHub Issues for that Repository, and if it does please coordinate with whoever is working on it to divide the work if needed. #### Track Progress[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#track-progress "Direct link to Track Progress") * Track projects and progress with clear GitHub commit messages #### Final Drafts and Submissions[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#final-drafts-and-submissions "Direct link to Final Drafts and Submissions") * Transfer approved final drafts from Google Docs to HackMD or DrawIO(for diagrams) if need be. * Let the team know when a project is ready for final review by moving your issue to the status of `Pending Review` on GitHub and messaging in the appropriate Discord or Telegram channel. * Once reviewed, submit completed projects for approval as a [Pull Request](https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request) on GitHub. * Ensure to update any relevant issues and the project board on GitHub ### Acknowledgements[​](https://docs.yearn.fi/contributing/documentation/writing-style-guide#acknowledgements "Direct link to Acknowledgements") This document could not be possible without the amazing work done by the MakerDAO team as this document is mostly based on their [Writing Style Guide](https://github.com/makerdao/community-portal/blob/r2d/content/en/contribute/content/writing-style-guide.mdx) . Copy page as Markdown * [Writing Intent and Tone](https://docs.yearn.fi/contributing/documentation/writing-style-guide#writing-intent-and-tone) * [Writer Guidelines](https://docs.yearn.fi/contributing/documentation/writing-style-guide#writer-guidelines) * [General Rules](https://docs.yearn.fi/contributing/documentation/writing-style-guide#general-rules) * [Abbreviations](https://docs.yearn.fi/contributing/documentation/writing-style-guide#abbreviations) * [Acronyms, Decades and Cases](https://docs.yearn.fi/contributing/documentation/writing-style-guide#acronyms-decades-and-cases) * [Currencies](https://docs.yearn.fi/contributing/documentation/writing-style-guide#currencies) * [Numbers](https://docs.yearn.fi/contributing/documentation/writing-style-guide#numbers) * [Lists](https://docs.yearn.fi/contributing/documentation/writing-style-guide#lists) * [Links](https://docs.yearn.fi/contributing/documentation/writing-style-guide#links) * [Tables of Contents](https://docs.yearn.fi/contributing/documentation/writing-style-guide#tables-of-contents) * [Markdown Guide](https://docs.yearn.fi/contributing/documentation/writing-style-guide#markdown-guide) * [Best Practices and Resources](https://docs.yearn.fi/contributing/documentation/writing-style-guide#best-practices-and-resources) * [Learn the Basics of Markdown](https://docs.yearn.fi/contributing/documentation/writing-style-guide#learn-the-basics-of-markdown) * [Helpful Writing Tools](https://docs.yearn.fi/contributing/documentation/writing-style-guide#helpful-writing-tools) * [Review Community Guides](https://docs.yearn.fi/contributing/documentation/writing-style-guide#review-community-guides) * [Express Interest](https://docs.yearn.fi/contributing/documentation/writing-style-guide#express-interest) * [Collaborate](https://docs.yearn.fi/contributing/documentation/writing-style-guide#collaborate) * [Acknowledgements](https://docs.yearn.fi/contributing/documentation/writing-style-guide#acknowledgements) --- # Frequently Asked Questions | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ### How does yETH earn APY?[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#how-does-yeth-earn-apy "Direct link to How does yETH earn APY?") yETH earns APY through various sources: * Swap fee income from the Automated Market Maker (AMM) * Incentives fee income, which are incentives for staker participation in governance * Liquid Staking Derivative (LSD) income from staked ETH yield * Buying LSTs at a discount * Whitelisting fees However, there are also deductions such as Beacon Chain slashings and a 10% Yearn performance fee on profits. Please note that yield is paid out one week after it is generated. The yield generated in week n is streamed out in week n+1. ### What other benefits does yETH give holders?[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#what-other-benefits-does-yeth-give-holders "Direct link to What other benefits does yETH give holders?") yETH provides diversification by holding a basket of LSDs, which helps to spread the risk. ### How is yield passed onto stakers?[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#how-is-yield-passed-onto-stakers "Direct link to How is yield passed onto stakers?") LSD Protocols generate yield and update their on-chain rates. This results in yETH being minted and sent to st-yETH. ### Can I withdraw multiple LSDs?[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#can-i-withdraw-multiple-lsds "Direct link to Can I withdraw multiple LSDs?") Yes, you can withdraw multiple LSDs or just one LSD. However, your withdrawal cannot cause an LSD to leave its safety bands around its target weight. For example, if a pool has a weight of 20% and a band of 5%, the actual weight is allowed to be between 15% and 25%. This caps losses to, at most, 25%, assuming a token permanently depegs and goes to 0. In that worst-case scenario, yETH depegs to 0.75 ETH, because you can always do a balanced withdrawal of all the assets, of which only 25% is worthless. Compare this to holding the depegged token yourself, where you would have a loss of 100%. ### Is there slippage with proportional withdrawal?[​](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#is-there-slippage-with-proportional-withdrawal "Direct link to Is there slippage with proportional withdrawal?") No, there is no slippage with proportional withdrawal. Copy page as Markdown * [How does yETH earn APY?](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#how-does-yeth-earn-apy) * [What other benefits does yETH give holders?](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#what-other-benefits-does-yeth-give-holders) * [How is yield passed onto stakers?](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#how-is-yield-passed-onto-stakers) * [Can I withdraw multiple LSDs?](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#can-i-withdraw-multiple-lsds) * [Is there slippage with proportional withdrawal?](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq#is-there-slippage-with-proportional-withdrawal) --- # yETH Overview | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-overview#__docusaurus_skipToContent_fallback) yETH is a user-governed yPool consisting of various Ethereum Liquid Staking Derivatives (LSTs). The yETH protocol is an Automated Market Maker (AMM) for LSTs. Each LST in the yETH pool is priced according to the amount of [beacon chain](https://ethereum.org/en/upgrades/beacon-chain/) ETH it represents. This lets users deposit their LSTs into the pool and receive yETH tokens pegged 1:1 with beacon chain ETH. Users can also stake their yETH tokens to mint st-yETH, accrue yield, and participate in yETH governance. This AMM model, combined with the governance and incentive mechanisms of the yETH protocol, aims to provide an optimal risk-adjusted yield for ETH staking by dynamically adjusting the weights of the LSTs in the pool. It also offers users flexibility with single-sided deposits and withdrawals, and maintains the pool's balance and diversification through a weight management system. The yETH protocol is governed by its users who can vote to adjust the weights of the LSTs in the pool, helping to maximize yield and mitigate risks associated with individual LSTs. All yields generated by yETH go to Staked yETH (st-yETH) holders, making yETH an ideal token for Liquidity Providing in stableswap pools like those on Curve. To acquire yETH, users can mint yETH by depositing LSTs or swap against the yETH/ETH Curve pool. yETH follows the standard [yPools](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview) specification for * [Staked Tokens](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#staked-ytokens) * [Staked Token User Vote Weight](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#st-ytoken-user-vote-weight) * [Pool Weights for each LST](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#pool-weights-for-each-lst) * [Single Sided Deposits and Withdrawals](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-deposits-and-withdrawals) [Source Code Repo](https://github.com/yearn/yETH) [yETH Specification](https://github.com/yearn/yETH/blob/main/SPECIFICATION.md) [yETH dApp](https://yeth.yearn.fi/) --- # yPRISMA Overview | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ![image](https://docs.yearn.fi/assets/images/yprisma-banner-484f7ffae75ad1345f334b8a7d1b62ff.png) Claim and deposit at [yprisma.yearn.fi](https://yprisma.yearn.fi/) What is yPRISMA?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#what-is-yprisma "Direct link to What is yPRISMA?") --------------------------------------------------------------------------------------------------------------------------------------------- yPRISMA is Yearn's latest liquid locker, built for Prisma Finance's governance token (PRISMA). Let's review the basics of liquid locker tokens like yPRISMA: * They represent 1 vePRISMA max-locked to Yearn * They are not redeemable for the underlying locked PRISMA * They have no transfer restrictions and thus can always be swapped in DEX pools Governance for Prisma is controlled by vePRISMA, a locked token position that grants users voting power, fee revenue, and boosted PRISMA emissions. Because all PRISMA emissions come as locked vePRISMA, it is often inconvenient for users who want to avoid managing their position or want to cash out. yPRISMA aims to offer users a tokenized version of this position, giving them instant liquidity and auto-managing governance participation to maximize yield. Earn Yield on yPRISMA[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#earn-yield-on-yprisma "Direct link to Earn Yield on yPRISMA") ------------------------------------------------------------------------------------------------------------------------------------------------------------- Yearn has 2 ways to earn yield on your yPRISMA; depositing to the `YearnBoostedStaker` contract to earn mkUSD or depositing to the yPRISMA Auto-Compounder V3 vault to earn more yPRISMA. The intricacies and details are documented [here](https://docs.yearn.fi/getting-started/products/ylockers/overview#earning-yield-with-ylockers) . Once you know which path you want to take, you can follow the step by step guide [here](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide) . **More questions Anon? Head over to the [FAQ](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq) .** Links[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#links "Direct link to Links") ------------------------------------------------------------------------------------------------------------- [Contract Addresses](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-contracts) [yPRISMA UI](https://yprisma.yearn.fi/) [UI Source Code](https://github.com/yearn/ylockers-ui) [Yearn Boosted Staker Source Code](https://github.com/yearn/yearn-boosted-staker) [PRISMA.lol - Liquid Lockers Tracker](https://www.prisma.lol/) [yLockers Discord Channel](https://discord.com/channels/734804446353031319/1186417376275730552) Read More[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#read-more "Direct link to Read More") ------------------------------------------------------------------------------------------------------------------------- [Upcoming yPRISMA YBS Staking Launch: All You Need to Know](https://blog.yearn.fi/ybs-yprisma-launch) [yPRISMA Roadmap](https://medium.com/iearn/yprisma-roadmap-8fb3e2376594) [Introduction to Yearn PRISMA Incentives Farming and FAQ](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq) Copy page as Markdown * [What is yPRISMA?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#what-is-yprisma) * [Earn Yield on yPRISMA](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#earn-yield-on-yprisma) * [Links](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#links) * [Read More](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview#read-more) --- # yPools Roles and Modes | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Management Role[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#management-role "Direct link to Management Role") ---------------------------------------------------------------------------------------------------------------------------------------------- Trusted addresses with privileged access for limited operations. Should eventually be replaced by a smart contract: * Can start a gradual weight change, as long as no weight change is active yet. * Can whitelist a new asset, which sets an initial weight, sets the rate provider, and requires an initial deposit. New assets can only be whitelisted if no weight change has been scheduled yet. * Can update the rate provider for every whitelisted asset. * Can approve rate increases above 10%. * Can update the staking contract. * Can set the pool swap fee. * Can set the tolerance range. * Can set the new management address. * Can set the new guardian addresses. * Can trigger `pause mode`. * Can trigger `killed mode`. Guardian Role[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#guardian-role "Direct link to Guardian Role") ---------------------------------------------------------------------------------------------------------------------------------------- Trusted addresses with emergency privileges: * Can trigger pause mode. ### Pause mode[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#pause-mode "Direct link to Pause mode") > This mode is to be activated in the event of extreme market conditions or detected suspicious behavior, either in the protocol itself or in the underlying LST tokens that back it. * No user may swap assets with the contract. * No user may deposit assets into the contract. * Users may only withdraw assets in a balanced manner, single-sided withdrawals are not allowed. * Weights, rates, and rate providers cannot be updated during this mode. * Management or guardian can undo pause mode to resume normal operation. ### Killed mode[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#killed-mode "Direct link to Killed mode") > This mode is to be activated in the event of critical failures, whether in the protocol itself or in any of the underlying LST tokens that back it. This can also be used to migrate to a new version of the yETH protocol. * No user may deposit assets into the contract. * Users may only withdraw assets in a balanced manner. * The reward controller may not update the beacon chain amounts. * Pause mode may not be undone. There is no way to undo `killed mode`. Copy page as Markdown * [Management Role](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#management-role) * [Guardian Role](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#guardian-role) * [Pause mode](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#pause-mode) * [Killed mode](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles#killed-mode) --- # yPRISMA Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of deployed yPrisma contracts. Core Protocol[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-contracts#core-protocol "Direct link to Core Protocol") ---------------------------------------------------------------------------------------------------------------------------------------------- | Name | Address | | --- | --- | | YearnBoostedStaker | [0xF4C6e0E006F164535508787873d86b84fe901975](https://etherscan.io/address/0xF4C6e0E006F164535508787873d86b84fe901975) | | Rewards Distributor | [0xc480b481dD194EAc469EC9c4484D23d54B868EDD](https://etherscan.io/address/0xc480b481dD194EAc469EC9c4484D23d54B868EDD) | | yPRISMA Fee Receiver | [0x76DF88Aa8711822472Cb40Ed8c972A461A20ecdc](https://etherscan.io/address/0x76DF88Aa8711822472Cb40Ed8c972A461A20ecdc) | | Boosted Staker Utilities | [0xf04037D102b64E365eF6Eb81937bDf59B31fE5B8](https://etherscan.io/address/0xf04037D102b64E365eF6Eb81937bDf59B31fE5B8) | | PRISMA | [0xdA47862a83dac0c112BA89c6abC2159b95afd71C](https://etherscan.io/address/0xdA47862a83dac0c112BA89c6abC2159b95afd71C) | | yPRISMA | [0xe3668873d944e4a949da05fc8bde419eff543882](https://etherscan.io/address/0xe3668873d944e4a949da05fc8bde419eff543882) | | yvyPRISMA Vault/Token | [0x10537D7bD661C9c34F547b38EC662D6FD482Ae95](https://etherscan.io/address/0x10537D7bD661C9c34F547b38EC662D6FD482Ae95) | | yvmkUSD-A Vault/Token | [0x04AeBe2e4301CdF5E9c57B01eBdfe4Ac4B48DD13](https://etherscan.io/address/0x04AeBe2e4301CdF5E9c57B01eBdfe4Ac4B48DD13) | Expired Farms and Contracts[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-contracts#expired-farms-and-contracts "Direct link to Expired Farms and Contracts") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Name | Address | | --- | --- | | \*legacy yPRISMA | [0xfd37356c1a62288b32Fa58188c77Ab0D694a0f4E](https://etherscan.io/address/0xfd37356c1a62288b32Fa58188c77Ab0D694a0f4E) | | \*yPRISMA Staking (yvmkUSD-A rewards) | [0xE3EE395C9067dD15C492Ca950B101a7d6c85b5Fc](https://etherscan.io/address/0xE3EE395C9067dD15C492Ca950B101a7d6c85b5Fc) | | \*yPRISMA Staking (wstETH rewards) | [0x774a55C3Eeb79929fD445Ae97191228Ab39c4d0f](https://etherscan.io/address/0x774a55C3Eeb79929fD445Ae97191228Ab39c4d0f) | | \*yPRISMA Staking (dYFI rewards) | [0x93283184650f4d3B4253ABd00978176732118428](https://etherscan.io/address/0x93283184650f4d3B4253ABd00978176732118428) | | \*yPRISMA LP Staking (yPRISMA rewards) | [0x6806D62AAdF2Ee97cd4BCE46BF5fCD89766EF246](https://etherscan.io/address/0x6806D62AAdF2Ee97cd4BCE46BF5fCD89766EF246) | | \*yCRV Staking (yPRISMA rewards) | [0x84c94d739e075b3C7431bdb1A005F0412DF828a5](https://etherscan.io/address/0x84c94d739e075b3C7431bdb1A005F0412DF828a5) | | \*_expired_ | | [yPRISMA Docs](https://docs.yearn.fi/developers/deprecated-products/yPrisma/overview) Copy page as Markdown * [Core Protocol](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-contracts#core-protocol) * [Expired Farms and Contracts](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-contracts#expired-farms-and-contracts) --- # yPRISMA FAQ | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ### Where can I buy yPRISMA?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#where-can-i-buy-yprisma "Direct link to Where can I buy yPRISMA?") yPRISMA can be purchased through the following platforms: * If you already have PRISMA tokens, you can ZAP directly into yPRISMA using Yearn's yPRISMA zapper contract [**here**](https://yprisma.yearn.fi/app/get) * [Curve Finance](https://curve.finance/#/ethereum/swap?from=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&to=0xe3668873d944e4a949da05fc8bde419eff543882) - The primary liquidity source for yPRISMA * [CowSwap](https://swap.cow.fi/#/1/swap/ETH/YPRISMA) - DEX aggregators like CowSwap should also work well ### Should I stake my yPRISMA directly or auto-compound it in the vault?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#should-i-stake-my-yprisma-directly-or-auto-compound-it-in-the-vault "Direct link to Should I stake my yPRISMA directly or auto-compound it in the vault?") That's totally up to you and depends on your personal situation and preferences. Here are a few things to consider: * **Max Boost:** * Direct stakers will need to wait four weeks before their yPRISMA is max boosted and earning the maximum staking APR displayed. * Vault depositors join a single shared boost position, but this is unlikely to reach the maximum and will adjust up and down as other users deposit and withdraw. * **Rewards:** * Direct stakers receive their yield in stablecoins, making them less exposed to the price fluctuations of the underlying governance token and the yPRISMA peg. * Vault depositors are "all in" on yPRISMA. * **Gas Fees:** * Direct stakers must manually claim their mkUSD stablecoin rewards. Although earned rewards automatically accumulate and earn interest, this requires at least one additional transaction and can be expensive, depending on gas pricing and network congestion. * Vault depositors have their mkUSD stablecoin rewards claimed, swapped and reinvested into the yv-yPRISMA vault each week. And Yearn covers the gas. * **Composability:** * Direct stakers do not receive a receipt token in their wallet. * Vault depositors receive back a yv-yPRISMA token into their wallet which has the potential to be accepted as collateral across DeFi. ### Can yPRISMA users vote with their yPRISMA?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#can-yprisma-users-vote-with-their-yprisma "Direct link to Can yPRISMA users vote with their yPRISMA?") No. User voting is not part of the yLockers system, instead... * Gauge voting is automated to optimize for the maximum weekly vote incentive yield. * Governance voting is handled by a team of core contributors on behalf of veYFI holders. ### Why is the yPRISMA peg currently below 1:1?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#why-is-the-yprisma-peg-currently-below-11 "Direct link to Why is the yPRISMA peg currently below 1:1?") It is normal for a yToken such as yPRISMA (or any liquid locker token) to trade at a discount to the governance token it is built upon. The strength of the peg is dependent on the supply and demand of each yToken. Each yLocker has been designed to create an attractive yToken that offers value to users and provides incentives to attract liquidity. However, we cannot control the market price of our yTokens. ### What is yvmkUSD-A?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#what-is-yvmkusd-a "Direct link to What is yvmkUSD-A?") yvmkUSD-A is a Yearn V3 vault that allows yield to auto-compound. Currently, there is no active strategy for compounding, but a strategy is nearly completed and will undergo reviews soon. ### What are the fees associated with yPRISMA?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#what-are-the-fees-associated-with-yprisma "Direct link to What are the fees associated with yPRISMA?") When you stake yPRISMA, a 10% performance fee is applied. Yield accumulates in the receiver contract throughout the week. The yield is distributed once per week, at which point 10% is sent to the Yearn treasury. ### Where does the yield come from and how does it flow?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#where-does-the-yield-come-from-and-how-does-it-flow "Direct link to Where does the yield come from and how does it flow?") The yield for yPRISMA stakers comes from two main sources: * Protocol Fees: Fees generated from the Prisma protocol * Vote incentives: Incentives provided for voting power All these yields are claimed to the yPRISMA fee receiver at 0x76DF88Aa8711822472Cb40Ed8c972A461A20ecdc At the beginning of each week, the collected yield is converted to mkUSD (Prisma Stablecoin), deposited into the yvmkUSD-A vault, and then distributed to stakers. This process occurs once per week, and the yield is claimable at the start of the following week. Converting native Prisma farming rewards to yPRISMA[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#converting-native-prisma-farming-rewards-to-yprisma "Direct link to Converting native Prisma farming rewards to yPRISMA") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you use Prisma Finance directly, the Rewards are paid in locked vePRISMA. You can accept these rewards as vePRISMA or as yPRISMA. ### Why would I claim my Prisma protocol emissions as yPRISMA?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#why-would-i-claim-my-prisma-protocol-emissions-as-yprisma "Direct link to Why would I claim my Prisma protocol emissions as yPRISMA?") There are several key reasons to claim your emissions as yPRISMA instead of locking yourself. 1. When minting yPRISMA, you get to utilize Yearn's boost, which is among the highest of total Prisma accounts. 2. yPRISMA is minted 1:1 against your max locked claim amount. 3. yPRISMA is fully transferrable and can be swaped on DEXes like Curve, or staked for benefits in the ecosystem. ### How can I claim my Prisma protocol emissions as yPRISMA?[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#how-can-i-claim-my-prisma-protocol-emissions-as-yprisma "Direct link to How can I claim my Prisma protocol emissions as yPRISMA?") 1. Browse to [https://app.prismafinance.com/rewards](https://app.prismafinance.com/rewards) 2. Select "Lock All" ![Liquid Lockers](https://i.imgur.com/FKpkwcG.png) 3. In the modal, choose "Liquid Lockers" ![Liquid Lockers](https://i.imgur.com/tVEGdkI.png) 4. Tick the checkbox for Yearn's `yprisma.eth` delegator and press "Confirm". ![Liquid Lockers](https://i.imgur.com/NVvfVUG.png) When the transaction is complete, congratulations! You now have yPRISMA tokens in your wallet! Copy page as Markdown * [Where can I buy yPRISMA?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#where-can-i-buy-yprisma) * [Should I stake my yPRISMA directly or auto-compound it in the vault?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#should-i-stake-my-yprisma-directly-or-auto-compound-it-in-the-vault) * [Can yPRISMA users vote with their yPRISMA?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#can-yprisma-users-vote-with-their-yprisma) * [Why is the yPRISMA peg currently below 1:1?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#why-is-the-yprisma-peg-currently-below-11) * [What is yvmkUSD-A?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#what-is-yvmkusd-a) * [What are the fees associated with yPRISMA?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#what-are-the-fees-associated-with-yprisma) * [Where does the yield come from and how does it flow?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#where-does-the-yield-come-from-and-how-does-it-flow) * [Converting native Prisma farming rewards to yPRISMA](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#converting-native-prisma-farming-rewards-to-yprisma) * [Why would I claim my Prisma protocol emissions as yPRISMA?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#why-would-i-claim-my-prisma-protocol-emissions-as-yprisma) * [How can I claim my Prisma protocol emissions as yPRISMA?](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-faq#how-can-i-claim-my-prisma-protocol-emissions-as-yprisma) --- # Frontend Integrations | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/front-end-development#__docusaurus_skipToContent_fallback) Yearn uses a JavaScript SDK for formatting protocol data and generating transactions for reading/writing protocol data. Yearn SDK integrates several components, both on-chain and off-chain. [The repository here](https://github.com/turtlemoji/yearn-sdk-examples) contains a live preview and example usage of the Yearn SDK. Explore this codebase to learn how to start interacting with the Yearn protocol in your own app. --- # yTrade | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/ytrade#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown yTrade[​](https://docs.yearn.fi/developers/deprecated-products/ytrade#ytrade-1 "Direct link to yTrade") -------------------------------------------------------------------------------------------------------- [yTrade](https://ytrade.finance/) is a leveraged stablecoin exchange. **It enables users to borrow stablecoins with up to 1000x leverage.** Four stablecoins (DAI, USDC, USDT, BUSD) are currently enabled as collateral. Users deposit one of the four stablecoins identified above and receive another stablecoin on margin. Leverage tiers are: 75x, 100x, and 1000x. This is a unique product in the market and it enables users to conduct arbitrage trades whenever certain stablecoins are not pegged exactly to 1.Forexample:DAIisintendedtobepeggedat1\. For example: DAI is intended to be pegged at 1.Forexample:DAIisintendedtobepeggedat1, however, occasionally in the past it has traded at 1.05.Ausercandepositastablecoinascollateralandborrowupto1000xofhisorhercollateral,receiveDAI,sellitfor1.05. A user can deposit a stablecoin as collateral and borrow up to 1000x of his or her collateral, receive DAI, sell it for 1.05.Ausercandepositastablecoinascollateralandborrowupto1000xofhisorhercollateral,receiveDAI,sellitfor1.05 each, use the proceeds to buy back the amount of DAI they borrowed and profit the difference. This has significant implications in the broader DeFi space as stablecoins are frequently off their pegs, but some traders don’t possess sufficient capital to conduct profitable arbitrage trades. Copy page as Markdown * [yTrade](https://docs.yearn.fi/developers/deprecated-products/ytrade#ytrade-1) --- # Governance Apps (Repo) | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/governance-apps/#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown The stYFI and veYFI/LLYFI dashboards are developed in a separate repository: * Code: [yearn/governance-apps](https://github.com/yearn/governance-apps) Live apps[​](https://docs.yearn.fi/developers/governance-apps/#live-apps "Direct link to Live apps") ----------------------------------------------------------------------------------------------------- * stYFI: [https://styfi.yearn.fi](https://styfi.yearn.fi/) * veYFI / LLYFI: [https://veyfi.yearn.fi](https://veyfi.yearn.fi/) User-facing docs[​](https://docs.yearn.fi/developers/governance-apps/#user-facing-docs "Direct link to User-facing docs") -------------------------------------------------------------------------------------------------------------------------- This repository documents how the system works from a governance/user perspective: * [stYFI](https://docs.yearn.fi/contributing/governance/styfi) * [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) * [Liquid Lockers (LLYFI)](https://docs.yearn.fi/contributing/governance/liquid-lockers) Local development[​](https://docs.yearn.fi/developers/governance-apps/#local-development "Direct link to Local development") ----------------------------------------------------------------------------------------------------------------------------- Follow the README in the `yearn/governance-apps` repository (Node.js 22.x). Copy page as Markdown * [Live apps](https://docs.yearn.fi/developers/governance-apps/#live-apps) * [User-facing docs](https://docs.yearn.fi/developers/governance-apps/#user-facing-docs) * [Local development](https://docs.yearn.fi/developers/governance-apps/#local-development) --- # Emergency Procedures for Yearn Finance | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/EMERGENCY#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown TL;DR: [Emergency Checklist](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-checklist) [​](https://docs.yearn.fi/developers/security/EMERGENCY#tldr-emergency-checklist "Direct link to tldr-emergency-checklist") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Introduction[​](https://docs.yearn.fi/developers/security/EMERGENCY#introduction "Direct link to Introduction") ---------------------------------------------------------------------------------------------------------------- This document details the procedures and guidelines that should take place in the event of an emergency situation. Its purpose is to minimize the risk of loss of funds for Yearn's users, Treasury, and Smart Contracts. Definitions and Examples of Emergencies[​](https://docs.yearn.fi/developers/security/EMERGENCY#definitions-and-examples-of-emergencies "Direct link to Definitions and Examples of Emergencies") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For this document, an emergency situation is defined to be: **_Any situation that may lead to a considerable amount of loss of funds for Yearn users, Yearn's Treasury, or Smart Contracts deployed by Yearn._** This is a non-exhaustive list of possible emergency scenarios: 1. Bug/Exploit in Vault/Strategy code that can cause a loss of funds for users 2. Bug/Exploit in an underlying protocol that a Yearn Strategy is utilizing that may lead to loss of funds 3. Loss of private keys for a key role, such as a Strategist 4. Potential exploit discovered by a team or bounty program researcher 5. Active exploit/hack in progress discovered by an unknown party Roles[​](https://docs.yearn.fi/developers/security/EMERGENCY#roles "Direct link to Roles") ------------------------------------------------------------------------------------------- In the event of an emergency situation, the following roles should be assigned to Yearn contributors working to resolve the situation: * Facilitator * Multi-sig Herder * Strategist Lead * Core Dev Lead (Guardian) * Web Lead * Ops A contributor may be assigned up to two of these roles concurrently. ### Facilitator[​](https://docs.yearn.fi/developers/security/EMERGENCY#facilitator "Direct link to Facilitator") Facilitates the emergency handling and ensures the process described in this document is followed, engaging with the correct stakeholders and teams for the necessary decisions to be made quickly. A suitable Facilitator is any person familiar with the process and is confident that they can drive the team to follow through. It's expected that the person assigned to this role has relevant experience either from having worked real scenarios or through drill training. ### Multi-sig Herder[​](https://docs.yearn.fi/developers/security/EMERGENCY#multi-sig-herder "Direct link to Multi-sig Herder") Responsible for ensuring that different Yearn teams' Multi-sig wallets (i.e. dev.ychad.eth, brain.ychad.eth, ychad.eth) can execute transactions on time during the emergency. Main responsibilities: * Help clear the queue of any pending operations once the War Room starts * Coordinate required signers so they can respond quickly to queued transactions * Prepare or help with transactions in different multi-sigs Reference: * [emergency-toolbox](https://github.com/yearn/emergency-toolbox) ### Strategist Lead[​](https://docs.yearn.fi/developers/security/EMERGENCY#strategist-lead "Direct link to Strategist Lead") In charge of coordinating quick changes to management and strategist roles during the emergency, including but not limited to: * Prepare and Execute Strategist Multi-sig transactions and operations * Set strategy in emergency exit mode * Update debt ratios * Remove Strategies from Queue * Coordinate Harvests ### Core Dev Lead (Guardian)[​](https://docs.yearn.fi/developers/security/EMERGENCY#core-dev-lead-guardian "Direct link to Core Dev Lead (Guardian)") Coordinates quick changes to Governance and Guardian roles during the emergency, including but not limited to: * Prepare and Execute Core Dev Multi-sig transactions and operations * Revoke a Strategy * Set vault in emergency shutdown mode ### Web Lead[​](https://docs.yearn.fi/developers/security/EMERGENCY#web-lead "Direct link to Web Lead") Coordinates quick changes to UI and Websites as required, including but not limited to: * Disable deposits/withdrawals through the UI * Display alerts and banners * Other UI-related work ### Ops[​](https://docs.yearn.fi/developers/security/EMERGENCY#ops "Direct link to Ops") In charge of coordinating comms and operations assistance as required: * Clear with War Room what information and communication can be published during and after the incident * Coordinate Communications * Take note of timelines and events for disclosure Emergency Steps[​](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-steps "Direct link to Emergency Steps") ------------------------------------------------------------------------------------------------------------------------- _Also see [Check list](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-checklist) and [Tools](https://docs.yearn.fi/developers/security/EMERGENCY#tools) ._ This acts as a guideline to follow when an incident is reported requiring immediate attention. The primary objective is to minimize the loss of funds, in particular for Yearn's users. All decisions made should be driven by this goal. 1. Open a private chat room (War Room) with a voice channel and invite only the team members that are online that can cover the [roles described above](https://docs.yearn.fi/developers/security/EMERGENCY#roles) . The War Room is limited to members that act in the capacities of the designated roles, as well as additional persons that can provide critical insight into the circumstances of the issue and how it can best be resolved. 2. All the information that is gathered during the War Room should be considered private to the chat and not to be shared with third parties. Relevant data should be pinned and updated by the Facilitator for the team to have handy. 3. The team's first milestone is to assess the situation as quickly as possible: Confirming the reported information and determining how critical the incident is. A few questions to guide this process: * Is there confirmation from several team members/sources that the issue is valid? Are there example transactions that show the incident occurring? (Pin these in the War Room) * Is the Strategist that knows the most about the code in the War Room? Can the Strategist in question be reached? If not, can we reach the backup Strategist? * Are funds presently at risk? Is immediate action required? * Is the issue isolated or does it affect several vaults/strategies? Can the affected contracts be identified? (Pin these in the War Room) * Which Multi-sig will require signing to address the issue? The Multi-sig Herder should begin to notify signers and clear the queue in preparation for emergency transactions. * If there is no immediate risk of loss of funds, does the team still need to take preventive action or some other mitigation? * Is there agreement in the team that the situation is under control and that the War Room can be closed? 4. Once the issue has been confirmed as valid, the next step is to take immediate corrective action to prevent further loss of funds. If the root cause requires further research, the team must err on the side of caution and take emergency preventive actions while the situation continues to be assessed. A few questions to guide the decisions of the team: * Disable deposits to the affected Vaults? Should migrations and deposits be removed from the UI? * Activate Emergency Exit on the affected Strategies? * Remove one or more strategies from the withdrawal queue from the affected vaults? * Activate Emergency Shutdown in the Vault? * Revoke 1 or more Strategies? * Are multiple Team members able to confirm the corrective actions will stop the immediate risk through local Ganache fork testing? Strategist and Core Dev main roles in particular to confirm this step. 5. The immediate corrective actions should be scripted or taken from the repository [emergency-toolbox](https://github.com/yearn/emergency-toolbox) and executed ASAP. Multi-sig Herder and Strategist Lead should coordinate this execution within the corresponding roles. **NOTE: This step is meant to give the War Room time to assess and research a more long-term solution**. 6. Once corrective measures are in place and there is confirmation by multiple sources that funds are no longer at risk, the next objective is to identify the root cause. A few questions/actions during this step that can help the team make decisions: * What communications should be made public at this point? * Can research among members of the War Room be divided? This step can be open for team members to do live debug sessions sharing screens to help identify the problem using the sample transactions. 7. Once the cause is identified, the team can brainstorm to come up with the most suitable remediation plan and its code implementation (if required). A few questions that can help during this time: * In case there are many possible solutions can the team prioritize by weighing each option by time to implement and minimization of losses? * Can the possible solutions be tested and compared to confirm the end state fixes the issue? * Is there agreement in the War Room about the best solution? If not, can the objections be identified and a path for how to reach consensus on the approach be worked out, prioritizing the minimization of losses? * If a solution will take longer than a few hours, are there any further communications and preventive actions needed while the fix is developed? * Does the solution require a longer-term plan? Are there identified owners for the tasks/steps for the plan's execution? 8. Once a solution has been implemented, the team will confirm the solution resolves the issue and minimizes the loss of funds. Possible actions needed during this step: * Run in ganache fork simulations of end state to confirm the proposed solution(s) * Coordinate signatures from multi-sig signers and execution * Enable UI changes to normalize operations as needed 9. Assign a lead to prepare a [disclosure](https://github.com/yearn/yearn-security) (should it be required), preparing a timeline of the events that took place. 10. The team agrees when the War Room can be dismantled. The Facilitator breaks down the War Room and sets reminders if it takes longer than a few hours for members to reconvene. ### Emergency Checklist[​](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-checklist "Direct link to Emergency Checklist") This checklist should be complemented with the [steps](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-steps) * [ ] Create War room with audio * [ ] Assign Key Roles to War Room members * [ ] Add Strategist or other Expert (or their backup) to the War Room * [ ] Clear related Multi-sig queues * [ ] Disable deposits and/or withdrawals as needed in the web UI * [ ] If share price has been artificially lowered, then call `vault.setDepositLimit(0)` from governance * [ ] Confirm and identify Issue * [ ] Take immediate corrective/preventive actions to prevent (further) loss of funds * [ ] Communicate the current situation internally and externally (as appropriate) * [ ] Determine the root cause * [ ] Propose workable solutions * [ ] Implement and validate solutions * [ ] Prioritize solutions * [ ] Reach agreement in Team on best solution * [ ] Execute solution * [ ] Confirm incident has been resolved * [ ] Assign ownership of security disclosure report * [ ] Disband War Room * [ ] Conduct immediate debrief * [ ] Schedule a Post Mortem ### Tools[​](https://docs.yearn.fi/developers/security/EMERGENCY#tools "Direct link to Tools") List of tools and alternatives in case primary tools are not available during an incident. | Description | Primary | Secondary | | --- | --- | --- | | Code Sharing | GitHub | [HackMd](https://hackmd.io/)
, [CodeShare](https://codeshare.io/) | | Communications\* | Telegram | Discord | | Transaction Details | [Etherscan](https://etherscan.io/) | [Tenderly](https://tenderly.co/) | | Debugging | Brownie | [Tenderly](https://tenderly.co/) | | Transaction Builder | [ape-safe](https://github.com/banteg/ape-safe) | _Backup if gnosis safe Api is not working?_ | | Screen Sharing\* | [jitsi](https://jitsi.org/) | Google Hangouts | **Facilitator is responsible to ensure no unauthorized persons enter the War Room or join these tools via invite links that leak.** Incident Post Mortem[​](https://docs.yearn.fi/developers/security/EMERGENCY#incident-post-mortem "Direct link to Incident Post Mortem") ---------------------------------------------------------------------------------------------------------------------------------------- A Post Mortem should be conducted after an incident to gather data and feedback from War Room participants in order to produce actionable improvements for Yearn processes such as this one. Following the dissolution of a War Room, the Facilitator should ideally conduct an immediate informal debrief to gather initial notes before they are forgotten by participants. This can then be complemented by a more extensive Post Mortem as outlined below. The Post Mortem should be conducted at most a week following the incident to ensure a fresh recollection by the participants. It is key that most of the participants of the War Room are involved during this session for an accurate assessment of the events that took place. Discussion is encouraged. The objective is to collect constructive feedback on how the process can be improved, **and not** to assign blame to any War Room participants. Participants are encouraged to provide input on each of the steps. If a participant is not giving input, the Facilitator is expected to try to obtain more feedback by asking questions. ### Post Mortem Outputs[​](https://docs.yearn.fi/developers/security/EMERGENCY#post-mortem-outputs "Direct link to Post Mortem Outputs") * List of what went well * List of what be improved * List of questions that came up in the Post Mortem * List of insights from the process * Root Cause Analysis along with concrete measures required to prevent the incident from ever happening again. * List of action items assigned to owners with estimates for completion. ### Post Mortem Steps[​](https://docs.yearn.fi/developers/security/EMERGENCY#post-mortem-steps "Direct link to Post Mortem Steps") 1. Facilitator runs the session in a voice channel and shares a screen for participants to follow notes. 2. Facilitator runs through an agenda to obtain the necessary [outputs](https://docs.yearn.fi/developers/security/EMERGENCY#post-mortem-outputs) . 3. For the Root Cause Analysis part, the Facilitator conducts an exercise to write the problem statement first and then confirm with the participants that the statement is correct and understood. 4. Root Cause Analysis can be identified with the following tools: * [Brainstorming](https://en.wikipedia.org/wiki/Brainstorming) session with participants * [5 Whys Technique](https://en.wikipedia.org/wiki/Five_whys) 5. Once Root Causes have been identified, action items can be written and assigned to willing participants that can own the tasks. It is recommended that an estimated time for completion is given. A later process can track completion of given assignments. **Note: The action items need to be clear, actionable and measurable for completion** 6. The Facilitator tracks completion of action items. The end result of the process should be an actionable improvement in the process. Some possible improvements: * Changes in the process and documentation * Changes in code and tests to validate * Changes in tools implemented and incorporated into the process Copy page as Markdown * [TL;DR: Emergency Checklist](https://docs.yearn.fi/developers/security/EMERGENCY#tldr-emergency-checklist) * [Introduction](https://docs.yearn.fi/developers/security/EMERGENCY#introduction) * [Definitions and Examples of Emergencies](https://docs.yearn.fi/developers/security/EMERGENCY#definitions-and-examples-of-emergencies) * [Roles](https://docs.yearn.fi/developers/security/EMERGENCY#roles) * [Facilitator](https://docs.yearn.fi/developers/security/EMERGENCY#facilitator) * [Multi-sig Herder](https://docs.yearn.fi/developers/security/EMERGENCY#multi-sig-herder) * [Strategist Lead](https://docs.yearn.fi/developers/security/EMERGENCY#strategist-lead) * [Core Dev Lead (Guardian)](https://docs.yearn.fi/developers/security/EMERGENCY#core-dev-lead-guardian) * [Web Lead](https://docs.yearn.fi/developers/security/EMERGENCY#web-lead) * [Ops](https://docs.yearn.fi/developers/security/EMERGENCY#ops) * [Emergency Steps](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-steps) * [Emergency Checklist](https://docs.yearn.fi/developers/security/EMERGENCY#emergency-checklist) * [Tools](https://docs.yearn.fi/developers/security/EMERGENCY#tools) * [Incident Post Mortem](https://docs.yearn.fi/developers/security/EMERGENCY#incident-post-mortem) * [Post Mortem Outputs](https://docs.yearn.fi/developers/security/EMERGENCY#post-mortem-outputs) * [Post Mortem Steps](https://docs.yearn.fi/developers/security/EMERGENCY#post-mortem-steps) --- # Security Home | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Information about Yearn's security processes, team members, disclosures, PGP keys and more can be found in the [/yearn-security](https://github.com/yearn/yearn-security) repo on GitHub. Vulnerability disclosure process[​](https://docs.yearn.fi/developers/security/#vulnerability-disclosure-process "Direct link to Vulnerability disclosure process") ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Potential vulnerabilities are welcome to be disclosed following the guidelines established in [/yearn-security/SECURITY.md](https://github.com/yearn/yearn-security/blob/master/SECURITY.md) . Valid vulnerabilities may be eligible for bounty rewards. Third-party audits[​](https://docs.yearn.fi/developers/security/#third-party-audits "Direct link to Third-party audits") ------------------------------------------------------------------------------------------------------------------------- The V3 core contracts used in V3 vaults, found at [yearn-vaults-v3](https://github.com/yearn/yearn-vaults-v3) repository have been audited by multiple independent third-party firms: * [StateMind](https://statemind.io/) has audited v3.0.0, public report [available here](https://github.com/yearn/yearn-security/tree/master/audits/20240502_Statemind_Yearn_V3) * [ChainSecurity](https://www.chainsecurity.com/) has audited v3.0.0, public report [available here](https://github.com/yearn/yearn-security/tree/master/audits/20240504_ChainSecurity_Yearn_V3) * [yAudit](https://yaudit.dev/) has audited v3.0.1, public report [available here](https://github.com/yearn/yearn-security/tree/master/audits/20240601_YAcademy_Yearn_V3) The legacy core contracts used in V2 vaults and the Factory Vaults, found at [yearn-vaults](https://github.com/yearn/yearn-vaults/) repository have been audited by multiple independent third-party firms: * [MixBytes](https://mixbytes.io/) has audited v0.2.1, public report [available here](https://github.com/yearn/yearn-security/tree/master/audits/202012_MixBytes_yearn-vaults) * [ChainSecurity](https://chainsecurity.com/) has audited v0.3.5, public report unavailable * [Trail of Bits](https://www.trailofbits.com/) has audited v0.4.2, public report [available here](https://github.com/yearn/yearn-security/tree/master/audits/20210719_ToB_yearn_vaultsv2) Yearn is much bigger than its core, the DAO has a rigorous review process for its contracts, and retains independent auditors which review Strategies and other protocol components. Other public reports can be found under [yearn-security/audits](https://github.com/yearn/yearn-security/tree/master/audits) . Security assumption[​](https://docs.yearn.fi/developers/security/#security-assumption "Direct link to Security assumption") ---------------------------------------------------------------------------------------------------------------------------- Yearn as a protocol hinges on the critical assumption that the `Governance` role is honest. This role is currently controlled by a [6 of 9 Gnosis Safe multisig](https://gov.yearn.fi/t/yip-62-change-two-multisig-signers/10758) . A compromised or malicious Governance can cause catastrophic damage across the entire protocol. It is a conscious design decision that this role is not behind a time lock. Priority is given to the ability to rapidly update and iterate on live vaults, strategies, and other components. Both so as not to advertise new investment strategies in advance, but also to rapidly improve our existing components without interruption. It also avoids downtimes whenever there is a bug or security vulnerability that needs to be fixed. Trusting `Governance` to be honest is a prerequisite to trusting Yearn's vaults. Modifications to these design decisions can be proposed in the forum through [Yearn's governance process](https://gov.yearn.fi/t/yip-61-governance-2-0/10460) . Copy page as Markdown * [Vulnerability disclosure process](https://docs.yearn.fi/developers/security/#vulnerability-disclosure-process) * [Third-party audits](https://docs.yearn.fi/developers/security/#third-party-audits) * [Security assumption](https://docs.yearn.fi/developers/security/#security-assumption) --- # Yearn Multisig | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/multisig#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown How it works[​](https://docs.yearn.fi/developers/security/multisig#how-it-works "Direct link to How it works") --------------------------------------------------------------------------------------------------------------- The multisig is implemented by a 6-of-9 multi-signature wallet. The members of the multi-signature wallet were voted in by YFI holders and are subject to change from future governance votes. Specific powers are delegated to the governance multisig, as defined by [Governance 2.0](https://gov.yearn.fi/t/yip-41-temporarily-empower-multisig/3630) . The multisig is implemented as a Gnosis Safe. The multisig's assets, transactions, and signers can be viewed using [Gnosis's Web UI](https://app.safe.global/home?safe=eth:0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52) . If there is a need to trustlessly audit Yearn's multisig (without trusting the Gnosis site), the Gnosis Safe web app source code can be found on GitHub [here](https://github.com/safe-global/safe-wallet-web) . Protocol Guardian Role[​](https://docs.yearn.fi/developers/security/multisig#protocol-guardian-role "Direct link to Protocol Guardian Role") --------------------------------------------------------------------------------------------------------------------------------------------- Per [YIP-81](https://snapshot.box/#/s:veyfi.eth/proposal/0x6f3082db2cef3e0c254e569580d063cb14130a92d0bf1729bef342a386e419f2) , the Yearn Multisig (AKA yChad) serves in the Guardian role to steward and protect the Yearn Protocol and its participants. The Guardian role is defined as being able to **"nullify a proposal or governance decision but cannot make proposals"**. Members[​](https://docs.yearn.fi/developers/security/multisig#members "Direct link to Members") ------------------------------------------------------------------------------------------------ Multisig membership can be validated from the Gnosis UI [here](https://app.safe.global/settings/setup?safe=eth:0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52) . Cryptographic membership attestations can be validated against the PGP keys in the [yearn-security](https://github.com/yearn/yearn-security/tree/master/keys) repository. | Address | Member Name | Membership Attestation | | --- | --- | --- | | [0x6F2A8Ee9452ba7d336b3fba03caC27f7818AeAD6](https://etherscan.io/address/0x6F2A8Ee9452ba7d336b3fba03caC27f7818AeAD6) | Mariano Conti (nanexcool.com, prev. MakerDAO) | [Twitter](https://x.com/nanexcool/status/1491900804223041540) | | [0xeA6c0837fef621E77329f85820F503cA09f2B3a9](https://etherscan.io/address/0xeA6c0837fef621E77329f85820F503cA09f2B3a9) | Leo Cheng (C.R.E.A.M. Finance) | [Twitter](https://x.com/lumbergdoteth/status/1923382177200218580) | | [0x70aF5a3368606c6557D2B3ce2EEC8796B914EAa3](https://etherscan.io/address/0x70aF5a3368606c6557D2B3ce2EEC8796B914EAa3) | omnifient (Katana) | [Twitter](https://x.com/omnifient/status/2015032813326643230) | | [0xf5D3dbda5F41A0E26D71B948e29522398e71cFaE](https://etherscan.io/address/0xf5D3dbda5F41A0E26D71B948e29522398e71cFaE) | 0xngmi (DefiLlama) | [Twitter](https://x.com/0xngmi/status/1590047391797088257) | | [0x5Db9926c93085a92F14A85daBF6FF27b07362Cae](https://etherscan.io/address/0x5Db9926c93085a92F14A85daBF6FF27b07362Cae) | Ephy (Sky/MakerDAO) | [Twitter](https://x.com/0x3phemeralsoul/status/1923374073440080069) | | [0x2B888954421b424C5D3D9Ce9bB67c9bD47537d12](https://etherscan.io/address/0x2B888954421b424C5D3D9Ce9bB67c9bD47537d12) | Lefteris Karapetsas (rotkiapp) | [Twitter](https://x.com/LefterisJP/status/1590083336210644992) | | [0xFe45baf0F18c207152A807c1b05926583CFE2e4b](https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b) | Michael Egorov (Curve) | [Twitter](https://x.com/newmichwill/status/1849912651163250755) | | [0x962228a90eaC69238c7D1F216d80037e61eA9255](https://etherscan.io/address/0x962228a90eaC69238c7D1F216d80037e61eA9255) | CryptoHarry (Inverse) | [Twitter](https://x.com/0xCryptoHarry/status/1848394875659776430) | | [0x700F1a984C962b447CcDb95c4c2D8074C65098a3](https://etherscan.io/address/0x700F1a984C962b447CcDb95c4c2D8074C65098a3) | Tapir (Yearn) | [GitHub Gist](https://gist.github.com/tapired/3b26a56b8847dc6f608edb9403dfc61d) | History[​](https://docs.yearn.fi/developers/security/multisig#history "Direct link to History") ------------------------------------------------------------------------------------------------ * December 2025 - [YIP-89: Proposal to rotate multisig signer](https://snapshot.box/#/s:veyfi.eth/proposal/0x02ac9f5cc91ad090938195c37e17fd24941a668082b2b6b58f20e11e32d73003) * April 2025 - [YIP-84: Proposal to rotate multisig signer](https://snapshot.box/#/s:veyfi.eth/proposal/0xeecd2a9ca79f9b22071d79d436a7e5ccc56593eb4c3bc8ef1b57c8389809a101) * October 2024 - [YIP-79: Proposal to rotate multisig signers and provide compensation](https://snapshot.org/#/veyfi.eth/proposal/0xc7ded2863a10154b6b520921af4ada48d64d74e5b7989f98cdf073542b2e4411) * June 2022 - [YIP-68: Change Three Multisig signers](https://gov.yearn.fi/t/yip-68-rotate-multisig-signers/12582) * May 2021 - [YIP-62: Change Two Multisig Signers](https://gov.yearn.fi/t/yip-62-change-two-multisig-signers/10758) * April 2021 - [YIP-61: Governance 2.0](https://gov.yearn.fi/t/yip-61-governance-2-0/10460) * August 2020 - [YIP-41: Temporarily Empower Multisig](https://gov.yearn.fi/t/yip-41-temporarily-empower-multisig/3630) * August 2020 - [YIP-40: Replace inactive multisig signers](https://yips.yearn.fi/YIPS/yip-40) Copy page as Markdown * [How it works](https://docs.yearn.fi/developers/security/multisig#how-it-works) * [Protocol Guardian Role](https://docs.yearn.fi/developers/security/multisig#protocol-guardian-role) * [Members](https://docs.yearn.fi/developers/security/multisig#members) * [History](https://docs.yearn.fi/developers/security/multisig#history) --- # Understanding The Risks | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/risks/#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown info The Yearn smart contracts, interfaces, and products are offered as-is. Yearn contributors and YFI token holders provide no guarantee of safety of funds in ANY vault or strategy built on top of the core contracts and will not compensate users for any critical failure or loss of funds resulting from usage of the system. Hello anon. You've made it this far and now it's time to have a little chat about risk. Understanding risk is the most important element in not getting Rekt. If you are new to cryptocurrency, hopefully this page will help you better understand the space and how things can go wrong. And if you are a grizzled degen, well... a refresher never hurts. If you are investing money (even imaginary internet money) then it is important to understand what could go wrong. We aren't going to talk about personal security or how to secure private keys, but instead talk about how you can lose money even if you do everything right, and how Yearn tries to mitigate these risks. The later pages in this section go into the specifics, but we will start broad. Making Money Requires Risk[​](https://docs.yearn.fi/developers/security/risks/#making-money-requires-risk "Direct link to Making Money Requires Risk") ------------------------------------------------------------------------------------------------------------------------------------------------------- To "beat the market" you must take some risk. This is why the term _risk-free rate_ exists. A risk-free rate is the safest return you can get on your capital, and even so the term is a misnomer. It is just the consensus lowest risk investment that you can find. Any time you see a juicy yield there is some risk! This may be price risk, smart contract risk, liquidation risk, etc. Yearn is built to minimize that risk and maximize convenience and returns. But _minimize_ and _eliminate_ are not the same thing. So let's explore these risks. Rug Risk[​](https://docs.yearn.fi/developers/security/risks/#rug-risk "Direct link to Rug Risk") ------------------------------------------------------------------------------------------------- This is the risk that you get scammed and the money you invested is stolen or re-appropriated. Think FTX. This is where Yearn (and DeFi) really shines. Yearn Vaults are built in a way such that only you have access to the funds you deployed in a vault. The vaults collect yield and re-deposit it permissionlessly. The [Yearn Multisig](https://docs.yearn.fi/developers/security/multisig) does have the power to pause or withdraw funds from strategies to protect depositors, but the funds cannot be removed. When you deposit, you get shares of the vault that you can always use to get a proportional amount of vault assets back. Yearn or its contributors have no ability to mint new shares other than by depositing their own funds. Yearn operates not on a principle of "don't be evil", but of "can't be evil". Bug Risk[​](https://docs.yearn.fi/developers/security/risks/#bug-risk "Direct link to Bug Risk") ------------------------------------------------------------------------------------------------- Eliminating rug risk doesn't remove the risk that something, somewhere isn’t implemented right and leads to an exploit. Yearn takes security very seriously and strives to be as safe as possible with audits and best practices. Yearn is seen as a leader in security practices and the auditing firm yAUDIT spun out of Yearn. But even if all of Yearn's vaults are totally safe, they are only as safe as the strategies and protocols that they deposit into. Yield Stack Risk[​](https://docs.yearn.fi/developers/security/risks/#yield-stack-risk "Direct link to Yield Stack Risk") ------------------------------------------------------------------------------------------------------------------------- Yearn Vaults are a tool to optimize yield and auto-compound it, so they inherit the risk of the underlying protocols they earn yield from. On top of creating safe smart contract code, Yearn contributors work to evaluate the risks of the different protocols and strategies used in vaults. You can explore Yearn's risk scores and how different vaults rate by visiting their respective pages on [yearn.fi](https://yearn.fi/) . Strategies are chosen and approved based on available information, and that information isn't always complete. Sometimes shit happens. A freak event may cause a stablecoin to depeg. A protocol may have an incredible and safe codebase, but due to a physical security or process breach, suffer an exploit. Yearn has developed, and continually works on improving, monitoring and risk analysis tools to prevent any losses. The Bottom Line[​](https://docs.yearn.fi/developers/security/risks/#the-bottom-line "Direct link to The Bottom Line") ---------------------------------------------------------------------------------------------------------------------- Yearn is a tool that makes earning yield on your assets easy. It has risks but, for the most part, those are the same risks you would take on if you did the same farming on your own. By depositing in Yearn vaults, you are relying on the creator of the strategies/vaults to manage that risk and provide that service to you. Any losses or gains within a vault are socialized across all depositors in that vault. The strategists and contributors at Yearn use the vaults too and so we have every incentive to make them as safe and profitable as possible. In the end, you have to make this decision yourself. No one can decide for you whether something is safe enough. The next pages in this section may be useful in better understanding these risks and making the best decision for you. Copy page as Markdown * [Making Money Requires Risk](https://docs.yearn.fi/developers/security/risks/#making-money-requires-risk) * [Rug Risk](https://docs.yearn.fi/developers/security/risks/#rug-risk) * [Bug Risk](https://docs.yearn.fi/developers/security/risks/#bug-risk) * [Yield Stack Risk](https://docs.yearn.fi/developers/security/risks/#yield-stack-risk) * [The Bottom Line](https://docs.yearn.fi/developers/security/risks/#the-bottom-line) --- # Protocol Risks | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/risks/protocol-risks#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn’s core products are the vaults. Each vault runs at least one strategy, and each strategy is exposed to at least one protocol. Strategy and protocol risks are described [here](https://docs.yearn.fi/developers/security/risks/strategy-risks) and [here](https://docs.yearn.fi/developers/security/risks/protocol-risks) respectively. The key protocols to which Yearn’s vaults are exposed are lending protocols, AMMs and protocols that enable leverage. Lending Protocols[​](https://docs.yearn.fi/developers/security/risks/protocol-risks#lending-protocols "Direct link to Lending Protocols") ------------------------------------------------------------------------------------------------------------------------------------------ One of the simplest strategies is collateralized lending which involves lending assets on lending protocols to earn a yield. For example, a lending strategy will lend the underlying asset to the highest yielding lending protocol that meets the risk score requirements. This type of strategy is the most widely used in the single asset V3 vaults. Examples of Lending protocols that Yearn strategies may use are Aave, Morpho, Spark, LlamaLend, and more. | Risk | Description | | --- | --- | | Governance | Admin key holders (or token holders) change the lending protocol adversely, e.g. accept risky assets with lenient risk parameters | | Technological | Smart contract risk from interacting with lending protocols | | | Liquidations do not occur as expected | | Market | The value of the loans exceed the value of the collateral | | | Low demand for borrowing leads to low yields | | | Accepted assets become impaired | | Oracle | Incorrect price feed causes the collateral to go to such a value that the loan is liquidated | Automated Market Makers[​](https://docs.yearn.fi/developers/security/risks/protocol-risks#automated-market-makers "Direct link to Automated Market Makers") ------------------------------------------------------------------------------------------------------------------------------------------------------------ AMMs are used some of Yearn’s vault strategies to earn trading fees (and liquidity mining rewards if available) and may be used to exchange earned tokens for more of the underlying token. Yearn's Factory vaults are the main consumers of AMM strategies. Examples of the AMMs to which Yearn’s vaults are exposed, are Curve Finance, Aerodrome, and Velodrome. Yearn's process to sell reward tokens for the underlying and compound earnings has evolved over the years and now typically uses Auctions that fall back to cowSwap. | Risk | Description | | --- | --- | | Market | Lack of liquidity for the token being exchanged | | | Trading volumes reduce leading to lower fees | | | Impermanent loss due to the pool’s token prices changing relative to each other | | Technological | Smart contract risk from interacting with AMMs | | Governance | Token holders vote to change the AMM adversely | Leverage-enabling protocols[​](https://docs.yearn.fi/developers/security/risks/protocol-risks#leverage-enabling-protocols "Direct link to Leverage-enabling protocols") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Leverage-enabling protocols are used in Yearn’s vault strategies to increase the yield. This is possible when a non-leveraged strategy earns a higher return than the cost of borrowing. Examples of the leverage-enabling protocols to which Yearn’s vaults are exposed are Aave, Morpho, Moonwell, etc. These kinds of strategies are typically reserved for higher risk Vaults. Sometimes a vault with a risk score of 2 can have some very light leverage, but typically these will be -3 and -4 vaults. | Risk | Description | | --- | --- | | Governance | Multi-sig or token holders vote to change the protocol adversely | | | Poorly chosen risk parameters for onboarded collateral of underlying market e.g. collateralization ratios that are too low | | Technological | Smart contract risk | | Market | Liquidations are not processed correctly on Maker or Unit Protocol | | | Stablecoin peg is not maintained | | | Cost of uncollateralized borrowing increases such that Yearn’s strategies cannot utilize it | | Oracle | Incorrect price feed leads to incorrect liquidation of positions | Liquidity mining protocols[​](https://docs.yearn.fi/developers/security/risks/protocol-risks#liquidity-mining-protocols "Direct link to Liquidity mining protocols") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- A core strategy for Yearn’s vaults is to liquidity mine (or yield farm) protocols. Liquidity mining involves interacting with a protocol to earn the protocol’s native tokens. | Risk | Description | | --- | --- | | Governance | Admin key holders change protocol adversely, e.g. introduce penalties for withdrawals or steal funds | | Technological | Smart contract risk of protocol or rewards contract | | Market | Fall in price of token being farmed reducing the APY | | | Liquidity of liquidity mined token on AMM is reduced or removed | | Oracle | Delays or inability to withdraw liquidity in an emergency | These factors are all taken into account by the Yearn Security Team when scoring strategies using the [Risk Score Framework](https://docs.yearn.fi/developers/security/risks/risk-score) . Copy page as Markdown * [Lending Protocols](https://docs.yearn.fi/developers/security/risks/protocol-risks#lending-protocols) * [Automated Market Makers](https://docs.yearn.fi/developers/security/risks/protocol-risks#automated-market-makers) * [Leverage-enabling protocols](https://docs.yearn.fi/developers/security/risks/protocol-risks#leverage-enabling-protocols) * [Liquidity mining protocols](https://docs.yearn.fi/developers/security/risks/protocol-risks#liquidity-mining-protocols) --- # Risk Scores | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn works with risk scores to quantify and assess the amount of risk of each strategy and vault. This document outlines how we measure risk vectors and use them to find the optimal balance of security and innovation. * [**Strategy Risk Score**](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#strategy-risk-score) defines each dimension of risk for a strategy and how we quantify them * [**Vault Risk Score Proposal**](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#vault-risk-score-proposal) aggregates all strategy scores for a vault, averaging by TVL **(this is in draft stage)** * [**Overall Risk Score Proposal**](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#overall-risk-score-proposal) aggregates strategy/vault scores into overall scores **(this is in draft stage)** Different risk scores for all V2 vaults can be viewed on the [Seafood](https://seafood.yearn.watch/risk) Dashboard. Strategy Risk Score[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#strategy-risk-score "Direct link to Strategy Risk Score") --------------------------------------------------------------------------------------------------------------------------------------------------- Risk for different strategies is quantified using a 1-5 point system developed by Yearn's strategy deployment process. The higher the risk score number, the more risky the strategy is. The risk assessment evaluates eight dimensions: 1. [Audit](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#audit) 2. [Code Review](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#code-review) 3. [Complexity](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#complexity) 4. [Longevity](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#longevity) 5. [Protocol Safety](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#protocol-safety) 6. [Team Knowledge](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#team-knowledge) 7. [Testing Score](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#testing-score) 8. [TVL Impact](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#tvl-impact) This risk framework is an ongoing process to ensure the security of Yearn strategies. Yearn recognized that, due to its unique approach to deploying strategies, it could not rely on a traditional waterfall process (heavy analysis and design, testing, multiple audits before release, etc.) to deploy contracts. Strategies are deployed and capped by their risk score. As we reduce the risk in any of the eight dimensions, the strategy can grow its TVL. This system allows Yearn to compare the risk score of two strategies and prioritize risk mitigation and preventive actions, such as forming a committee to spread knowledge on the code, getting more audits, migrating current code to improved versions of the strategy, etc. The current version of the risk score system works for Yearn's current needs, but we are always looking to improve and expand it to the vaults. We want to provide our users with a better understanding of what is happening behind the scenes in the vaults. The development of vault risk scoring is still in progress! ### Audit[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#audit "Direct link to Audit") Auditing is a process that an audit firm or external security researcher reviews code for any potential vulnerabilities and present a report for mitigation. Audits take longer than an internal security review and are not immediately available due to the high demand for audits in the space. As such, most strategies are sent to production without an audit (leading to a high risk score) in order to limit their Total Value Locked (TVL). This approach allows for strategies to be validated in production while still managing risk, and the risk score helps determine which strategies should get an audit first, based on impact and other scoring criteria. The table below outlines the scoring criteria associated with audits. | | | | --- | --- | | **Score** | **Audit** | | 5 | No audit by a trusted firm or security researcher. | | 4 | Audit by trusted firm or security researcher conducted more than 6 months ago. | | 3 | Audit by trusted firm or security researcher conducted more than 3 months ago. | | 2 | Audit conducted less than 3 months ago by an independent trusted firm. | | 1 | Audit conducted less than 3 months ago by 3 or more independent trusted firms. | ### Code Review[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#code-review "Direct link to Code Review") This is the process that reviews strategy code going to production. It is done in two major phases: **Phase 1:** Two internal peers (strategists) review the strategy for any potential issues regarding handling accounts, profits, losses, etc. After this phase is completed, the strategy can go to ape.tax for live testing and validation. **Phase 2:** An internal security reviewer from Yearn will review the code focusing on security concerns. Once phase 2 is completed, the strategy gets a risk score in all dimensions and is usually deemed enough for a strategy to go to production with limited TVL based on scoring. After these steps a recurring review is scheduled, where either a second either internal or external security reviewer will have another look at the code: | | | | --- | --- | | **Score** | **Code Review** | | 5 | 0 - 1 reviewer of the code only or most recent was done 6 months+ ago | | 4 | 2 reviewers of the code, the most recent of which was done 3+ months ago | | 3 | 3 reviewers of the code, the most recent of which was done 3+ months ago (1 of the reviewers is an internal security dev) | | 2 | 4 reviewers of the code (2 peers and 2 internal security devs) | | 1 | 5 reviewers of the code, (2 strategists peers and 2 security reviewers and either external protocol devs reviewed or external security researchers reviewed) | ### Complexity[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#complexity "Direct link to Complexity") This is how the strategy earns its returns: is it a simple strategy like a masterchef staking or does it have complex mechanics such as leverage, risk of liquidation, and involvement with multiple protocols? The more components it needs will require a higher complexity score. This score is essential in an emergency to evaluate how difficult it is to mitigate a live issue: | | | | --- | --- | | **Score** | **Complexity** | | 5 | Strategy is highly complex, uses leverage or debt, and is not easy to unwind. No health check available | | 4 | Uses leverage or debt, and is not easy to unwind. No health check available | | 3 | Has potential for losses, withdrawal fees, or requires detailed queue management to prevent losses. No health check available | | 2 | Strategy is relatively simple, and is easy to migrate/unwind. Has a health check | | 1 | Strategy is easy to understand, and can be migrated/unwound easily. No leverage and no publicly accessible methods. Highly unlikely to incur losses. | ### Longevity[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#longevity "Direct link to Longevity") How long the strategy has been running live on yearn.fi: | | | | --- | --- | | **Score** | **Longevity** | | 5 | Code is new and did not go to ape tax before going live on yearn.fi | | 4 | Code has been running for less than one month | | 3 | Code has been running between 1-4 months | | 2 | Code has been running for 4+ months | | 1 | Code has been running for 8+ months with no critical issues and no changes in code base | ### Protocol Safety[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#protocol-safety "Direct link to Protocol Safety") Protocol Safety evaluates the resilience of the protocol the strategy uses. It takes into account the safety measures given the current DeFi security standards, based on our internal assessments and due diligence compared to the top projects in DeFi. This includes multisig health, decentralization, bounty programs, audits, etc. We hope to improve this dimension with the help of the DeFi community to potentially use a standard scoring system that is widely accepted in the ecosystem to replace our current scoring table: | | | | --- | --- | | **Score** | **Protocol Safety** | | 5 | No due diligence (DD) document for this strategy. The protocol contracts used are very recent and not audited/verified. An EOA (externally owned account) owns the contracts and can upgrade them. | | 4 | DD took place. Protocol contracts audited/verified. A multisig is required or contracts are upgradable. Multisig has a low threshold of signers. No bounty program. | | 3 | DD took place. Protocol contracts are audited/verified by at least **one reputable audit** firm. A multisig with an appropriate threshold is required and/or contracts are immutable. Has a good bounty program. | | 2 | DD took place. Protocol contracts are audited/verified by at least **two reputable audit** firms. A multisig with an appropriate threshold is required and/or contracts are immutable. Has a good bounty program. | | 1 | Protocols involved in contracts are trusted blue chip protocols with a good track record of security. For example: Maker, Uniswap, Curve, AAVE, and Compound. These protocols meet all the criteria specified in item 2 and more. | ### Team Knowledge[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#team-knowledge "Direct link to Team Knowledge") Measures the amount of expertise on a strategy that is shared amongst Yearn contributors. How many contributors can manage the strategy and respond in an emergency? The fewer people who can manage and respond during an emergency the riskier the strategy assessment in this dimension: | | | | --- | --- | | **Score** | **Team Knowledge** | | 5 | 1 person in the team is the only one that has in-depth knowledge of the strategy code | | 4 | 1 strategist has in-depth knowledge, and 1 strategist is somewhat familiar with the strategy code. | | 3 | 2 strategists have in-depth knowledge of the strategy code. | | 2 | 2 strategists have in-depth knowledge, and 1 strategist is somewhat familiar with the strategy code. | | 1 | A team of 3+ strategists are very familiar with the strategy code and the protocol the strategy is utilising. | ### Testing Score[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#testing-score "Direct link to Testing Score") Testing score is a metric of how much of the codebase for the strategy has been tested. It uses the test coverage number as a reference, higher coverage means the developer/strategist took time to test most of the operations of the strategy in a unit test or fork environment. This score assumes that a less tested strategy entails more risk since we know less about what is expected from the code: | | | | --- | --- | | **Score** | **Testing Score** | | 5 | Less than 20% coverage in testing | | 4 | Less than 40% coverage in testing | | 3 | 40% to 80% coverage | | 2 | Over 80% coverage | | 1 | Over 90% coverage in testing. Second developer validated and added tests and also added new ones for uncovered cases while reviewing. You can pull the repository and the tests are currently passing | ### TVL Impact[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#tvl-impact "Direct link to TVL Impact") The TVL (total value locked) metric measures how to allocate to new riskier strategies without having a catastrophic event in case of a hack or issue. The lower the impact, the more likely Yearn’s treasury can recover from an incident. The TVL is measured in USD and grows dynamically based on strategies allocations onchain. Through [seafood](https://seafood.yearn.watch/risk) we keep track of the TVL and risk score to make fund allocation decisions and mitigations if a strategy group has fallen into the “red” high-risk zone: | | | | --- | --- | | **Score** | **TVL Impact** | | 5 | Extreme: greater than USD 100 MM | | 4 | Very high: less than USD 100 MM | | 3 | High: less than USD 50 MM | | 2 | Medium: less than USD 10 MM | | 1 | Low: less than USD 1 MM | Vault Risk Score Proposal[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#vault-risk-score-proposal "Direct link to Vault Risk Score Proposal") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- A vault is a contract that holds funds for up to 20 strategies, the vault risk score is a TVL weighted average for each active strategy, for example: **Strategy X** has **5000∗∗fundsdeposited∗∗StrategyY∗∗has∗∗1000\*\* funds deposited \*\*Strategy Y\*\* has \*\*1000∗∗fundsdeposited∗∗StrategyY∗∗has∗∗1000** funds deposited This vault's risk score would be calculated as follows: ( (Strategy X risk) * 5000 + (Strategy Y risk) * 1000)÷6000 Overall Risk Score Proposal[​](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#overall-risk-score-proposal "Direct link to Overall Risk Score Proposal") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Risks on some projects may have more relevance than others, so before calculating the overall score we first define the weight for the context we want to apply the framework on, and then we do a weighted average between all risk dimensions and risk profiles: **Risk Profile** = Weighted table of which risk dimension is more important given the current context **Risk Score** = Weighted average of all 8 dimensions using the risk profile weights A project may have many risk profiles, so for each profile the score is calculated and the final list that remains is then used with medians to reach the final result. The projects overall risk score will be presented in 3 variables: * **high:** profile score for a risk-averse user * **low:** profile score for a risk-seeking user * **median:** profile score for a median representative user Where each one of these use the final list median: * **high:** median + 1.5 IQR * **low:** median - 1.5 IQR * **median:** the median value from the distribution Where IQR stands for the interquartile range of the distribution Here is what the final result looks like: { 'overallScore': { 'high': 3.37675585284281, 'low': 2.5463210702341135, 'median': 2.9615384615384617, },} Copy page as Markdown * [Strategy Risk Score](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#strategy-risk-score) * [Audit](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#audit) * [Code Review](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#code-review) * [Complexity](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#complexity) * [Longevity](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#longevity) * [Protocol Safety](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#protocol-safety) * [Team Knowledge](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#team-knowledge) * [Testing Score](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#testing-score) * [TVL Impact](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#tvl-impact) * [Vault Risk Score Proposal](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#vault-risk-score-proposal) * [Overall Risk Score Proposal](https://docs.yearn.fi/developers/security/risks/risk-score-legacy#overall-risk-score-proposal) --- # Yearn Risk Score Framework | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/risks/risk-score#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Risk scores are separated into two categories: strategy-related and external protocol-related. Strategy-related scores are intended to focus solely on the strategy implementation. While there may be indirect exposure to external protocols when evaluating these scores, the primary focus is on the strategy implementation itself. External protocol-related scores directly target external protocols. While the strategy-related scores indirectly reference the external protocol, the responses are not directly related to the external protocol itself. Conversely, these scores fully concentrate on the external protocol. In the case of multiple external protocols integrated with a strategy, each external protocol should be evaluated according to the risk scores, and the average will be the final score. For example, if a strategy involves depositing DAI to CurveLP and staking it in Convex, then both Convex and Curve should be evaluated accordingly. All scores are intended to be filled objectively, so the metrics are chosen as objectively as possible. However, due to the uncertainty of potential strategies and external protocols, the Yearn security team can make exceptions and assign scores that do not strictly adhere to the scoring framework. In such cases, every score type has an optional text box, which the Yearn security team fills out to justify why the score is given as it is. To assign scores, certain information is required, such as testing coverage and external protocol audits. This information should be initially provided by the strategist who writes the strategy, and then the Yearn security team will double-check whether the supplied information is correct or missing. Overall `riskLevel`[​](https://docs.yearn.fi/developers/security/risks/risk-score#overall-risklevel "Direct link to overall-risklevel") ---------------------------------------------------------------------------------------------------------------------------------------- `riskLevel` is used to define the final risk score of the strategy. The `riskLevel` for the strategy is calculated by summing all risk scores below and check the following table: * 10-20 -> 1 * 21-30 -> 2 * 31-40 -> 3 * 41+ -> 4 Yearn V3 vaults can be single-strategy or multi-strategy vaults. The risk score for the vault will be calculated as follows: * [single-strategy](https://github.com/yearn/ydaemon/blob/6797a0246ba13ac3e8b78f8b9a54b12e8500d603/data/meta/vaults/1.json#L13374) : riskScore is used to define final riskLevel * [multi-strategy](https://github.com/yearn/ydaemon/blob/6797a0246ba13ac3e8b78f8b9a54b12e8500d603/data/meta/vaults/1.json#L2606) : riskLevel is defined by the highest riskLevel value of all strategies in the vault. Typically, vaults are constructed to only allow strategies at or below a specific risk level. So the USDC-2 vault could only have -2 or -1 level strategies attached to it, while the USDC-1 vault could only have -1 strategies attached to it. Strategy Related Scores[​](https://docs.yearn.fi/developers/security/risks/risk-score#strategy-related-scores "Direct link to Strategy Related Scores") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### `review`[​](https://docs.yearn.fi/developers/security/risks/risk-score#review "Direct link to review") To have a unified reviewScore for both internal and external strategies, we assume that the strategist writer itself is either a Source of Trust (internal) or not (external). So all internal strategies always includes that 1 additional source of trust in addition. Together with all other Sources of Trust (SoTs) in this list: * internal strategist wrote the strategy * peer reviews * expert peer reviews * Yearn security team security reviews * Yearn security team recurring security review each item accounts for 1 SoT point, and any combinations of these gives the number of SoTs a strategy has and thus gives the associated review score: * 5 -> 1 SoT * 4 -> 2 SoT * 3 -> 3 SoT * 2 -> 4 SoT * 1 -> 5 SoT ### `testing`[​](https://docs.yearn.fi/developers/security/risks/risk-score#testing "Direct link to testing") The testing coverage of the strategy being evaluated. Note that there are no intermediate scores for this score. The reason is to incentivise strategists to aim for at least 80% testing coverage. * 1 -> 95%+ * 2 -> 90%+ * 3 -> 80%+ * 4 -> 70%+ * 5 -> below 70% ### `complexity`[​](https://docs.yearn.fi/developers/security/risks/risk-score#complexity "Direct link to complexity") The sLOC count of the strategy being evaluated. Note that the strategy can be complex regardless of the sLOC. In such cases, the Yearn security team will provide the justification reason for the score by text if needed. * 5 -> 600+ sLOC * 4 -> 450-600 sLOC * 3 -> 300-450 sLOC * 2 -> 150-300 sLOC * 1 -> 0-150 sLOC ### `riskExposure`[​](https://docs.yearn.fi/developers/security/risks/risk-score#riskexposure "Direct link to riskexposure") This score aims to find out how much and how often a strategy can be subject to losses. Due to the nature of evaluating such hard metrics, the Yearn security team will provide the justification reason for the score by text if needed. * 5 -> Loss of funds or non recoverable funds 30%+ (Example, Leveraging cross assets and got liquidated, adding liquidity to volatile pairs single sided) * 4 -> Loss of funds or non recoverable funds 10-30% (Example, adding liquidity to single sided curve stable pools) * 3 -> Loss of funds or non recoverable funds 3-10% (Example, Protocol specific IL exposure, very high deposit/withdrawal fees) * 2 -> Loss of funds or non recoverable funds 0-3% (Example, deposit/withdrawal fees or anything protocol specific) * 1 -> Strategy has no lossable cases, only gains, up only. ### `centralisationRisk`[​](https://docs.yearn.fi/developers/security/risks/risk-score#centralisationrisk "Direct link to centralisationrisk") The centralization score of the strategy that is being evaluated. Measures the strategy's reliance on privileged roles that are defined in strategy. * 5 -> Strategy heavily relies on off-chain management, potentially exposing user funds to rug possibilities by admins. * 4 -> Strategy frequently depends on off-chain management but has safeguards against rug possibilities by admins. * 3 -> Strategy involves privileged roles but less frequently and with less risk of rug possibilities. * 2 -> Strategy has privileged roles but they are not vital for operations and pose minimal risk of rug possibilities. * 1 -> Strategy operates without dependency on any privileged roles, ensuring full permissionlessness. ### `protocolIntegration`[​](https://docs.yearn.fi/developers/security/risks/risk-score#protocolintegration "Direct link to protocolintegration") The protocols that are integrated into the strategy that is being evaluated. For example: If the strategy's underlying asset is DAI and deposits it to Curve LP and stakes the LP in Convex, then there are 2 external protocols integrated. Note: Protocols used only in swapping or getting reference value that are not critical to how the strategy works are not added here. For example: UniswapV3Swapper is not counted as an external protocol. * 5 -> Strategy interacts with 5 external protocols * 4 -> Strategy interacts with 4 external protocols * 3 -> Strategy interacts with 3 external protocols * 2 -> Strategy interacts with 2 external protocols * 1 -> Strategy interacts with 1 external protocol External Protocol Related Scores[​](https://docs.yearn.fi/developers/security/risks/risk-score#external-protocol-related-scores "Direct link to External Protocol Related Scores") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- In case there are multiple external protocols integrated with strategy, then each external protocol should be evaluated according to the risk scores and the average will be the final score. For example: If strategy is depositing DAI to CurveLP and stakes it in Convex, then both Convex and Curve should be evaluated accordingly. ### `externalProtocolAuditing`[​](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocolauditing "Direct link to externalprotocolauditing") The public audits count of the external protocols. * 5 -> No audit conducted by a trusted firm or security researcher. * 4 -> Audit conducted by 1 trusted firm or security researcher conducted * 3 -> Audit conducted by 2 trusted firm or security researcher conducted * 2 -> Audit conducted by 3 trusted firm or security researcher conducted * 1 -> Audit conducted by 4 or more trusted firm or security researcher conducted ### `externalProtocolCentralisation`[​](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocolcentralisation "Direct link to externalprotocolcentralisation") Measurement of the centralization score of the external protocols. * 5 -> Contracts owner is an EOA or a multisig with less than 4 members `OR` Contracts are not verified `OR` Contracts owner can harm our strategy completely * 4 -> Contracts owner is a multisig but the addresses are not known/hidden `OR` Contracts owner can harm our strategy by setting parameters in external protocol contracts up to some degree * 3 -> Contracts owner is a multisig with known people but multisig threshold is very low. * 2 -> Contracts owner is a multisig with known trusted people * 1 -> Contracts owner is a multisig with known trusted people with Timelock `OR` Contracts are governanceless, immutable `OR` Contracts owner can't do any harm to our strategy by setting parameters in external protocol contracts ### `externalProtocolTvl`[​](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocoltvl "Direct link to externalprotocoltvl") The active TVL that the external protocol holds: * 5 -> TVL of $10M or less * 4 -> TVL between 10Mand10M and 10Mand40M * 3 -> TVL between 40Mand40M and 40Mand120M * 2 -> TVL between 120Mand120M and 120Mand480M * 1 -> TVL of $480M or more ### `externalProtocolLongevity`[​](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocollongevity "Direct link to externalprotocollongevity") How long the external protocol contracts in scope have been deployed alive * 5 -> Less than 6 months * 4 -> Between 6 and 12 months * 3 -> Between 12 and 18 months * 2 -> Between 18 and 24 months * 1 -> 24 months or more ### `externalProtocolType`[​](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocoltype "Direct link to externalprotocoltype") What does the external protocol do? Note that this is a rough estimate of evaluating a protocol's purpose. In some cases, the Yearn security team can score regardless of the criteria; in such cases, the reasoning will be provided in the text box as usual with all scores. * 5 -> The main expertise of the protocol lies in off-chain operations, such as RWA protocols. * 4 -> Cross-chain applications, like cross-chain bridges, cross-chain yield aggregators, and cross-chain lending/borrowing protocols * 3 -> AMM lending/borrowing protocols that are not forks of blue-chip protocols, leveraged farming protocols, as well as newly conceptualized protocols * 2 -> Slightly modified forked blue-chip protocols. * 1 -> Blue-chip protocols such as AAVE, Compound, Uniswap, Curve, Convex, and Balancer. ### `comment`[​](https://docs.yearn.fi/developers/security/risks/risk-score#comment "Direct link to comment") Comment is used by the Yearn security team to provide additional information about the score given. It can be used to justify the score given or provide additional information about the potential problems or loses. Defining risk scores for the strategy[​](https://docs.yearn.fi/developers/security/risks/risk-score#defining-risk-scores-for-the-strategy "Direct link to Defining risk scores for the strategy") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This is how the risk scores will be attached to the strategy: { "review": 2, "testing": 3, "complexity": 1, "riskExposure": 3, "protocolIntegration": 1, "centralizationRisk": 1, "externalProtocolAudit": 4, "externalProtocolCentralisation": 3, "externalProtocolTvl": 2, "externalProtocolLongevity": 1, "externalProtocolType": 4, "comment": ""} For more info on how to attach the risk scores to the strategy see [yDaemon schema](https://github.com/yearn/ydaemon/blob/main/data/meta/vaults/_schema.md#the-risk-score-object) . Example of the strategy [`yPT-uniETH Yearn Auto-Rolling Pendle PT`](https://github.com/yearn/ydaemon/blob/6797a0246ba13ac3e8b78f8b9a54b12e8500d603/data/meta/vaults/1.json#L62-L75) . Copy page as Markdown * [Overall `riskLevel`](https://docs.yearn.fi/developers/security/risks/risk-score#overall-risklevel) * [Strategy Related Scores](https://docs.yearn.fi/developers/security/risks/risk-score#strategy-related-scores) * [`review`](https://docs.yearn.fi/developers/security/risks/risk-score#review) * [`testing`](https://docs.yearn.fi/developers/security/risks/risk-score#testing) * [`complexity`](https://docs.yearn.fi/developers/security/risks/risk-score#complexity) * [`riskExposure`](https://docs.yearn.fi/developers/security/risks/risk-score#riskexposure) * [`centralisationRisk`](https://docs.yearn.fi/developers/security/risks/risk-score#centralisationrisk) * [`protocolIntegration`](https://docs.yearn.fi/developers/security/risks/risk-score#protocolintegration) * [External Protocol Related Scores](https://docs.yearn.fi/developers/security/risks/risk-score#external-protocol-related-scores) * [`externalProtocolAuditing`](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocolauditing) * [`externalProtocolCentralisation`](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocolcentralisation) * [`externalProtocolTvl`](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocoltvl) * [`externalProtocolLongevity`](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocollongevity) * [`externalProtocolType`](https://docs.yearn.fi/developers/security/risks/risk-score#externalprotocoltype) * [`comment`](https://docs.yearn.fi/developers/security/risks/risk-score#comment) * [Defining risk scores for the strategy](https://docs.yearn.fi/developers/security/risks/risk-score#defining-risk-scores-for-the-strategy) --- # Strategy Risks | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/risks/strategy-risks#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn earns income from lending, liquidity mining and trading fees. This income is often increased using leverage. Lending[​](https://docs.yearn.fi/developers/security/risks/strategy-risks#lending "Direct link to Lending") ------------------------------------------------------------------------------------------------------------ Collateralized lending is when an asset is lent in return for a yield paid by the borrower. The borrower has to lock up a greater amount of collateral than the value of the loan to incentivize the repayment of the loan. | Risk | Description | | --- | --- | | Governance | Admin key holders change lending protocol adversely, e.g. change the interest rate model in such a way that discourages borrowing | | Technological | Smart contract risk of interacting with lending protocols | | Market | Low demand for borrowing the asset causes low lending yields | | | Collateral price falls causing the lending protocol to become undercollateralized | | | Lent assets become unavailable to withdraw because the utilization ratio becomes too high | | Operational | Delays or inability to withdraw assets from the lending protocol in an emergency | Liquidity Mining[​](https://docs.yearn.fi/developers/security/risks/strategy-risks#liquidity-mining "Direct link to Liquidity Mining") --------------------------------------------------------------------------------------------------------------------------------------- Liquidity mining involves interacting with a protocol to earn the protocol’s native tokens. | Risk | Description | | --- | --- | | Governance | Admin key holders change protocol adversely, e.g. introduce penalties for withdrawals | | Technological | Smart contract risk of rewards contract | | | Smart contract risk of AMM used to exchange the liquidity mined token for the Want token | | Market | Fall in price of token being farmed | | | Liquidity of liquidity mined token on AMM is reduced or removed | | Operational Risk | Delays or inability to withdraw liquidity in an emergency | Trading Fees[​](https://docs.yearn.fi/developers/security/risks/strategy-risks#trading-fees "Direct link to Trading Fees") --------------------------------------------------------------------------------------------------------------------------- Trading fees are earned in Automated Market Makers (AMMs) by providing liquidity. | Risk | Description | | --- | --- | | Governance | Admin key holders change protocol adversely, e.g. reduce rewards paid to liquidity providers | | Technological | Smart contract risk of AMM (e.g. Curve Finance, Sushiswap or Uniswap) | | Market | Trading volumes reduce leading to lower fees | | Impermanent loss | [Impermanent loss](https://academy.binance.com/en/articles/impermanent-loss-explained)
due to the pool’s token prices changing relative to each other | | Operational Risk | Delays or inability to withdraw liquidity from the AMM in an emergency | Leverage[​](https://docs.yearn.fi/developers/security/risks/strategy-risks#leverage "Direct link to Leverage") --------------------------------------------------------------------------------------------------------------- | Risk | Description | | --- | --- | | Governance | Admin key holders change the lending protocol adversely | | Technological | Smart contract risk of lending protocol (Aave, Compound Finance, Maker, Unit protocol) | | Market | Risk that the debt is liquidated due to a price fall | | | Risk that income is lower than the cost of the flash loan | | Oracle | Incorrect price feed | | | liquidation penalties | | Operational Risk | Operational risk of managing debt positions | These factors are all taken into account by the Yearn Security Team when scoring strategies using the [Risk Score Framework](https://docs.yearn.fi/developers/security/risks/risk-score) . Copy page as Markdown * [Lending](https://docs.yearn.fi/developers/security/risks/strategy-risks#lending) * [Liquidity Mining](https://docs.yearn.fi/developers/security/risks/strategy-risks#liquidity-mining) * [Trading Fees](https://docs.yearn.fi/developers/security/risks/strategy-risks#trading-fees) * [Leverage](https://docs.yearn.fi/developers/security/risks/strategy-risks#leverage) --- # Testing | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/testing#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown It is best practice for smart contracts planned to be deployed to production to be thoroughly tested. This is especially true for smart contracts that handle user funds. A good functioning test suite is highly encouraged before sending your smart contract for security review or audits. Best Practices[​](https://docs.yearn.fi/developers/security/testing#best-practices "Direct link to Best Practices") -------------------------------------------------------------------------------------------------------------------- * Test coverage of 100% is not required, but it is encouraged. The more coverage, the more confidence in the code. * Unit tests should be written for all state-changing functions, view functions, and modifiers. Using mocks and stubs is recommended for faster testing. * Integration tests should be written for all functions interacting with other contracts and main use cases covering the user interactions with the smart contract. Should include tests for all possible failure scenarios. * It is recommended to have complete testing coverage on the failure scenarios of your smart contracts. As a rule of thumb the failure scenarios should have more tests than the happy paths. * Fuzz tests should be written for all functions that handle user funds. Fuzz tests should be run on a fork of mainnet to ensure the smart contract behaves as expected in a production environment with as many inputs and states. * Invariant tests or property tests are recommended to document and write down the important invariants your smart contract should hold in all states and validate the contract handles as expected. * A good CI pipeline is recommended to run all tests on every commit and pull request. This ensures the code is always tested and no new code is merged without passing all tests. General Resources[​](https://docs.yearn.fi/developers/security/testing#general-resources "Direct link to General Resources") ----------------------------------------------------------------------------------------------------------------------------- * [Testing Smart Contracts](https://ethereum.org/en/developers/docs/smart-contracts/testing) * [Writing Tests in Foundry](https://book.getfoundry.sh/forge/writing-tests) * [Foundry cheat codes](https://book.getfoundry.sh/forge/cheatcodes) * [Foundry Fork Testing](https://book.getfoundry.sh/forge/fork-testing) * [Testing with ape framework](https://docs.apeworx.io/ape/stable/userguides/testing.html) Fuzzing and Invariant Test Resources[​](https://docs.yearn.fi/developers/security/testing#fuzzing-and-invariant-test-resources "Direct link to Fuzzing and Invariant Test Resources") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Links: * [You’re Writing Require Statements Wrong](https://www.nascent.xyz/idea/youre-writing-require-statements-wrong) * [Invariant Testing Solidity](https://www.rareskills.io/post/invariant-testing-solidity) * [Exploiting Precision Loss via Fuzz Testing](https://dacian.me/exploiting-precision-loss-via-fuzz-testing) * [Foundry Fuzzing](https://book.getfoundry.sh/forge/fuzz-testing) * [Foundry Invariant Testing](https://book.getfoundry.sh/forge/invariant-testing) Videos: * [Intro to Fuzz and Invariant Testing](https://www.youtube.com/watch?v=juyY-CTolac&t=300s) * [Invariant Testing Workshop](https://www.youtube.com/watch?v=YAF79t_Sfiw) * [TOB Playlist on Echidna](https://www.youtube.com/watch?v=QofNQxW_K08&list=PLciHOL_J7Iwqdja9UH4ZzE8dP1IxtsBXI) (helps think about testing invariants and also fuzzing) Copy page as Markdown * [Best Practices](https://docs.yearn.fi/developers/security/testing#best-practices) * [General Resources](https://docs.yearn.fi/developers/security/testing#general-resources) * [Fuzzing and Invariant Test Resources](https://docs.yearn.fi/developers/security/testing#fuzzing-and-invariant-test-resources) --- # Vault Risks | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/security/risks/vault-risks#__docusaurus_skipToContent_fallback) Yearn’s vaults can be exposed to multiple strategies. Each additional strategy increases diversification but also increases the probability that a strategy could lead to capital losses. | Risk | Description | | --- | --- | | Governance | Multi-sig approves a strategy that leads to losses | | Technological | Smart contract risks increase with the number of strategies and protocols | | Market | Liquidation of leveraged strategies due to sudden price falls | | | Lower token prices lead to lower yields in naked liquidity mining strategies | | | High gas fees to deposit or withdraw adversely impact yield | | | High gas fees cause yield on strategies to be less than expected | | | Deposits too low to benefit from multiple strategies | | Operational | Optimal mix of strategies not maintained | | | Liquidations because debt positions were managed incorrectly | | | Yearn Security Team interprets code incorrectly in new yield farm | | Oracle | Incorrect price feed leads to liquidation in leveraged strategy | --- # Smart Contracts | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/#__docusaurus_skipToContent_fallback) This section includes documentation for the different versions and releases of the Yearn yVault smart contracts. Contracts are organized by major version and then split into current and deprecated sections with the most current version of the contracts living in the "current" folder and old releases in the "deprecated" folder. The smart contract documentation is created directly from the NatSpec documentation of the files in the corresponding github repos for each version. [🗃️ yVaults V3\ --------------\ \ 5 items](https://docs.yearn.fi/developers/smart-contracts/V3/) [🗃️ yVaults V2\ --------------\ \ 6 items](https://docs.yearn.fi/developers/smart-contracts/V2/) [📄️ Yearn Lens →\ ----------------](https://docs.yearn.fi/developers/data-services/yearn-lens#contracts) [🗃️ Deprecated\ --------------\ \ 3 items](https://docs.yearn.fi/developers/smart-contracts/deprecated/) --- # Deprecated Smart Contracts | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/deprecated/#__docusaurus_skipToContent_fallback) info These are Yearn legacy contracts. Vaults may not be updated after being deployed so live yVaults may use these contracts. If you are creating new yVaults, we highly recommend using the most recent version of the contracts. [🗃️ yVaults V3\ --------------\ \ 2 items](https://docs.yearn.fi/developers/smart-contracts/deprecated/V3/version-3.0.2/BaseStrategy) [🗃️ yVaults V2\ --------------\ \ 8 items](https://docs.yearn.fi/developers/smart-contracts/deprecated/V2/version-0.3.1/BaseStrategy) [🗃️ yVaults V1\ --------------\ \ 2 items](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces) --- # v1 yVault Interfaces | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown IStrategy[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#istrategy "Direct link to IStrategy") ----------------------------------------------------------------------------------------------------------------------------- Source code: [yearn-protocol/develop/interfaces/yearn/IStrategy.sol](https://github.com/yearn/yearn-protocol/blob/develop/interfaces/yearn/IStrategy.sol) ### function `want()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-want "Direct link to function-want") Returns the address of the unwrapped token that the Strategy takes as deposit. function want() external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | address | Address of the token the Strategy takes as deposit | ### function `deposit()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-deposit "Direct link to function-deposit") Deposits token (same as `want()` returns) into a smart contact specified by the Strategy. function deposit() external; ### function `withdraw(address)`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawaddress "Direct link to function-withdrawaddress") Dust collecting function to create additional rewards out of tokens that were incorrectly sent to the Strategy. Takes an ERC20 token address and should send the full amount of any such tokens in the Strategy to the Controller. This function should have access control enforcing the Controller only to be its allowed caller, and checks in place to ensure that the token types to withdraw are not those used by the Strategy. function withdraw(address) external; | | | type | desc | | --- | --- | --- | --- | | Input | 0 | address | ERC-20 token to be drained | ### function `withdraw(uint256)`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawuint256 "Direct link to function-withdrawuint256") Partially withdraws funds (denominated in `want()` token) from the Strategy, and should always only be sending these to the Vault. In case the Strategy implements `harvest()`, a withdrawal fee may be applied. This function should have access control enforcing the Controller only to be its allowed caller. function withdraw(uint256) external; | | | type | desc | | --- | --- | --- | --- | | Input | 0 | uint | Amount to be withdrawn | ### function `skim()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-skim "Direct link to function-skim") Used to obtain the remaining amount that can be borrowed from the lending platform. Relevant when the Strategy implements a lending platform, such as Aave. function skim() external; ### function `withdrawAll()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawall "Direct link to function-withdrawall") Withdraws the entire amount of `want()` tokens available, and should always only be sending these to the Vault. This function should have access control enforcing the Controller only to be its allowed caller. Typically used when migrating strategies. The function typically uses `withdraw()` and performs a set of sequential function calls depending on the Strategy. If the Strategy implements liquidity pools or lending platforms, then withdrawal from these platforms should be performed until the Vault’s unwrapped token is delivered back to the vault. Returns a `uint256` of the total amount withdrawn. function withdrawAll() external returns (uint256); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | uint256 | The amount withdrawn | ### function `balanceOf()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-balanceof "Direct link to function-balanceof") Returns the Strategy's current `want()` token balance. function balanceOf() external view returns (uint256); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | uint256 | Strategy's `want()` token balance | IVault[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#ivault "Direct link to IVault") -------------------------------------------------------------------------------------------------------------------- Source code: [yearn-protocol/develop/interfaces/yearn/IVault.sol](https://github.com/yearn/yearn-protocol/blob/develop/interfaces/yearn/IVault.sol) ### function `token()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-token "Direct link to function-token") Returns the unwrapped native token address that the Vault takes as deposit. function token() external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | address | Vault’s unwrapped native token address | ### function `underlying()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-underlying "Direct link to function-underlying") Returns the native underlying token address in Delegated Vaults. For example, in case of aLINK delegated vault, `underlying()` returns the address of the LINK token. // This is only implemented in Delegated Vaults.function underlying() external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | address | Delegated Vault’s underlying native token address | ### function `name()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-name "Direct link to function-name") Returns the vault’s wrapped token name as a string, e.g. “yearn Dai Stablecoin". function name() external view returns (string memory); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | string | Vault’s wrapped token name | ### function `symbol()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-symbol "Direct link to function-symbol") Returns the vault’s wrapped token symbol as a string, e.g. “yDai”. function symbol() external view returns (string memory); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | string | Vault’s wrapped token symbol | ### function `decimals()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-decimals "Direct link to function-decimals") Returns the amount of decimals for this vault’s wrapped token as a `uint8`. function decimals() external view returns (uint8); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | uint8 | No of decimals of the vault's wrapped token. | ### func `controller()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#func-controller "Direct link to func-controller") Returns the address of the Vault's Controller. function controller() external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | address | Vault’s Controller contract | ### function `governance()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-governance "Direct link to function-governance") Returns the address of the Vault’s governance contract. function governance() external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | address | Vault’s Governance contract | ### function `getPricePerFullShare()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-getpriceperfullshare "Direct link to function-getpriceperfullshare") Returns the price of the Vault’s wrapped token, denominated in the unwrapped native token. The calculation is: nativeTokenBalanceyTokenTotalSupply\\frac{nativeTokenBalance}{yTokenTotalSupply}yTokenTotalSupplynativeTokenBalance​ Where `nativeTokenBalance` is the current balance of native token (e.g. DAI) in the Vault, Controller and Strategy contracts. And `yTokenTotalSupply` is the total supply of the Vault's wrapped Token (e.g. yDAI). function getPricePerFullShare() external view returns (uint256); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | uint256 | Price of the Vault’s wrapped token denominated in the unwrapped native token | ### function `deposit()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-deposit-1 "Direct link to function-deposit-1") Deposits the specified amount of the native unwrapped token (same as `token()` returns) into the Vault. function deposit(uint256) external; | | | type | desc | | --- | --- | --- | --- | | Input | 0 | uint256 | Amount to deposit into the Vault. | ### function `depositAll()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-depositall "Direct link to function-depositall") Deposits the maximum available amount of the native unwrapped token (same as `token()` returns) into the Vault. function depositAll() external; ### function `withdraw()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdraw "Direct link to function-withdraw") Withdraws the specified amount of the native unwrapped token (same as `token()` returns) from the Vault. function withdraw(uint256) external; | | | type | desc | | --- | --- | --- | --- | | Input | 0 | uint256 | Amount to withdraw from the Vault. | ### function `withdrawAll()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawall-1 "Direct link to function-withdrawall-1") Withdraws the maximum available amount of the native unwrapped token (same as `token()` returns) from the Vault. function withdrawAll() external; IController[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#icontroller "Direct link to IController") ----------------------------------------------------------------------------------------------------------------------------------- Source code: [yearn-protocol/develop/interfaces/yearn/IController.sol](https://github.com/yearn/yearn-protocol/blob/develop/interfaces/yearn/IController.sol) ### function `withdraw()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdraw-1 "Direct link to function-withdraw-1") Calls `Strategy.withdraw()` function for the amount defined in `unit256` in the Strategy of the specified address. This function should have access control enforcing the Vault to be its only allowed caller. function withdraw(address, uint256) external; | | | type | desc | | --- | --- | --- | --- | | Input | 0 | address | Address of the Strategy to withdraw from | | Input | 1 | uint256 | Amount to withdraw | ### function `balanceOf()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-balanceof-1 "Direct link to function-balanceof-1") Returns the Strategy's balance of the specified token. function balanceOf(address) external view returns (uint256); | | | type | desc | | --- | --- | --- | --- | | Input | 0 | address | Token that is used in the Strategy | | Output | 0 | uint256 | Balance of the specified token | ### function `earn()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-earn "Direct link to function-earn") Transfers the profits earned from the yield generating activities of the Strategy to the Vault. Takes an address of a token to withdraw and an amount. function earn(address, uint256) external; | | | type | desc | | --- | --- | --- | --- | | Input | 0 | address | Token to be withdrawn to the Vault from the Strategy | | Input | 1 | uint256 | Amount to be withdrawn | ### function `want()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-want-1 "Direct link to function-want-1") Not used by the currently deployed controller. Please refer to [`Strategy.want()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-want) instead. function want(address) external view returns (address); ### function `rewards()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-rewards "Direct link to function-rewards") Returns the address of the Treasury which is where the system reward fees go. function rewards() external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Output | 0 | address | Treasury contract | ### function `vaults()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-vaults "Direct link to function-vaults") Takes a token address and returns the corresponding Vault address. function vaults(address) external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Input | 0 | address | Token to find a Vault address for | | Output | 0 | address | Vault address that is associated with the specified token | ### function `strategies()`[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-strategies "Direct link to function-strategies") Takes a token address and returns the corresponding Strategy address. function strategies(address) external view returns (address); | | | type | desc | | --- | --- | --- | --- | | Input | 0 | address | Token to find a Strategy address for | | Output | 0 | address | Strategy address that is associated with the specified token | Copy page as Markdown * [IStrategy](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#istrategy) * [function `want()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-want) * [function `deposit()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-deposit) * [function `withdraw(address)`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawaddress) * [function `withdraw(uint256)`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawuint256) * [function `skim()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-skim) * [function `withdrawAll()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawall) * [function `balanceOf()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-balanceof) * [IVault](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#ivault) * [function `token()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-token) * [function `underlying()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-underlying) * [function `name()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-name) * [function `symbol()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-symbol) * [function `decimals()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-decimals) * [func `controller()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#func-controller) * [function `governance()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-governance) * [function `getPricePerFullShare()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-getpriceperfullshare) * [function `deposit()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-deposit-1) * [function `depositAll()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-depositall) * [function `withdraw()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdraw) * [function `withdrawAll()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdrawall-1) * [IController](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#icontroller) * [function `withdraw()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-withdraw-1) * [function `balanceOf()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-balanceof-1) * [function `earn()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-earn) * [function `want()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-want-1) * [function `rewards()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-rewards) * [function `vaults()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-vaults) * [function `strategies()`](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/interfaces#function-strategies) --- # v1 Vaults Overview | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown warning This document describes the original implementation of Yearn's Vault and Governance systems. It gives a good sense of the bones of Yearn and is a place to build your intuition about how things work. These contracts are all mostly deprecated or superseded at this point, so if you are looking for information on actual implementations or to better understand the particulars of the current vaults, please review those specific docs. This document gives a _generalized and high level overview_ of how the protocol and its actors, smart contracts, and other services interact with each other. The aim is to build intuition about how Yearn products work. info All vaults are different. This is not a formal specification. Contracts and components are subject to change without notice. ![yearn-protocol](https://raw.githubusercontent.com/lehnberg/yearn-diagrams/master/yearn-protocol/yearn-protocol-v0.06.svg) All contracts are open source and available from the [/yearn-protocol](https://github.com/yearn/yearn-protocol) GitHub repo. Protocol Contracts[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#protocol-contracts "Direct link to Protocol Contracts") ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### Vaults[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#vaults "Direct link to Vaults") Example: [yWETH.sol](https://github.com/yearn/yearn-protocol/blob/develop/contracts/vaults/yWETH.sol) Vaults act as the representation of the user in the system, and is the internal customer for investments. There is one vault per deposit token, and they are agnostic to the strategies they interact with. Their primary tasks are to: * **process user deposits and withdrawals**, minting or burning LP tokens as receipts for these; * **manage disposable funds**, ensuring there is enough to satisfy the minimum amount available to handle withdrawals, and issuing withdrawal requests from strategies when more funds need to be added; and * **deposit funds into strategies**, when there is a surplus of funds in the vault above what's required to be kept at disposal. ### Controller[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#controller "Direct link to Controller") [Controller.sol](https://github.com/yearn/yearn-protocol/blob/develop/contracts/controllers/Controller.sol) The Controller act as the gatekeeping interface between vaults and strategies and oversees communication and fund flows. Deposits and withdrawals in and out of strategies flow through the `Controller`. It keeps track of the addresses for the active vaults, strategies, tokens, and strategy rewards destination, acting as a pseudo-registry that verifies the origin and destination of a transaction. The `Controller` also handles strategy migration, moving funds from an old strategy to a new one. ### Registry[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#registry "Direct link to Registry") [YRegistry.sol](https://github.com/yearn/yearn-protocol/blob/develop/contracts/registries/YRegistry.sol) The registry is a wrapper of the controller that contains additional meta-data about active addresses. Its functionality is currently being expanded. ### Strategies[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#strategies "Direct link to Strategies") Example: [CurveYCRVVoter.sol](https://github.com/yearn/yearn-protocol/blob/develop/contracts/strategies/CurveYCRVVoter.sol) Strategies are investment instruction sets, written by a `Strategist`. They are agnostic to the vaults that use them. Strategies execute step-by-step functions with the objective to generate yield. They do so by interacting with: * **other Yearn services**, such as vaults, lending, and insurance; and * **external 3rd party services**, such as Aave, Curve, Chainlink and Maker. Rewards are claimed and re-invested into the strategies, with deductions for Management fees and for compensating the `Strategist`. ### Treasury[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#treasury "Direct link to Treasury") The `Treasury` contract accumulates all the Management fees sent from the strategies. It's an intermediate contract that can convert between different tokens, currently normalizing all rewards into yCRV. It calls two functions: * `toVoters()`, sending part of the fees to the governance voters, as a reward for their participation; and * `toGovernance()`, sending part of the fees to the multi-sig to cover gas costs and other expenses. ### Governance[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#governance "Direct link to Governance") [StrategyYFIGovernance.sol](https://github.com/yearn/yearn-protocol/blob/develop/contracts/strategies/StrategyYFIGovernance.sol) Yearn Governance is a combination of the YFI staking contract to participate in Governance voting, and the 6-of-9 multi-sig that executes the decisions by the YFI holders. Governance manages the `Vaults`, `Controller`, and `Strategies` by calling functions on these contracts. #### Vault management[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#vault-management "Direct link to Vault management") * **Set governing address**, through `setGovernance()`, in order to upgrade governance contracts. * **Set controller for the vault**, through `setController()`, in order to upgrade controllers. * **Set amount of disposable funds at hand in vault**, through `setMin()`, in order to manage how large withdrawal amounts require a Vault to issue a withdrawal request to a Strategy, via the Controller. #### Controller management[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#controller-management "Direct link to Controller management") * **Set governing address**, through `setGovernance()`, in order to upgrade governance contracts. * **Add vaults** for the Controller to manage, through `setVault()`, in order to introduce new vaults. * **Set address to receive management fees**, through `setRewards()` in order to upgrade the Treasury. #### Strategy management[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#strategy-management "Direct link to Strategy management") * **Set Strategist address**, through `setStrategist()`, in order for Strategists to receive their rewards and to interact with the system. * **Add an approved Strategy**, through `approveStrategy()` on the Controller, in order for Strategists to be able to activate the Strategy in question. * **Remove an approved Strategy**, through `revokeStrategy()` on the Controller, in order to prevent Strategists from being able to activate the Strategy in question. Protocol Actors[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#protocol-actors "Direct link to Protocol Actors") ------------------------------------------------------------------------------------------------------------------------------------------------- ### User[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#user "Direct link to User") A Yearn end-user. * Deposits funds into vaults, to receive LP tokens, through calling `deposit()`; * Withdraws funds from vaults, by depositing (effectively burning) LP tokens into vaults and receiving the corresponding deposit token amount back in return, through calling `withdraw()`. If the vault does not have enough funds to handle the withdrawal, this triggers a cascading `withdraw()` call via the `Controller` to the Strategy to liquidate enough funds to process the withdrawal. ### Keeper[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#keeper "Direct link to Keeper") Automated bot that calls contract functions. It queries the Registry to get the appropriate Vault and Strategy addresses and then calls: * `earn()` on the Vault, which checks for funds available to be deposited into a Strategy and then deposits those. * `harvest()` on the Strategy, which triggers the Strategy claim any rewards, pay management and Strategist fees, and re-invest the remainder into itself again. ### Strategist[​](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#strategist "Direct link to Strategist") Creates and manages Strategies. * Interacts with the Controller to set the active strategy, through `setStrategy()`. **Only Strategies approved by Governance can be set.** * Is paid the Strategist management fee directly from the Strategy. Copy page as Markdown * [Protocol Contracts](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#protocol-contracts) * [Vaults](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#vaults) * [Controller](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#controller) * [Registry](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#registry) * [Strategies](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#strategies) * [Treasury](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#treasury) * [Governance](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#governance) * [Protocol Actors](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#protocol-actors) * [User](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#user) * [Keeper](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#keeper) * [Strategist](https://docs.yearn.fi/developers/smart-contracts/deprecated/V1/introduction#strategist) --- # V2 yVault Smart Contracts | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/V2/#__docusaurus_skipToContent_fallback) info **Current v2 yVault API version is 0.4.6** older versions will be located in the "Deprecated" Folder if they exist. [📄️ BaseStrategy.sol\ --------------------\ \ Functions](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy) [📄️ BaseFeeOracle.sol\ ---------------------\ \ Interprets the base fee from our base fee provider contract to determine if a harvest is permissable.](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle) [📄️ CommonHealthCheck.sol\ -------------------------\ \ Functions](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck) [📄️ Registry.vy\ ---------------\ \ vyper: 0.3.3](https://docs.yearn.fi/developers/smart-contracts/V2/registry) [📄️ Vault.vy\ ------------\ \ vyper: 0.3.3](https://docs.yearn.fi/developers/smart-contracts/V2/vault) [🗃️ test\ --------\ \ 2 items](https://docs.yearn.fi/developers/smart-contracts/V2/test/TestStrategy) --- # BaseFeeOracle.sol | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Interprets the base fee from our base fee provider contract to determine if a harvest is permissable. Version 0.1.0 Functions[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#functions "Direct link to Functions") --------------------------------------------------------------------------------------------------------------------- ### constructor[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#constructor "Direct link to constructor") function constructor( ) public Use this if our network hasn't implemented the base fee method yet ### isCurrentBaseFeeAcceptable[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#iscurrentbasefeeacceptable "Direct link to isCurrentBaseFeeAcceptable") function isCurrentBaseFeeAcceptable( ) public returns (bool) Returns whether we should allow harvests based on current base fee. ### setMaxAcceptableBaseFee[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setmaxacceptablebasefee "Direct link to setMaxAcceptableBaseFee") function setMaxAcceptableBaseFee( uint256 _maxAcceptableBaseFee ) external Set the maximum base fee we want for our keepers to accept. Gwei is 1e9. Throws if the caller is not authorized or gov. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#parameters "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_maxAcceptableBaseFee` | uint256 | The acceptable maximum price to pay in wei. | ### setManualBaseFeeBool[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setmanualbasefeebool "Direct link to setManualBaseFeeBool") function setManualBaseFeeBool( bool _manualBaseFeeBool ) external If we don't have a provider, then manually determine if true or not. Useful in testing as well. Throws if the caller is not authorized or gov. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#parameters-1 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_manualBaseFeeBool` | bool | Boolean to allow/block harvests if we don't have a provider set up. | ### setAuthorized[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setauthorized "Direct link to setAuthorized") function setAuthorized( address _target, bool _value ) external Controls whether a non-gov address can adjust certain params. Throws if the caller is not current governance. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#parameters-2 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_target` | address | The address to add/remove authorization for. | | `_value` | bool | Boolean to grant or revoke access. | ### setPendingGovernance[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setpendinggovernance "Direct link to setPendingGovernance") function setPendingGovernance( address _governance ) external Starts the 1st phase of the governance transfer. Throws if the caller is not current governance. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#parameters-3 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_governance` | address | The next governance address | ### acceptGovernance[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#acceptgovernance "Direct link to acceptGovernance") function acceptGovernance( ) external Completes the 2nd phase of the governance transfer. Throws if the caller is not the pending caller. Emits a `NewGovernance` event. ### setBaseFeeProvider[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setbasefeeprovider "Direct link to setBaseFeeProvider") function setBaseFeeProvider( address _baseFeeProvider ) external Sets the address used to pull the current network base fee. Throws if the caller is not current governance. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#parameters-4 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_baseFeeProvider` | address | The network's baseFeeProvider address | ### \_onlyAuthorized[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#_onlyauthorized "Direct link to _onlyAuthorized") function _onlyAuthorized( ) internal ### \_onlyGovernance[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#_onlygovernance "Direct link to _onlyGovernance") function _onlyGovernance( ) internal Events[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#events "Direct link to Events") ------------------------------------------------------------------------------------------------------------ ### NewGovernance[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#newgovernance "Direct link to NewGovernance") event NewGovernance( ) ### NewProvider[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#newprovider "Direct link to NewProvider") event NewProvider( ) ### UpdatedMaxBaseFee[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#updatedmaxbasefee "Direct link to UpdatedMaxBaseFee") event UpdatedMaxBaseFee( ) ### UpdatedManualBaseFee[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#updatedmanualbasefee "Direct link to UpdatedManualBaseFee") event UpdatedManualBaseFee( ) ### UpdatedAuthorization[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#updatedauthorization "Direct link to UpdatedAuthorization") event UpdatedAuthorization( ) Copy page as Markdown * [Functions](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#functions) * [constructor](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#constructor) * [isCurrentBaseFeeAcceptable](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#iscurrentbasefeeacceptable) * [setMaxAcceptableBaseFee](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setmaxacceptablebasefee) * [setManualBaseFeeBool](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setmanualbasefeebool) * [setAuthorized](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setauthorized) * [setPendingGovernance](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setpendinggovernance) * [acceptGovernance](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#acceptgovernance) * [setBaseFeeProvider](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#setbasefeeprovider) * [\_onlyAuthorized](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#_onlyauthorized) * [\_onlyGovernance](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#_onlygovernance) * [Events](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#events) * [NewGovernance](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#newgovernance) * [NewProvider](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#newprovider) * [UpdatedMaxBaseFee](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#updatedmaxbasefee) * [UpdatedManualBaseFee](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#updatedmanualbasefee) * [UpdatedAuthorization](https://docs.yearn.fi/developers/smart-contracts/V2/BaseFeeOracle#updatedauthorization) --- # Governance and Operations | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/governance-and-operations#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown * * * Since [YIP-61: Governance 2.0](https://gov.yearn.fi/t/yip-61-governance-2-0/10460) passed on April 25th, 2021, yearn began the transition into a **multi-DAO** structure, managed by **constrained delegation**. This approach allows protocol development not to be stiffened by bureaucracy while maintaining a sufficient level of decentralization. Multi-DAO refers to the fluid number of decentralized autonomous organizations (DAOs) that contribute to the protocol in some unique way. These independent groups consist of YFI holders, yTeams and the Multisig. * **YFI holders** vote for changes to the protocol or the governance structure * **yTeams** focus on specific aspects of the protocol or relevant operations * **Multisig** members execute or veto any on-chain decisions Token holders have an ultimate say over what yTeams exist, who is part of the Multisig, and the limitations of each group's operational control. The term 'constrained delegation' originates from token holders delegating specific powers to various groups building and managing yearn. A simplified flow of governance would look like this: 1. YFI holders create, destroy and define limitations of yTeams 2. yTeam notifies yTx of a decision 3. yTx creates a delegated transaction and send it to the Multisig 4. Multisig executes or vetos the transaction With [veYFI](https://docs.yearn.fi/contributing/governance/veyfi) launch, governance moved from using YFI to veYFI as voting power. DAO Responsibilities[​](https://docs.yearn.fi/contributing/governance/governance-and-operations#dao-responsibilities "Direct link to DAO Responsibilities") ------------------------------------------------------------------------------------------------------------------------------------------------------------ ![](https://i.imgur.com/IDysF5O.png) ### Token Holders[​](https://docs.yearn.fi/contributing/governance/governance-and-operations#token-holders "Direct link to Token Holders") [YFI](https://docs.yearn.fi/contributing/governance/yfi) token-holders duty is to create and vote for proposals that improve the protocol. | Proposals | Descriptions | | --- | --- | | Yearn Improvement Proposal (YIP) | A proposal to execute on any power delegated to YFI holders or outside the scope of enumerated powers | | Yearn Delegation Proposal (YDP) | A proposal to change where any discrete decision-making power is delegated | | Yearn Signaling Proposal (YSP) | A non-binding proposal to signal community feelings or intent on any issue | Specifically, these proposals allow token holders to make the following decisions: | Power | Description | | --- | --- | | Manage Powers | YFI holders can vote to create, assign, or revoke discrete powers to or from yTeams | | Change YFI Token Contract | Any interaction with the YFI token contract, such as to mint YFI or burn the minting keys, remains under the control of YFI holders. | | Set Fees | Set the standard fee structures in the Yearn Protocol | | Change Multisig Signers | As the Multisig will continue to hold critical powers over the near term, only YFI holders can vote to change its signers | | Ratify yTeams | Formally ratify or deratify yTeams to control which yTeams can hold delegated powers | | Change yOps Signers | As yOps has the power to change signers of other yTeams, this is a special power to change the signers of yOps | | Spend Treasury Funds | Spend funds from the treasury | | YIP Power | YFI Holders have the power to propose a YIP on anything not already delegated | ### yTeams[​](https://docs.yearn.fi/contributing/governance/governance-and-operations#yteams "Direct link to yTeams") Each yTeam has an objective and discrete powers which are defined by token holders. yTeams can be broken into membership pools, separating groups of contributors working towards similar goals as the overarching team. Additionally, one membership pool can be a part of multiple yTeams. | yTeam | Objective | Membership Pool | | --- | --- | --- | | yGuard | Protect the vaults | YFI Protocol Dev, YFI Strategists, YFI Mechanics, YFI Secret Admirers | | yBrain | Manage the strats | YFI Strategists | | yDev | Manage the protocol | YFI Protocol Dev | | yPeople | Curate the team | YFI Compensation Working Group, YFI Advisors | | yBudget | Spend money well | YFI Finances, YFI Advisors | | yFarm | Grow the treasury | YFI Secret Admirers, YFI Secret Entrance | | yTx | Write transactions | YFI Doers | | yOps | Coordinate contributors | YFI Ops | Each yTeam is assigned specific decision-making powers, defined by YIP-61: | yTeam | Power | Description | | --- | --- | --- | | yGuard | Emergency Powers | Immediately intervene in case of attack or bug to shutdown or rollback strategies or vaults | | yBrain | Manage Strategies | Activate, deactivate, tune, and maintain strategies | | yDev | Define Yearn Protocol | Decide what code is considered part of yearn and what isn’t | | yDev | Manage Protocol | Maintain and improve the Yearn Protocol | | yDev | Add Strategies | Add new strategies to vaults | | yTx | Delegate Transactions | Create delegated transactions for the multisig to sign and execute | | yPeople | Pay Team | Create, deploy, modify, or terminate Yearn compensation packages | | yBudget | Set Budgets | Create budgets for coordinape, grants, hiring, operations, or other workstreams | | yFarm | Farm Treasury | Farm with the treasury and make decisions on airdrops | | yOps | Ratify yTeam Signers | Formally approve or remove signers for each yTeam | ### Multisig[​](https://docs.yearn.fi/contributing/governance/governance-and-operations#multisig "Direct link to Multisig") Decisions issued by yTeams will be executed on-chain by the Multisig until a more decentralized system is approved for implementation. In the meantime, the [Multisig](https://docs.yearn.fi/developers/security/multisig#members) controls the following: | Power | Description | | --- | --- | | Execution Power | The power to execute decisions made by YFI holders and yTeams on-chain | | Veto Power | This power allows the Multisig to veto any decision and ideally should not be needed | | Transitionary Power | A temporary power enabling the Multisig to operate under the mandate of YIP-41 until the set of decision-making powers covers all needed transactions | Future Implementations[​](https://docs.yearn.fi/contributing/governance/governance-and-operations#future-implementations "Direct link to Future Implementations") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Yearn continuously paves the way towards an ideal balance of DAO decentralization and productivity. The current phase of efforts implements changes mainly on the social layer. In the future, we will be moving towards software implementations such as: * Multisig consensus mechanisms that allow each yTeam to have execution power * Move from proxy voting to on-chain voting * tokenize decision-making powers as NFTs * Utilize [Coordinape](https://coordinape.com/) for things like budget allocation and compensation Read More[​](https://docs.yearn.fi/contributing/governance/governance-and-operations#read-more "Direct link to Read More") --------------------------------------------------------------------------------------------------------------------------- * [Article](https://medium.com/iearn/yearn-governance-explained-proposals-yfi-token-and-execution-113ec86c3a3f) about yearn governance process and YFI token role in it Copy page as Markdown * [DAO Responsibilities](https://docs.yearn.fi/contributing/governance/governance-and-operations#dao-responsibilities) * [Token Holders](https://docs.yearn.fi/contributing/governance/governance-and-operations#token-holders) * [yTeams](https://docs.yearn.fi/contributing/governance/governance-and-operations#yteams) * [Multisig](https://docs.yearn.fi/contributing/governance/governance-and-operations#multisig) * [Future Implementations](https://docs.yearn.fi/contributing/governance/governance-and-operations#future-implementations) * [Read More](https://docs.yearn.fi/contributing/governance/governance-and-operations#read-more) --- # BaseStrategy.sol | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Functions[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#functions "Direct link to Functions") -------------------------------------------------------------------------------------------------------------------- ### apiVersion[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#apiversion "Direct link to apiVersion") function apiVersion( ) public returns (string) Used to track which version of `StrategyAPI` this Strategy implements. The Strategy's version must match the Vault's `API_VERSION`. #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `A` | | string which holds the current API version of this contract. | ### name[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#name "Direct link to name") function name( ) external returns (string) This Strategy's name. @dev You can use this field to manage the "version" of this Strategy, e.g. `StrategySomethingOrOtherV1`. However, "API Version" is managed by `apiVersion()` function above. #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-1 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `This` | | Strategy's name. | ### delegatedAssets[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#delegatedassets "Direct link to delegatedAssets") function delegatedAssets( ) external returns (uint256) The amount (priced in want) of the total assets managed by this strategy should not count towards Yearn's TVL calculations. @dev You can override this field to set it to a non-zero value if some of the assets of this Strategy is somehow delegated inside another part of Yearn's ecosystem e.g. another Vault. Note that this value must be strictly less than or equal to the amount provided by `estimatedTotalAssets()` below, as the TVL calc will be total assets minus delegated assets. Also note that this value is used to determine the total assets under management by this strategy, for the purposes of computing the management fee in `Vault` @return The amount of assets this strategy manages that should not be included in Yearn's Total Value Locked (TVL) calculation across it's ecosystem. ### \_onlyAuthorized[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyauthorized "Direct link to _onlyAuthorized") function _onlyAuthorized( ) internal ### \_onlyEmergencyAuthorized[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyemergencyauthorized "Direct link to _onlyEmergencyAuthorized") function _onlyEmergencyAuthorized( ) internal ### \_onlyStrategist[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlystrategist "Direct link to _onlyStrategist") function _onlyStrategist( ) internal ### \_onlyGovernance[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlygovernance "Direct link to _onlyGovernance") function _onlyGovernance( ) internal ### \_onlyRewarder[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyrewarder "Direct link to _onlyRewarder") function _onlyRewarder( ) internal ### \_onlyKeepers[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlykeepers "Direct link to _onlyKeepers") function _onlyKeepers( ) internal ### \_onlyVaultManagers[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyvaultmanagers "Direct link to _onlyVaultManagers") function _onlyVaultManagers( ) internal ### constructor[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#constructor "Direct link to constructor") function constructor( ) internal ### \_initialize[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_initialize "Direct link to _initialize") function _initialize( address _vault, address _strategist, address _rewards, address _keeper ) internal Initializes the Strategy, this is called only once, when the contract is deployed. `_vault` should implement `VaultAPI`. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_vault` | address | The address of the Vault responsible for this Strategy. | | `_strategist` | address | The address to assign as `strategist`. | | The strategist is able to change the reward address | | | | `_rewards` | address | The address to use for pulling rewards. | | `_keeper` | address | The address of the \_keeper.\_keeper | | can harvest and tend a strategy. | | | ### setHealthCheck[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#sethealthcheck "Direct link to setHealthCheck") function setHealthCheck( ) external ### setDoHealthCheck[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setdohealthcheck "Direct link to setDoHealthCheck") function setDoHealthCheck( ) external ### setStrategist[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setstrategist "Direct link to setStrategist") function setStrategist( address _strategist ) external Used to change `strategist`. This may only be called by governance or the existing strategist. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-1 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_strategist` | address | The new address to assign as `strategist`. | ### setKeeper[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setkeeper "Direct link to setKeeper") function setKeeper( address _keeper ) external Used to change `keeper`. `keeper` is the only address that may call `tend()` or `harvest()`, other than `governance()` or `strategist`. However, unlike `governance()` or `strategist`, `keeper` may _only_ call `tend()` and `harvest()`, and no other authorized functions, following the principle of least privilege. This may only be called by governance or the strategist. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-2 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_keeper` | address | The new address to assign as `keeper`. | ### setRewards[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setrewards "Direct link to setRewards") function setRewards( address _rewards ) external Used to change `rewards`. EOA or smart contract which has the permission to pull rewards from the vault. This may only be called by the strategist. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-3 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_rewards` | address | The address to use for pulling rewards. | ### setMinReportDelay[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setminreportdelay "Direct link to setMinReportDelay") function setMinReportDelay( uint256 _delay ) external Used to change `minReportDelay`. `minReportDelay` is the minimum number of blocks that should pass for `harvest()` to be called. For external keepers (such as the Keep3r network), this is the minimum time between jobs to wait. (see `harvestTrigger()` for more details.) This may only be called by governance or the strategist. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-4 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_delay` | uint256 | The minimum number of seconds to wait between harvests. | ### setMaxReportDelay[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setmaxreportdelay "Direct link to setMaxReportDelay") function setMaxReportDelay( uint256 _delay ) external Used to change `maxReportDelay`. `maxReportDelay` is the maximum number of blocks that should pass for `harvest()` to be called. For external keepers (such as the Keep3r network), this is the maximum time between jobs to wait. (see `harvestTrigger()` for more details.) This may only be called by governance or the strategist. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-5 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_delay` | uint256 | The maximum number of seconds to wait between harvests. | ### setCreditThreshold[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setcreditthreshold "Direct link to setCreditThreshold") function setCreditThreshold( uint256 _creditThreshold ) external Used to ensure that any significant credit a strategy has from the vault will be automatically harvested. This may only be called by governance or management. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-6 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_creditThreshold` | uint256 | The number of want tokens that will | | automatically trigger a harvest. | | | ### setForceHarvestTriggerOnce[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setforceharvesttriggeronce "Direct link to setForceHarvestTriggerOnce") function setForceHarvestTriggerOnce( bool _forceHarvestTriggerOnce ) external Used to automatically trigger a harvest by our keepers. Can be useful if gas prices are too high now, and we want to harvest later once prices have lowered. This may only be called by governance or management. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-7 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_forceHarvestTriggerOnce` | bool | Value of true tells keepers to harvest | | our strategy | | | ### setBaseFeeOracle[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setbasefeeoracle "Direct link to setBaseFeeOracle") function setBaseFeeOracle( address _baseFeeOracle ) external Used to set our baseFeeOracle, which checks the network's current base fee price to determine whether it is an optimal time to harvest or tend. This may only be called by governance or management. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-8 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_baseFeeOracle` | address | Address of our baseFeeOracle | ### setMetadataURI[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setmetadatauri "Direct link to setMetadataURI") function setMetadataURI( string _metadataURI ) external Used to change `metadataURI`. `metadataURI` is used to store the URI of the file describing the strategy. This may only be called by governance or the strategist. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-9 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_metadataURI` | string | The URI that describe the strategy. | ### governance[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#governance "Direct link to governance") function governance( ) internal returns (address) Resolve governance address from Vault contract, used to make assertions on protected functions in the Strategy. ### ethToWant[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#ethtowant "Direct link to ethToWant") function ethToWant( uint256 _amtInWei ) public returns (uint256) Provide an accurate conversion from `_amtInWei` (denominated in wei) to `want` (using the native decimal characteristics of `want`). @dev Care must be taken when working with decimals to assure that the conversion is compatible. As an example: given 1e17 wei (0.1 ETH) as input, and want is USDC (6 decimals), with USDC/ETH = 1800, this should give back 1800000000 (180 USDC) #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-10 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_amtInWei` | uint256 | The amount (in wei/1e-18 ETH) to convert to `want` | #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-2 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `The` | uint256 | amount in `want` of `_amtInEth` converted to `want` | ### estimatedTotalAssets[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#estimatedtotalassets "Direct link to estimatedTotalAssets") function estimatedTotalAssets( ) public returns (uint256) Provide an accurate estimate for the total amount of assets (principle + return) that this Strategy is currently managing, denominated in terms of `want` tokens. This total should be "realizable" e.g. the total value that could _actually_ be obtained from this Strategy if it were to divest its entire position based on current on-chain conditions. @dev Care must be taken in using this function, since it relies on external systems, which could be manipulated by the attacker to give an inflated (or reduced) value produced by this function, based on current on-chain conditions (e.g. this function is possible to influence through flashloan attacks, oracle manipulations, or other DeFi attack mechanisms). It is up to governance to use this function to correctly order this Strategy relative to its peers in the withdrawal queue to minimize losses for the Vault based on sudden withdrawals. This value should be higher than the total debt of the Strategy and higher than its expected value to be "safe". #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-3 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `The` | | estimated total assets in this Strategy. | ### isActive[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#isactive "Direct link to isActive") function isActive( ) public returns (bool) ### prepareReturn[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#preparereturn "Direct link to prepareReturn") function prepareReturn( ) internal returns (uint256 _profit, uint256 _loss, uint256 _debtPayment) Perform any Strategy unwinding or other calls necessary to capture the "free return" this Strategy has generated since the last time its core position(s) were adjusted. Examples include unwrapping extra rewards. This call is only used during "normal operation" of a Strategy, and should be optimized to minimize losses as much as possible. This method returns any realized profits and/or realized losses incurred, and should return the total amounts of profits/losses/debt payments (in `want` tokens) for the Vault's accounting (e.g. `want.balanceOf(this) >= _debtPayment + _profit`). `_debtOutstanding` will be 0 if the Strategy is not past the configured debt limit, otherwise its value will be how far past the debt limit the Strategy is. The Strategy's debt limit is configured in the Vault. NOTE: `_debtPayment` should be less than or equal to `_debtOutstanding`. It is okay for it to be less than `_debtOutstanding`, as that should only used as a guide for how much is left to pay back. Payments should be made to minimize loss from slippage, debt, withdrawal fees, etc. See `vault.debtOutstanding()`. ### adjustPosition[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#adjustposition "Direct link to adjustPosition") function adjustPosition( ) internal Perform any adjustments to the core position(s) of this Strategy given what change the Vault made in the "investable capital" available to the Strategy. Note that all "free capital" in the Strategy after the report was made is available for reinvestment. Also note that this number could be 0, and you should handle that scenario accordingly. See comments regarding `_debtOutstanding` on `prepareReturn()`. ### liquidatePosition[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#liquidateposition "Direct link to liquidatePosition") function liquidatePosition( ) internal returns (uint256 _liquidatedAmount, uint256 _loss) Liquidate up to `_amountNeeded` of `want` of this strategy's positions, irregardless of slippage. Any excess will be re-invested with `adjustPosition()`. This function should return the amount of `want` tokens made available by the liquidation. If there is a difference between them, `_loss` indicates whether the difference is due to a realized loss, or if there is some other sitution at play (e.g. locked funds) where the amount made available is less than what is needed. NOTE: The invariant `_liquidatedAmount + _loss <= _amountNeeded` should always be maintained ### liquidateAllPositions[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#liquidateallpositions "Direct link to liquidateAllPositions") function liquidateAllPositions( ) internal returns (uint256 _amountFreed) Liquidate everything and returns the amount that got freed. This function is used during emergency exit instead of `prepareReturn()` to liquidate all of the Strategy's positions back to the Vault. ### tendTrigger[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#tendtrigger "Direct link to tendTrigger") function tendTrigger( uint256 callCostInWei ) public returns (bool) Provide a signal to the keeper that `tend()` should be called. The keeper will provide the estimated gas cost that they would pay to call `tend()`, and this function should use that estimate to make a determination if calling it is "worth it" for the keeper. This is not the only consideration into issuing this trigger, for example if the position would be negatively affected if `tend()` is not called shortly, then this can return `true` even if the keeper might be "at a loss" (keepers are always reimbursed by Yearn). @dev `callCostInWei` must be priced in terms of `wei` (1e-18 ETH). This call and `harvestTrigger()` should never return `true` at the same time. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-11 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `callCostInWei` | uint256 | The keeper's estimated gas cost to call `tend()` (in wei). | #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-4 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `if` | uint256 | `tend()` should be called, `false` otherwise. | ### tend[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#tend "Direct link to tend") function tend( ) external Adjust the Strategy's position. The purpose of tending isn't to realize gains, but to maximize yield by reinvesting any returns. See comments on `adjustPosition()`. This may only be called by governance, the strategist, or the keeper. ### harvestTrigger[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#harvesttrigger "Direct link to harvestTrigger") function harvestTrigger( uint256 callCostInWei ) public returns (bool) Provide a signal to the keeper that `harvest()` should be called. The keeper will provide the estimated gas cost that they would pay to call `harvest()`, and this function should use that estimate to make a determination if calling it is "worth it" for the keeper. This is not the only consideration into issuing this trigger, for example if the position would be negatively affected if `harvest()` is not called shortly, then this can return `true` even if the keeper might be "at a loss" (keepers are always reimbursed by Yearn). @dev `callCostInWei` must be priced in terms of `wei` (1e-18 ETH). This call and `tendTrigger` should never return `true` at the same time. See `maxReportDelay`, `creditThreshold` to adjust the strategist-controlled parameters that will influence whether this call returns `true` or not. These parameters will be used in conjunction with the parameters reported to the Vault (see `params`) to determine if calling `harvest()` is merited. This trigger also checks the network's base fee to avoid harvesting during times of high network congestion. Consider use of super.harvestTrigger() in any override to build on top of this logic instead of replacing it. For example, if using `minReportDelay`. It is expected that an external system will check `harvestTrigger()`. This could be a script run off a desktop or cloud bot (e.g. [https://github.com/iearn-finance/yearn-vaults/blob/main/scripts/keep.py](https://github.com/iearn-finance/yearn-vaults/blob/main/scripts/keep.py) ), or via an integration with the Keep3r network (e.g. [https://github.com/Macarse/GenericKeep3rV2/blob/master/contracts/keep3r/GenericKeep3rV2.sol](https://github.com/Macarse/GenericKeep3rV2/blob/master/contracts/keep3r/GenericKeep3rV2.sol) ). #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-12 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `callCostInWei` | uint256 | The keeper's estimated gas cost to call `harvest()` (in wei). | #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-5 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `if` | uint256 | `harvest()` should be called, `false` otherwise. | ### isBaseFeeAcceptable[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#isbasefeeacceptable "Direct link to isBaseFeeAcceptable") function isBaseFeeAcceptable( ) public returns (bool) Check if the current network base fee is below our external target. If not, then harvestTrigger will return false. #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-6 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `if` | | `harvest()` should be allowed, `false` otherwise. | ### harvest[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#harvest "Direct link to harvest") function harvest( ) external Harvests the Strategy, recognizing any profits or losses and adjusting the Strategy's position. In the rare case the Strategy is in emergency shutdown, this will exit the Strategy's position. This may only be called by governance, the strategist, or the keeper. @dev When `harvest()` is called, the Strategy reports to the Vault (via `vault.report()`), so in some cases `harvest()` must be called in order to take in profits, to borrow newly available funds from the Vault, or otherwise adjust its position. In other cases `harvest()` must be called to report to the Vault on the Strategy's position, especially if any losses have occurred. ### withdraw[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#withdraw "Direct link to withdraw") function withdraw( uint256 _amountNeeded ) external returns (uint256 _loss) Withdraws `_amountNeeded` to `vault`. This may only be called by the Vault. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-13 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_amountNeeded` | uint256 | How much `want` to withdraw. | #### Return Values[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#return-values-7 "Direct link to Return Values") | Name | Type | Description | | --- | --- | --- | | `_loss` | uint256 | Any realized losses | ### prepareMigration[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#preparemigration "Direct link to prepareMigration") function prepareMigration( ) internal Do anything necessary to prepare this Strategy for migration, such as transferring any reserve or LP tokens, CDPs, or other tokens or stores of value. ### migrate[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#migrate "Direct link to migrate") function migrate( address _newStrategy ) external Transfers all `want` from this Strategy to `_newStrategy`. This may only be called by the Vault. @dev The new Strategy's Vault must be the same as this Strategy's Vault. The migration process should be carefully performed to make sure all the assets are migrated to the new address, which should have never interacted with the vault before. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-14 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_newStrategy` | address | The Strategy to migrate to. | ### setEmergencyExit[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setemergencyexit "Direct link to setEmergencyExit") function setEmergencyExit( ) external Activates emergency exit. Once activated, the Strategy will exit its position upon the next harvest, depositing all funds into the Vault as quickly as is reasonable given on-chain conditions. This may only be called by governance or the strategist. @dev See `vault.setEmergencyShutdown()` and `harvest()` for further details. ### protectedTokens[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#protectedtokens "Direct link to protectedTokens") function protectedTokens( ) internal returns (address[]) Override this to add all tokens/tokenized positions this contract manages on a _persistent_ basis (e.g. not just for swapping back to want ephemerally). NOTE: Do _not_ include `want`, already included in `sweep` below. Example: function protectedTokens() internal override view returns (address[] memory) { address[] memory protected = new address[](3); protected[0] = tokenA; protected[1] = tokenB; protected[2] = tokenC; return protected; } ### sweep[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#sweep "Direct link to sweep") function sweep( address _token ) external Removes tokens from this Strategy that are not the type of tokens managed by this Strategy. This may be used in case of accidentally sending the wrong kind of token to this Strategy. Tokens will be sent to `governance()`. This will fail if an attempt is made to sweep `want`, or any tokens that are protected by this Strategy. This may only be called by governance. @dev Implement `protectedTokens()` to specify any additional tokens that should be protected from sweeping in addition to `want`. #### Parameters[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#parameters-15 "Direct link to Parameters") | Name | Type | Description | | --- | --- | --- | | `_token` | address | The token to transfer out of this vault. | Events[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#events "Direct link to Events") ----------------------------------------------------------------------------------------------------------- ### Harvested[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#harvested "Direct link to Harvested") event Harvested( ) ### UpdatedStrategist[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedstrategist "Direct link to UpdatedStrategist") event UpdatedStrategist( ) ### UpdatedKeeper[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedkeeper "Direct link to UpdatedKeeper") event UpdatedKeeper( ) ### UpdatedRewards[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedrewards "Direct link to UpdatedRewards") event UpdatedRewards( ) ### UpdatedMinReportDelay[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedminreportdelay "Direct link to UpdatedMinReportDelay") event UpdatedMinReportDelay( ) ### UpdatedMaxReportDelay[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedmaxreportdelay "Direct link to UpdatedMaxReportDelay") event UpdatedMaxReportDelay( ) ### UpdatedBaseFeeOracle[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedbasefeeoracle "Direct link to UpdatedBaseFeeOracle") event UpdatedBaseFeeOracle( ) ### UpdatedCreditThreshold[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedcreditthreshold "Direct link to UpdatedCreditThreshold") event UpdatedCreditThreshold( ) ### ForcedHarvestTrigger[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#forcedharvesttrigger "Direct link to ForcedHarvestTrigger") event ForcedHarvestTrigger( ) ### EmergencyExitEnabled[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#emergencyexitenabled "Direct link to EmergencyExitEnabled") event EmergencyExitEnabled( ) ### UpdatedMetadataURI[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedmetadatauri "Direct link to UpdatedMetadataURI") event UpdatedMetadataURI( ) ### SetHealthCheck[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#sethealthcheck-1 "Direct link to SetHealthCheck") event SetHealthCheck( ) ### SetDoHealthCheck[​](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setdohealthcheck-1 "Direct link to SetDoHealthCheck") event SetDoHealthCheck( ) Copy page as Markdown * [Functions](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#functions) * [apiVersion](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#apiversion) * [name](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#name) * [delegatedAssets](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#delegatedassets) * [\_onlyAuthorized](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyauthorized) * [\_onlyEmergencyAuthorized](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyemergencyauthorized) * [\_onlyStrategist](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlystrategist) * [\_onlyGovernance](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlygovernance) * [\_onlyRewarder](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyrewarder) * [\_onlyKeepers](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlykeepers) * [\_onlyVaultManagers](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_onlyvaultmanagers) * [constructor](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#constructor) * [\_initialize](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#_initialize) * [setHealthCheck](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#sethealthcheck) * [setDoHealthCheck](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setdohealthcheck) * [setStrategist](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setstrategist) * [setKeeper](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setkeeper) * [setRewards](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setrewards) * [setMinReportDelay](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setminreportdelay) * [setMaxReportDelay](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setmaxreportdelay) * [setCreditThreshold](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setcreditthreshold) * [setForceHarvestTriggerOnce](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setforceharvesttriggeronce) * [setBaseFeeOracle](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setbasefeeoracle) * [setMetadataURI](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setmetadatauri) * [governance](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#governance) * [ethToWant](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#ethtowant) * [estimatedTotalAssets](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#estimatedtotalassets) * [isActive](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#isactive) * [prepareReturn](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#preparereturn) * [adjustPosition](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#adjustposition) * [liquidatePosition](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#liquidateposition) * [liquidateAllPositions](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#liquidateallpositions) * [tendTrigger](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#tendtrigger) * [tend](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#tend) * [harvestTrigger](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#harvesttrigger) * [isBaseFeeAcceptable](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#isbasefeeacceptable) * [harvest](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#harvest) * [withdraw](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#withdraw) * [prepareMigration](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#preparemigration) * [migrate](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#migrate) * [setEmergencyExit](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setemergencyexit) * [protectedTokens](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#protectedtokens) * [sweep](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#sweep) * [Events](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#events) * [Harvested](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#harvested) * [UpdatedStrategist](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedstrategist) * [UpdatedKeeper](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedkeeper) * [UpdatedRewards](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedrewards) * [UpdatedMinReportDelay](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedminreportdelay) * [UpdatedMaxReportDelay](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedmaxreportdelay) * [UpdatedBaseFeeOracle](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedbasefeeoracle) * [UpdatedCreditThreshold](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedcreditthreshold) * [ForcedHarvestTrigger](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#forcedharvesttrigger) * [EmergencyExitEnabled](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#emergencyexitenabled) * [UpdatedMetadataURI](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#updatedmetadatauri) * [SetHealthCheck](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#sethealthcheck-1) * [SetDoHealthCheck](https://docs.yearn.fi/developers/smart-contracts/V2/BaseStrategy#setdohealthcheck-1) --- # yEarn | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yearn#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Earn is a lending aggregator that strives to attain the highest yield for supported coins (DAI, USDC, USDT, TUSD, sUSD, or wBTC) at all times. It does this by programmatically shifting these coins between several lending protocols ([AAVE](https://aave.com/) , [dYdX](https://dydx.exchange/) , and [Compound](https://compound.finance/) ) operating on the Ethereum blockchain. For example, a user can deposit DAI into the Earn yDAI pool. Yearn will programmatically deposit DAI into one of three lending protocols (AAVE, dYdX, Compound). Yearn will withdraw from one protocol and deposit to another automatically as interest rates change between protocols. As a result, the user will receive the optimal interest rate on his or her DAI deposit at all times. ![](https://i.imgur.com/jLlg0WU.png) Earn is a key component of the yPool at Curve.Finance, which represents a basket of four yTokens: yDai, yUSDC, yUSDT, and yTUSD. The underlying four yTokens are constantly optimizing to yield the highest available interest in the market (described above), while also serving as a liquidity pool for these tokens. Users can interact with this pool to swap between any of the four tokens with little slippage. Therefore, liquidity providers of the yPool receive the optimized interest rates on their stablecoin deposits and trading fees from users swapping tokens from the pool. As of September 2020, the YTD annualized return for yPool liquidity providers is estimated to be 9.11%. Since yDAI+yUSD+yUSDT+yTUSD is a continuously accruing interest-bearing token, its price is above $1 and is constantly increasing. ![](https://i.imgur.com/U4KcWyE.png) Resources[​](https://docs.yearn.fi/developers/deprecated-products/yearn#resources "Direct link to Resources") -------------------------------------------------------------------------------------------------------------- * [Earn Homepage](https://v1.yearn.fi/earn) Copy page as Markdown * [Resources](https://docs.yearn.fi/developers/deprecated-products/yearn#resources) --- # yGift | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/ygift#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Brighten someone's day by sending a virtual gift. yGift is an NFT (Non-Fungible Token) that can be used to reward someone for their work, or to simply share some love. How to send a yGift[​](https://docs.yearn.fi/developers/deprecated-products/ygift#how-to-send-a-ygift "Direct link to How to send a yGift") -------------------------------------------------------------------------------------------------------------------------------------------- Anyone can create and send a yGift. It is possible to add an image or mp4 video, a nice message and even a monetary reward: 1. Access [yGift](https://ygift.to/) website and click on "**create gift**" 2. Add an image or mp4 video that means something to you both, then upload it to IPFS ![](https://i.imgur.com/DtrbCtH.png) 4. Add a receiver **ETH or ENS addresses**. Make sure it is the correct Ethereum wallet address, or the yGift will be lost 5. In case you want to add funds to your yGift, choose the token and amount. **Adding funds is optional** 6. Choose a name and write a nice message for your yGift 7. **Locking period**: Optionally set a period of days to lock tokens added to the yGift when you create it. You may send the yGift immediately and although it will be available to the recipient, **the tokens will be locked until this period ends** 8. **Vesting period**: Optionally set a period of days for the tokens to vest. If a locking period has been set, tokens will start vesting immediately after unlocking. Tokens will **vest linearly** until all become available after this period of days expires. ![](https://i.imgur.com/F9iUgTm.png) How to Tip a yGift[​](https://docs.yearn.fi/developers/deprecated-products/ygift#how-to-tip-a-ygift "Direct link to How to Tip a yGift") ----------------------------------------------------------------------------------------------------------------------------------------- After a yGift has been sent, people can add more funds to it by tipping it! Are you feeling generous? Tip contributors gift and share some love! 1. Access the page of the yGift you want to tip; 2. Click on "tip". Set amount and write a nice message ![](https://i.imgur.com/7crWB2h.png) You can only tip a yGift on the **previously chosen token**. If the yGift was minted with yUSD being the token (even if initial amount was set to 0), then the tips have to be in yUSD. Tips are always **immediately available** and not subject to locking or vesting. Collecting your yGift funds[​](https://docs.yearn.fi/developers/deprecated-products/ygift#collecting-your-ygift-funds "Direct link to Collecting your yGift funds") -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Received a yGift? Congratulations! If the gift contains a non-zero "Gift Amount" you can collect your unlocked funds. Just click on "Collect" on the top right corner of your gift. ![](https://i.imgur.com/ok83Onu.png) Contribute![​](https://docs.yearn.fi/developers/deprecated-products/ygift#contribute "Direct link to Contribute!") ------------------------------------------------------------------------------------------------------------------- yGift is a Yearn project built by the community, for the community! Want to be part of it? Check out [yGift GitHub](https://github.com/yearn/ygift) and share your ideas! Copy page as Markdown * [How to send a yGift](https://docs.yearn.fi/developers/deprecated-products/ygift#how-to-send-a-ygift) * [How to Tip a yGift](https://docs.yearn.fi/developers/deprecated-products/ygift#how-to-tip-a-ygift) * [Collecting your yGift funds](https://docs.yearn.fi/developers/deprecated-products/ygift#collecting-your-ygift-funds) * [Contribute!](https://docs.yearn.fi/developers/deprecated-products/ygift#contribute) --- # yETH | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/overview#__docusaurus_skipToContent_fallback) ![image](https://docs.yearn.fi/assets/images/yeth-banner3-7b57caf92c3f227d3f1ff04b9b063547.png) yETH is a user-governed liquidity pool token consisting of various Ethereum Liquid Staking Derivatives (LSTs). The yETH protocol is an Automated Market Maker (AMM) for LSTs. Each LST in the yETH pool is priced according to the amount of [beacon chain](https://ethereum.org/en/upgrades/beacon-chain/) ETH it represents. This lets users deposit their LSTs into the pool and receive yETH tokens pegged 1:1 with beacon chain ETH. Users can also stake their yETH tokens to mint st-yETH, accrue yield, and participate in yETH governance. This AMM model, combined with the governance and incentive mechanisms of the yETH protocol, aims to provide an optimal risk-adjusted yield for ETH staking by dynamically adjusting the weights of the LSTs in the pool. It also offers users flexibility with single-sided deposits and withdrawals, and maintains the pool's balance and diversification through a weight management system. The yETH protocol is governed by its users who can vote to adjust the weights of the LSTs in the pool, helping to maximize yield and mitigate risks associated with individual LSTs. All yields generated by yETH go to Staked yETH (st-yETH) holders, making yETH an ideal token for Liquidity Providing in stableswap pools like those on Curve. To acquire yETH, users can mint yETH by depositing LSTs or swap against the yETH/ETH Curve pool. Want to dive into the details? check out the Developer Docs: [yETH Developer Docs](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-overview) s [Frequently Asked Questions](https://docs.yearn.fi/developers/deprecated-products/yPools/yETH/yeth-faq) [GitHub Repo](https://github.com/yearn/yETH) --- # yPools | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ![image](https://docs.yearn.fi/assets/images/ypools-banner3-bc72c42e29f88ea458d5dd7f2be25c14.png) yPools are user-governed baskets of similar assets, typically liquid staking tokens(LSTs). They serve as both a re-balancing index and liquidity pool (AMM) of the underlying tokens. This AMM model, combined with governance and incentive mechanisms, aims to provide an optimal risk-adjusted yield by dynamically adjusting the weights of the LST tokens in the pool. Users can stake their yPool tokens to mint st-yTokens, accrue yield, and later unstake st-yTokens to receive yPool tokens back according to their earnings. Only stakers receive yield and slashings from the underlying yield sources and earn incentives if they participate and vote in their respective yPool's governance process. Governance at a Glance[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#governance-at-a-glance "Direct link to Governance at a Glance") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- yPools are governed by their depositors, who stake their yPool tokens for governance power. Once staked, yPool token holders can set pool parameters, weights as well as vote on whitelisted pool assets. The governance process follows a 4 week cadence of _epochs_ where the first 3 weeks are reserved for proposals for new LSTs to be added to the pool and a final week where proposals and pool weights are voted on. ![Yearn Logo](https://docs.yearn.fi/img/logo.svg) ##### Live Governance Info Fetching contract data... Definitions[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#definitions "Direct link to Definitions") ------------------------------------------------------------------------------------------------------------------------------------- * **yToken**: A token received when depositing an LST into its corresponding yPool. (e.g. yETH) * **st-yToken**: A token received when staking a yToken. (e.g. st-yETH) Overview[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#overview "Direct link to Overview") ---------------------------------------------------------------------------------------------------------------------------- yPools are user-governed liquidity pool tokens consisting of various like-kind Liquid Staking Derivatives (LSTs). The yPools protocol is an Automated Market Maker (AMM) for LSTs. Each LST in the pool is priced according to the amount of underlying assets it represents. This lets users deposit their LSTs into the pool and receive yPool tokens pegged 1:1 with the underlying. Users can also stake their yPool tokens to mint st-yTokens, accrue yield, and participate in their respective yToken governance. This AMM model, combined with the governance and incentive mechanisms of the yPools protocol, aims to provide an optimal risk-adjusted yield for LST staking by dynamically adjusting the weights of the LSTs in the pool. It also offers users flexibility with single-sided deposits and withdrawals, and maintains the pool's balance and diversification through a weight management system. Each yPool is governed by its users who can vote to adjust the weights of the LSTs in the pool, helping to maximize yield and mitigate risks associated with individual LSTs. All yields generated by a yPool go to the Staked yPool token holders, making yTokens an ideal token for Liquidity Providing in stableswap pools like those on Curve. To acquire a yToken, users can mint it by depositing LSTs or swap against the Curve pool. Staked yTokens[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#staked-ytokens "Direct link to Staked yTokens") ---------------------------------------------------------------------------------------------------------------------------------------------- Users stake their yTokens to mint staked versions (st-yToken), accrue yield, and can later unstake to receive the yToken back according to their earnings. Stakers receive all yield and slashings from the underlying yield sources and earn incentives if they participate and vote in their respective yPool governance. By bundling LSTs, yPools aims to generate the best risk-adjusted yield from LSTs. Through protocol governance, st-yToken users can readjust pool weights to maximize yield while mitigating catastrophic scenarios where one or several LSTs in the composition suffer adverse events like de-pegging or security incidents. ### st-yToken User Vote Weight[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#st-ytoken-user-vote-weight "Direct link to st-yToken User Vote Weight") Each user has an internal vote weight that increases asymptotically to the user's share count. After `t` seconds, their vote weight is `s * t / (t + t_half)` where `s` is the number of shares and `t_half` is the voting half-time. The voting half-time variable determines the time it takes until half the voting weight is reached for a staker. The user's external vote weight equals the internal vote weight at the end of the previous week. For yETH, you can find the current voting half-time on [Etherscan](https://etherscan.io/address/0x583019fF0f430721aDa9cfb4fac8F06cA104d0B4#readContract#F20) in seconds. Thus the wait to get to half of your st-yETH voting power is 60 days. Pool Weights For Each LST[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#pool-weights-for-each-lst "Direct link to Pool Weights For Each LST") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Each Liquid Staking Derivative (LST) has an assigned weight representing its proportion in the pool. The weight management system ensures that the pool remains diversified and balanced. As an LST performs well or gains popularity, its weight in the pool may increase, attracting more liquidity and providing better returns. Conversely, if an LST underperforms or faces issues, its weight may decrease, reducing its impact on the overall pool performance. This dynamic adjustment helps maintain an optimal risk-adjusted yield for yPool users. For each epoch, users can vote to adjust the weights of the LSTs in the pool. The voting process also involves a "do nothing" option, allowing the current weight distribution to remain unchanged. If a new LST is added during the voting process, it starts at 0% weight and gradually increases to 1% in the first epoch. In the subsequent epoch, they participate like all other LSTs. Example Suppose we have four LSTs: A, B, C, and D with weights 10%, 20%, 30%, and 40% respectively in epoch n. For the next epoch (n+1), C has incentives worth $100. The voting outcome for epoch n+1 is: * Do nothing: 30% * A: 7% * B: 10% * C: 43% * D: 10% Here's how the voting outcome affects the weights: 1. The "do nothing" vote is distributed to the current weight, reducing the total redistribution to 7%. 2. The incentives for voting are distributed only to those who explicitly voted for a particular LST, making the incentive system more effective. 3. If a new LST, say E, is added during the voting process, they start at 0% weight and do not fight for the 7% redistribution. They are gradually increased to 1% in the first epoch. In the next epoch, they participate like all other LSTs. Single-Sided Deposits and Withdrawals[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-deposits-and-withdrawals "Direct link to Single-Sided Deposits and Withdrawals") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Single-sided deposits and withdrawals allow users to add or remove a specific asset from the pool. This differs from balanced operations where users deposit or withdraw a proportionate amount of all assets in the pool. Single-sided operations can be more convenient but may also incur bonuses or penalties. ### Single-Sided Deposits[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-deposits "Direct link to Single-Sided Deposits") When a user makes a single-sided deposit, they add a specific amount of one asset to the pool. The system calculates the equivalent amount of yPool tokens to mint based on the current rate of the deposited asset. However, single-sided deposits can distort the balance of assets in the pool. The system applies a deposit penalty if the deposited asset's weight increases above its target weight due to the deposit. This penalty reduces the amount of yPool tokens minted for the depositor, making the deposit operation more expensive. The penalty serves as an incentive for users to maintain the balance of assets in the pool. Conversely, the system applies a deposit bonus if the deposited asset's weight is below its target weight. This bonus increases the yPool tokens minted for the depositor, making the deposit operation cheaper. The bonus serves as an incentive for users to restore the balance of assets in the pool. ### Single-Sided Withdrawals[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-withdrawals "Direct link to Single-Sided Withdrawals") Users who make a single-sided withdrawal burn a specific amount of yPool tokens to withdraw one asset from the pool. The system calculates the amount of the asset to send based on the current rate. Like single-sided deposits, single-sided withdrawals can also distort the balance of assets in the pool. If the withdrawn asset's weight decreases below its target weight due to the withdrawal, the system applies a withdrawal penalty. This penalty reduces the amount of the asset sent to the withdrawer, making the withdrawal operation more expensive. Conversely, the system applies a withdrawal bonus if the withdrawn asset's weight exceeds its target weight. This bonus increases the amount of the asset sent to the withdrawer, effectively making the withdrawal operation cheaper. Example Let's consider a pool with two assets, A and B, with a target weight of 50%. Due to market fluctuations, the current weights are 60% for A and 40% for B. * If a user deposits asset A, they will incur a deposit penalty because the deposit increases the weight of A above its target weight. The system will mint fewer yPool tokens for the depositor than the rate would suggest. * If a user deposits asset B, they will receive a deposit bonus because the deposit brings the weight of B closer to its target weight. The system will mint more yPool tokens for the depositor than the rate would suggest. * If a user withdraws asset A, they will receive a withdrawal bonus because the withdrawal brings the weight of A closer to its target weight. The system will send more asset A to the withdrawer than the rate would suggest. * If a user withdraws asset B, they will incur a withdrawal penalty because the withdrawal decreases the weight of B below its target weight. The system will send less asset B to the withdrawer than the rate would suggest. For a deeper dive into the math behind the calculation of yPool weighted stable swap check this paper: [https://github.com/yearn/yETH/blob/main/whitepaper/derivation.pdf](https://github.com/yearn/yETH/blob/main/whitepaper/derivation.pdf) Protocol Specs[​](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#protocol-specs "Direct link to Protocol Specs") ---------------------------------------------------------------------------------------------------------------------------------------------- * The yETH specification can be found in the source repo: [https://github.com/yearn/yETH/blob/main/SPECIFICATION.md](https://github.com/yearn/yETH/blob/main/SPECIFICATION.md) Copy page as Markdown * [Governance at a Glance](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#governance-at-a-glance) * [Definitions](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#definitions) * [Overview](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#overview) * [Staked yTokens](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#staked-ytokens) * [st-yToken User Vote Weight](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#st-ytoken-user-vote-weight) * [Pool Weights For Each LST](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#pool-weights-for-each-lst) * [Single-Sided Deposits and Withdrawals](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-deposits-and-withdrawals) * [Single-Sided Deposits](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-deposits) * [Single-Sided Withdrawals](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#single-sided-withdrawals) * [Protocol Specs](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-overview#protocol-specs) --- # Liquid Lockers (LLYFI) | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/liquid-lockers#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown The governance dashboards support a curated set of **liquid locker tokens** (LLYFI), such as: * `sdYFI` (StakeDAO) * `upYFI` (1UP) * `coveYFI` (Cove) You can manage them in the **veYFI / LLYFI dashboard**: [https://veyfi.yearn.fi](https://veyfi.yearn.fi/) What you can do today[​](https://docs.yearn.fi/contributing/governance/liquid-lockers#what-you-can-do-today "Direct link to What you can do today") ---------------------------------------------------------------------------------------------------------------------------------------------------- For each supported token, the dashboard provides: * **Stake**: approve → deposit into that token’s depositor contract * **Unstake**: start a **14‑day linear cooldown** and withdraw unlocked amounts over time * **Trade**: * **LLYFI → YFI** (exit): subject to an **exit fee** and limited by capacity and available YFI inventory * **YFI → LLYFI** (enter): currently fee‑free, limited by available LLYFI inventory held by the redemption contract Cooldowns and partial withdrawals[​](https://docs.yearn.fi/contributing/governance/liquid-lockers#cooldowns-and-partial-withdrawals "Direct link to Cooldowns and partial withdrawals") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- LLYFI staking uses the same cooldown semantics as stYFI: * starting an unstake begins a **14‑day linear stream** * you can withdraw whenever an unlocked portion is available * adding more to an existing cooldown resets the timer for the remaining stream (and auto‑withdraws anything currently unlocked first) Caps, inventory, and fees (trade)[​](https://docs.yearn.fi/contributing/governance/liquid-lockers#caps-inventory-and-fees-trade "Direct link to Caps, inventory, and fees (trade)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Trade availability is constrained by protocol limits: * exits (LLYFI → YFI) can be blocked by **per‑token capacity**, overall **YFI inventory**, or both * the UI previews the current exit fee and disables the action when limits are hit Price and liquidity LLYFI tokens can trade above or below their notional backing and exits may not always be available in size. Always review the preview (fee + limits) before confirming a trade. Contract addresses[​](https://docs.yearn.fi/contributing/governance/liquid-lockers#contract-addresses "Direct link to Contract addresses") ------------------------------------------------------------------------------------------------------------------------------------------- Mainnet deployment addresses: [stYFI Contract Addresses](https://docs.yearn.fi/developers/addresses/styfi-contracts) . Copy page as Markdown * [What you can do today](https://docs.yearn.fi/contributing/governance/liquid-lockers#what-you-can-do-today) * [Cooldowns and partial withdrawals](https://docs.yearn.fi/contributing/governance/liquid-lockers#cooldowns-and-partial-withdrawals) * [Caps, inventory, and fees (trade)](https://docs.yearn.fi/contributing/governance/liquid-lockers#caps-inventory-and-fees-trade) * [Contract addresses](https://docs.yearn.fi/contributing/governance/liquid-lockers#contract-addresses) --- # Proposal Repository | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/proposal-repository#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn Improvement Proposals (YIPs), Yearn Delegation Proposals (YDPs) and Yearn Signaling Proposals (YSPs) are all tools that token holders use to maintain and grow the protocol. Approved[​](https://docs.yearn.fi/contributing/governance/proposal-repository#approved "Direct link to Approved") ------------------------------------------------------------------------------------------------------------------ | Number | Title | Author | | --- | --- | --- | | [34](https://yips.yearn.fi/YIPS/yip-34) | Add Synthetix (SNX) to yVaults | [Substreight](https://github.com/substreight) | | [52](https://yips.yearn.fi/YIPS/yip-52) | Make Strategist Skin in Game Partner for Make Benefit of Glorious Brain of Yearn | [banteg](https://github.com/banteg)
, [lehnberg](https://github.com/lehnberg)
, [milkyklim](https://github.com/milkyklim) | | [65](https://snapshot.org/#/ybaby.eth/proposal/0x8f7417fa5565d9f46e16618503e8808c36d51b2a9e8217a68c632d7c090d69d9) | Evolving YFI Tokenomics (veYFI) | [0xJiji](https://gov.yearn.fi/u/0xjiji)
, [banteg](https://github.com/banteg)
, daryllautk, HAtTip3675, [onlylarping](https://gov.yearn.fi/u/onlylarping)
, [vany365](https://gov.yearn.fi/u/vany365)
, [Wot\_Is\_Goin\_On](https://gov.yearn.fi/u/wot_is_goin_on) | Implemented[​](https://docs.yearn.fi/contributing/governance/proposal-repository#implemented "Direct link to Implemented") --------------------------------------------------------------------------------------------------------------------------- | Number | Title | Author | | --- | --- | --- | | [0](https://yips.yearn.fi/YIPS/yip-0) | YIP Purpose and Guidelines | Yearn Community | | [1](https://yips.yearn.fi/YIPS/yip-1) | Minting more YFI | [Andre Cronje](https://github.com/andrecronje) | | [10](https://yips.yearn.fi/YIPS/yip-10) | Transitionary YFI Only Voting | [Rewkang](https://github.com/rewkang) | | [12](https://yips.yearn.fi/YIPS/yip-12) | Reducing the quorum for accepting proposal | [cp287](https://github.com/illlefr4u) | | [32](https://yips.yearn.fi/YIPS/yip-32) | Remove YFI burning | [Sunil Srivatsa](https://github.com/alphastorm) | | [33](https://yips.yearn.fi/YIPS/yip-33) | Add LINK to yVaults | [franklin](https://github.com/franklin501) | | [35](https://yips.yearn.fi/YIPS/yip-35) | Distribute Donations vs Purchase YFI | [Andre Cronje](https://github.com/andrecronje)
,[Klim K](https://github.com/milkyklim) | | [36](https://yips.yearn.fi/YIPS/yip-36) | System rewards as operational capital | [Andre Cronje](https://github.com/andrecronje)
, iTo, [n00b](https://github.com/jchi18)
, [Artem K](https://github.com/banteg) | | [37](https://yips.yearn.fi/YIPS/yip-37) | Participate in CRV governance and 2.5x CRV reward boost | [Andre Cronje](https://github.com/andrecronje)
, [Artem K](https://github.com/banteg) | | [38](https://yips.yearn.fi/YIPS/yip-38) | Distribute / Keep Balancer Rewards | [Klim K](https://github.com/milkyklim) | | [39](https://yips.yearn.fi/YIPS/yip-39) | Add Curve sBTC Pool LP-Tokens yVault | [uhmpeps](https://github.com/az) | | [40](https://yips.yearn.fi/YIPS/yip-40) | Replace inactive multisig signers | [cp287](https://github.com/illlefr4u)
, [Artem K](https://github.com/banteg) | | [41](https://yips.yearn.fi/YIPS/yip-41) | Temporarily Empower Multisig | [tracheopteryx](https://github.com/tracheopteryx)
, [Joe Mahon](https://github.com/Substreight)
, [franklin501](https://github.com/franklin501)
, Michael Anderson, Vance Spencer | | [44](https://yips.yearn.fi/YIPS/yip-44) | Improve YIP categories | [sam bacha](mailto:sam@freighttrust.com) | | [45](https://yips.yearn.fi/YIPS/yip-45) | Add a bounty for proposing YIPs that are implemented | [Sunil Srivatsa](https://github.com/alphastorm) | | [51](https://yips.yearn.fi/YIPS/yip-51) | Set Vault v2 Fee Structure | [banteg](https://github.com/banteg)
, [lehnberg](https://github.com/lehnberg)
, [milkyklim](https://github.com/milkyklim)
, [tracheopteryx](https://github.com/tracheopteryx) | | [54](https://yips.yearn.fi/YIPS/yip-54) | Formalize Operations Funding | [banteg](https://github.com/banteg)
, [lehnberg](https://github.com/lehnberg)
, [lex\_node](https://github.com/lex-node)
, [milkyklim](https://github.com/milkyklim)
, [tracheopteryx](https://github.com/tracheopteryx) | | [55](https://gov.yearn.fi/t/yip-55-formalize-the-yip-process/7959/7) | Formalize the YIP Process | [franklin](https://github.com/franklin501) | | [56](https://snapshot.org/#/yearn/proposal/Qmb6gBzjvgLMazSrQQGVcjutLNdkVyM2Lh6yckMzdoaHWZ) | BABY: Buyback and Build | [lex\_node](https://github.com/lex-node)
, [tracheopteryx](https://github.com/tracheopteryx)
, [Artem K](https://github.com/banteg)
, [Klim K](https://github.com/milkyklim)
, [Ryan Watkins](https://twitter.com/RyanWatkins_)
, [lehnberg](https://github.com/lehnberg) | | [57](https://snapshot.org/#/yearn/proposal/QmX8oYTSkaXSARYZn7RuQzUufW9bVVQtwJ3zxurWrquS9a) | Funding Yearn's Future | [aleks-blockchaincap](https://gov.yearn.fi/u/aleks-blockchaincap/summary)
, [Artem K](https://github.com/banteg)
, [dudesahn](https://twitter.com/dudesahn)
, [ekrenzke](https://gov.yearn.fi/u/ekrenzke)
, [lehnberg](https://github.com/lehnberg)
, [Klim K](https://github.com/milkyklim)
, [Ryan Watkins](https://twitter.com/RyanWatkins_)
, [srs-parafi](https://gov.yearn.fi/u/srs-parafi/summary)
, [tracheopteryx](https://github.com/tracheopteryx)
, [vooncer](https://gov.yearn.fi/u/vooncer/summary)
, [yfi-cent](https://gov.yearn.fi/u/yfi-cent/summary) | | [59](https://snapshot.org/#/yearn/proposal/QmdRCXH6BQpNcucoZqAtS5hQKjckE2428qiZoWjxmJXbs3) | Temporarily extend Multisig empowerment | [lehnberg](https://github.com/lehnberg) | | [60](https://snapshot.org/#/ybaby.eth/proposal/QmNqAqRKMFcoRjaRYAKCVETij6sjJ4S1293kbpYDMVvcjB) | Airdrops to Yearn Vaults | [lehnberg](https://github.com/lehnberg) | | [61](https://snapshot.org/#/ybaby.eth/proposal/QmSMyYeKrRpnA7Xn56o2NtbCUzxmhzCupL7LxMA1reXxq4) | Governance 2.0 | [tracheopteryx](https://github.com/tracheopteryx)
, [lex\_node](https://github.com/lex-node) | | [62](https://snapshot.org/#/ybaby.eth/proposal/QmddCbGYbkooZ1zp8oYnbBz6frXLRc9xbkapXcuZcdzmMF) | Change Two Multisig Signers | [tracheopteryx](https://github.com/tracheopteryx)
, [banteg](https://github.com/banteg)
, [lehnberg](https://github.com/lehnberg)
, [milkyklim](https://github.com/milkyklim) | | [63](https://snapshot.org/#/ybaby.eth/proposal/QmPK9AqeoV6v5xeuiTeFcj9Px7y87KMQ1gGhvHft2GMtqE) | Fund Builder-First Legal Activism DAO | [Andre Cronje](https://github.com/andrecronje)
, [tracheopteryx](https://github.com/tracheopteryx)
, [lex\_node](https://github.com/lex-node)
, [Judge Jowday](https://twitter.com/judge_jowday)
, [S. Brennan](https://twitter.com/SH_Brennan)
, [Birdman\_Haxxor](https://twitter.com/Birdman_Haxxor) | | [66](https://yearn.snapshot.page/#/proposal/0x804d3765e70d6e4f0f0a225222dadd396cd328595d5fd097b732b36fdf8e6af6) | Streamlining contributor compensation | [0xJiji](https://gov.yearn.fi/u/0xjiji)
+ 14 authors from the Compensation group | | [67](https://snapshot.org/#/ybaby.eth/proposal/0xd1988feec955cb93d42b63b7b4845d35da8f60859f55ec18b3d5609ecd4eb9e2) | Contribute to the Nomic Foundation | [FrancoNomic](https://gov.yearn.fi/u/franconomic/summary) | | [68](https://snapshot.org/#/ybaby.eth/proposal/0xc5386b7237f6c90359c56ac6dcb942b99a56a4de8ca60d109f4b999716148734) | Rotate multisig signers | [banteg](https://github.com/banteg) | | [69](https://snapshot.org/#/ybaby.eth/proposal/0xe4c2c990eaf4bb4a7a8031c461f5db820bae08fd7b81441d56e8cc0378c44afe) | Reduce and cap fees through yRates | [0xJiji](https://gov.yearn.fi/u/0xjiji)
, [banteg](https://github.com/banteg)
, flashfish, jiji, jmonteer, newmickymousse, saltyfacu, wavey | Rejected[​](https://docs.yearn.fi/contributing/governance/proposal-repository#rejected "Direct link to Rejected") ------------------------------------------------------------------------------------------------------------------ | Number | Title | Author | | --- | --- | --- | | [2](https://yips.yearn.fi/YIPS/yip-2) | Burn YFI for fees | [Andre Cronje](https://github.com/andrecronje) | | [5](https://yips.yearn.fi/YIPS/yip-5) | Reducing YFI weekly supply | [Damir Bandalo](https://github.com/sikiriki12) | | [8](https://yips.yearn.fi/YIPS/yip-8) | Halving YFI weekly supply the same as bitcoin | steamer.eth | | [14](https://yips.yearn.fi/YIPS/yip-14) | Yearn Rewards Reserve | [YieldBouncer](https://github.com/yieldbouncer) | | [30](https://yips.yearn.fi/YIPS/yip-30) | YFI Inflation Schedule | [Substreight](https://github.com/substreight)
, [DeltaTiger](https://github.com/deltatigernz)
, [Hannes Graah](https://github.com/Graadient)
, [Daryl lau](https://github.com/Daryllautk)
, yfi\_whale | | [31](https://yips.yearn.fi/YIPS/yip-31) | YFI Inflation Distribution | [Substreight](https://github.com/substreight)
, [DeltaTiger](https://github.com/deltatigernz)
, [Hannes Graah](https://github.com/Graadient)
, [Daryl lau](https://github.com/Daryllautk) | | [42](https://yips.yearn.fi/YIPS/yip-42) | Add RenBTC to yVaults | [Azeem](https://github.com/zu-ctrl) | | [43](https://yips.yearn.fi/YIPS/yip-43) | Improve YIP categories | [Sam Bacha](mailto:sam@freighttrust.com) | | [64](https://yips.yearn.fi/YIPS/yip-43) | Adjust fees on non-stablecoin yVaults | wavey, philbert, saltyfacu | * * * For current proposals, please visit [Snapshot](https://snapshot.org/#/ybaby.eth) Copy page as Markdown * [Approved](https://docs.yearn.fi/contributing/governance/proposal-repository#approved) * [Implemented](https://docs.yearn.fi/contributing/governance/proposal-repository#implemented) * [Rejected](https://docs.yearn.fi/contributing/governance/proposal-repository#rejected) --- # Decision-Making Processes | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/operations/decision-making#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Types of Decisions[​](https://docs.yearn.fi/contributing/operations/decision-making#types-of-decisions "Direct link to Types of Decisions") -------------------------------------------------------------------------------------------------------------------------------------------- There are two key dimensions of decision-making at yearn: on- or off-chain; gated or un-gated. * On-chain decisions are executed via transactions on the blockchain. * Off-chain decisions are executed in various ways off of the blockchain. * Gated decisions require specific permissions. * Un-gated decisions can be made by anyone, they are permissionless. Here are some examples for the four categories of decisions that emerge from this space: | | on-chain | off-chain | | --- | --- | --- | | gated | add a strategy to a vault | merge a pr | | | transfer money from the treasury | decide on a logo | | | mint YFI | add someone to telegram | | ungated | fork our protocol | submit a pr | | | execute a signed multisig tx | write a new docs page | | | create a new vault | propose a YIP | [Gov 2.0](https://gov.yearn.fi/t/yip-61-governance-2-0) clarifies who holds decision-making power for our most critical kinds of decisions: on-chain gated decisions. But what about the other kinds? Who decides how off-chain gated decisions are made? Are there any guidelines for un-gated decisions or are they totally open? The rest of this document aims to clarify these questions. Gated Decisions[​](https://docs.yearn.fi/contributing/operations/decision-making#gated-decisions "Direct link to Gated Decisions") ----------------------------------------------------------------------------------------------------------------------------------- ### On-Chain[​](https://docs.yearn.fi/contributing/operations/decision-making#on-chain "Direct link to On-Chain") All possible gated on-chain decisions are organized by Gov 2.0 into discrete and transferable objects called 'Decision-Making Powers' or just 'powers' for short. These powers are objects --- abstractions just above the specific transactions that embody the actual decisions. As we use this new system, we can decide to make these objects more or less granular. Currently YFI holders have the 'Manage Powers' decision-making power, so changes to each power is decided via YFI vote. But, YFI holders could vote to delegate the 'Manage Powers' power, or a subset of it, to a yTeam in the future. ### Off-Chain[​](https://docs.yearn.fi/contributing/operations/decision-making#off-chain "Direct link to Off-Chain") Currently gated off-chain decision-making powers are held by various members of the yearn core team and there is no overarching process defined to organize them. Here is an incomplete list of domains with off-chain gates to be organized in the future: * yearn twitter account admin * various yearn frontend admin * url ownership * github admin * docs admin * telegram group admin * discord admin * forum admin * design decisions * strategic decisions * naming & branding decisions Un-Gated Decisions[​](https://docs.yearn.fi/contributing/operations/decision-making#un-gated-decisions "Direct link to Un-Gated Decisions") -------------------------------------------------------------------------------------------------------------------------------------------- We can think about all kinds of un-gated decisions using the same organizing logic. This is the largest decision-making space at yearn, or in any organization. Every decision from how to describe your role at yearn in your twitter bio, to what kinds of jokes are appropriate in a team chat, to whether or not it's ok to get paid for external work falls into this category. As we mature, some gated processes may colonize this open space, but also the opposite is possible---breaking superfluous locks and becoming ever more permissionless. In either case, healthy, creative coordination requires shared values and unambiguous processes. In accordance with a shared desire for minimal viable structure, there is a very simple process we can use to empower each contributor to be self sovereign agents of yearn, making decisions for the benefit of yearn at their own discretion. It's called The **Advice Process**. The Advice Process[​](https://docs.yearn.fi/contributing/operations/decision-making#the-advice-process "Direct link to The Advice Process") -------------------------------------------------------------------------------------------------------------------------------------------- The advice process empowers people to make good decisions without bureaucracy. > It comes in many forms, but the essence is consistent: any person can make any decision after seeking advice from 1) everyone who will be meaningfully affected, and 2) people with expertise in the matter. > > Advice received must be taken into consideration. The point is not to create a watered-down compromise that accommodates everybody's wishes. It is about accessing collective wisdom in pursuit of a sound decision. With all the advice and perspectives the decision maker has received, they choose what they believe to be the best course of action. \[[RO Wiki](https://reinventingorganizationswiki.com/theory/decision-making/)\ > \] For anything that doesn't already have a clearly defined decision-making process, use the advice process. If you are unsure about any decision, use the advice process. Here are some examples of how to use the advice process at yearn: A Personal Opportunity[​](https://docs.yearn.fi/contributing/operations/decision-making#a-personal-opportunity "Direct link to A Personal Opportunity") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### The Decision[​](https://docs.yearn.fi/contributing/operations/decision-making#the-decision "Direct link to The Decision") * GQ asks Klim to model for them. * They will pay him and it will take roughly 10% of his time. * He thinks he wants to accept it, but since it would have an impact on the team, he has to use the advice process before deciding. ### Advice Process[​](https://docs.yearn.fi/contributing/operations/decision-making#advice-process "Direct link to Advice Process") 0. Get Input (optional) Klim talks to a few colleagues informally to get their input, they suggest he accept the offer with some limitations: he can only become a pro model for GQ as long as it doesn't cause conflict with his coworkers at yearn, and as long as GQ doesn't launch a competing yield aggregator 1. Write a Proposal Taking this advice, Klim writes up a short proposal for exactly what he wants to do: some side modeling. It is only a couple paragraphs and explains the impact it would have and the limitations he places on it. 2. Get Advice He shares the proposal in a the Yearn telegram group(s) with those who would be most impacted by his decision and asks their advice. 3. Make a Decision Most of the advice is "go for it!" but after more reflection, Klim finds he doesn't care about sharing his chiseled abs with the world, he just wants to build the future of France, so he decides to decline the offer. Klim can make any decision he wants and he does not have to take any of the advice --- the only rule is that he goes through this process before deciding. 4. Share the Decision Klim explains why he decided against side modeling to close the loop. All is well in the world. New Yearn Site[​](https://docs.yearn.fi/contributing/operations/decision-making#new-yearn-site "Direct link to New Yearn Site") -------------------------------------------------------------------------------------------------------------------------------- ### The Decision[​](https://docs.yearn.fi/contributing/operations/decision-making#the-decision-1 "Direct link to The Decision") * Daniel wants to create a new yearn-official site for baby animal content. ### Advice Process[​](https://docs.yearn.fi/contributing/operations/decision-making#advice-process-1 "Direct link to Advice Process") 1. Write a Proposal Daniel writes up his plan for yearnimals.com. Although anyone can make a new site, he wants this to be yearn-official and there isn't a process or gate for doing that with new sites, so he uses the advice process. 2. Get Advice He shares his proposal in the Yearn telegram group(s) with those who would be most impacted by his decision for advice. People don't like the idea, most tell him not to do it. 3. Make a Decision Despite the advice, he decides to go ahead and do it. 4. Share the Decision He makes the site and shares internally, and now it's yearn-official. 5. Conflict Resolution (optional) Daniel's decision causes some conflict inside yearn. There has been no process to decide what is yearn-official in the off-chain space, so Daniel had the power to use the advice process and make a decision on it. No one is questioning that, but Philbert is strongly against the new site being yearn-official so he decides to start the conflict resolution process with Daniel about this decision. During the process (described below), Daniel and Philbert talk it through and together decide to update the site to add yWaifu content, which was the main cause of Philbert's tension. And through talking, they came up with a proposal for a new gate on deciding what's yearn-official off-chain. They do the advice process on it and then implement it. The Conflict Resolution Process[​](https://docs.yearn.fi/contributing/operations/decision-making#the-conflict-resolution-process "Direct link to The Conflict Resolution Process") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you make a controversial decision, then it could cause conflict. Great, then use the conflict resolution process. > Conflict resolution is a vital piece of the system in a Teal organization. If there is no boss to act as a conflict meditator, then a new process to handle conflict is required. In a Teal organization, conflict resolution is based on peer relationships. Without this approach, the organization would find it very difficult, if not impossible, to function. \[[RO Wiki](https://reinventingorganizationswiki.com/theory/conflict-resolution/)\ > \] This process trusts in the basic goodness and wisdom of every person at yearn. It is compassionate and realistic: we all make mistakes and that's ok. What's incredible about it is how much it can empower people to act, and how much it motivates people to take responsibility for themselves and the group. When you know it's ok to make mistakes and there is a trusted and healthy process for resolving tensions and conflict, it's much easier to make decisions fluidly and get shit done. The conflict resolution process has 3 phases: 1. In the first phase, the two people sit together and try to sort it out privately. 2. If they can't find a solution agreeable to both, they nominate a colleague they both trust to act as a mediator. The mediator doesn't impose a decision. Rather he or she supports the participants in coming to their own solution. 3. If mediation fails, a panel of topic-relevant colleagues is convened. Again the panel does not impose a solution. If no resolution is found after these three phases, the two people may call in a senior contributor they both trust to the panel to add moral weight (but again, not to impose a solution). And in the exceedingly rare case that this final step be insufficient, other yearn organs may need to get involved, such as yPeople or yOps. Copy page as Markdown * [Types of Decisions](https://docs.yearn.fi/contributing/operations/decision-making#types-of-decisions) * [Gated Decisions](https://docs.yearn.fi/contributing/operations/decision-making#gated-decisions) * [On-Chain](https://docs.yearn.fi/contributing/operations/decision-making#on-chain) * [Off-Chain](https://docs.yearn.fi/contributing/operations/decision-making#off-chain) * [Un-Gated Decisions](https://docs.yearn.fi/contributing/operations/decision-making#un-gated-decisions) * [The Advice Process](https://docs.yearn.fi/contributing/operations/decision-making#the-advice-process) * [A Personal Opportunity](https://docs.yearn.fi/contributing/operations/decision-making#a-personal-opportunity) * [The Decision](https://docs.yearn.fi/contributing/operations/decision-making#the-decision) * [Advice Process](https://docs.yearn.fi/contributing/operations/decision-making#advice-process) * [New Yearn Site](https://docs.yearn.fi/contributing/operations/decision-making#new-yearn-site) * [The Decision](https://docs.yearn.fi/contributing/operations/decision-making#the-decision-1) * [Advice Process](https://docs.yearn.fi/contributing/operations/decision-making#advice-process-1) * [The Conflict Resolution Process](https://docs.yearn.fi/contributing/operations/decision-making#the-conflict-resolution-process) --- # OSC Levels | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/operations/osc-levels#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ### **O**pen **S**ource **C**ontributor Levels[​](https://docs.yearn.fi/contributing/operations/osc-levels#open-source-contributor-levels "Direct link to open-source-contributor-levels") Motivation[​](https://docs.yearn.fi/contributing/operations/osc-levels#motivation "Direct link to Motivation") --------------------------------------------------------------------------------------------------------------- On the Web Team, we lacked a framework for making decisions about who should be in linear.app, when someone should join standup, what groups do we add them to and what are our expectations, etc. When we discussed with the strategists, we found that they had similar issues in setting expectations (e.g. you don't just write a strategy then sit on a beach and collect profits, there's further to go) and understanding who was meeting those expectations. This is a set of guidelines to help all of us frame this conversation. It's expected that this will evolve over time based on things we see working really well, and also problems we run into. Anytime the team has a disagreement about when or how to bring someone in deeper, the outcome of that discussion will be updates to these guidelines. ![](https://i.imgur.com/H5AVrC8.png) Outline[​](https://docs.yearn.fi/contributing/operations/osc-levels#outline "Direct link to Outline") ------------------------------------------------------------------------------------------------------ * 𝟎 **\- Anyone** * anyone can make stuff for yearn, like the iOS app "yearnings," without any access * good candidates can go directly to level 1 or 2, but you have to be at level 2 before you can go to 3 ### OSC Levels[​](https://docs.yearn.fi/contributing/operations/osc-levels#osc-levels-1 "Direct link to OSC Levels") | OSC Level | General | Access | Trust | Commitment | Compensation | Criteria to Level Up | | --- | --- | --- | --- | --- | --- | --- | | Ⅰ: Entry | Anyone who wants to contribute can ask to join Secret Entrance and start doing stuff. | * **Yearn**: Secret Entrance

Any telegram admin can add you to a workgroup | none | occasional contribution | * 1-time grants | If they provide value, any 2 level 2 people can vouch them up to level 2. | | Ⅱ: Contributor | People are active in more workgroups | * **Yearn**: YFI Contributors, Open Linear, Notion Guest
* **Strategists**: Boarding School
* **Web**: YFI Web | Trust that they can add value | Consistent contribution | * Coordinape community
* 1-time grants | * Has demonstrated reliability over at least a month
* at least 2 Doer sponsors (can be on one team) | | Ⅲ: Trusted Contributor | Has demonstrated reliability over time, at least a month Strategists: Have an ETH mainnet strategy on production (not just in review) | * **Yearn**: YFI Secret Admirers, Private Linear, Paid Notion
* **Strategists**: YFI Strategists | * Trust that they can reliably add value
* Trust that they will respect private info | Trusted consistent contribution, they are reliable | * Coordinape community
* 1-time grants
* Team coordinapes | * Has demonstrated high integrity
* At least 3 sponsors from Doers from more than 1 team
* Agree, stand aside, block poll in Doers | | Ⅳ: Doer | Citadel & most trusted | * **Yearn**: YFI Doers Strats: YFI Strategists Core
* **Web**: YFI Web Core | Just as trusted at the Citadel | All-in | * Citadel: salary + vesting
* Others: OSC III | Commitment | Visual of Teams[​](https://docs.yearn.fi/contributing/operations/osc-levels#visual-of-teams "Direct link to Visual of Teams") ------------------------------------------------------------------------------------------------------------------------------ When you take the above and apply them to teams, the specific _implementation_ of the levels changes based upon the systems in use and processes followed by that teams, but the _spirit_ of each level is very much equivalent. Someone who's a trusted contributor on the Web team would be considered the equivalent of a trusted contributor on the Strategist team, and they'd both be welcome to the same conversations. ![](https://i.imgur.com/xibvfyM.png) ![](https://i.imgur.com/d8D70DT.png) [https://docs.google.com/presentation/d/1Zey7hr5L6ecf3gvFb8h8O4bejV9MJmKiprt0VIf5H68/edit#slide=id.gb6ef2d2049\_0\_857](https://docs.google.com/presentation/d/1Zey7hr5L6ecf3gvFb8h8O4bejV9MJmKiprt0VIf5H68/edit#slide=id.gb6ef2d2049_0_857) Transitioning Levels[​](https://docs.yearn.fi/contributing/operations/osc-levels#transitioning-levels "Direct link to Transitioning Levels") --------------------------------------------------------------------------------------------------------------------------------------------- ### To move to OSC II[​](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-osc-ii "Direct link to To move to OSC II") * At least two individual sponsors of OSC III or higher * Completed at least one issue of significant size and complexity * Or, have completed multiple issues showing a pattern of quality and thoughtfulness * It takes less time to ask the person to do the work and review their work, than it does for you to do the work yourself * Demonstration of quality work #### Questions to Ask[​](https://docs.yearn.fi/contributing/operations/osc-levels#questions-to-ask "Direct link to Questions to Ask") * Will they add value to the conversation in telegram? * Will they respect coordinape and opt-out when they're not contributing? * Is their work at least the quality level of a promising junior engineer? * Has any of their completed work caused regressions or serious bugs? * If so, do we believe they've learned from this experience? Or is this a recurring behavior? #### Who asks these questions & who makes this decision?[​](https://docs.yearn.fi/contributing/operations/osc-levels#who-asks-these-questions--who-makes-this-decision "Direct link to Who asks these questions & who makes this decision?") * The team they're contributing to (e.g. web team, strategist team) * It's not required for the team to vote on this, but they should be made aware the person's being elevated ### To move to OSC III[​](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-osc-iii "Direct link to To move to OSC III") * At least two individual sponsors from doers * They've been given privileged information and haven't leaked it * They complete 1-2 issues per week (on average) * They opt-out of coordinape when not working * They assign all their gives in coordinape every epoch (soft requirement) * They are an asset to engineering * Either contributing strong technical thinking * Or contributing quality work that frees the team up to focus on more critical items * They self-structure their work and can succeed even with minimal requirements, reaching out to the right teams as needed * **Their team trusts them** * At this point, the person is effectively being evaluated for becoming a doer * This is not a guarantee * Some people may not move past this point due to personal considerations, job circumstance, etc. * We should not promote anyone to this level we don't think _could_ be doer material #### Questions to Ask[​](https://docs.yearn.fi/contributing/operations/osc-levels#questions-to-ask-1 "Direct link to Questions to Ask") * Do they regularly participate in telegram? * Do they improve the quality of the conversation? * Could I assign an area of responsibility to this person? (e.g. fix any bugs that come into GitHub on the v2 site) * Do they follow process? * Are their tech design tickets of good quality? * Do they display exemplary attitude in peer review? (i.e. do they take feedback well?) * Do I have to structure their work or can they self-structure? * Have they come up with issues to suggest? * Do they review others work? #### Who asks these questions & makes this decision?[​](https://docs.yearn.fi/contributing/operations/osc-levels#who-asks-these-questions--makes-this-decision "Direct link to Who asks these questions & makes this decision?") * The team their contributing to (e.g. web team, strategist team) * Sponsors submit a proposal internal to the team for teammates to weigh in on / vote on * A brief summary of the person and poll are submitted to the team's core telegram * The summary should touch on 'questions to ask', above * The poll should use the following format * Agree * Stand-aside * Block * If anyone blocks, or stands aside, the issue must be cleared before the person can be brought in. 9 agreements and 1 block on a 10 person team means the person in question isn't elevated. * (It's fine to stand-aside as a 'pass' if you don't have strong feelings, just let the team know that's why you're standing aside) Additional Considerations for Strategists[​](https://docs.yearn.fi/contributing/operations/osc-levels#additional-considerations-for-strategists "Direct link to Additional Considerations for Strategists") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Strategists have multiple roles at OSC III & higher. For example, it's possible to obtain the StratOps or other higher level Strategists roles _without_ being a doer (e.g. roles above & beyond "I just write strategies", with commensurate reward). Though yearn would generally prefer to have someone in StratOps, etc. as a doer, it may not be possible for the individual, and we don't want to prevent them from being able to do so. ### To move to the StratOps or higher level Strategist role within OSC III[​](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-the-stratops-or-higher-level-strategist-role-within-osc-iii "Direct link to To move to the StratOps or higher level Strategist role within OSC III") * At least one sponsor from doers. * Some kind of selfless activities * Reviewing strategies from other people * Being active in the YFI Strategist group * Helping manage the vaults * Contributing to evolving the protocol * Vaults releases * Creating bugs, raising issues, giving feedback * Monitoring their strategy in ganache fork and doing harvests * Letting the group know when something's off * Proactively raising issues, preventing stuff from breaking * Plugging in monitoring and altering * Updating dashboards with scorecards for their strategies, making sure the thresholds are accurate and up-to-date * Monitoring underlying protocols * If you have a strategy using a protocol, you're effectively the 'account manager' for that protocol * In close communication * Understanding behavior changes, flagging to yearn team, etc. To move to Doer[​](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-doer "Direct link to To move to Doer") ------------------------------------------------------------------------------------------------------------------------------ * At least three sponsors from doers, from more than one team * Will I bleed for this person? * Do I trust them with my livelihood and my freedom? **Questions to Ask** * Have they driven significant technical scope? * Have they contributed significantly to technical design thinking? * Do they regularly file quality issues and complete tech design reviews and code reviews? * **Does the team breathe a sigh of relief at locking them in as a full-time doer?** * Have they had constructive, positive interactions with other teams? **Who asks these questions and makes this decision?** * Team submits a proposal to doers with the sponsors sign-off * Treasury says if we can afford the headcount * yTeams reviews & approves/disapproves Offboarding[​](https://docs.yearn.fi/contributing/operations/osc-levels#offboarding "Direct link to Offboarding") ------------------------------------------------------------------------------------------------------------------ **Offboarding Steps for OSC I** * None, just don't accept their PRs **Offboarding Steps for OSC II** * Ideally the conflict resolution process is followed with the individual. If they were a solid enough contributor to vouch into Coordinape, what's going on that we're now removing them? * At minimum the team should have a retro after the person is removed to discuss how they could do a better job on selecting people for vouching in. * Coordinape uses a vouching out process. Where two people are required to vouch someone into Coordinape, four people are required to vouch someone out. * Consequence * Ejection from Linear, Coordinape, YFI Contributors **Offboarding Steps for OSC III** * The conflict resolution process is followed for one-off incidents. If there's a pattern of problematic behavior, then the offboarding process is considered. * Offboarding Process * A brief summary of the person and the concerns are submitted in a poll to the team's core telegram * Outcome of this vote is whether or not the person requires a performance improvement plan * If performance improvement plan is required, someone coaches the individual and shares the performance improvement plan, including steps for the individual to take, and the expected timeline in which the team needs to see the behavior change for them to continue as part of the team. * The coach meets with this person at least weekly to discuss issues and assist in their performance improvement coaching. * If nobody's willing to coach the individual, that's a strong point of consideration - should they just be offboarded instead? * Also, if someone is still trustworthy, but their contribution is no longer reliable, should they just be dropped down to OSC II and kept as a contributor? * Once the performance improvement window has passed, a brief summary of the person and the reason for offboarding are submitted in a poll to the team's core telegram * This should include details from the performance improvement plan, did they follow it, to what degree, do we have confidence outstanding issues will be addressed, etc. * Outcome of this vote is whether or not they're ejected * Consequence * Ejection from Linear, Coordinape, Telegram, Standup, Planning, Retrospective, etc. **Offboarding Steps for doer** * Similar to steps for OSC III * Additional consequence is termination of recurring grant and rug-pull of vesting YFI Copy page as Markdown * [**O**pen **S**ource **C**ontributor Levels](https://docs.yearn.fi/contributing/operations/osc-levels#open-source-contributor-levels) * [Motivation](https://docs.yearn.fi/contributing/operations/osc-levels#motivation) * [Outline](https://docs.yearn.fi/contributing/operations/osc-levels#outline) * [OSC Levels](https://docs.yearn.fi/contributing/operations/osc-levels#osc-levels-1) * [Visual of Teams](https://docs.yearn.fi/contributing/operations/osc-levels#visual-of-teams) * [Transitioning Levels](https://docs.yearn.fi/contributing/operations/osc-levels#transitioning-levels) * [To move to OSC II](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-osc-ii) * [To move to OSC III](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-osc-iii) * [Additional Considerations for Strategists](https://docs.yearn.fi/contributing/operations/osc-levels#additional-considerations-for-strategists) * [To move to the StratOps or higher level Strategist role within OSC III](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-the-stratops-or-higher-level-strategist-role-within-osc-iii) * [To move to Doer](https://docs.yearn.fi/contributing/operations/osc-levels#to-move-to-doer) * [Offboarding](https://docs.yearn.fi/contributing/operations/osc-levels#offboarding) --- # Proposal Process | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/proposal-process#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown [veYFI](https://docs.yearn.fi/contributing/governance/veyfi) token holders control the Yearn ecosystem through off-chain proposals and votes via [Snapshot](https://snapshot.org/#/s:veyfi.eth) . Proposals that generate majority support (>50% of the vote) are implemented by a 9-member multi-signature wallet, and 6 out of 9 wallet signers must sign for a change to be implemented. The [members of the multi-signature wallet](https://docs.yearn.fi/developers/security/multisig#members) were voted in by YFI holders and are subject to change from future governance votes. Discussion[​](https://docs.yearn.fi/contributing/governance/proposal-process#discussion "Direct link to Discussion") --------------------------------------------------------------------------------------------------------------------- Discussion regarding changes in the protocol happens on a variety of platforms, such as: * [Governance Forum](https://gov.yearn.fi/) * [Discord](https://discord.gg/yearn) * [Telegram](https://t.me/yearnfinance) Getting as much feedback as possible from the various communication channels is recommended before introducing a formal proposal. The governance forum and Discord server have dedicated channels for specific topics. Proposal[​](https://docs.yearn.fi/contributing/governance/proposal-process#proposal "Direct link to Proposal") --------------------------------------------------------------------------------------------------------------- ### Types of proposals[​](https://docs.yearn.fi/contributing/governance/proposal-process#types-of-proposals "Direct link to Types of proposals") **Yearn Improvement Proposals** (YIPs) are an all-encompassing vehicle for exercising power that token holders have. After [YIP-61](https://gov.yearn.fi/t/yip-61-governance-2-0/10460) , **Yearn Delegation Proposals** (YDPs) were introduced, which allow token holders to change where any discrete decision-making power is delegated. ![](https://i.imgur.com/ZRNp2Zq.png) #### Previous and current proposals[​](https://docs.yearn.fi/contributing/governance/proposal-process#previous-and-current-proposals "Direct link to Previous and current proposals") * Previous: [Proposal Repository](https://docs.yearn.fi/contributing/governance/proposal-repository) * Current: [Snapshot](https://snapshot.org/#/ybaby.eth) #### Requirements to pass proposals[​](https://docs.yearn.fi/contributing/governance/proposal-process#requirements-to-pass-proposals "Direct link to Requirements to pass proposals") * 3 day discussion on the [forum](https://gov.yearn.fi/) * At least 50% vote 'for' the change * 1 veYFI in possession to submit to snapshot * 5 day [snapshot](https://snapshot.org/#/ybaby.eth) with over 50% passing votes ### Making a proposal[​](https://docs.yearn.fi/contributing/governance/proposal-process#making-a-proposal "Direct link to Making a proposal") Anyone can post a proposal on the forum for discussion within the community. If it's promoted to off-chain votation (via [Snapshot](https://snapshot.org/#/ybaby.eth) ), only someone holding 1 veYFI can submit it to Snapshot. If your proposal made it to off-chain votation and you don't have enough veYFI, mods will help you through this stage. The default template for proposals can be found on [GitHub](https://github.com/yearn/YIPS/blob/master/yip-X.md) + on the [forum](https://gov.yearn.fi/) , if you post under "proposals" or "discussion" it will auto-fill in the template as well. **Resources**: * [Proposal How-To](https://gov.yearn.fi/t/proposal-how-to/106) * [YIP 0: YIP Purpose and Guidelines](https://yips.yearn.fi/YIPS/yip-0) * [YIP 44: Improve YIP Categories](https://yips.yearn.fi/YIPS/yip-44) * [YIP 55: Formalize the YIP Introduction and Voting Process](https://gov.yearn.fi/t/yip-55-formalize-the-yip-process/7959) Voting[​](https://docs.yearn.fi/contributing/governance/proposal-process#voting "Direct link to Voting") --------------------------------------------------------------------------------------------------------- #### How do I vote?[​](https://docs.yearn.fi/contributing/governance/proposal-process#how-do-i-vote "Direct link to How do I vote?") * Holding [veYFI](https://docs.yearn.fi/contributing/governance/veyfi) enables you to vote on Yearn's [Snapshot](https://snapshot.org/#/ybaby.eth) page #### What’s the difference between voting for a poll on the forum and an off-chain vote?[​](https://docs.yearn.fi/contributing/governance/proposal-process#whats-the-difference-between-voting-for-a-poll-on-the-forum-and-an-off-chain-vote "Direct link to What’s the difference between voting for a poll on the forum and an off-chain vote?") * A poll gauges the sentiment of what the community is feeling on the proposal while an off-chain vote (via [Snapshot](https://snapshot.org/#/ybaby.eth) ) will be binding and will take effect if it passes. Implementation[​](https://docs.yearn.fi/contributing/governance/proposal-process#implementation "Direct link to Implementation") --------------------------------------------------------------------------------------------------------------------------------- Once a Snapshot votes have passed, changes will be implemented by Yearn's protocol or operations team and signed by the multi-sig, if necessary. Guardian Role[​](https://docs.yearn.fi/contributing/governance/proposal-process#guardian-role "Direct link to Guardian Role") ------------------------------------------------------------------------------------------------------------------------------ Per [YIP-81](https://snapshot.box/#/s:veyfi.eth/proposal/0x6f3082db2cef3e0c254e569580d063cb14130a92d0bf1729bef342a386e419f2) , the [Yearn Multisig](https://docs.yearn.fi/developers/security/multisig) (AKA yChad) serves in the Guardian role to steward and protect the Yearn Protocol and its participants. The Guardian role is defined as being able to **"nullify a proposal or governance decision but cannot make proposals"**. Copy page as Markdown * [Discussion](https://docs.yearn.fi/contributing/governance/proposal-process#discussion) * [Proposal](https://docs.yearn.fi/contributing/governance/proposal-process#proposal) * [Types of proposals](https://docs.yearn.fi/contributing/governance/proposal-process#types-of-proposals) * [Making a proposal](https://docs.yearn.fi/contributing/governance/proposal-process#making-a-proposal) * [Voting](https://docs.yearn.fi/contributing/governance/proposal-process#voting) * [Implementation](https://docs.yearn.fi/contributing/governance/proposal-process#implementation) * [Guardian Role](https://docs.yearn.fi/contributing/governance/proposal-process#guardian-role) --- # stYFI (Governance Staking) | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/styfi#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn governance staking is centered on **stYFI** and **stYFIx**: * **stYFI**: stake YFI, earn rewards, and retain direct governance rights. * **stYFIx**: a more passive option that delegates voting power (recommended if you do not want to manage governance actions directly). Where to use it[​](https://docs.yearn.fi/contributing/governance/styfi#where-to-use-it "Direct link to Where to use it") ------------------------------------------------------------------------------------------------------------------------- * **stYFI dashboard**: [https://styfi.yearn.fi](https://styfi.yearn.fi/) * **Migration + Liquid Lockers dashboard**: [https://veyfi.yearn.fi](https://veyfi.yearn.fi/) Stake (YFI → stYFI / stYFIx)[​](https://docs.yearn.fi/contributing/governance/styfi#stake-yfi--styfi--styfix "Direct link to Stake (YFI → stYFI / stYFIx)") ------------------------------------------------------------------------------------------------------------------------------------------------------------ Staking is a two-step flow: 1. **Approve** YFI for the selected staking contract. 2. **Stake** YFI to mint `stYFI` or `stYFIx`. The UI uses **exact-amount approvals** (not infinite approvals). Unstake and withdraw (14-day linear cooldown)[​](https://docs.yearn.fi/contributing/governance/styfi#unstake-and-withdraw-14-day-linear-cooldown "Direct link to Unstake and withdraw (14-day linear cooldown)") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Unstaking starts a **14-day linear cooldown**: * funds unlock linearly over time * you can withdraw the **currently unlocked** amount at any point during the stream If you add more to an active cooldown: * the cooldown timer resets for the **entire cooldown position** (existing amount + new amount) * any amount that was already withdrawable is **re-locked** (so it's best you withdraw any available amount before you start a new cooldown) Rewards (claim `yvUSDC`)[​](https://docs.yearn.fi/contributing/governance/styfi#rewards-claim-yvusdc "Direct link to rewards-claim-yvusdc") -------------------------------------------------------------------------------------------------------------------------------------------- Rewards are claimable from the stYFI dashboard and are paid in **`yvUSDC`** (a Yearn vault token). Notes: * stYFIx **does not auto-compound**. * Rewards accrue separately and still need to be claimed. If you have legacy veYFI[​](https://docs.yearn.fi/contributing/governance/styfi#if-you-have-legacy-veyfi "Direct link to If you have legacy veYFI") ---------------------------------------------------------------------------------------------------------------------------------------------------- If you held a legacy veYFI lock, you may be able to migrate it to the current system and activate a boost used by the dashboards. See: [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) . Contract addresses[​](https://docs.yearn.fi/contributing/governance/styfi#contract-addresses "Direct link to Contract addresses") ---------------------------------------------------------------------------------------------------------------------------------- Mainnet deployment addresses: [stYFI Contract Addresses](https://docs.yearn.fi/developers/addresses/styfi-contracts) . Copy page as Markdown * [Where to use it](https://docs.yearn.fi/contributing/governance/styfi#where-to-use-it) * [Stake (YFI → stYFI / stYFIx)](https://docs.yearn.fi/contributing/governance/styfi#stake-yfi--styfi--styfix) * [Unstake and withdraw (14-day linear cooldown)](https://docs.yearn.fi/contributing/governance/styfi#unstake-and-withdraw-14-day-linear-cooldown) * [Rewards (claim `yvUSDC`)](https://docs.yearn.fi/contributing/governance/styfi#rewards-claim-yvusdc) * [If you have legacy veYFI](https://docs.yearn.fi/contributing/governance/styfi#if-you-have-legacy-veyfi) * [Contract addresses](https://docs.yearn.fi/contributing/governance/styfi#contract-addresses) --- # Budget Request Process | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/operations/budget#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn works with project-based grants (aka budget requests), which focus on transparency and accountability. This system is in constant evolution so feedback is welcome! Budget requests are reviewed and voted upon by all other yTeams with existing grants. 7 teams vote and are chosen at random based on multiple factors, including the amount of revenue they earn for Yearn. To pass, budget requests require 4 of the 7 voting teams to vote "yes". General recommendations when making budget requests are: * When coordinating efforts with others, apply as a team (not as separate individuals) * There is a 3 month budget request cadence so your request should cover that period or less. ### [Send a budget request on GitHub](https://github.com/yearn/budget/issues/new/choose) [​](https://docs.yearn.fi/contributing/operations/budget#send-a-budget-request-on-github "Direct link to send-a-budget-request-on-github") Copy page as Markdown * [Send a budget request on GitHub](https://docs.yearn.fi/contributing/operations/budget#send-a-budget-request-on-github) --- # yPRISMA Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/yprisma-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of deployed yPrisma contracts. Core Protocol[​](https://docs.yearn.fi/developers/addresses/yprisma-contracts#core-protocol "Direct link to Core Protocol") ---------------------------------------------------------------------------------------------------------------------------- | Name | Address | | --- | --- | | YearnBoostedStaker | [0xF4C6e0E006F164535508787873d86b84fe901975](https://etherscan.io/address/0xF4C6e0E006F164535508787873d86b84fe901975) | | Rewards Distributor | [0xc480b481dD194EAc469EC9c4484D23d54B868EDD](https://etherscan.io/address/0xc480b481dD194EAc469EC9c4484D23d54B868EDD) | | yPRISMA Fee Receiver | [0x76DF88Aa8711822472Cb40Ed8c972A461A20ecdc](https://etherscan.io/address/0x76DF88Aa8711822472Cb40Ed8c972A461A20ecdc) | | Boosted Staker Utilities | [0xf04037D102b64E365eF6Eb81937bDf59B31fE5B8](https://etherscan.io/address/0xf04037D102b64E365eF6Eb81937bDf59B31fE5B8) | | PRISMA | [0xdA47862a83dac0c112BA89c6abC2159b95afd71C](https://etherscan.io/address/0xdA47862a83dac0c112BA89c6abC2159b95afd71C) | | yPRISMA | [0xe3668873d944e4a949da05fc8bde419eff543882](https://etherscan.io/address/0xe3668873d944e4a949da05fc8bde419eff543882) | | yvyPRISMA Vault/Token | [0x10537D7bD661C9c34F547b38EC662D6FD482Ae95](https://etherscan.io/address/0x10537D7bD661C9c34F547b38EC662D6FD482Ae95) | | yvmkUSD-A Vault/Token | [0x04AeBe2e4301CdF5E9c57B01eBdfe4Ac4B48DD13](https://etherscan.io/address/0x04AeBe2e4301CdF5E9c57B01eBdfe4Ac4B48DD13) | Expired Farms and Contracts[​](https://docs.yearn.fi/developers/addresses/yprisma-contracts#expired-farms-and-contracts "Direct link to Expired Farms and Contracts") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Name | Address | | --- | --- | | \*legacy yPRISMA | [0xfd37356c1a62288b32Fa58188c77Ab0D694a0f4E](https://etherscan.io/address/0xfd37356c1a62288b32Fa58188c77Ab0D694a0f4E) | | \*yPRISMA Staking (yvmkUSD-A rewards) | [0xE3EE395C9067dD15C492Ca950B101a7d6c85b5Fc](https://etherscan.io/address/0xE3EE395C9067dD15C492Ca950B101a7d6c85b5Fc) | | \*yPRISMA Staking (wstETH rewards) | [0x774a55C3Eeb79929fD445Ae97191228Ab39c4d0f](https://etherscan.io/address/0x774a55C3Eeb79929fD445Ae97191228Ab39c4d0f) | | \*yPRISMA Staking (dYFI rewards) | [0x93283184650f4d3B4253ABd00978176732118428](https://etherscan.io/address/0x93283184650f4d3B4253ABd00978176732118428) | | \*yPRISMA LP Staking (yPRISMA rewards) | [0x6806D62AAdF2Ee97cd4BCE46BF5fCD89766EF246](https://etherscan.io/address/0x6806D62AAdF2Ee97cd4BCE46BF5fCD89766EF246) | | \*yCRV Staking (yPRISMA rewards) | [0x84c94d739e075b3C7431bdb1A005F0412DF828a5](https://etherscan.io/address/0x84c94d739e075b3C7431bdb1A005F0412DF828a5) | | \*_expired_ | | [yPRISMA Docs](https://docs.yearn.fi/getting-started/products/ylockers/yprisma/overview) Copy page as Markdown * [Core Protocol](https://docs.yearn.fi/developers/addresses/yprisma-contracts#core-protocol) * [Expired Farms and Contracts](https://docs.yearn.fi/developers/addresses/yprisma-contracts#expired-farms-and-contracts) --- # Yearn DAO | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/introduction#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ![image](https://docs.yearn.fi/assets/images/here-we-are-cropped-05a165053ebd679bb0a220ea22a39f0d.jpg) Yearn is a collective of developers, users, thinkers, and doers all working toward making the best suite of on-chain, decentralized, yield products. There are no bosses or interns, no board of directors or HR department, only those who contribute to, participate in, and explore Yearn. Yearn started as an experiment with a week long release of YFI and continues as an experiment today. Governance[​](https://docs.yearn.fi/contributing/introduction#governance "Direct link to Governance") ------------------------------------------------------------------------------------------------------ The Yearn ecosystem is controlled by YFI token holders who submit and vote on off-chain proposals that govern the ecosystem. Proposals that generate majority support (>50% of the vote) are implemented by a 9-member multi-signature wallet. Changes must be signed by 6 out of the 9 wallet signers to be implemented. The members of the multi-signature wallet were voted in by YFI holders and are subject to change from future governance votes. Please refer to the [multisig documentation](https://docs.yearn.fi/developers/security/multisig) for the list of multisig signers. For more info about the governance process, please consult the [multisig members list](https://docs.yearn.fi/developers/security/multisig) and [YIP-61: Governance 2.0](https://gov.yearn.fi/t/yip-61-governance-2-0/10460) . Copy page as Markdown * [Governance](https://docs.yearn.fi/contributing/introduction#governance) --- # Yearn API | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/data-services/yearn-api#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ### Production Endpoint[​](https://docs.yearn.fi/developers/data-services/yearn-api#production-endpoint "Direct link to Production Endpoint") [https://ydaemon.yearn.fi/1/vaults/all](https://ydaemon.yearn.fi/1/vaults/all) ### API Schema[​](https://docs.yearn.fi/developers/data-services/yearn-api#api-schema "Direct link to API Schema") | Field | Description | | --- | --- | | `address` | Checksummed address of the vault | | `inception` | The block number a vault was created at | | `symbol` | Vault token symbol (used primarily in metamask) | | `name` | Vault token name | | `display_name` | Vault name as displayed in UI (usually based on underlying symbol) | | `icon` | Vault token icon url | | `token` | Underlying vault token metadata | | `token.name` | Underlying token name | | `token.symbol` | Underlying token symbol | | `token.address` | Underlying token address | | `token.decimals` | Underlying token decimal amount | | `token.display_name` | Underlying token display name | | `token.icon` | Underlying token icon (usually used as vault dispaly icon) | | `tvl` | TVL information about a vault | | `tvl.total_assets` | TVL in underlying token denomination | | `tvl.price` | Token price in USD | | `tvl.tvl` | TVL in USD | | `apy` | Vault APY metadata | | `apy.type` | APY type. Options are `v2:simple`, `v2:averaged`, `v1:simple`, `crv` | | `apy.gross_apr` | Uncompounded gross APR before fees | | `apy.net_apy` | Net APY (compounded) after fees. This is what the UI shows | | `apy.fees` | Fee structure breakdown for a vault | | `apy.fees.performance` | Performance fee in bips | | `apy.fees.withdrawal` | Withdrawal fee in bips | | `apy.fees.management` | Management fee in bips | | `apy.fees.keep_crv` | Amount of CRV to keep upon harvest for curve vaults in bips | | `apy.fees.cvx_keep_crv` | Amount of CRV to keep upon harvest for curve convex vaults in bips | | `apy.points` | APY samples for various timeframes | | `apy.points.week_ago` | APY calculated from one week sample of pricePerShare | | `apy.points.month_ago` | APY calculated from one month sample of pricePerShare | | `apy.points.month_ago` | APY calculated from inception block sample of pricePerShare | | `apy.composite` | Complex APY breakdown (for curve vaults) | | `apy.composite.boost` | Current boost of the strategies | | `apy.composite.pool_apy` | APY of the Curve LP position | | `apy.composite.base_apr` | Base APR of Curve emissions | | `apy.composite.boosted_apr` | Boosted APR of Curve emissions | | `apy.composite.cvx_apr` | APR of Convex rewards | | `apy.composite.rewards_apr` | APR of additional pool rewards | | `strategies` | A list of active vault strategies | | `strategies[idx].address` | Address of an active strategy | | `strategies[idx].name` | Name of an active strategy | | `endorsed` | True if the vault is an endorsed production vault. Do not show the vault if it's not endorsed | | `version` | API version of the vault | | `decimals` | Number of decimals for the vault token | | `type` | High level vault classification. Valid options are v1 and v2 | | `emergency_shutdown` | If true the vault is in shut down mode and no new deposits should be accepted | | `updated` | Unix timestamp of the last vault update | Copy page as Markdown * [Production Endpoint](https://docs.yearn.fi/developers/data-services/yearn-api#production-endpoint) * [API Schema](https://docs.yearn.fi/developers/data-services/yearn-api#api-schema) --- # Specification | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/veyfi#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Deprecated This page documents the legacy **veYFI + dYFI gauge** system. For the current governance staking UX, see [stYFI](https://docs.yearn.fi/contributing/governance/styfi) . If you have a legacy veYFI lock, see [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) . veYFI incorporates [YIP-56: Buyback and Build](https://gov.yearn.fi/t/yip-56-buyback-and-build/8929) funds into YFI tokenomics. Users can lock YFI tokens and receive veYFI, which allows them to boost vault rewards and vote on where bought-back YFI will be sent. veYFI Overview[​](https://docs.yearn.fi/contributing/governance/veyfi#veyfi-overview "Direct link to veYFI Overview") ---------------------------------------------------------------------------------------------------------------------- * Locking is similar to the ve-style program of Curve. * YFI can be locked into veYFI, which is non-transferable. * Lock duration can be decided on deposit: from 1 week to 4 years. * You can actually lock up to 10 years, but anything above 4 years doesn’t give you more veYFI. This way you don't have to relock every week. If you set it to longer than 4 years, you can always reset it to 4 years so it starts decaying. * A user must have a veYFI lock earn boosted rewards. No lock leads to no boosted rewards. A Maximum lock, continuously renewed, maximizes rewards. * Just like with Curve, even without a veYFI lock, you can still deposit into a vault and stake the vault token into a gauge which will give you the base boost. With the minimum boost, you get to keep 10% of the dYFI you farm. The other 90% goes to veYFI lockers. * It’s possible to exit the lock early, in exchange for paying a penalty that gets allocated to the other veYFI holders. * The penalty is up to 75% locked amount and decays over time: * The total penalty is the minimum percentage between `75% locked amount` and `(time remaining / 4 years)` * So if your lock is over 3 years you will pay 75%. * If your lock is 2 years you will pay 2/4 = 50% * Penalty Formula: `min(75%, lock_duration_left / 4 years * 100%)` * veYFI holders are eligible to receive a share of the early exit penalties. * veYFI holders are eligible to receive a share of gauge dYFI rewards from unused boosts. * Now that veYFI has been implemented, only veYFI is accepted voting power in Yearn Governance. dYFI as Gauges Reward[​](https://docs.yearn.fi/contributing/governance/veyfi#dyfi-as-gauges-reward "Direct link to dYFI as Gauges Reward") ------------------------------------------------------------------------------------------------------------------------------------------- * dYFI is an ERC-20 token. * Gauges emit dYFI that users can either sell for ETH or convert to YFI at a cost. * Gives its bearer the right to redeem an equivalent amount of YFI in exchange for ETH. * dYFI is burned upon redemption. * The circulating supply of dYFI must not exceed the amount of YFI available to be redeemed as part of the tokenomics program. * The amount of ETH required for redemption is at a discount to the current spot price of YFI/ETH. * ETH received from dYFI redemption is redirected to automated YFI buybacks handled by an immutable smart contract that runs Dutch auctions. * Discount calculation is a function of the veYFI and YFI supply with the following formula: * discount = `c / (1 + a * e^k(s * x − 1))`, where: * **c** = `1` * **a** = `10` * **k** = `4.7` * **s** = `configurable scaling factor` (currently set to 10) * **x** = `veYFI_supply / YFI_supply` ![Yearn Logo](https://docs.yearn.fi/img/logo.svg) ##### Current On-Chain Values * The current redemption discount is: `Fetching contract data...` * Current Spot Price of YFI/ETH: `Fetching contract data...` * ETH required to redeem 1 dYFI: `Fetching contract data...` ![image](https://docs.yearn.fi/assets/images/dyfi-redemption-chart-70db84b627a983b721d0ab452f58038d.png) Vault Gauges + Voting[​](https://docs.yearn.fi/contributing/governance/veyfi#vault-gauges--voting "Direct link to Vault Gauges + Voting") ------------------------------------------------------------------------------------------------------------------------------------------ * Vault gauges allow vault depositors to stake their vault tokens and earn dYFI rewards according to their veYFI weight. * Weights decay as the remaining lock duration decreases and can be extended up to the max lock duration. * Increased locking duration is rewarded with increased weight, so locking for 4 years gives 100% weight, locking for 2 years 50% weight, etc. * dYFI is allocated to gauges based on bi-monthly governance votes. Each gauge can get a different amount dYFI to emit. * Users can boost their gauge rewards by up to 10x. * This boost amount is proportional to the user's share of the vault and their share of total veYFI. * A 10x boost is achieved when a user owns an equal or higher share of veYFI (`yourVeYFIBalance/veYFITotalSupply`) than they own of the gauge deposits (`yourGaugeDeposit/totalDepositedInGauge`). * The greater your share of total veYFI, the more vault deposits can be boosted for the user. * This applies across multiple gauges. You can max boost 1% of all gauges with 1% of the veYFI supply. * A claim with boost under 100% will send the leftover tokens to veYFI holders. * The boost mechanism math works as follows: Boost Calc # determine user share of veYFIUserVeYFIShare = VeYFIBalance / VeYFITotalSupply# Determine boostable balance above 10% of depositBoostableBalance = (AmountDepositedInGauge /10) + (TotalDepositedInTheGauge * UserVeYFIShare * 0.9)# take the less of amount deposited in gauge and boostable balanceBoostedBalance = min(AmountDeposited, BoostableBalance)# get the boost by multiplying by 10 and dividing by amount deposited in gauge.Boost = 10 * BoostedBalance / AmountDepositedInGauge veYFI Reward Pool[​](https://docs.yearn.fi/contributing/governance/veyfi#veyfi-reward-pool "Direct link to veYFI Reward Pool") ------------------------------------------------------------------------------------------------------------------------------- * Users who lock YFI for veYFI can claim accumulated fees from the veYFI reward pool. The reward pool gets fees two ways: YFI from the veYFI early exit fee and the non-distributed gauge rewards due to a lack of full boost. Additional Info[​](https://docs.yearn.fi/contributing/governance/veyfi#additional-info "Direct link to Additional Info") ------------------------------------------------------------------------------------------------------------------------- * [Contract Addresses](https://docs.yearn.fi/developers/addresses/veyfi-contracts) * Governance Forum Thread: [https://gov.yearn.fi/t/yip-65-evolving-yfi-tokenomics](https://gov.yearn.fi/t/yip-65-evolving-yfi-tokenomics) Copy page as Markdown * [veYFI Overview](https://docs.yearn.fi/contributing/governance/veyfi#veyfi-overview) * [dYFI as Gauges Reward](https://docs.yearn.fi/contributing/governance/veyfi#dyfi-as-gauges-reward) * [Vault Gauges + Voting](https://docs.yearn.fi/contributing/governance/veyfi#vault-gauges--voting) * [veYFI Reward Pool](https://docs.yearn.fi/contributing/governance/veyfi#veyfi-reward-pool) * [Additional Info](https://docs.yearn.fi/contributing/governance/veyfi#additional-info) --- # YFI | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/yfi#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown The YFI token is a tool for coordination between Yearn's contributors, community and associated protocols. It was created to decentralize the management and development of yearn products while providing an environment for fast-paced innovation. ### Details[​](https://docs.yearn.fi/contributing/governance/yfi#details "Direct link to Details") **Token Contract:** [0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e](https://etherscan.io/address/0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e) **Supply:** 36,666 / 36,666 tokens minted The evolution of YFI[​](https://docs.yearn.fi/contributing/governance/yfi#the-evolution-of-yfi "Direct link to The evolution of YFI") -------------------------------------------------------------------------------------------------------------------------------------- Responsibilities of YFI token holders, and how the token itself plays into Yearn is meant to be dynamic. All of its functions can be modified by the community at any time, and there have been multiple instances of this already. From the week of YFI's emergence, there was extensive discussion around emissions, supply and powers of token holders. ### Distribution[​](https://docs.yearn.fi/contributing/governance/yfi#distribution "Direct link to Distribution") When the YFI token contract was deployed, users of various DeFi protocols were able to [obtain it](https://www.youtube.com/watch?v=kjv-sW2PBS4&ab_channel=DeFiTutorialswithDeFiDad) by providing liquidity to specific pools. 30,000 tokens were rewarded proportionally to liquidity providers of Curve Finance yPool, the YFI/DAI Balancer pool, and the YFI/yPool LP token Balancer pool. The output tokens of depositing in these pools were staked through a discontinued Yearn interface, and stakers were rewarded in YFI for approximately 7 days, until the supply ran out. ### Discontinuing emissions[​](https://docs.yearn.fi/contributing/governance/yfi#discontinuing-emissions "Direct link to Discontinuing emissions") YFI was designed with a minting function built in. Originally, this function was solely controlled by Andre Cronje, but shortly after the token emissions began, that control was handed to a multisig wallet. Because the intention behind YFI was to completely decentralize control, there were no concrete plans for emissions after the initial 30,000 YFI were distributed. [YIP-1](https://yips.yearn.fi/YIPS/yip-1) approved a weekly distribution of YFI, but the execution of that proposal required a second decision about how to distribute, which did not come to fruition. ### Phasing out YFI staking revenue[​](https://docs.yearn.fi/contributing/governance/yfi#phasing-out-yfi-staking-revenue "Direct link to Phasing out YFI staking revenue") Starting with [YIP-36](https://yips.yearn.fi/YIPS/yip-36) , a portion of staking rewards were redirected to the multisig wallet in order to fund operational expenses. When the multisig wallet had a buffer of $500,000, rewards were distributed to token holders. [YIP-56](https://snapshot.org/#/yearn/proposal/Qmb6gBzjvgLMazSrQQGVcjutLNdkVyM2Lh6yckMzdoaHWZ) disbanded the staking system all-together and opted for a buyback system. This directed more capital to Yearn's treasury while benefiting token holders by taking YFI off of the open market. With this, the YFI Governance Vault was retired, and holders were allowed to participate in governance while holding YFI elsewhere. ### Minting YFI[​](https://docs.yearn.fi/contributing/governance/yfi#minting-yfi "Direct link to Minting YFI") YFI holders voted to mint 6,666 YFI. 1/3 of the newly minted YFI would be vested to key contributors and 2/3 of the newly minted YFI would go to the treasury to be deployed and controlled by governance. After [YIP-57](https://snapshot.org/#/yearn/proposal/QmX8oYTSkaXSARYZn7RuQzUufW9bVVQtwJ3zxurWrquS9a) passed, all tokens were minted within a single day. ### Defined powers in Governance 2.0[​](https://docs.yearn.fi/contributing/governance/yfi#defined-powers-in-governance-20 "Direct link to Defined powers in Governance 2.0") Governance 2.0, described in [YIP-61](https://snapshot.org/#/ybaby.eth/proposal/QmSMyYeKrRpnA7Xn56o2NtbCUzxmhzCupL7LxMA1reXxq4) , expanded YFI token holder's responsibilities from creating and voting on Yearn Improvement Proposals (YIPs), to creating and voting on Yearn Delegation Proposals (YDPs) and Yearn Signaling Proposals (YSPs). YSPs allow token holders to formally request that a yTeam executes a decision with the power they are entitled to. This allows token holders to have a voice while avoiding a drawn-out YIP process. yTeams can choose to respect the suggestion or not, and if they don't it can become an issue as a formal YIP. YDPs are proposals that change where any discrete decision-making power is delegated. This is relevant in Governance 2.0 as it introduces yTeams, who are given an objective, and certain powers that can be modified by token holders. veYFI[​](https://docs.yearn.fi/contributing/governance/yfi#veyfi "Direct link to veYFI") ----------------------------------------------------------------------------------------- With [veYFI](https://docs.yearn.fi/contributing/governance/veyfi) launch, governance changed from using YFI to veYFI as voting power. Copy page as Markdown * [Details](https://docs.yearn.fi/contributing/governance/yfi#details) * [The evolution of YFI](https://docs.yearn.fi/contributing/governance/yfi#the-evolution-of-yfi) * [Distribution](https://docs.yearn.fi/contributing/governance/yfi#distribution) * [Discontinuing emissions](https://docs.yearn.fi/contributing/governance/yfi#discontinuing-emissions) * [Phasing out YFI staking revenue](https://docs.yearn.fi/contributing/governance/yfi#phasing-out-yfi-staking-revenue) * [Minting YFI](https://docs.yearn.fi/contributing/governance/yfi#minting-yfi) * [Defined powers in Governance 2.0](https://docs.yearn.fi/contributing/governance/yfi#defined-powers-in-governance-20) * [veYFI](https://docs.yearn.fi/contributing/governance/yfi#veyfi) --- # veYFI FAQ | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/veyfi-faq#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Deprecated This page documents the legacy **veYFI + dYFI gauge** system. For the current governance staking UX, see [stYFI](https://docs.yearn.fi/contributing/governance/styfi) . If you have a legacy veYFI lock, see [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) . My dYFI rewards from locking aren't increasing[​](https://docs.yearn.fi/contributing/governance/veyfi-faq#my-dyfi-rewards-from-locking-arent-increasing "Direct link to My dYFI rewards from locking aren't increasing") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The dYFI rewards that are earned from locking YFI to veYFI are not streamed linearly but instead can come in chunks. This is because veYFI earns from unclaimed dYFI from users who don't have full boost, so it is earned after gauge dYFI is distributed. Can I lock my veYFI so it always stays max-locked?[​](https://docs.yearn.fi/contributing/governance/veyfi-faq#can-i-lock-my-veyfi-so-it-always-stays-max-locked "Direct link to Can I lock my veYFI so it always stays max-locked?") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- If you want your veYFI to remain max-locked, you can "overLock" it, up to 10 years. This will keep your YFI at max boost and earning power until it drops below the 4 year mark. You can always set the lock time back to 4 years in the UI. Here is how you do it: click on the gear icon in the top right hand corner. ![overLock](https://docs.yearn.fi/assets/images/overlock-1-e69cad8e02361208e6003feed352985e.png) You can then lock up to 520 weeks (10 years). ![overLock](https://docs.yearn.fi/assets/images/overlock-3-7d1ddb899b5f7c2f2fa88fff660897c6.png) If you want to adjust this lock time, you can lower the length of the lock down to any value above 207 weeks. ![overLock](https://docs.yearn.fi/assets/images/overlock-4-f7e7accde95fbdfb2c6fdf6a020a0e81.png) * Any lock can be extended to be longer * only locks over 208 weeks, can be reduced, and only to 208 weeks. Copy page as Markdown * [My dYFI rewards from locking aren't increasing](https://docs.yearn.fi/contributing/governance/veyfi-faq#my-dyfi-rewards-from-locking-arent-increasing) * [Can I lock my veYFI so it always stays max-locked?](https://docs.yearn.fi/contributing/governance/veyfi-faq#can-i-lock-my-veyfi-so-it-always-stays-max-locked) --- # veYFI Boost Calculator | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/veyfi-calculator#__docusaurus_skipToContent_fallback) Deprecated This page documents the legacy **veYFI + dYFI gauge** system. For the current governance staking UX, see [stYFI](https://docs.yearn.fi/contributing/governance/styfi) . If you have a legacy veYFI lock, see [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) . ![Yearn Finance Logo](https://docs.yearn.fi/img/logo.svg) --- # veYFI Overview | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/veYFI-intro#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Deprecated This page documents the legacy **veYFI + dYFI gauge** system. For the current governance staking UX, see [stYFI](https://docs.yearn.fi/contributing/governance/styfi) . If you have a legacy veYFI lock, see [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) . veYFI is a time-locked version of the YFI token that grants access to governance, yield boosts, and rewards. It is based on [Curve's vote escrow (ve) model](https://resources.curve.finance/crv-token/vecrv/) and each YFI token can be locked for up to 4 years (technically longer, but there is no added voting or earning power gained by locking for more than 4 years). The length of lock determines how much veYFI is received per locked YFI. One YFI locked for four+ years converts to one veYFI. This relationship scales linearly, so one YFI locked for two years converts to 0.5 veYFI, one year converts to 0.25 veYFI, and so forth. veYFI Benefits[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-benefits "Direct link to veYFI Benefits") ---------------------------------------------------------------------------------------------------------------------------- Locking YFI for veYFI has 3 main benefits: Voting power, Yield boosts on funds deposited in Yearn, and earning protocol incentives. ### veYFI Voting[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-voting "Direct link to veYFI Voting") veYFI is the governance token of Yearn. It is used to vote on YFI emissions distributions and other governance items in [snapshot](https://snapshot.org/#/veyfi.eth) . For more information on Yearn's governance process, head over to the [governance section of the docs](https://docs.yearn.fi/contributing/governance/proposal-process) . ### veYFI Yield Boosts on Yearn Deposits[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-yield-boosts-on-yearn-deposits "Direct link to veYFI Yield Boosts on Yearn Deposits") Yearn depositors who have locked YFI for veYFI can receive an increase in their earned yield when depositing and staking in certain "boosted" vaults. This yield is paid in [dYFI](https://docs.yearn.fi/contributing/governance/veyfi#dyfi-as-gauges-reward) and is claimed separately from the auto-compounding native vault yield. All users who stake in the "boosted" vaults receive some dYFI rewards (1x boost) but only veYFI holders can increase that boost (up to the 10x). The boost that depositors receive is calculated using the formula found in [this section](https://docs.yearn.fi/contributing/governance/veyfi#vault-gauges--voting) of the veYFI specification. The TL:DR is that your boost is maxed out when your share of the vault/gauge you deposit in is less than your share of the total veYFI supply. Any dYFI not earned by depositors (difference between the possible 10x boost and actual boost) goes to veYFI holders. ### veYFI protocol incentives[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-protocol-incentives "Direct link to veYFI protocol incentives") veYFI holders earn a share of the early exit penalties charged to veYFI holders who unlock their positions early, and they also receive a share of dYFI rewards from unused boosts. veYFI Decay[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-decay "Direct link to veYFI Decay") ------------------------------------------------------------------------------------------------------------------- To weigh the advantages of locking YFI for veYFI, it is important to understand how locking works. From the moment YFI is locked for veYFI, the amount of veYFI the locking user has starts to decay (decrease) to zero. The rate of decay is linear and results in the user have no veYFI left at the end of their lock. Because voting power, rewards rates, and yield boosts are based on the amount of veYFI a user holds, these characteristics of the user's position also decrease over time. The only intrinsic (within the system) way to counteract this decay is to re-lock your YFI for your desired amount of time. Lock Parameters[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#lock-parameters "Direct link to Lock Parameters") ------------------------------------------------------------------------------------------------------------------------------- veYFI is non-transferrable and additional YFI locked from an account that already has a veYFI balance will add to and extend that lock. veYFI that belongs to any particular address will all unlock together when a lock expires. If a veYFI position needs to be exited before a lock expires, there is an early exit fee equal to the lesser of "75% of the locked amount" or "lock time remaining / 4 years". Liquid Lockers[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#liquid-lockers "Direct link to Liquid Lockers") ---------------------------------------------------------------------------------------------------------------------------- If you don't want to deal with the intricacies of locks, there are products called _Liquid Lockers_ that abstract them away and also counteract veYFI decay. Yearn provides these for other protocols (yCRV and yPRISMA), and while it does not provide them for YFI, other DAOs/entities do. At the time of writing, there are 3 liquid lockers for YFI: * [1up](https://1up.tokyo/stake) * [Cove](https://boosties.cove.finance/yfi/stake-yfi) * [StakeDAO](https://www.stakedao.org/lockers/yfi) Liquid Lockers are contracts that permissionlessly max-lock governance tokens (YFI to veYFI in this case) in exchange for a receipt token at a rate of 1:1. The benefit of doing this is to provide the end user with a fully transferrable token that can still receive a share of governance benefits like yield or voting power. Liquid locker tokens are not redeemable for the underlying locked tokens. Instead, they can be traded on decentralized exchanges. This means they may not always maintain price parity with their underlying assets. If you use a liquid locker instead of locking YFI for veYFI directly then you would use the liquid locker's interface to stake your vault tokens for boosts and claim rewards. Liquid locker interfaces typically show the boost they offer on different vaults, and users can deposit into these vaults and earn that boost without owning any YFI or veYFI at all. Claiming YFI from dYFI[​](https://docs.yearn.fi/contributing/governance/veYFI-intro#claiming-yfi-from-dyfi "Direct link to Claiming YFI from dYFI") ---------------------------------------------------------------------------------------------------------------------------------------------------- dYFI has a variable redemption cost (in ETH) to convert into YFI. The amount you must pay to redeem YFI increases as the veYFI supply increases. There is an interface to redeem on the [Yearn dApp](https://veyfi.yearn.fi/?tab=redeem) or you can use [Cove's dYFI redeemer contract](https://boosties.cove.finance/yfi/convert-dyfi) that will redeem automatically and charges a fee to do so, but don't not require any ETH upfront. Copy page as Markdown * [veYFI Benefits](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-benefits) * [veYFI Voting](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-voting) * [veYFI Yield Boosts on Yearn Deposits](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-yield-boosts-on-yearn-deposits) * [veYFI protocol incentives](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-protocol-incentives) * [veYFI Decay](https://docs.yearn.fi/contributing/governance/veYFI-intro#veyfi-decay) * [Lock Parameters](https://docs.yearn.fi/contributing/governance/veYFI-intro#lock-parameters) * [Liquid Lockers](https://docs.yearn.fi/contributing/governance/veYFI-intro#liquid-lockers) * [Claiming YFI from dYFI](https://docs.yearn.fi/contributing/governance/veYFI-intro#claiming-yfi-from-dyfi) --- # Comprehensive veYFI Guide | Yearn Docs [Skip to main content](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Deprecated This page documents the legacy **veYFI + dYFI gauge** system. For the current governance staking UX, see [stYFI](https://docs.yearn.fi/contributing/governance/styfi) . If you have a legacy veYFI lock, see [Migrate from veYFI](https://docs.yearn.fi/contributing/governance/migrating-from-veyfi) . Yearn has implemented a sophisticated governance and rewards system centered around **veYFI** and **dYFI** tokens. This system is designed to empower active community members, incentivize long-term participation, and align the interests of YFI holders with the protocol's success. This document provides a comprehensive synthesis of the veYFI and dYFI mechanisms, incorporating detailed specifications and complexities for a thorough understanding. * * * Table of Contents[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#table-of-contents "Direct link to Table of Contents") -------------------------------------------------------------------------------------------------------------------------------------------- 1. [Introduction to veYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#introduction-to-veyfi) 2. [Locking YFI for veYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#locking-yfi-for-veyfi) * [Lock Duration and veYFI Balance](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#lock-duration-and-veyfi-balance) * [veYFI Decay Over Time](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#veyfi-decay-over-time) * [Early Exit Penalties](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#early-exit-penalties) 3. [Benefits of veYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#benefits-of-veyfi) * [Governance Participation](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#governance-participation) * [Yield Boosts on Vault Deposits](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#yield-boosts-on-vault-deposits) * [Calculating Boost Levels](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#calculating-boost-levels) * [Protocol Incentives](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#protocol-incentives) 4. [Understanding dYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#understanding-dyfi) * [dYFI Redemption Mechanism](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#dyfi-redemption-mechanism) * [Emission of dYFI Rewards](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#emission-of-dyfi-rewards) * [Discount Calculation Formula](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#discount-calculation-formula) 5. [Epochs and Voting](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#epochs-and-voting) * [Epoch Timeline](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#epoch-timeline) * [Gauge Emission Voting](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#gauge-emission-voting) * [Governance Proposals](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#governance-proposals) 6. [System Parameters and Governance Adjustments](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#system-parameters-and-governance-adjustments) * [Adjustable Parameters](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#adjustable-parameters) 7. [Liquid Lockers: An Alternative Option](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#liquid-lockers-an-alternative-option) 8. [References](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#references) * * * Introduction to veYFI[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#introduction-to-veyfi "Direct link to Introduction to veYFI") -------------------------------------------------------------------------------------------------------------------------------------------------------- **veYFI** (vote-escrowed YFI) is a time-locked version of Yearn's native governance token, **YFI**. By locking YFI tokens into veYFI, users gain enhanced governance power, yield boosts on their vault deposits, and access to additional protocol incentives. This system aligns users' interests with the long-term success of Yearn Finance by encouraging prolonged participation and active governance. * * * Locking YFI for veYFI[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#locking-yfi-for-veyfi "Direct link to Locking YFI for veYFI") -------------------------------------------------------------------------------------------------------------------------------------------------------- ### Lock Duration and veYFI Balance[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#lock-duration-and-veyfi-balance "Direct link to Lock Duration and veYFI Balance") * **Lock Period**: Users can lock their YFI tokens for any duration up to **4 years** (208 weeks). While it's technically possible to lock for longer (up to 10 years), any period beyond 4 years is purely for the convenience of not having to re-lock and does not confer additional veYFI or benefits. If you set the lock time to longer than 4 years, you can always reset it to 4 years so it starts decaying. * **veYFI Calculation**: The amount of veYFI received is proportional to the lock duration: veYFI\=YFI×(Lock Duration4 years)\\text{veYFI} = \\text{YFI} \\times \\left( \\frac{\\text{Lock Duration}}{4 \\text{ years}} \\right)veYFI\=YFI×(4 yearsLock Duration​) * **Examples**: * Lock 1 YFI for 4 years → Receive 1 veYFI. * Lock 1 YFI for 2 years → Receive 0.5 veYFI. * Lock 1 YFI for 1 year → Receive 0.25 veYFI. ### veYFI Decay Over Time[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#veyfi-decay-over-time "Direct link to veYFI Decay Over Time") * **Linear Decay**: From the moment YFI is locked, the veYFI balance begins to decay linearly to zero by the end of the lock period. * **Impact on Benefits**: As veYFI balance decreases, so do the associated benefits: * **Voting Power**: Reduced influence in governance decisions. * **Yield Boosts**: Decreased boost levels on vault deposits. * **Rewards Rates**: Lower share of protocol incentives. * **Counteracting Decay**: Users can extend their lock duration (re-lock) to maintain or increase their veYFI balance. ### Early Exit Penalties[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#early-exit-penalties "Direct link to Early Exit Penalties") * **Penalty Structure**: Exiting a lock before its expiry incurs a penalty, which is redistributed to remaining veYFI holders. * **Penalty Calculation**: Penalty\=min⁡(75%×Locked Amount,(Time Remaining4 years)×Locked Amount)\\text{Penalty} = \\min\\left( 75\\% \\times \\text{Locked Amount}, \\left( \\frac{\\text{Time Remaining}}{4 \\text{ years}} \\right) \\times \\text{Locked Amount} \\right)Penalty\=min(75%×Locked Amount,(4 yearsTime Remaining​)×Locked Amount) * **Examples**: * 3 years remaining → Penalty: 75% of locked amount. * 2 years remaining → Penalty: 50% of locked amount. * 1 year remaining → Penalty: 25% of locked amount. * * * Benefits of veYFI[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#benefits-of-veyfi "Direct link to Benefits of veYFI") -------------------------------------------------------------------------------------------------------------------------------------------- ### Governance Participation[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#governance-participation "Direct link to Governance Participation") * **Voting Rights**: veYFI is the sole governance token of Yearn Finance. Holders can vote on: * **Gauge Emission Allocations**: Deciding how dYFI rewards are distributed among vault gauges. * **Governance Proposals**: Submitting and voting on proposals affecting protocol parameters, adding/removing gauges, and other significant changes. * **Epochs**: Governance operates in 14-day cycles called **epochs**, synchronized with Curve's veCRV epochs. * **Voting Decay**: To prevent last-minute voting swings, voting power decays linearly during the last 24 hours of the voting period, reaching zero at epoch's end. ### Yield Boosts on Vault Deposits[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#yield-boosts-on-vault-deposits "Direct link to Yield Boosts on Vault Deposits") * **Vault Gauges**: Specialized contracts where users can stake their Yearn vault tokens to earn dYFI rewards. * **Boost Mechanism**: * **Boost Range**: From 1x (base level) to a maximum of 10x. * **Determined By**: * **User's veYFI Share**: Proportion of total veYFI supply held. * **User's Gauge Deposit Share**: Proportion of total deposits in a specific gauge. * **Maximizing Boost**: Achieved when a user's share of veYFI equals or exceeds their share of the gauge deposits. * **Example**: * User holds 2% of veYFI supply and has 1% of total gauge deposits → Max boost achievable. #### Calculating Boost Levels[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#calculating-boost-levels "Direct link to Calculating Boost Levels") Boost Calc # determine user share of veYFIUserVeYFIShare = VeYFIBalance / VeYFITotalSupply# Determine boostable balance above 10% of depositBoostableBalance = (AmountDepositedInGauge /10) + (TotalDepositedInTheGauge * UserVeYFIShare * 0.9)# take the less of amount deposited in gauge and boostable balanceBoostedBalance = min(AmountDeposited, BoostableBalance)# get the boost by multiplying by 10 and dividing by amount deposited in gauge.Boost = 10 * BoostedBalance / AmountDepositedInGauge * **Interpretation**: * Users with higher veYFI holdings relative to their gauge deposits achieve higher boosts, up to 10x. * Users without veYFI receive the base boost of 1x (10% of potential rewards). #### Forfeited Rewards and Redistribution[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#forfeited-rewards-and-redistribution "Direct link to Forfeited Rewards and Redistribution") * **Unused Boosts**: The difference between the maximum possible boost and the user's actual boost results in forfeited dYFI rewards. * **Redistribution**: Forfeited rewards are proportionally allocated to veYFI holders, incentivizing governance participation. ### Protocol Incentives[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#protocol-incentives "Direct link to Protocol Incentives") * **Early Exit Penalties**: YFI paid to exit early is distributed among veYFI holders, providing an incentive to maintain locks. * **Forfeited dYFI Rewards**: Users not achieving max boost forfeit a portion of their dYFI rewards, which are redistributed to veYFI holders. * * * Understanding dYFI[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#understanding-dyfi "Direct link to Understanding dYFI") ----------------------------------------------------------------------------------------------------------------------------------------------- **dYFI** is a reward token emitted by vault gauges. It provides a mechanism to redistribute bought-back YFI to active protocol participants while encouraging long-term engagement. ### dYFI Redemption Mechanism[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#dyfi-redemption-mechanism "Direct link to dYFI Redemption Mechanism") * **Redemption for YFI**: dYFI holders can exchange their tokens for YFI at a discounted rate, paying in ETH. * **Burning Mechanism**: dYFI is burned upon redemption, ensuring the circulating supply doesn't exceed available YFI for redemption. * **ETH Proceeds**: ETH used in redemption is directed to automated YFI buybacks, enhancing the sustainability of the tokenomics program. ### Emission of dYFI Rewards[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#emission-of-dyfi-rewards "Direct link to Emission of dYFI Rewards") * **Emission Rate**: The amount of dYFI emitted per epoch is calculated using the formula: Annual dYFI Emission\=c×veYFI Supply\\text{Annual dYFI Emission} = c \\times \\sqrt{\\text{veYFI Supply}}Annual dYFI Emission\=c×veYFI Supply​ * **c**: Configurable scaling factor (default is 12). * **Distribution**: dYFI is allocated to gauges based on veYFI holders' votes during the governance process. ### Discount Calculation Formula[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#discount-calculation-formula "Direct link to Discount Calculation Formula") * **Discount Rate**: The discount at which dYFI can be redeemed for YFI depends on the ratio of veYFI supply to total YFI supply. Discount\=c1+a×ek(sx−1)\\text{Discount} = \\frac{c}{1 + a \\times e^{k(sx - 1)}}Discount\=1+a×ek(sx−1)c​ * **Variables**: * **c**: Constant (1). * **a**: Constant (approx. 10). * **k**: Constant (approx. 4.7). * **s**: Configurable scaling factor (default is 10). * **x**: Ratio of veYFI supply to total YFI supply veYFI SupplyYFI Supply\\frac{\\text{veYFI Supply}}{\\text{YFI Supply}}YFI SupplyveYFI Supply​. ![image](https://docs.yearn.fi/assets/images/dyfi-redemption-chart-70db84b627a983b721d0ab452f58038d.png) * **Implications**: * **High veYFI Supply**: Lower discount, as more YFI is locked, indicating strong commitment. * **Low veYFI Supply**: Higher discount, incentivizing users to lock more YFI. ![Yearn Logo](https://docs.yearn.fi/img/logo.svg) ##### Yearn On-Chain Data * The current redemption discount is: `Fetching contract data...` * Current Spot Price of YFI/ETH: `Fetching contract data...` * ETH required to redeem 1 dYFI: `Fetching contract data...` * * * Epochs and Voting[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#epochs-and-voting "Direct link to Epochs and Voting") -------------------------------------------------------------------------------------------------------------------------------------------- Governance and reward distribution operate on a structured timeline. ### Epoch Timeline[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#epoch-timeline "Direct link to Epoch Timeline") * **Duration**: Each epoch lasts **14 days**. * **Phases**: * **Week 1**: Proposal submission period. * **Week 2**: Voting period for gauge emissions and governance proposals. * **Voting Decay**: Voting power decays linearly during the last 24 hours of the voting period to prevent manipulation. ### Gauge Emission Voting[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#gauge-emission-voting "Direct link to Gauge Emission Voting") * **Allocation of dYFI**: * **Total Emission**: Determined by the emission formula. * **Reserved Allocations**: * **5%** to YFI/ETH liquidity gauge. * **5%** to dYFI/ETH liquidity gauge. * **Remaining 90%**: Allocated based on veYFI holders' votes. * **Blank Votes**: * **Option to Conserve Emission**: Voters can cast "blank" votes to reduce current epoch's emission. * **Outcome of Blank Votes**: * **Burned dYFI**: Permanently removes dYFI from circulation, extending the program's runway. * **Deferred Emission**: Carries over dYFI to the next epoch's allocation. * **Configurable Split**: The proportion of burned vs. deferred dYFI is adjustable through governance. ### Governance Proposals[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#governance-proposals "Direct link to Governance Proposals") * **Submission**: * Any address holding at least **1 veYFI** can submit proposals during the first week of an epoch. * Proposals are posted in the dedicated governance forum section. * **Voting and Approval**: * Simple majority (>50% of votes) required for approval. * **Quorum Requirement**: A minimum amount of veYFI must participate in the vote for it to be valid. The default quorum is **10 veYFI** but is configurable. * **Types of Proposals**: * Adding or removing gauges. * Adjusting system parameters. * Implementing significant protocol changes. * * * System Parameters and Governance Adjustments[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#system-parameters-and-governance-adjustments "Direct link to System Parameters and Governance Adjustments") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Certain aspects of the veYFI and dYFI system can be modified through governance to adapt to evolving needs. ### Adjustable Parameters[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#adjustable-parameters "Direct link to Adjustable Parameters") * **Quorum**: Minimum veYFI required for proposal approval (default: 10 veYFI). * **Blank Vote Burn Percentage**: Proportion of dYFI from blank votes that is burned (default: 50%). * **Scaling Factors**: * **s (Discount Scaling)**: Affects the dYFI discount curve (default: 10). * **c (Emission Scaling)**: Adjusts the emission rate of dYFI (default: 12). * **Liquidity Gauges**: * Addresses of the YFI/ETH and dYFI/ETH liquidity gauges receiving reserved emissions. * * * Liquid Lockers: An Alternative Option[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#liquid-lockers-an-alternative-option "Direct link to Liquid Lockers: An Alternative Option") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- For users who prefer not to manage individual locks and veYFI decay, **liquid lockers** offer a convenient alternative. * **How They Work**: * Third-party services lock YFI on behalf of users and issue a transferable receipt token. * These tokens represent a claim on the locked YFI and can be traded or used to earn rewards. * **Available Services**: * **1up**: [1up.tokyo/stake](https://1up.tokyo/stake) * **Cove**: [app.cove.finance/yfi/stake-yfi](https://boosties.cove.finance/yfi/stake-yfi) * **StakeDAO**: [stakedao.org/lockers/yfi](https://www.stakedao.org/lockers/yfi) * **Considerations**: * Liquid locker tokens may not always maintain parity with YFI's value. * Users should evaluate the risks and benefits of using third-party services. * * * References[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#references "Direct link to References") ----------------------------------------------------------------------------------------------------------------------- ### Relevant Governance Proposals[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#relevant-governance-proposals "Direct link to Relevant Governance Proposals") * **[YIP-56: Buyback and Build](https://gov.yearn.fi/t/yip-56-buyback-and-build/8929) ** * **[YIP-61: Governance 2.0](https://gov.yearn.fi/t/yip-61-governance-2-0/10460) ** * **[YIP-65: Evolving YFI Tokenomics](https://gov.yearn.fi/t/yip-65-evolving-yfi-tokenomics/11994) ** * **[YIP-73: Activate veYFI Rewards](https://gov.yearn.fi/t/yip-73-activate-veyfi-rewards-with-oyfi-gauges/13414) ** ### Snapshot Voting[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#snapshot-voting "Direct link to Snapshot Voting") * **[veYFI Snapshot Page](https://snapshot.org/#/veyfi.eth) ** ### Contract Addresses[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#contract-addresses "Direct link to Contract Addresses") * **[Yearn veYFI Contract Addresses](https://docs.yearn.fi/developers/addresses/veyfi-contracts) ** ### Audits[​](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#audits "Direct link to Audits") * **[veYFI StateMind Audit](https://github.com/yearn/yearn-security/blob/master/audits/202208_yAcademy_yearn-veyfi/yAcademy_-_yearn_veyfi_review.pdf) ** * **[veYFI yAcademy Audit](https://github.com/yearn/yearn-security/blob/master/audits/202208_yAcademy_yearn-veyfi/yAcademy_-_yearn_veyfi_review.pdf) ** * **[dYFI ChainSecurity Audit](https://old.chainsecurity.com/wp-content/uploads/2023/03/Yearn-Smart-Contract-Audit-oYfi-ChainSecurity.pdf) ** * * * _This document is intended to provide a detailed understanding of the veYFI and dYFI mechanisms within Yearn Finance. Users are encouraged to participate actively in governance and stay informed about ongoing developments._ Copy page as Markdown * [Table of Contents](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#table-of-contents) * [Introduction to veYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#introduction-to-veyfi) * [Locking YFI for veYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#locking-yfi-for-veyfi) * [Lock Duration and veYFI Balance](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#lock-duration-and-veyfi-balance) * [veYFI Decay Over Time](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#veyfi-decay-over-time) * [Early Exit Penalties](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#early-exit-penalties) * [Benefits of veYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#benefits-of-veyfi) * [Governance Participation](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#governance-participation) * [Yield Boosts on Vault Deposits](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#yield-boosts-on-vault-deposits) * [Protocol Incentives](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#protocol-incentives) * [Understanding dYFI](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#understanding-dyfi) * [dYFI Redemption Mechanism](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#dyfi-redemption-mechanism) * [Emission of dYFI Rewards](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#emission-of-dyfi-rewards) * [Discount Calculation Formula](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#discount-calculation-formula) * [Epochs and Voting](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#epochs-and-voting) * [Epoch Timeline](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#epoch-timeline) * [Gauge Emission Voting](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#gauge-emission-voting) * [Governance Proposals](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#governance-proposals) * [System Parameters and Governance Adjustments](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#system-parameters-and-governance-adjustments) * [Adjustable Parameters](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#adjustable-parameters) * [Liquid Lockers: An Alternative Option](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#liquid-lockers-an-alternative-option) * [References](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#references) * [Relevant Governance Proposals](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#relevant-governance-proposals) * [Snapshot Voting](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#snapshot-voting) * [Contract Addresses](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#contract-addresses) * [Audits](https://docs.yearn.fi/contributing/governance/veYFI-comp-summary#audits) --- # Core Yearn Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/core-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of all the current Yearn token addresses, multisigs, and treasuries on various chains. YFI[​](https://docs.yearn.fi/developers/addresses/core-contracts#yfi "Direct link to YFI") ------------------------------------------------------------------------------------------- | Chain | Address | | --- | --- | | Ethereum | [0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e](https://etherscan.io/token/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e) | | Fantom | [0x29b0Da86e484E1C0029B56e817912d778aC0EC69](https://oklink.com/fantom/token/0x29b0Da86e484E1C0029B56e817912d778aC0EC69) | | Polygon | [0xda537104d6a5edd53c6fbba9a898708e465260b6](https://polygonscan.com/token/0xda537104d6a5edd53c6fbba9a898708e465260b6) | | Optimism | [0x9046D36440290FfDE54FE0DD84Db8b1CfEE9107B](https://optimistic.etherscan.io/token/0x9046d36440290ffde54fe0dd84db8b1cfee9107b) | | Base | [0x9EaF8C1E34F05a589EDa6BAfdF391Cf6Ad3CB239](https://basescan.org/token/0x9eaf8c1e34f05a589eda6bafdf391cf6ad3cb239) | stYFI[​](https://docs.yearn.fi/developers/addresses/core-contracts#styfi "Direct link to stYFI") ------------------------------------------------------------------------------------------------- See all stYFI contracts [on this page](https://docs.yearn.fi/developers/addresses/styfi-contracts) veYFI (Deprecated)[​](https://docs.yearn.fi/developers/addresses/core-contracts#veyfi-deprecated "Direct link to veYFI (Deprecated)") -------------------------------------------------------------------------------------------------------------------------------------- | Chain | Address | | --- | --- | | Ethereum | [`0x90c1f9220d90d3966fbee24045edd73e1d588ad5`](https://etherscan.io/address/0x90c1f9220d90d3966fbee24045edd73e1d588ad5) | Ethereum Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#ethereum-contracts "Direct link to Ethereum Contracts") ---------------------------------------------------------------------------------------------------------------------------------------- | Identity | ENS | Address | | --- | --- | --- | | Yearn multisig (daddy) | ychad.eth | [0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52](https://etherscan.io/address/0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52) | | Strategist multisig | brain.ychad.eth | [0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7](https://etherscan.io/address/0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7) | | Core Dev multisig | dev.ychad.eth | [0x846e211e8ba920B353FB717631C015cf04061Cc9](https://etherscan.io/address/0x846e211e8ba920B353FB717631C015cf04061Cc9) | | Treasury | treasury.ychad.eth | [0x93A62dA5a14C80f265DAbC077fCEE437B1a0Efde](https://etherscan.io/address/0x93A62dA5a14C80f265DAbC077fCEE437B1a0Efde) | | Timelock | | [0x88Ba032be87d5EF1fbE87336B7090767F367BF73](https://etherscan.io/address/0x88Ba032be87d5EF1fbE87336B7090767F367BF73) | | Timelock Executor | | [0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B](https://etherscan.io/address/0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B) | Polygon Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#polygon-contracts "Direct link to Polygon Contracts") ------------------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | pChad Multisig | [0xC4ad0000E223E398DC329235e6C497Db5470B626](https://polygonscan.com/address/0xC4ad0000E223E398DC329235e6C497Db5470B626) | | Strategist Multisig | [0x16388000546eDed4D476bd2A4A374B5a16125Bc1](https://polygonscan.com/address/0x16388000546eDed4D476bd2A4A374B5a16125Bc1) | | Timelock | [0x88Ba032be87d5EF1fbE87336B7090767F367BF73](https://polygonscan.com/address/0x88Ba032be87d5EF1fbE87336B7090767F367BF73) | | Timelock Executor | [0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B](https://polygonscan.com/address/0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B) | Arbitrum Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#arbitrum-contracts "Direct link to Arbitrum Contracts") ---------------------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | aChad multisig | [0xb6bc033D34733329971B938fEf32faD7e98E56aD](https://arbiscan.io/address/0xb6bc033D34733329971B938fEf32faD7e98E56aD) | | Strategist multisig | [0x6346282DB8323A54E840c6C772B4399C9c655C0d](https://arbiscan.io/address/0x6346282DB8323A54E840c6C772B4399C9c655C0d) | | Treasury | [0x1DEb47dCC9a35AD454Bf7f0fCDb03c09792C08c1](https://arbiscan.io/address/0x1DEb47dCC9a35AD454Bf7f0fCDb03c09792C08c1) | | Timelock | [0x88Ba032be87d5EF1fbE87336B7090767F367BF73](https://arbiscan.io/address/0x88Ba032be87d5EF1fbE87336B7090767F367BF73) | | Timelock Executor | [0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B](https://arbiscan.io/address/0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B) | Optimism Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#optimism-contracts "Direct link to Optimism Contracts") ---------------------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | oChad multisig | [0xF5d9D6133b698cE29567a90Ab35CfB874204B3A7](https://optimistic.etherscan.io/address/0xF5d9D6133b698cE29567a90Ab35CfB874204B3A7) | | Strategist multisig | [0xea3a15df68fCdBE44Fdb0DB675B2b3A14a148b26](https://optimistic.etherscan.io/address/0xea3a15df68fCdBE44Fdb0DB675B2b3A14a148b26) | | Treasury | [0x84654e35E504452769757AAe5a8C7C6599cBf954](https://optimistic.etherscan.io/address/0x84654e35E504452769757AAe5a8C7C6599cBf954) | | Timelock | [0x88Ba032be87d5EF1fbE87336B7090767F367BF73](https://optimistic.etherscan.io/address/0x88Ba032be87d5EF1fbE87336B7090767F367BF73) | | Timelock Executor | [0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B](https://optimistic.etherscan.io/address/0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B) | Base Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#base-contracts "Direct link to Base Contracts") ---------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | bChad multisig | [0xbfAABa9F56A39B814281D68d2Ad949e88D06b02E](https://basescan.org/address/0xbfAABa9F56A39B814281D68d2Ad949e88D06b02E) | | Strategist multisig | [0x01fE3347316b2223961B20689C65eaeA71348e93](https://basescan.org/address/0x01fE3347316b2223961B20689C65eaeA71348e93) | | Treasury | [0x02ff746D8cb62709aEEc611CeC9B17d7dD1D3480](https://basescan.org/address/0x02ff746D8cb62709aEEc611CeC9B17d7dD1D3480) | | Timelock | [0x88Ba032be87d5EF1fbE87336B7090767F367BF73](https://basescan.org/address/0x88Ba032be87d5EF1fbE87336B7090767F367BF73) | | Timelock Executor | [0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B](https://basescan.org/address/0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B) | Katana Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#katana-contracts "Direct link to Katana Contracts") ---------------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | kChad multisig | [0xe6ad5A88f5da0F276C903d9Ac2647A937c917162](https://katanascan.com/address/0xe6ad5A88f5da0F276C903d9Ac2647A937c917162) | | Strategist multisig | [0xBe7c7efc1ef3245d37E3157F76A512108D6D7aE6](https://katanascan.com/address/0xBe7c7efc1ef3245d37E3157F76A512108D6D7aE6) | | V3 multisig | [0x33333333D5eFb92f19a5F94a43456b3cec2797AE](https://katanascan.com/address/0x33333333D5eFb92f19a5F94a43456b3cec2797AE) | | Timelock | [0x88Ba032be87d5EF1fbE87336B7090767F367BF73](https://katanascan.com/address/0x88Ba032be87d5EF1fbE87336B7090767F367BF73) | | Timelock Executor | [0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B](https://katanascan.com/address/0xF8f60BF9456A6e0141149Db2DD6f02C60da5779B) | Fantom Contracts[​](https://docs.yearn.fi/developers/addresses/core-contracts#fantom-contracts "Direct link to Fantom Contracts") ---------------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | Governance multisig | [0xC0E2830724C946a6748dDFE09753613cd38f6767](https://oklink.com/fantom/address/0xC0E2830724C946a6748dDFE09753613cd38f6767) | | Strategist multisig | [0x72a34AbafAB09b15E7191822A679f28E067C4a16](https://oklink.com/fantom/address/0x72a34AbafAB09b15E7191822A679f28E067C4a16) | | Treasury | [0x89716ad7edc3be3b35695789c475f3e7a3deb12a](https://oklink.com/fantom/address/0x89716ad7edc3be3b35695789c475f3e7a3deb12a) | Copy page as Markdown * [YFI](https://docs.yearn.fi/developers/addresses/core-contracts#yfi) * [stYFI](https://docs.yearn.fi/developers/addresses/core-contracts#styfi) * [veYFI (Deprecated)](https://docs.yearn.fi/developers/addresses/core-contracts#veyfi-deprecated) * [Ethereum Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#ethereum-contracts) * [Polygon Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#polygon-contracts) * [Arbitrum Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#arbitrum-contracts) * [Optimism Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#optimism-contracts) * [Base Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#base-contracts) * [Katana Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#katana-contracts) * [Fantom Contracts](https://docs.yearn.fi/developers/addresses/core-contracts#fantom-contracts) --- # Token & Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/#__docusaurus_skipToContent_fallback) [📄️ General\ -----------\ \ A list of all the current Yearn token addresses, multisigs, and treasuries on various chains.](https://docs.yearn.fi/developers/addresses/core-contracts) [📄️ yvUSD\ ---------\ \ yvUSD domain (Ethereum mainnet)](https://docs.yearn.fi/developers/addresses/yvusd-contracts) [📄️ yVaults v3\ --------------\ \ Deployments are done using create2 factories and should be stable across all EVM chains the protocol has been deployed on.](https://docs.yearn.fi/developers/addresses/v3-contracts) [📄️ yVaults v2\ --------------\ \ A list of the deployed v2 yVault system contracts. To find individual vaults, use the Registry contracts listed below or refer to https://yearn.fi](https://docs.yearn.fi/developers/addresses/v2-contracts) [📄️ stYFI\ ---------\ \ Always verify addresses against the canonical deployment source used by Yearn at the time you integrate.](https://docs.yearn.fi/developers/addresses/styfi-contracts) [📄️ veYFI\ ---------\ \ Deployed Addresses](https://docs.yearn.fi/developers/addresses/veyfi-contracts) [📄️ yCRV\ --------\ \ A list of deployed yCRV contracts.](https://docs.yearn.fi/developers/addresses/ycrv-contracts) [📄️ yYB\ -------\ \ A list of deployed yYB contracts.](https://docs.yearn.fi/developers/addresses/yyb-contracts) [📄️ yETH\ --------\ \ A list of all the current yPool contract addresses.](https://docs.yearn.fi/developers/addresses/ypools-contracts) [📄️ Lens\ --------\ \ A list of the deployed Lens contracts on various chains. Read more about Lens here](https://docs.yearn.fi/developers/addresses/lens-contracts) --- # Auctions | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/auctions#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Introduction[​](https://docs.yearn.fi/developers/auctions#introduction "Direct link to Introduction") ------------------------------------------------------------------------------------------------------ Yearn regularly holds permissionless Dutch auctions, most notably for V3 strategies and YFI buybacks. This process has been standardized to encourage integration by searchers. ### How it works[​](https://docs.yearn.fi/developers/auctions#how-it-works "Direct link to How it works") * Each `want` token has a dedicated auction contract. Many different `sell` tokens can be offered through distinct auctions through this contract, receiving the same asset in return. In other words, "Sell DAI for YFI" and "Sell WETH for YFI" can both supported through the same contract with WETH as the asset, but any one auction will only sell either DAI or WETH, never both. * Tokens for sale accumulate either in their respective auction contracts directly, or in the contracts that rely on the auctions (and get transferred to the auction contract at the start of the auction). * An auction can be initiated either once a sufficient `sell` amount accumulates, or upon a manual `kick()` call that is permissionless. Auctions can last up to 24 hours and occur no more than once within some configurable interval, like weekly. * The initial price is set high and decreases with time, halving every hour. * Takers can `take()` the sell token on offer at the current price, providing asset to the contract in return. * The auction concludes once all sell in the batch is sold or 24 hours elapse. * Unsold sell carries over to the subsequent auction. ### Addresses[​](https://docs.yearn.fi/developers/auctions#addresses "Direct link to Addresses") | Name | Address | | --- | --- | | Auction factory | [`0xE6aB098E8582178A76DC80d55ca304d1Dec11AD8`](https://etherscan.io/address/0xE6aB098E8582178A76DC80d55ca304d1Dec11AD8) | | YFI buyback auctions | [`0x4349ed200029e6Cf38F1455B9dA88981F1806df3`](https://etherscan.io/address/0x4349ed200029e6Cf38F1455B9dA88981F1806df3) | Specification[​](https://docs.yearn.fi/developers/auctions#specification "Direct link to Specification") --------------------------------------------------------------------------------------------------------- ### Events[​](https://docs.yearn.fi/developers/auctions#events "Direct link to Events") #### AuctionEnabled[​](https://docs.yearn.fi/developers/auctions#auctionenabled "Direct link to AuctionEnabled") Emitted when an auction is enabled to tell parties to track it. - name: AuctionEnabled type: event inputs: - name: auctionId indexed: false type: bytes32 - name: sell indexed: true type: address - name: want indexed: true type: address - name: auctionAddress indexed: true type: address #### AuctionDisabled[​](https://docs.yearn.fi/developers/auctions#auctiondisabled "Direct link to AuctionDisabled") Emitted when an Auction is disabled so it no longer needs to be tracked. - name: AuctionDisabled type: event inputs: - name: auctionId indexed: false type: bytes32 - name: sell indexed: true type: address - name: want indexed: true type: address - name: auctionAddress indexed: true type: address #### AuctionKicked[​](https://docs.yearn.fi/developers/auctions#auctionkicked "Direct link to AuctionKicked") Emitted when a new auction is kicked off. - name: AuctionKicked type: event inputs: - name: auctionId indexed: true type: bytes32 - name: sellAvailable indexed: false type: uint256 #### AuctionTaken[​](https://docs.yearn.fi/developers/auctions#auctiontaken "Direct link to AuctionTaken") Emitted when some amount of sell is taken. - name: AuctionTaken type: event inputs: - name: auctionId indexed: true type: bytes32 - name: amountTaken indexed: false type: uint256 - name: amountLeft indexed: false type: uint256 ### View methods[​](https://docs.yearn.fi/developers/auctions#view-methods "Direct link to View methods") #### auctionLength[​](https://docs.yearn.fi/developers/auctions#auctionlength "Direct link to auctionLength") Get the time length of each auction. - name: auctionLength type: function stateMutability: view inputs: [] outputs: - name: auctionLengthTime type: uint256 #### auctionCooldown[​](https://docs.yearn.fi/developers/auctions#auctioncooldown "Direct link to auctionCooldown") Get the minimum time inbetween auction kicks. - name: auctionCooldown type: function stateMutability: view inputs: [] outputs: - name: auctionCooldownTime type: uint256 #### auctionInfo[​](https://docs.yearn.fi/developers/auctions#auctioninfo "Direct link to auctionInfo") Get all of the info for a specific auction. - name: auctionInfo type: function stateMutability: view inputs: - name: auctionId type: bytes32 outputs: - name: sell type: address - name: want type: address - name: kicked type: uint256 - name: available type: uint256 #### getAmountNeeded[​](https://docs.yearn.fi/developers/auctions#getamountneeded "Direct link to getAmountNeeded") Get the exact amount of `want` needed to buy `sell`. * Will return `0` if nothing to take. - name: getAmountNeeded type: function stateMutability: view inputs: - name: id type: bytes32 - name: amoutToTake type: uint256 - name: timestamp type: uint256 default: block.timestamp outputs: - name: currentPrice type: uint256 #### price[​](https://docs.yearn.fi/developers/auctions#price "Direct link to price") Get the current price of `sell` in terms of `want`. - name: price type: function stateMutability: view inputs: - name: id type: bytes32 - name: timestamp type: uint256 default: block.timestamp outputs: - name: currentPrice type: uint256 #### kickable[​](https://docs.yearn.fi/developers/auctions#kickable "Direct link to kickable") Get the expected amount of `sell` that would be available if auction was kicked. * Inclusive of anything left over unsold from the last auction * May not be entirely accurate of the effect of an actual kick. - name: kickable type: function stateMutability: view inputs: - name: id type: bytes32 outputs: - name: expectedAvailable type: uint256 ### Write methods[​](https://docs.yearn.fi/developers/auctions#write-methods "Direct link to Write methods") #### kick[​](https://docs.yearn.fi/developers/auctions#kick "Direct link to kick") Kicks an auction. - name: kick type: function stateMutability: nonpayable inputs: - name: auctionId type: bytes32 outputs: - name: amountAvailable type: uint256 #### take[​](https://docs.yearn.fi/developers/auctions#take "Direct link to take") Take some amount of `sell` for `want` at the current price. - name: take type: function stateMutability: nonpayable inputs: - name: auctionId type: bytes32 - name: maxAmount type: uint256 default: 2 ** 256 - 1 - name: receiver type: address default: msg.sender - name: data type: bytes default: empty **NOTE:** If the optional 'data' parameter is supplied the auction will do a callback to the receiver address after sending the `sell` but before pulling the `want`. The receiver will need to implement following function to receive the callback: - name: auctionTakeCallback type: function stateMutability: nonpayable inputs: - name: auctionId type: bytes32 - name: sender type: address - name: amountTaken type: uint256 - name: amountNeeded type: uint256 - name: data type: bytes default: empty Copy page as Markdown * [Introduction](https://docs.yearn.fi/developers/auctions#introduction) * [How it works](https://docs.yearn.fi/developers/auctions#how-it-works) * [Addresses](https://docs.yearn.fi/developers/auctions#addresses) * [Specification](https://docs.yearn.fi/developers/auctions#specification) * [Events](https://docs.yearn.fi/developers/auctions#events) * [View methods](https://docs.yearn.fi/developers/auctions#view-methods) * [Write methods](https://docs.yearn.fi/developers/auctions#write-methods) --- # stYFI Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/styfi-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Verify before integrating Always verify addresses against the canonical deployment source used by Yearn at the time you integrate. stYFI domain (Ethereum mainnet)[​](https://docs.yearn.fi/developers/addresses/styfi-contracts#styfi-domain-ethereum-mainnet "Direct link to stYFI domain (Ethereum mainnet)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | Name | Address | | --- | --- | | YFI | [`0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e`](https://etherscan.io/address/0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e) | | stYFI | [`0x42b25284E8ae427D79da78b65DFFC232aAECc016`](https://etherscan.io/address/0x42b25284E8ae427D79da78b65DFFC232aAECc016) | | stYFIx | [`0x9C42461AA8422926e3AEF7B1C6e3743597149d79`](https://etherscan.io/address/0x9C42461AA8422926e3AEF7B1C6e3743597149d79) | | Reward token (`yvUSDC`) | [`0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204`](https://etherscan.io/address/0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204) | | Reward Claimer | [`0xA82454009E01Ae697012a73cB232d85e61B05e50`](https://etherscan.io/address/0xA82454009E01Ae697012a73cB232d85e61B05e50) | | Reward Distributor | [`0xd31911a33a5577Be233Dc096F6F5a7e496fF5934`](https://etherscan.io/address/0xd31911a33a5577Be233Dc096F6F5a7e496fF5934) | | stYFI Reward Distributor | [`0x95547eDe56cF74B73dd78a37f547127dffDA6113`](https://etherscan.io/address/0x95547eDe56cF74B73dd78a37f547127dffDA6113) | | stYFIx Reward Distributor | [`0x952B31960C97E76362Ac340D07D183aDa15e3d6E`](https://etherscan.io/address/0x952B31960C97E76362Ac340D07D183aDa15e3d6E) | | Staking Middleware | [`0xc32bd1A70e831c43956Ff2f5F23f2Ee45a04C020`](https://etherscan.io/address/0xc32bd1A70e831c43956Ff2f5F23f2Ee45a04C020) | veYFI migration & LLYFI domain (Ethereum mainnet)[​](https://docs.yearn.fi/developers/addresses/styfi-contracts#veyfi-migration--llyfi-domain-ethereum-mainnet "Direct link to veYFI migration & LLYFI domain (Ethereum mainnet)") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Name | Address | | --- | --- | | Legacy veYFI | [`0x90c1f9220d90d3966FbeE24045EDd73E1d588aD5`](https://etherscan.io/address/0x90c1f9220d90d3966FbeE24045EDd73E1d588aD5) | | veYFI Reward Distributor | [`0x2548BF65916fdABB5A5673fC4225011FF29ee884`](https://etherscan.io/address/0x2548BF65916fdABB5A5673fC4225011FF29ee884) | | Liquid Locker Redemption | [`0xBA18D0DF75a3ff58EF40A8fc0d3E4dB74A0e681D`](https://etherscan.io/address/0xBA18D0DF75a3ff58EF40A8fc0d3E4dB74A0e681D) | | Liquid Locker Reward Distributor | [`0x7eFc3953Bed2fc20b9f825eBffaB1cC8B072a000`](https://etherscan.io/address/0x7eFc3953Bed2fc20b9f825eBffaB1cC8B072a000) | ### Supported liquid lockers[​](https://docs.yearn.fi/developers/addresses/styfi-contracts#supported-liquid-lockers "Direct link to Supported liquid lockers") The governance dashboards support three lockers with fixed indices: | Index | Name | Symbol | Token | Staking Contract | Scale | | --- | --- | --- | --- | --- | --- | | 0 | StakeDAO | `sdYFI` | [`0x97983236bE88107Cc8998733Ef73D8d969c52E37`](https://etherscan.io/address/0x97983236bE88107Cc8998733Ef73D8d969c52E37) | [`0xA16F6FC7380300525C812ea2733Ad62DDA58143B`](https://etherscan.io/address/0xA16F6FC7380300525C812ea2733Ad62DDA58143B) | `1` | | 1 | 1UP | `upYFI` | [`0xCb7DCe63aBE175cA354Dcca9cc10554D255777Ee`](https://etherscan.io/address/0xCb7DCe63aBE175cA354Dcca9cc10554D255777Ee) | [`0x52Aa16860E0D42B6a7b6ecC15688472eb20135c9`](https://etherscan.io/address/0x52Aa16860E0D42B6a7b6ecC15688472eb20135c9) | `69420` | | 2 | Cove | `coveYFI` | [`0xFf71841EeFca78a64421db28060855036765c248`](https://etherscan.io/address/0xFf71841EeFca78a64421db28060855036765c248) | [`0x3d4Ced97ADb0ae3A53DA95a47fFc749aAd26BC8f`](https://etherscan.io/address/0x3d4Ced97ADb0ae3A53DA95a47fFc749aAd26BC8f) | `1` | Copy page as Markdown * [stYFI domain (Ethereum mainnet)](https://docs.yearn.fi/developers/addresses/styfi-contracts#styfi-domain-ethereum-mainnet) * [veYFI migration & LLYFI domain (Ethereum mainnet)](https://docs.yearn.fi/developers/addresses/styfi-contracts#veyfi-migration--llyfi-domain-ethereum-mainnet) * [Supported liquid lockers](https://docs.yearn.fi/developers/addresses/styfi-contracts#supported-liquid-lockers) --- # Lens Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/lens-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of the deployed Lens contracts on various chains. Read more about Lens [here](https://docs.yearn.fi/developers/data-services/yearn-lens) Ethereum Lens Contracts[​](https://docs.yearn.fi/developers/addresses/lens-contracts#ethereum-lens-contracts "Direct link to Ethereum Lens Contracts") ------------------------------------------------------------------------------------------------------------------------------------------------------- ### Oracle[​](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle "Direct link to Oracle") [0x83d95e0D5f402511dB06817Aff3f9eA88224B030](https://etherscan.io/address/0x83d95e0D5f402511dB06817Aff3f9eA88224B030) - Oracle ### Management List[​](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list "Direct link to Management List") [0xf64e58Ee8C7BadC741A7ea98FB65488084385674](https://etherscan.io/address/0xf64e58Ee8C7BadC741A7ea98FB65488084385674) - ManagementList ### Registry Adapters[​](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters "Direct link to Registry Adapters") [0x240315db938d44bb124ae619f5Fd0269A02d1271](https://etherscan.io/address/0x240315db938d44bb124ae619f5Fd0269A02d1271) - V2 [0xFF0bd2d0C7E9424ccB149ED3757155eEf41a793D](https://etherscan.io/address/0xFF0bd2d0C7E9424ccB149ED3757155eEf41a793D) - Iron Bank ### TVL Adapters[​](https://docs.yearn.fi/developers/addresses/lens-contracts#tvl-adapters "Direct link to TVL Adapters") [0x14d6E0908baE40A2487352B2a9Cb1A6232DA8785](https://etherscan.io/address/0x14d6E0908baE40A2487352B2a9Cb1A6232DA8785) - V2 [0xF4fB8903A41fC78686b26DE55502cdE42a4c6c78](https://etherscan.io/address/0xF4fB8903A41fC78686b26DE55502cdE42a4c6c78) - V1 [0xec7Ac8AC897f5082B2c3d4e8D2173F992A097F24](https://etherscan.io/address/0xec7Ac8AC897f5082B2c3d4e8D2173F992A097F24) - Iron Bank [0x1007eD6fdFAC72bbea9c719cf1Fa9C355D248691](https://etherscan.io/address/0x1007eD6fdFAC72bbea9c719cf1Fa9C355D248691) - Earn [0x560144C25E53149aC410E5D33BDB131e49A850e5](https://etherscan.io/address/0x560144C25E53149aC410E5D33BDB131e49A850e5) - veCRV ### Helpers[​](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers "Direct link to Helpers") [0x5AACD0D03096039aC4381CD814637e9FB7C34a6f](https://etherscan.io/address/0x5AACD0D03096039aC4381CD814637e9FB7C34a6f) - Helper [0xC3A0bEF4A47bA579Cbba510aE2c59d9b9bf9467C](https://etherscan.io/address/0xC3A0bEF4A47bA579Cbba510aE2c59d9b9bf9467C) - UniqueAddressesHelper [0xae813841436fe29b95a14ac701afb1502c4cb789](https://etherscan.io/address/0xae813841436fe29b95a14ac701afb1502c4cb789) - Strategies helper [0x4218E20DB87023049Fc582Aaa4bD47a3611A20Ab](https://etherscan.io/address/0x4218E20DB87023049Fc582Aaa4bD47a3611A20Ab) - AllowancesHelper [0x957e3ae7983155a9f9e08da555b8084448be26e4](https://etherscan.io/address/0x957e3ae7983155a9f9e08da555b8084448be26e4) - AddressMergeHelper [0x5d63a8584d91ebc5033d022afd6c5a7c7fddc99b](https://etherscan.io/address/0x5d63a8584d91ebc5033d022afd6c5a7c7fddc99b) - PricesHelper [0x855ffe28019106d089bC018Df18838f8d241c402](https://etherscan.io/address/0x855ffe28019106d089bC018Df18838f8d241c402) - BalancesHelper ### Generators[​](https://docs.yearn.fi/developers/addresses/lens-contracts#generators "Direct link to Generators") [0xce29d34C8e88A2E1eDde10AD4eEE4f3e379fc041](https://etherscan.io/address/0xce29d34C8e88A2E1eDde10AD4eEE4f3e379fc041) - AddressesGeneratorV1Vaults [0x437758D475F70249e03EDa6bE23684aD1FC375F0](https://etherscan.io/address/0x437758D475F70249e03EDa6bE23684aD1FC375F0) - AddressesGeneratorV2Vaults [0xF536399c04683D7ab0BCb1308C245b4bbb539344](https://etherscan.io/address/0xF536399c04683D7ab0BCb1308C245b4bbb539344) - AddressesGeneratorEarn [0xa0B57619A980DFEfD50f24F310EE1b55A40A9D46](https://etherscan.io/address/0xa0B57619A980DFEfD50f24F310EE1b55A40A9D46) - AddressesGeneratorIronBank ### Delegation mapping[​](https://docs.yearn.fi/developers/addresses/lens-contracts#delegation-mapping "Direct link to Delegation mapping") [0xC01a529c01f9399c928a4aFc50E25f12D1e5b142](https://etherscan.io/address/0xC01a529c01f9399c928a4aFc50E25f12D1e5b142) - DelegatedBalanceMapping ### Calculations[​](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations "Direct link to Calculations") [0xE9cfF16bdac9729F18CBAC451EcCA6c50b372207](https://etherscan.io/address/0xE9cfF16bdac9729F18CBAC451EcCA6c50b372207) - CalculationsCurve [0x55e9B18fefFF7E00548d54480373Fc8843De8eA4](https://etherscan.io/address/0x55e9B18fefFF7E00548d54480373Fc8843De8eA4) - CalculationsIronBank [0x88dE7d7F7b9597C86b8cD195374FbF602934F334](https://etherscan.io/address/0x88dE7d7F7b9597C86b8cD195374FbF602934F334) - CalculationsSushiswap [0x38477F2159638956d33E18951d98238a53b9aa3C](https://etherscan.io/address/0x38477F2159638956d33E18951d98238a53b9aa3C) - CalculationsYearnVaults ### Registries[​](https://docs.yearn.fi/developers/addresses/lens-contracts#registries "Direct link to Registries") [0x62a4e0E7574E5407656A65CC8DbDf70f3C6EB04B](https://etherscan.io/address/0x62a4e0E7574E5407656A65CC8DbDf70f3C6EB04B) - Earn (new) [0x50c1a2eA0a861A967D9d0FFE2AE4012c2E053804](https://etherscan.io/address/0x50c1a2eA0a861A967D9d0FFE2AE4012c2E053804) - V2 (existing) [0x3eE41C098f9666ed2eA246f4D2558010e59d63A0](https://etherscan.io/address/0x3eE41C098f9666ed2eA246f4D2558010e59d63A0) - V1 (existing) [0xAB1c342C7bf5Ec5F02ADEA1c2270670bCa144CbB](https://etherscan.io/address/0xAB1c342C7bf5Ec5F02ADEA1c2270670bCa144CbB) - IB (existing) Fantom Lens Contracts[​](https://docs.yearn.fi/developers/addresses/lens-contracts#fantom-lens-contracts "Direct link to Fantom Lens Contracts") ------------------------------------------------------------------------------------------------------------------------------------------------- [0xac5A9E4135A3A26497F3890bFb602b06Ee592B61](https://oklink.com/fantom/address/0xac5A9E4135A3A26497F3890bFb602b06Ee592B61) - AddressesProvider ### Oracle[​](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle-1 "Direct link to Oracle") [0x57AA88A0810dfe3f9b71a9b179Dd8bF5F956C46A](https://oklink.com/fantom/address/0x57AA88A0810dfe3f9b71a9b179Dd8bF5F956C46A) - Oracle ### Management List[​](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list-1 "Direct link to Management List") [0x5EA7E501c9A23F4A76Dc7D33a11D995B13a1dD25](https://oklink.com/fantom/address/0x5EA7E501c9A23F4A76Dc7D33a11D995B13a1dD25) - ManagementList ### Registry Adapters[​](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters-1 "Direct link to Registry Adapters") [0xF628Fb7436fFC382e2af8E63DD7ccbaa142E3cd1](https://oklink.com/fantom/address/0xF628Fb7436fFC382e2af8E63DD7ccbaa142E3cd1) - RegistryAdapterV2Vault [0x1164587b49ff7aCE303962cC7A7E0841C1b34986](https://oklink.com/fantom/address/0x1164587b49ff7aCE303962cC7A7E0841C1b34986) - RegistryAdapterIronBank ### Helpers[​](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers-1 "Direct link to Helpers") [0xE55Dd55b3355c261A048B3f310706C7478657d74](https://oklink.com/fantom/address/0xE55Dd55b3355c261A048B3f310706C7478657d74) - Helper [0x14785E5E3650F0603eE17401c9890De380713914](https://oklink.com/fantom/address/0x14785E5E3650F0603eE17401c9890De380713914) - HelperAllowances [0x6B8DE08D2520C955554E837aE72022Cd46Ba7F0e](https://oklink.com/fantom/address/0x6B8DE08D2520C955554E837aE72022Cd46Ba7F0e) - HelperBalances [0x001d0a58B336F60ee050cB11EE455Fd7eB984518](https://oklink.com/fantom/address/0x001d0a58B336F60ee050cB11EE455Fd7eB984518) - HelperAddressesMerger [0x97D0bE2a72fc4Db90eD9Dbc2Ea7F03B4968f6938](https://oklink.com/fantom/address/0x97D0bE2a72fc4Db90eD9Dbc2Ea7F03B4968f6938) - HelperStrategies ### Calculations[​](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations-1 "Direct link to Calculations") [0x0b53e9df372e72d8fdCDBEDfbb56059957a37128](https://oklink.com/fantom/address/0x0b53e9df372e72d8fdCDBEDfbb56059957a37128) - CalculationsCurve [0x44536dE2220987d098d1d29D3AAfc7f7348E9ee4](https://oklink.com/fantom/address/0x44536dE2220987d098d1d29D3AAfc7f7348E9ee4) - CalculationsSpooky [0x560144C25E53149aC410E5D33BDB131e49A850e5](https://oklink.com/fantom/address/0x560144C25E53149aC410E5D33BDB131e49A850e5) - CalculationsSushiswap [0xebAA0B431618bCd9eA67D39C232625c20880d9bA](https://oklink.com/fantom/address/0xebAA0B431618bCd9eA67D39C232625c20880d9bA) - CalculationsBand ### Registries[​](https://docs.yearn.fi/developers/addresses/lens-contracts#registries-1 "Direct link to Registries") [0x727fe1759430df13655ddb0731dE0D0FDE929b04](https://oklink.com/fantom/address/0x727fe1759430df13655ddb0731dE0D0FDE929b04) - Registry [0x7f462B92F92114A2D57A03e5Ae2DB5DA28b77d73](https://oklink.com/fantom/address/0x7f462B92F92114A2D57A03e5Ae2DB5DA28b77d73) - Mechanics Registry [0x8CC45f739104b3Bdb98BFfFaF2423cC0f817ccc1](https://oklink.com/fantom/address/0x8CC45f739104b3Bdb98BFfFaF2423cC0f817ccc1) - VaultsRegistryHelper Arbitrum Lens Contracts[​](https://docs.yearn.fi/developers/addresses/lens-contracts#arbitrum-lens-contracts "Direct link to Arbitrum Lens Contracts") ------------------------------------------------------------------------------------------------------------------------------------------------------- [0xcAd10033C86B0C1ED6bfcCAa2FF6779938558E9f](https://arbiscan.io/address/0xcAd10033C86B0C1ED6bfcCAa2FF6779938558E9f) - Addresses Provider ### Oracle[​](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle-2 "Direct link to Oracle") [0x043518AB266485dC085a1DB095B8d9C2Fc78E9b9](https://arbiscan.io/address/0x043518AB266485dC085a1DB095B8d9C2Fc78E9b9) - Oracle [0xdF43263DFec19117f2Fe79d1D9842a10c7495CcD](https://arbiscan.io/address/0xdF43263DFec19117f2Fe79d1D9842a10c7495CcD) - Base Fee Oracle Contract ### Management List[​](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list-2 "Direct link to Management List") [0x8A5f0876b217ee61d101E022Bb00d032e6D353bc](https://arbiscan.io/address/0x8A5f0876b217ee61d101E022Bb00d032e6D353bc) - ManagementList ### Registry Adapters[​](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters-2 "Direct link to Registry Adapters") [0x57AA88A0810dfe3f9b71a9b179Dd8bF5F956C46A](https://arbiscan.io/address/0x57AA88A0810dfe3f9b71a9b179Dd8bF5F956C46A) - RegistryAdapterV2Vault [0x7AAd416eB4e16a27b85e7076dD56742A44E9d25B](https://arbiscan.io/address/0x7AAd416eB4e16a27b85e7076dD56742A44E9d25B) - RegistryAdapterIronBank ### Helpers[​](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers-2 "Direct link to Helpers") [0xE55Dd55b3355c261A048B3f310706C7478657d74](https://arbiscan.io/address/0xE55Dd55b3355c261A048B3f310706C7478657d74) - Helper [0xf5875d60241C8F6448649206A6f485b812ACF44D](https://arbiscan.io/address/0xf5875d60241C8F6448649206A6f485b812ACF44D) - AllowancesHelper [0x94734Ba0f9f8c2464d963a402743Fd79B402Efd7](https://arbiscan.io/address/0x94734Ba0f9f8c2464d963a402743Fd79B402Efd7) - BalancesHelper [0x2A139A2812f1424F0C88e3d73854b16fb04E9449](https://arbiscan.io/address/0x2A139A2812f1424F0C88e3d73854b16fb04E9449) - AddressMergeHelper [0x66a1A27f4b22DcAa24e427DCFFbf0cdDd9D35e0f](https://arbiscan.io/address/0x66a1A27f4b22DcAa24e427DCFFbf0cdDd9D35e0f) - StrategiesHelper ### Generators[​](https://docs.yearn.fi/developers/addresses/lens-contracts#generators-1 "Direct link to Generators") [0x3A8efa2D87d60c0289f19B44A0928F4269c0f094](https://arbiscan.io/address/0x3A8efa2D87d60c0289f19B44A0928F4269c0f094) - AddressesGeneratorV2Vaults ### Calculations[​](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations-2 "Direct link to Calculations") [0x5EA7E501c9A23F4A76Dc7D33a11D995B13a1dD25](https://arbiscan.io/address/0x5EA7E501c9A23F4A76Dc7D33a11D995B13a1dD25) - CalculationsSushiswap Optimism Lens Contracts[​](https://docs.yearn.fi/developers/addresses/lens-contracts#optimism-lens-contracts "Direct link to Optimism Lens Contracts") ------------------------------------------------------------------------------------------------------------------------------------------------------- [0x8273217252254Ad7353f227aaEcd2b1C4A326Fa2](https://optimistic.etherscan.io/address/0x8273217252254Ad7353f227aaEcd2b1C4A326Fa2) - Addresses Provider ### Oracle[​](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle-3 "Direct link to Oracle") [0xB082d9f4734c535D9d80536F7E87a6f4F471bF65](https://optimistic.etherscan.io/address/0xB082d9f4734c535D9d80536F7E87a6f4F471bF65) - Oracle ### Management List[​](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list-3 "Direct link to Management List") [0x7E9756E1427B3c38F001F9D272D8d62BEF63D619](https://optimistic.etherscan.io/address/0x7E9756E1427B3c38F001F9D272D8d62BEF63D619) - Management List ### Registry Adapters[​](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters-3 "Direct link to Registry Adapters") [0xBcfCA75fF12E2C1bB404c2C216DBF901BE047690](https://optimistic.etherscan.io/address/0xBcfCA75fF12E2C1bB404c2C216DBF901BE047690) - RegistryAdapterV2Vault ### Helpers[​](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers-3 "Direct link to Helpers") [0x776C1E69B858f1B9622085052Fb7B64a196Ac602](https://optimistic.etherscan.io/address/0x776C1E69B858f1B9622085052Fb7B64a196Ac602) - Helper [0x94141D7BFf3D04D61CE65B917BDd37b655e08f18](https://optimistic.etherscan.io/address/0x94141D7BFf3D04D61CE65B917BDd37b655e08f18) - AllowancesHelper [0x167aA4Ba31B8285707d1489ad705cb24CF4E5186](https://optimistic.etherscan.io/address/0x167aA4Ba31B8285707d1489ad705cb24CF4E5186) - BalancesHelper [0xD3A93C794ee2798D8f7906493Cd3c2A835aa0074](https://optimistic.etherscan.io/address/0xD3A93C794ee2798D8f7906493Cd3c2A835aa0074) - StrategiesHelper [0x156bAB355E81b498072C9Ce3cF655e9844A12529](https://optimistic.etherscan.io/address/0x156bAB355E81b498072C9Ce3cF655e9844A12529) - AddressMergeHelper ### Generators[​](https://docs.yearn.fi/developers/addresses/lens-contracts#generators-2 "Direct link to Generators") [0xD63aB09ac2048a7eCac92f0fFad5F104edD0E032](https://optimistic.etherscan.io/address/0xD63aB09ac2048a7eCac92f0fFad5F104edD0E032) - Vault v2 Addresses Generator ### Calculations[​](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations-3 "Direct link to Calculations") [0x5FD3815DcB668200A662114fbC9aF13AC0A55b4D](https://optimistic.etherscan.io/address/0x5FD3815DcB668200A662114fbC9aF13AC0A55b4D) - Chainlink Calculations [0x0Ffe8434eAe67C9838b12C3cd11ac4005DAa7227](https://optimistic.etherscan.io/address/0x0Ffe8434eAe67C9838b12C3cd11ac4005DAa7227) - Curve Calculations [0x0000000022D53366457F9d5E68Ec105046FC4383](https://optimistic.etherscan.io/address/0x0000000022D53366457F9d5E68Ec105046FC4383) - Curve Registry Address Provider Copy page as Markdown * [Ethereum Lens Contracts](https://docs.yearn.fi/developers/addresses/lens-contracts#ethereum-lens-contracts) * [Oracle](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle) * [Management List](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list) * [Registry Adapters](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters) * [TVL Adapters](https://docs.yearn.fi/developers/addresses/lens-contracts#tvl-adapters) * [Helpers](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers) * [Generators](https://docs.yearn.fi/developers/addresses/lens-contracts#generators) * [Delegation mapping](https://docs.yearn.fi/developers/addresses/lens-contracts#delegation-mapping) * [Calculations](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations) * [Registries](https://docs.yearn.fi/developers/addresses/lens-contracts#registries) * [Fantom Lens Contracts](https://docs.yearn.fi/developers/addresses/lens-contracts#fantom-lens-contracts) * [Oracle](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle-1) * [Management List](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list-1) * [Registry Adapters](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters-1) * [Helpers](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers-1) * [Calculations](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations-1) * [Registries](https://docs.yearn.fi/developers/addresses/lens-contracts#registries-1) * [Arbitrum Lens Contracts](https://docs.yearn.fi/developers/addresses/lens-contracts#arbitrum-lens-contracts) * [Oracle](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle-2) * [Management List](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list-2) * [Registry Adapters](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters-2) * [Helpers](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers-2) * [Generators](https://docs.yearn.fi/developers/addresses/lens-contracts#generators-1) * [Calculations](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations-2) * [Optimism Lens Contracts](https://docs.yearn.fi/developers/addresses/lens-contracts#optimism-lens-contracts) * [Oracle](https://docs.yearn.fi/developers/addresses/lens-contracts#oracle-3) * [Management List](https://docs.yearn.fi/developers/addresses/lens-contracts#management-list-3) * [Registry Adapters](https://docs.yearn.fi/developers/addresses/lens-contracts#registry-adapters-3) * [Helpers](https://docs.yearn.fi/developers/addresses/lens-contracts#helpers-3) * [Generators](https://docs.yearn.fi/developers/addresses/lens-contracts#generators-2) * [Calculations](https://docs.yearn.fi/developers/addresses/lens-contracts#calculations-3) --- # yVaults v2 Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/v2-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of the deployed v2 yVault system contracts. To find individual vaults, use the Registry contracts listed below or refer to [https://yearn.fi](https://yearn.fi/) Ethereum V2 Contracts[​](https://docs.yearn.fi/developers/addresses/v2-contracts#ethereum-v2-contracts "Direct link to Ethereum V2 Contracts") ----------------------------------------------------------------------------------------------------------------------------------------------- > Registry is made up of 2 contracts: "Release Registry" and "Vault Registry" | Identity | ENS | Address | | --- | --- | --- | | Factory Vault Registry | factory.ychad.eth | [0xaf1f5e1c19cb68b30aad73846effdf78a5863319](https://etherscan.io/address/0xaf1f5e1c19cb68b30aad73846effdf78a5863319) | | Release Registry | release.registry.ychad.eth | [0x7cb5abeb0de8f6f46a27329b9ef54ce10e47f1e2](https://etherscan.io/address/0x7cb5abeb0de8f6f46a27329b9ef54ce10e47f1e2) | | Health Check | health.ychad.eth | [0xDDCea799fF1699e98EDF118e0629A974Df7DF012](https://etherscan.io/address/0xDDCea799fF1699e98EDF118e0629A974Df7DF012) | | Curve LP Factory | | [0x21b1FC8A52f179757bf555346130bF27c0C2A17A](https://etherscan.io/address/0x21b1FC8A52f179757bf555346130bF27c0C2A17A) | | Multisigs | | See [here](https://docs.yearn.fi/developers/addresses/core-contracts#ethereum-contracts)
. | Optimism V2 Contracts[​](https://docs.yearn.fi/developers/addresses/v2-contracts#optimism-v2-contracts "Direct link to Optimism V2 Contracts") ----------------------------------------------------------------------------------------------------------------------------------------------- > Registry is made up of 2 contracts: "Release Registry" and "Vault Registry" | Identity | Address | | --- | --- | | Vault Registry | [0x79286Dd38C9017E5423073bAc11F53357Fc5C128](https://optimistic.etherscan.io/address/0x79286Dd38C9017E5423073bAc11F53357Fc5C128) | | Release Registry | [0x81291ceb9bB265185A9D07b91B5b50Df94f005BF](https://optimistic.etherscan.io/address/0x81291ceb9bB265185A9D07b91B5b50Df94f005BF) | | Health Check | [0x3d8F58774611676fd196D26149C71a9142C45296](https://optimistic.etherscan.io/address/0x3d8F58774611676fd196D26149C71a9142C45296) | | Velodrome Factory | [0x8eb53a4fD9D2727a49E9e68a32108C18049bFf86](https://optimistic.etherscan.io/address/0x8eb53a4fD9D2727a49E9e68a32108C18049bFf86) | | Multisigs | See [here](https://docs.yearn.fi/developers/addresses/core-contracts#optimism-contracts)
. | Base V2 Contracts[​](https://docs.yearn.fi/developers/addresses/v2-contracts#base-v2-contracts "Direct link to Base V2 Contracts") ----------------------------------------------------------------------------------------------------------------------------------- > Registry is made up of 2 contracts: "Release Registry" and "Vault Registry" | Identity | Address | | --- | --- | | Vault Registry | [0xF3885eDe00171997BFadAa98E01E167B53a78Ec5](https://basescan.org//address/0xF3885eDe00171997BFadAa98E01E167B53a78Ec5) | | Release Registry | [0x697BC6bd64677bE63240262869dD5F2A3eEACCd3](https://basescan.org//address/0x697BC6bd64677bE63240262869dD5F2A3eEACCd3) | | Health Check | [0x8273217252254Ad7353f227aaEcd2b1C4A326Fa2](https://basescan.org//address/0x8273217252254Ad7353f227aaEcd2b1C4A326Fa2) | | Aerodrome Factory | [0x2d12caFfa46ab3b6c5cEb224620de8b4DE3cDff1](https://basescan.org//address/0x2d12caFfa46ab3b6c5cEb224620de8b4DE3cDff1) | | Multisigs | See [here](https://docs.yearn.fi/developers/addresses/core-contracts#base-contracts)
. | Arbitrum V2 Contracts[​](https://docs.yearn.fi/developers/addresses/v2-contracts#arbitrum-v2-contracts "Direct link to Arbitrum V2 Contracts") ----------------------------------------------------------------------------------------------------------------------------------------------- note Most Yearn vaults on Arbitrum are [V3 Vaults](https://docs.yearn.fi/developers/addresses/v3-contracts) > Registry is made up of 2 contracts: "Release Registry" and "Vault Registry" | Identity | Address | | --- | --- | | Vault Registry | [0x84654e35E504452769757AAe5a8C7C6599cBf954](https://arbiscan.io/address/0x84654e35E504452769757AAe5a8C7C6599cBf954) | | Release Registry | [0x697BC6bd64677bE63240262869dD5F2A3eEACCd3](https://arbiscan.io/address/0x697BC6bd64677bE63240262869dD5F2A3eEACCd3) | | Health Check | [0x32059ccE723b4DD15dD5cb2a5187f814e6c470bC](https://arbiscan.io/address/0x32059ccE723b4DD15dD5cb2a5187f814e6c470bC) | | Multisigs | See [here](https://docs.yearn.fi/developers/addresses/core-contracts#arbitrum-contracts)
. | Fantom V2 Contracts[​](https://docs.yearn.fi/developers/addresses/v2-contracts#fantom-v2-contracts "Direct link to Fantom V2 Contracts") ----------------------------------------------------------------------------------------------------------------------------------------- | Identity | Address | | --- | --- | | Registry | [0x727fe1759430df13655ddb0731dE0D0FDE929b04](https://oklink.com/fantom/address/0x727fe1759430df13655ddb0731dE0D0FDE929b04) | | Health Check | [0xf13Cd6887C62B5beC145e30c38c4938c5E627fe0](https://oklink.com/fantom/address/0xf13Cd6887C62B5beC145e30c38c4938c5E627fe0) | | Multisigs | See [here](https://docs.yearn.fi/developers/addresses/core-contracts#fantom-contracts)
. | Polygon Contracts[​](https://docs.yearn.fi/developers/addresses/v2-contracts#polygon-contracts "Direct link to Polygon Contracts") ----------------------------------------------------------------------------------------------------------------------------------- note No V2 Vaults on Polygon! see V3 Vaults [here](https://docs.yearn.fi/developers/addresses/v3-contracts) Copy page as Markdown * [Ethereum V2 Contracts](https://docs.yearn.fi/developers/addresses/v2-contracts#ethereum-v2-contracts) * [Optimism V2 Contracts](https://docs.yearn.fi/developers/addresses/v2-contracts#optimism-v2-contracts) * [Base V2 Contracts](https://docs.yearn.fi/developers/addresses/v2-contracts#base-v2-contracts) * [Arbitrum V2 Contracts](https://docs.yearn.fi/developers/addresses/v2-contracts#arbitrum-v2-contracts) * [Fantom V2 Contracts](https://docs.yearn.fi/developers/addresses/v2-contracts#fantom-v2-contracts) * [Polygon Contracts](https://docs.yearn.fi/developers/addresses/v2-contracts#polygon-contracts) --- # veYFI Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/veyfi-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ✅ All Addresses on this page match on-chain data. Last checked on: 3/12/2026, 7:26:45 PM UTC Deployed Addresses[​](https://docs.yearn.fi/developers/addresses/veyfi-contracts#deployed-addresses "Direct link to Deployed Addresses") ----------------------------------------------------------------------------------------------------------------------------------------- | Description | Address | | --- | --- | | veYFI | [`0x90c1f9220d90d3966fbee24045edd73e1d588ad5`](https://etherscan.io/address/0x90c1f9220d90d3966fbee24045edd73e1d588ad5) | | Gauge registry | [`0x1D0fdCb628b2f8c0e22354d45B3B2D4cE9936F8B`](https://etherscan.io/address/0x1D0fdCb628b2f8c0e22354d45B3B2D4cE9936F8B) | | Gauge controller | [`0x46b38522422D597dDbAA2D6E98D6C9b397028d5B`](https://etherscan.io/address/0x46b38522422D597dDbAA2D6E98D6C9b397028d5B) | | dYFI | [`0x41252e8691e964f7de35156b68493bab6797a275`](https://etherscan.io/address/0x41252e8691e964f7de35156b68493bab6797a275) | | dYFI Redemption | [`0x4707C855323545223fA2bA4150A83950F6F53b6E`](https://etherscan.io/address/0x4707C855323545223fA2bA4150A83950F6F53b6E) | | YFI Reward Pool | [`0xb287a1964AEE422911c7b8409f5E5A273c1412fA`](https://etherscan.io/address/0xb287a1964AEE422911c7b8409f5E5A273c1412fA) | | dYFI Reward Pool | [`0x2391Fc8f5E417526338F5aa3968b1851C16D894E`](https://etherscan.io/address/0x2391Fc8f5E417526338F5aa3968b1851C16D894E) | Deployed Gauge Addresses[​](https://docs.yearn.fi/developers/addresses/veyfi-contracts#deployed-gauge-addresses "Direct link to Deployed Gauge Addresses") ----------------------------------------------------------------------------------------------------------------------------------------------------------- | Index | Symbol | Name | Address | | --- | --- | --- | --- | | 0 | `yG-yvCurve-YFIETH` | yGauge Curve YFI-ETH Pool yVault | [`0x7Fd8Af959B54A677a1D8F92265Bd0714274C56a3`](https://etherscan.io/address/0x7Fd8Af959B54A677a1D8F92265Bd0714274C56a3) | | 1 | `yG-yvCurve-dYFIETH-f-f` | yGauge Curve dYFIETH-f Factory yVault | [`0x28da6dE3e804bDdF0aD237CFA6048f2930D0b4Dc`](https://etherscan.io/address/0x28da6dE3e804bDdF0aD237CFA6048f2930D0b4Dc) | | 2 | `yG-lp-yCRVv2` | yGauge LP Yearn CRV Vault v2 | [`0x107717C98C8125A94D3d2Cc82b86a1b705f3A27C`](https://etherscan.io/address/0x107717C98C8125A94D3d2Cc82b86a1b705f3A27C) | | 3 | `yG-yvCurve-yETH-f` | yGauge Curve yETH Factory yVault | [`0x81d93531720d86f0491DeE7D03f30b3b5aC24e59`](https://etherscan.io/address/0x81d93531720d86f0491DeE7D03f30b3b5aC24e59) | | 4 | `yG-yvUSDS-1` | yGauge USDS-1 yVault | [`0xd57aEa3686d623dA2dCEbc87010a4F2F38Ac7B15`](https://etherscan.io/address/0xd57aEa3686d623dA2dCEbc87010a4F2F38Ac7B15) | | 5 | `yG-yvUSDC-1` | yGauge USDC-1 yVault | [`0x622fA41799406B120f9a40dA843D358b7b2CFEE3`](https://etherscan.io/address/0x622fa41799406b120f9a40da843d358b7b2cfee3) | | 6 | `yG-yvDAI-1` | yGauge DAI-1 yVault | [`0x128e72DfD8b00cbF9d12cB75E846AC87B83DdFc9`](https://etherscan.io/address/0x128e72DfD8b00cbF9d12cB75E846AC87B83DdFc9) | | 7 | `yG-yvWETH-1` | yGauge WETH-1 yVault | [`0x5943F7090282Eb66575662EADf7C60a717a7cE4D`](https://etherscan.io/address/0x5943f7090282eb66575662eadf7c60a717a7ce4d) | | 8 | `yG-yvCurve-sdYFIv2-f` | yGauge Curve sdYFIv2 Factory yVault | [`0xB61F8fff8Dd8C438E0d61C07b5536cE3d728f660`](https://etherscan.io/address/0xB61F8fff8Dd8C438E0d61C07b5536cE3d728f660) | | 9 | `yG-yvCurve-upYFI-f` | yGauge Curve upYFI Factory yVault | [`0xf719B2d3925CC445D2Bb67FA12963265E224Fa11`](https://etherscan.io/address/0xf719B2d3925CC445D2Bb67FA12963265E224Fa11) | | 10 | `yG-yvCurve-COVEYFI-f` | yGauge Curve COVEYFI Factory yVault | [`0x97A597CBcA514AfCc29cD300f04F98d9DbAA3624`](https://etherscan.io/address/0x97A597CBcA514AfCc29cD300f04F98d9DbAA3624) | | 11 | `yG-yvDAI-2` | yGauge DAI-2 yVault | [`0x38E3d865e34f7367a69f096C80A4fc329DB38BF4`](https://etherscan.io/address/0x38E3d865e34f7367a69f096C80A4fc329DB38BF4) | | 12 | `yG-yvWETH-2` | yGauge WETH-2 yVault | [`0x8E2485942B399EA41f3C910c1Bb8567128f79859`](https://etherscan.io/address/0x8E2485942B399EA41f3C910c1Bb8567128f79859) | | 13 | `yG-yvcrvUSD-2` | yGauge crvUSD-2 yVault | [`0x71c3223D6f836f84cAA7ab5a68AAb6ECe21A9f3b`](https://etherscan.io/address/0x71c3223D6f836f84cAA7ab5a68AAb6ECe21A9f3b) | The above Gauges can be verified using the [YFI Gauge Registry](https://etherscan.io/address/0x1D0fdCb628b2f8c0e22354d45B3B2D4cE9936F8B#readContract) contract and querying the `gauges()` function with the index listed above. Copy page as Markdown * [Deployed Addresses](https://docs.yearn.fi/developers/addresses/veyfi-contracts#deployed-addresses) * [Deployed Gauge Addresses](https://docs.yearn.fi/developers/addresses/veyfi-contracts#deployed-gauge-addresses) --- # Kong | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/data-services/kong#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown [Kong](https://github.com/yearn/kong) is a real-time/historical EVM indexer and analytics platform designed to make it easy to index EVM logs, enrich blockchain data, and query indexed data via GraphQL. A few REST endpoints also exist in Kong for common queries. It comes pre-configured with an index over Yearn's v2 and v3 vault ecosystems. For more detailed docs, reference [deepwiki](https://deepwiki.com/yearn/kong) . Key Features[​](https://docs.yearn.fi/developers/data-services/kong#key-features "Direct link to Key Features") ---------------------------------------------------------------------------------------------------------------- ### Event Sourcing Architecture[​](https://docs.yearn.fi/developers/data-services/kong#event-sourcing-architecture "Direct link to Event Sourcing Architecture") * Stores EVM logs and contract snapshots in PostgreSQL without transformation * Supports index replay without re-extracting data from blockchain * Handles events out of order for faster historical indexing ### Hook System[​](https://docs.yearn.fi/developers/data-services/kong#hook-system "Direct link to Hook System") Three types of custom enrichment hooks: * **Snapshot Hooks**: Process recurring snapshots of contracts * **Event Hooks**: Process and enrich blockchain events * **Timeseries Hooks**: Generate time-series analytics data ### Real-Time Webhooks[​](https://docs.yearn.fi/developers/data-services/kong#real-time-webhooks "Direct link to Real-Time Webhooks") * Real-time notifications triggered during indexing * HMAC-SHA256 authentication * Configurable filtering by chains and contract addresses ### Domain Modeling with "Things"[​](https://docs.yearn.fi/developers/data-services/kong#domain-modeling-with-things "Direct link to Domain Modeling with "Things"") * Dynamically created entities (analogous to "entities" in conventional ETL) * Used as sources for further indexing * Supports hierarchical indexing (e.g., Registry → Vaults → Strategies) GraphQL API[​](https://docs.yearn.fi/developers/data-services/kong#graphql-api "Direct link to GraphQL API") ------------------------------------------------------------------------------------------------------------- ### Base URL[​](https://docs.yearn.fi/developers/data-services/kong#base-url "Direct link to Base URL") * GraphQL Explorer: [https://kong.yearn.fi/api/gql](https://kong.yearn.fi/api/gql) * REST API: see [REST API](https://docs.yearn.fi/developers/data-services/kong#rest-api) section below ### Example Queries[​](https://docs.yearn.fi/developers/data-services/kong#example-queries "Direct link to Example Queries") #### List Yearn Vaults on mainnet[​](https://docs.yearn.fi/developers/data-services/kong#list-yearn-vaults-on-mainnet "Direct link to List Yearn Vaults on mainnet") query MainnetVaults { vaults(chainId: 1) { address name symbol }} REST: [https://kong.yearn.fi/api/rest/list/vaults/:chainId](https://kong.yearn.fi/api/rest/list/vaults/:chainId) REST Example: [https://kong.yearn.fi/api/rest/list/vaults/1](https://kong.yearn.fi/api/rest/list/vaults/1) #### List Yearn v2 vaults on all chains[​](https://docs.yearn.fi/developers/data-services/kong#list-yearn-v2-vaults-on-all-chains "Direct link to List Yearn v2 vaults on all chains") query GetV2VaultAddresses { vaults(vaultType: 2) { chainId address name symbol }} ### Query last 100 deposit events for specific vault[​](https://docs.yearn.fi/developers/data-services/kong#query-last-100-deposit-events-for-specific-vault "Direct link to Query last 100 deposit events for specific vault") query GetDeposits { deposits(chainId: 1, address: "0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204") { amount shares recipient }} #### Query Timeseries Data for specific vault[​](https://docs.yearn.fi/developers/data-services/kong#query-timeseries-data-for-specific-vault "Direct link to Query Timeseries Data for specific vault") query Timeseries { timeseries( label: "tvl-c", component: "tvl", chainId: 1, address: "0xdA816459F1AB5631232FE5e97a05BBBb94970c95", limit: 1000 ) { chainId address label component value time period }} REST API[​](https://docs.yearn.fi/developers/data-services/kong#rest-api "Direct link to REST API") ---------------------------------------------------------------------------------------------------- Kong Exposes a few rest API endpoints that are useful for standardized vault data ### Vault List Data[​](https://docs.yearn.fi/developers/data-services/kong#vault-list-data "Direct link to Vault List Data") This will get a list of all vaults in Kong (note: this includes more than just Yearn Vaults) * REST timeseries path structure: [https://kong.yearn.fi/api/rest/list/vaults/](https://kong.yearn.fi/api/rest/list/vaults/) * REST timeseries path structure: [https://kong.yearn.fi/api/rest/list/vaults/:chainId](https://kong.yearn.fi/api/rest/list/vaults/:chainId) (optional chainID) * REST timeseries Example: [https://kong.yearn.fi/api/rest/list/vaults](https://kong.yearn.fi/api/rest/list/vaults) ### Vault snapshot Data[​](https://docs.yearn.fi/developers/data-services/kong#vault-snapshot-data "Direct link to Vault snapshot Data") This endpoint will return comprehensive data about a particular vault, similar to how yDaemon's individual vault endpoint worked. * REST timeseries path structure: [https://kong.yearn.fi/api/rest/snapshot/:chainId/:address](https://kong.yearn.fi/api/rest/snapshot/:chainId/:address) * REST timeseries Example: [https://kong.yearn.fi/api/rest/snapshot/1/0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204](https://kong.yearn.fi/api/rest/snapshot/1/0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204) ### Timeseries Data[​](https://docs.yearn.fi/developers/data-services/kong#timeseries-data "Direct link to Timeseries Data") * REST timeseries path structure: [https://kong.yearn.fi/api/rest/timeseries/:segment/:chainId/:address](https://kong.yearn.fi/api/rest/timeseries/:segment/:chainId/:address) * :segment options: * 'tvl' * 'apy-historical' * 'pps' * REST timeseries Example: [https://kong.yearn.fi/api/rest/timeseries/tvl/1/0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204](https://kong.yearn.fi/api/rest/timeseries/tvl/1/0xBe53A109B494E5c9f97b9Cd39Fe969BE68BF6204) Database Schema[​](https://docs.yearn.fi/developers/data-services/kong#database-schema "Direct link to Database Schema") ------------------------------------------------------------------------------------------------------------------------- ### Core Tables[​](https://docs.yearn.fi/developers/data-services/kong#core-tables "Direct link to Core Tables") #### `thing`[​](https://docs.yearn.fi/developers/data-services/kong#thing "Direct link to thing") Domain object definitions (vaults, strategies, etc.) * `chain_id`, `address`, `label`, `defaults` (JSONB) #### `snapshot`[​](https://docs.yearn.fi/developers/data-services/kong#snapshot "Direct link to snapshot") Latest contract snapshots with hook data * Stores contract state and enriched hook data * JSONB fields for flexible schema #### `evmlog`[​](https://docs.yearn.fi/developers/data-services/kong#evmlog "Direct link to evmlog") Raw EVM logs with hook enrichments * Full event history with args and hook data in JSONB * Limited history on transfers, deposits, withdraws, approves #### `evmlog_strides`[​](https://docs.yearn.fi/developers/data-services/kong#evmlog_strides "Direct link to evmlog_strides") Track which blocks have been indexed * Prevents duplicate indexing * Identifies gaps in coverage #### `output`[​](https://docs.yearn.fi/developers/data-services/kong#output "Direct link to output") Timeseries data from timeseries hooks * TVL, APY, PPS calculations * Time-series analytics Copy page as Markdown * [Key Features](https://docs.yearn.fi/developers/data-services/kong#key-features) * [Event Sourcing Architecture](https://docs.yearn.fi/developers/data-services/kong#event-sourcing-architecture) * [Hook System](https://docs.yearn.fi/developers/data-services/kong#hook-system) * [Real-Time Webhooks](https://docs.yearn.fi/developers/data-services/kong#real-time-webhooks) * [Domain Modeling with "Things"](https://docs.yearn.fi/developers/data-services/kong#domain-modeling-with-things) * [GraphQL API](https://docs.yearn.fi/developers/data-services/kong#graphql-api) * [Base URL](https://docs.yearn.fi/developers/data-services/kong#base-url) * [Example Queries](https://docs.yearn.fi/developers/data-services/kong#example-queries) * [Query last 100 deposit events for specific vault](https://docs.yearn.fi/developers/data-services/kong#query-last-100-deposit-events-for-specific-vault) * [REST API](https://docs.yearn.fi/developers/data-services/kong#rest-api) * [Vault List Data](https://docs.yearn.fi/developers/data-services/kong#vault-list-data) * [Vault snapshot Data](https://docs.yearn.fi/developers/data-services/kong#vault-snapshot-data) * [Timeseries Data](https://docs.yearn.fi/developers/data-services/kong#timeseries-data) * [Database Schema](https://docs.yearn.fi/developers/data-services/kong#database-schema) * [Core Tables](https://docs.yearn.fi/developers/data-services/kong#core-tables) --- # yCRV Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/ycrv-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of deployed yCRV contracts. Current Addresses[​](https://docs.yearn.fi/developers/addresses/ycrv-contracts#current-addresses "Direct link to Current Addresses") ------------------------------------------------------------------------------------------------------------------------------------- | Contract Name | Contract Address | | --- | --- | | yCRV Boosted Staker | [0xE9A115b77A1057C918F997c32663FdcE24FB873f](https://etherscan.io/address/0xE9A115b77A1057C918F997c32663FdcE24FB873f#code) | | Rewards Distributor | [0xB226c52EB411326CdB54824a88aBaFDAAfF16D3d](https://etherscan.io/address/0xB226c52EB411326CdB54824a88aBaFDAAfF16D3d#code) | | Boosted Staker Utilities | [0x265c8D21A322B04804524b857089De2fEF619569](https://etherscan.io/address/0x265c8D21A322B04804524b857089De2fEF619569#code) | | yvyCRV (Auto-Compounter Vault) | [0x27B5739e22ad9033bcBf192059122d163b60349D](https://etherscan.io/address/0x27B5739e22ad9033bcBf192059122d163b60349D#code) | | yvcrvUSD (crvUSD Vault) | [0xBF319dDC2Edc1Eb6FDf9910E39b37Be221C8805F](https://etherscan.io/address/0xBF319dDC2Edc1Eb6FDf9910E39b37Be221C8805F#code) | | lp-yCRV v2 (vault) | [0x6E9455D109202b426169F0d8f01A3332DAE160f3](https://etherscan.io/address/0x6E9455D109202b426169F0d8f01A3332DAE160f3#code) | | CRV Token | [0xD533a949740bb3306d119CC777fa900bA034cd52](https://etherscan.io/address/0xD533a949740bb3306d119CC777fa900bA034cd52#code) | | yCRV Token | [0xFCc5c47bE19d06BF83eB04298b026F81069ff65b](https://etherscan.io/address/0xFCc5c47bE19d06BF83eB04298b026F81069ff65b#code) | Expired/Deprecated Addresses[​](https://docs.yearn.fi/developers/addresses/ycrv-contracts#expireddeprecated-addresses "Direct link to Expired/Deprecated Addresses") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Contract Name | Contract Address | | --- | --- | | lp-yCRV v1 (DEPRECATED) | [0xc97232527B62eFb0D8ed38CF3EA103A6CcA4037e](https://etherscan.io/address/0xc97232527B62eFb0D8ed38CF3EA103A6CcA4037e#code) | | old CRV/yCRV Curve Pool (DEPRECATED) | [0x453D92C7d4263201C69aACfaf589Ed14202d83a4](https://etherscan.io/address/0x453D92C7d4263201C69aACfaf589Ed14202d83a4#code) | | ZapYCRV.vy | [0x01D7f32B6E463c96c00575fA97B8224326C6A6B9](https://etherscan.io/address/0x01D7f32B6E463c96c00575fA97B8224326C6A6B9#code) | [yCRV Docs](https://docs.yearn.fi/getting-started/products/ylockers/ycrv/overview) Copy page as Markdown * [Current Addresses](https://docs.yearn.fi/developers/addresses/ycrv-contracts#current-addresses) * [Expired/Deprecated Addresses](https://docs.yearn.fi/developers/addresses/ycrv-contracts#expireddeprecated-addresses) --- # yPools Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/ypools-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of all the current yPool contract addresses. yETH contract Address[​](https://docs.yearn.fi/developers/addresses/ypools-contracts#yeth-contract-address "Direct link to yETH contract Address") --------------------------------------------------------------------------------------------------------------------------------------------------- | Name | Address | | --- | --- | | yETH | [`0x1BED97CBC3c24A4fb5C069C6E311a967386131f7`](https://etherscan.io/address/0x1BED97CBC3c24A4fb5C069C6E311a967386131f7) | | st-yETH | [`0x583019fF0f430721aDa9cfb4fac8F06cA104d0B4`](https://etherscan.io/address/0x583019fF0f430721aDa9cfb4fac8F06cA104d0B4) | | Pool | [`0xCcd04073f4BdC4510927ea9Ba350875C3c65BF81`](https://etherscan.io/address/0xCcd04073f4BdC4510927ea9Ba350875C3c65BF81) | | | | | Management | [`0xbBBBBbbB6B942883EAd4976882C99201108c784d`](https://etherscan.io/address/0xbBBBBbbB6B942883EAd4976882C99201108c784d) | | Guardian | [`0xDC775e813cDB38a4f02c4BAd3942319088018eFA`](https://etherscan.io/address/0xDC775e813cDB38a4f02c4BAd3942319088018eFA) | | | | | Protocol Owned Liquidity | [`0x929401e30Aab6bd648dEf2d30FF44952BaB04478`](https://etherscan.io/address/0x929401e30Aab6bd648dEf2d30FF44952BaB04478) | | Bootstrap: Deposit, Vote, Claim Incentives | [`0x41B994C192183793bB9cc35bAAb8bD9C6885c6bf`](https://etherscan.io/address/0x41B994C192183793bB9cc35bAAb8bD9C6885c6bf) | | Bootstrap: Claim st-yETH | [`0x7cf484D9d16BA26aB3bCdc8EC4a73aC50136d491`](https://etherscan.io/address/0x7cf484D9d16BA26aB3bCdc8EC4a73aC50136d491) | | Rate Providers | [`0x5a7CbC89d543399743D7c4b4a21110b19c6208AE`](https://etherscan.io/address/0x5a7CbC89d543399743D7c4b4a21110b19c6208AE) | | Shutdown Module | [`0xe9462885290eb79ece41367d92712d6f525Ba5FA`](https://etherscan.io/address/0xe9462885290eb79ece41367d92712d6f525Ba5FA) | | Curve LP Module | [`0xCE62d9Eb4409af3800e24719e08A736aab7D2022`](https://etherscan.io/address/0xCE62d9Eb4409af3800e24719e08A736aab7D2022) | | Staking Module | [`0x27a2FC2D47c5063A551C8fE81F580b84Ab78aC52`](https://etherscan.io/address/0x27a2FC2D47c5063A551C8fE81F580b84Ab78aC52) | | Merkle Incentives | [`0xAE9De8A3e62e8E2f1e3800d142D23527680a5179`](https://etherscan.io/address/0xAE9De8A3e62e8E2f1e3800d142D23527680a5179) | | | | | Weight Vote | ['0x50397CAB18446761F05883338111AE0eD8213DA3'](https://etherscan.io/address/0x50397CAB18446761F05883338111AE0eD8213DA3) | | Ownership Proxy | ['0x56aF9C2780E0323810aCFdAeaB3F58ef6e76FaFd'](https://etherscan.io/address/0x56aF9C2780E0323810aCFdAeaB3F58ef6e76FaFd) | | Executor | ['0x71258Ee726644f1D52d6A9F5E11C21d1E38c2bF1'](https://etherscan.io/address/0x71258Ee726644f1D52d6A9F5E11C21d1E38c2bF1) | | Generic Governor | ['0xB7a528CF6D36F736Fa678A629b98A427d43E5ba5'](https://etherscan.io/address/0xB7a528CF6D36F736Fa678A629b98A427d43E5ba5) | | Pool Governor | ['0xd192E702ECc54fCFb52f6764333eb8A5C849D6ce'](https://etherscan.io/address/0xd192E702ECc54fCFb52f6764333eb8A5C849D6ce) | > Due to a redeploy of st-yETH during the bootstrap process the first st-yETH contract has been deprecated, use the `Bootstrap: Claim st-yETH` contract to claim the new version if you participated in the bootstrap phase. Find more information about the yPools Roles, modes, and privileges [here](https://docs.yearn.fi/developers/deprecated-products/yPools/ypools-roles) Copy page as Markdown * [yETH contract Address](https://docs.yearn.fi/developers/addresses/ypools-contracts#yeth-contract-address) --- # Yearn Data Services | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/data-services/yearn-data#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown If you want to programmatically interact with Yearn data, or need to fetch large amounts of it then you have a few options: Kong[​](https://docs.yearn.fi/developers/data-services/yearn-data#kong "Direct link to Kong") ---------------------------------------------------------------------------------------------- [Kong](https://kong.yearn.fi/) is an integrated set of services and tools that make it easy to index EVM logs and state, enrich your data with custom hooks, query your data over graphql. Kong is designed to be cheap, reliable, easy to maintain, and simplify the process of updating your index. Kong's Yearn index covers the v3 and v2 vault ecosystems: * Regular contract snapshots of each registry, vault, strategy, trade handler, accountant, and debt allocator. * Full event history for each of the above (\*with limited history on transfers, deposits, withdraws, and approves). * Snapshot hooks for computing vault-strategies relationships, debts, fees, and rewards. * Snapshot hooks for integrating off-chain risk and meta data. * Event hooks for tracking new vaults and strategies, computing spot harvest APRs, and pricing transfers. * Timeseries hooks for computing APY and TVL. Kong can be run locally or a hosted version run by Yearn can be queried with the public endpoint. * **Live API:** [https://kong.yearn.fi/api/gql](https://kong.yearn.fi/api/gql) * **Source:** [https://github.com/yearn/kong](https://github.com/yearn/kong) yDaemon[​](https://docs.yearn.fi/developers/data-services/yearn-data#ydaemon "Direct link to yDaemon") ------------------------------------------------------------------------------------------------------- yDaemon is a RESTful API used by some Yearn frontends. While Kong is generally preferred to yDaemon when possible for the areas of overlap, yDaemon is the best source for current Yearn Vault data and is what is used by the production Yearn frontends. * **Live API:** [https://ydaemon.yearn.fi/1/vaults/all](https://ydaemon.yearn.fi/1/vaults/all) * **Source:** [https://github.com/yearn/ydaemon](https://github.com/yearn/ydaemon) Yearn Lens[​](https://docs.yearn.fi/developers/data-services/yearn-data#yearn-lens "Direct link to Yearn Lens") ---------------------------------------------------------------------------------------------------------------- Yearn Lens is a collection of smart contracts that collect data about V2 Yearn vaults. * **Docs:** [https://docs.yearn.fi/developers/data-services/yearn-lens](https://docs.yearn.fi/developers/data-services/yearn-lens) * * * Deprecated Data Services[​](https://docs.yearn.fi/developers/data-services/yearn-data#deprecated-data-services "Direct link to Deprecated Data Services") ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### Yearn Exporter - No longer supported[​](https://docs.yearn.fi/developers/data-services/yearn-data#yearn-exporter---no-longer-supported "Direct link to Yearn Exporter - No longer supported") The exporter was used to build the (now deprecated) Yearn Grafana dashboard. * **Source + Guide:** [https://github.com/yearn/yearn-exporter](https://github.com/yearn/yearn-exporter) ### Yearn Vision - No longer supported[​](https://docs.yearn.fi/developers/data-services/yearn-data#yearn-vision---no-longer-supported "Direct link to Yearn Vision - No longer supported") Yearn Vision was the Grafana dashboard of the hosted version of Yearn Exporter. * **original endpoint**: [https://yearn.vision](https://yearn.vision/) ### V1 Yearn API - No longer supported[​](https://docs.yearn.fi/developers/data-services/yearn-data#v1-yearn-api---no-longer-supported "Direct link to V1 Yearn API - No longer supported") * **original endpoint**: [https://api.yearn.fi/v1/chains/1/vaults/all](https://api.yearn.fi/v1/chains/1/vaults/all) Copy page as Markdown * [Kong](https://docs.yearn.fi/developers/data-services/yearn-data#kong) * [yDaemon](https://docs.yearn.fi/developers/data-services/yearn-data#ydaemon) * [Yearn Lens](https://docs.yearn.fi/developers/data-services/yearn-data#yearn-lens) * [Deprecated Data Services](https://docs.yearn.fi/developers/data-services/yearn-data#deprecated-data-services) * [Yearn Exporter - No longer supported](https://docs.yearn.fi/developers/data-services/yearn-data#yearn-exporter---no-longer-supported) * [Yearn Vision - No longer supported](https://docs.yearn.fi/developers/data-services/yearn-data#yearn-vision---no-longer-supported) * [V1 Yearn API - No longer supported](https://docs.yearn.fi/developers/data-services/yearn-data#v1-yearn-api---no-longer-supported) --- # Yearn Stack + FE Features | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/data-services/yearn-stack#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn SDK integrates several components, both on-chain and off-chain. Backend stack[​](https://docs.yearn.fi/developers/data-services/yearn-stack#backend-stack "Direct link to Backend stack") -------------------------------------------------------------------------------------------------------------------------- ![Backend Chart](https://i.imgur.com/BTuanfX.png) ### On Chain[​](https://docs.yearn.fi/developers/data-services/yearn-stack#on-chain "Direct link to On Chain") * 🔍 Yearn Lens * Oracle * Helpers * Adapters * Vaults V1 * Vaults V2 * Iron Bank ### On IPFS[​](https://docs.yearn.fi/developers/data-services/yearn-stack#on-ipfs "Direct link to On IPFS") ![IPFS Metadata](https://i.imgur.com/VkmnkfX.png) * Yearn Metadata is a lightweight storage for all the stuff that would have been hardcoded in v2 frontend, including but not limited to: * custom messages for deposits / withdrawals * custom copywriting for special assets * strategy descriptions / diagrams * disabling asset interactions * Yearn Frontend ### Off Chain[​](https://docs.yearn.fi/developers/data-services/yearn-stack#off-chain "Direct link to Off Chain") * yDaemon and Kong: stores historical data for vaults Backend features[​](https://docs.yearn.fi/developers/data-services/yearn-stack#backend-features "Direct link to Backend features") ----------------------------------------------------------------------------------------------------------------------------------- ### Resilience powered by on-chain data and IPFS storage[​](https://docs.yearn.fi/developers/data-services/yearn-stack#resilience-powered-by-on-chain-data-and-ipfs-storage "Direct link to Resilience powered by on-chain data and IPFS storage") * Critical data (assets, positions, vault deprecations) will be fetched exclusively from the chain / IPFS * maximizing uptime * reducing reliance on other services * Historical TVL, historical APY and other non critical data will be stored off chain and fetched dinamically. #### On-chain assets and positions[​](https://docs.yearn.fi/developers/data-services/yearn-stack#on-chain-assets-and-positions "Direct link to On-chain assets and positions") * Lens does what the old off-chain API does, but directly on-chain. This will speed up the fetching time and greatly reduce our reliance on scheduled jobs in servers. #### IPFS CI/CD for frontend and metadata[​](https://docs.yearn.fi/developers/data-services/yearn-stack#ipfs-cicd-for-frontend-and-metadata "Direct link to IPFS CI/CD for frontend and metadata") * Frontend and hardcoded values will be stored in IPFS utilizing a similar system to the one [introduced](https://uniswap.org/blog/ipfs-uniswap-interface/) by Uniswap. ### Historical APY and TVL[​](https://docs.yearn.fi/developers/data-services/yearn-stack#historical-apy-and-tvl "Direct link to Historical APY and TVL") * Yearn Exporter provides a simple backend solution for storing real-time stats from yearn products. * Metrics are stored in a time series database and will be exposed by an API, accessible by SDK and third-party. ### SDK, aggregator of many data sources[​](https://docs.yearn.fi/developers/data-services/yearn-stack#sdk-aggregator-of-many-data-sources "Direct link to SDK, aggregator of many data sources") * SDK will provide a simple interface for all integrators, including ourselves. * Read methods will seamlessly integrate with all data sources, while keeping coherent data structures. * Write methods talk directly to assets on chain. Execution of write transactions will trigger refresh events so data freshness of frontend (or other integration platforms) will still be preserved. ### Historical User Earnings[​](https://docs.yearn.fi/developers/data-services/yearn-stack#historical-user-earnings "Direct link to Historical User Earnings") * Yearn Subgraph leverages The Graph to store historical user data that can be aggregated to display historical earnings. ### Metadata[​](https://docs.yearn.fi/developers/data-services/yearn-stack#metadata "Direct link to Metadata") * New way to store all the information that would generally be hard coded directly in the frontend. * Data is now encoded in predefined schemas that are checked at every change. #### Strategy descriptions[​](https://docs.yearn.fi/developers/data-services/yearn-stack#strategy-descriptions "Direct link to Strategy descriptions") We can store Strategy information directly on IPFS so they can be then be queried and rendered the frontend. { "$schema":"strategy", "name":"Idle Finance Reinvest", "description":"Supplies {{token}} to [Idle Finance](https://idle.finance) to earn IDLE and COMP. Earned tokens are harvested, sold for more {{token}} which is deposited back into the strategy.", "protocols":["IdleFinance"]} #### Assets management[​](https://docs.yearn.fi/developers/data-services/yearn-stack#assets-management "Direct link to Assets management") We can store Asset informations so in critical situations we can toggle interactions and add custom messages. { "$schema": "vault", "comment": "Curve EURS", "hideAlways": false, "depositsDisabled": false, "withdrawalsDisabled": false, "order": 18, "migrationAvailable": false, "allowZapIn": true, "allowZapOut": true, "retired": false, "displayName": "Curve EURS"} ### Frontend stack[​](https://docs.yearn.fi/developers/data-services/yearn-stack#frontend-stack "Direct link to Frontend stack") ![Backend Chart](https://i.imgur.com/H5XqpZI.png) ### Frontend Features[​](https://docs.yearn.fi/developers/data-services/yearn-stack#frontend-features "Direct link to Frontend Features") ![Frontend Chart](https://i.imgur.com/LfJmzkK.png) Copy page as Markdown * [Backend stack](https://docs.yearn.fi/developers/data-services/yearn-stack#backend-stack) * [On Chain](https://docs.yearn.fi/developers/data-services/yearn-stack#on-chain) * [On IPFS](https://docs.yearn.fi/developers/data-services/yearn-stack#on-ipfs) * [Off Chain](https://docs.yearn.fi/developers/data-services/yearn-stack#off-chain) * [Backend features](https://docs.yearn.fi/developers/data-services/yearn-stack#backend-features) * [Resilience powered by on-chain data and IPFS storage](https://docs.yearn.fi/developers/data-services/yearn-stack#resilience-powered-by-on-chain-data-and-ipfs-storage) * [Historical APY and TVL](https://docs.yearn.fi/developers/data-services/yearn-stack#historical-apy-and-tvl) * [SDK, aggregator of many data sources](https://docs.yearn.fi/developers/data-services/yearn-stack#sdk-aggregator-of-many-data-sources) * [Historical User Earnings](https://docs.yearn.fi/developers/data-services/yearn-stack#historical-user-earnings) * [Metadata](https://docs.yearn.fi/developers/data-services/yearn-stack#metadata) * [Frontend stack](https://docs.yearn.fi/developers/data-services/yearn-stack#frontend-stack) * [Frontend Features](https://docs.yearn.fi/developers/data-services/yearn-stack#frontend-features) --- # Building on Yearn | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/building-on-yearn#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ![image](https://docs.yearn.fi/assets/images/pixie-wide-no-logo-858fe33d6bb6764b1912dc30edf46e68.jpg) Welcome! This is the spot to be for all things related to building products on, for, and with Yearn. If you are looking for more general information about Yearn and its products, check out the [Getting Started](https://docs.yearn.fi/getting-started/intro) section of the docs. If you are looking to build, read on! Core Tools[​](https://docs.yearn.fi/developers/building-on-yearn#core-tools "Direct link to Core Tools") --------------------------------------------------------------------------------------------------------- * [Solidity](https://docs.soliditylang.org/en/v0.8.6/index.html) * [Brownie](https://eth-brownie.readthedocs.io/en/stable/) * [ethers.js](https://docs.ethers.io/v5/) * [Web3.js](https://web3js.readthedocs.io/en/v1.4.0/) * [Ganache](https://trufflesuite.com/ganache/) * [Foundry](https://github.com/nicolasgarcia214/damn-vulnerable-defi-foundry) Yearn Vaults & Smart Contract Integrations[​](https://docs.yearn.fi/developers/building-on-yearn#yearn-vaults--smart-contract-integrations "Direct link to Yearn Vaults & Smart Contract Integrations") -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Yearn’s core product is the Vault (also known as yVault) — a set-it-and-forget-it yield aggregator running on top of DeFi’s yield-generating protocols like Compound, Aave, Curve, and Convex. ### V3 Vaults[​](https://docs.yearn.fi/developers/building-on-yearn#v3-vaults "Direct link to V3 Vaults") [This Repository](https://github.com/yearn/yearn-vaults-v3) includes the set of smart contracts that are used for the Yearn 4626-compliant V3 vaults. Check out the [V3 Vaults](https://docs.yearn.fi/developers/v3/overview) section of this documentation for more information. ### V2 Vaults[​](https://docs.yearn.fi/developers/building-on-yearn#v2-vaults "Direct link to V2 Vaults") [This repository](https://github.com/yearn/yearn-vaults) includes the set of smart contracts that are used for the Yearn V2 Vaults. It contains the requirements, code, deployment scripts, and tests necessary for the core protocol, including an inheritable template strategy for use with Solidity-based strategies that interact with Yearn Vaults. These contracts are used to create a simple way to generate high risk-adjusted returns for depositors of various assets via best-in-class lending protocols, liquidity pools, and community-made yield farming strategies on Ethereum. Check out the [V2 Vaults](https://docs.yearn.fi/developers/v2/getting-started) section of this documentation for more information. ### Strategy Development[​](https://docs.yearn.fi/developers/building-on-yearn#strategy-development "Direct link to Strategy Development") A Yearn Strategy is a set of smart contracts that implement different farming strategies that utilize deposited assets to generate yields. Vaults move assets from one farming application to another by switching between strategies. Rewards/profits generated by strategies are regularly updated, harvested, swapped for the original vault asset, and deposited again for compound farming. V2 and V3 vaults implement strategies differently, so it is important to get familiar with the differences when deciding which Vault product you wish to use. More information about V3 strategies can be found [here](https://docs.yearn.fi/developers/v3/strategy_writing_guide) and information on V2 strategies can be found [here](https://docs.yearn.fi/developers/v2/DEPLOYMENT#deploying-a-new-strategy) ### Frontend Integrations[​](https://docs.yearn.fi/developers/building-on-yearn#frontend-integrations "Direct link to Frontend Integrations") Yearn uses Kong and yDaemon as frontend data sources. Old Yearn SDKs existed, but as of late 2025, only yDaemon and Kong are actively used. Check out the [Frontend Integrations](https://docs.yearn.fi/developers/front-end-development) section of this documentation for more information about Frontend Integrations. ### Data Sources[​](https://docs.yearn.fi/developers/building-on-yearn#data-sources "Direct link to Data Sources") [**Kong**](https://kong.yearn.fi/api/gql) is an API to submit graphql queries for Yearn data. * Learn more about kong [here](https://docs.yearn.fi/developers/data-services/kong) and in the [README](https://github.com/yearn/kong) . [**yDaemon**](https://ydaemon.yearn.fi/) is a public API for a broad range of Vault data. * Learn more about yDaemon [here](https://docs.yearn.fi/developers/data-services/ydaemon) and in the [README](https://github.com/yearn/ydaemon) Data Analysis[​](https://docs.yearn.fi/developers/building-on-yearn#data-analysis "Direct link to Data Analysis") ------------------------------------------------------------------------------------------------------------------ Yearn aims to provide more insights into our products to our customers and partners through analyzing the on-chain and off-chain data. Given that all Yearn protocol data is publicly stored on-chain, there are lots of insights to be gained from analyzing these transactions. **Dune Analytics**\- Query contract data and generate dashboards with SQL * [Vaults Dashboard](https://dune.com/zootrop/yearn-vaults) Research[​](https://docs.yearn.fi/developers/building-on-yearn#research "Direct link to Research") --------------------------------------------------------------------------------------------------- Some of the research questions that we are interested in: * Screening profitable liquidity pools for our strategies * Assessing the impact of TVL on the impermanent loss * Screening the volume of various pools * Providing risk metrics to our vaults * Price volatility of the underlying token * Addressing the protocol risks * Optimizing our strategies according to the change in gas fees * Decide on when to deleverage and trade the governance tokens * Decide on when to harvest * Predicting impermanent loss for Uniswap V3 pools * Portfolio construction across yearn products More details on these topics can be seen in our issues tab. Copy page as Markdown * [Core Tools](https://docs.yearn.fi/developers/building-on-yearn#core-tools) * [Yearn Vaults & Smart Contract Integrations](https://docs.yearn.fi/developers/building-on-yearn#yearn-vaults--smart-contract-integrations) * [V3 Vaults](https://docs.yearn.fi/developers/building-on-yearn#v3-vaults) * [V2 Vaults](https://docs.yearn.fi/developers/building-on-yearn#v2-vaults) * [Strategy Development](https://docs.yearn.fi/developers/building-on-yearn#strategy-development) * [Frontend Integrations](https://docs.yearn.fi/developers/building-on-yearn#frontend-integrations) * [Data Sources](https://docs.yearn.fi/developers/building-on-yearn#data-sources) * [Data Analysis](https://docs.yearn.fi/developers/building-on-yearn#data-analysis) * [Research](https://docs.yearn.fi/developers/building-on-yearn#research) --- # yVaults v3 Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/v3-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ✅ All Addresses on this page match on-chain data. Last checked on: 3/12/2026, 7:26:45 PM UTC info Deployments are done using create2 factories and should be stable across all EVM chains the protocol has been deployed on. If any of the core contracts have not been deployed on a specific chain it can be done permissionlessly using [this CLI tool](https://github.com/wavey0x/yearn-v3-deployer) or via the scripts in the relevant GitHub repo. If you have issues or questions, please reach out to a Yearn contributor for help. Protocol Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#protocol-addresses "Direct link to Protocol Addresses") -------------------------------------------------------------------------------------------------------------------------------------- These are the deployed protocol contracts that can be used by anyone to create and manage yVaults. For Yearn implementation-specific contracts see [#Yearn Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#yearn-specific-addresses) All Protocol Specific contracts can be found by starting with the `ProtocolAddressProvider` contract as the top level directory and then the `ReleaseRegistry`. The `VaultFactory` and `TokenizedStrategy` contracts can be found in the Release Registry and the Vault Original can be found in the `VaultFactory`. The Role Manager Factory provides the easiest way to deploy and manage your own V3 vaults. More information on that [here](https://docs.yearn.fi/developers/v3/vault_management#deployment) . | Name / ENS | Contract Address | | --- | --- | | **Protocol Address Provider**
address-provider.v3.ychad.eth | [0x775F09d6f3c8D2182DFA8bce8628acf51105653c](https://etherscan.io/address/0x775F09d6f3c8D2182DFA8bce8628acf51105653c) | | **Release Registry**
release.registry.v3.ychad.eth | [0x0377b4daDDA86C89A0091772B79ba67d0E5F7198](https://etherscan.io/address/0x0377b4daDDA86C89A0091772B79ba67d0E5F7198) | | **Role Manager Factory** | [0xca12459a931643BF28388c67639b3F352fe9e5Ce](https://etherscan.io/address/0xca12459a931643BF28388c67639b3F352fe9e5Ce) | Core Contract Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#core-contract-addresses "Direct link to Core Contract Addresses") ----------------------------------------------------------------------------------------------------------------------------------------------------- Core contracts are the base generic contracts that can be used by anyone who wants to build on v3 yVaults. ### Version 3.0.4[​](https://docs.yearn.fi/developers/addresses/v3-contracts#version-304 "Direct link to Version 3.0.4") * Vault original: [0xd8063123BBA3B480569244AE66BFE72B6c84b00d](https://etherscan.io/address/0xd8063123BBA3B480569244AE66BFE72B6c84b00d) * VaultFactory: [0x770D0d1Fb036483Ed4AbB6d53c1C88fb277D812F](https://etherscan.io/address/0x770D0d1Fb036483Ed4AbB6d53c1C88fb277D812F) * TokenizedStrategy: [0xD377919FA87120584B21279a491F82D5265A139c](https://etherscan.io/address/0xD377919FA87120584B21279a491F82D5265A139c) ### Version 3.0.3[​](https://docs.yearn.fi/developers/addresses/v3-contracts#version-303 "Direct link to Version 3.0.3") * Vault original: [0xcA78AF7443f3F8FA0148b746Cb18FF67383CDF3f](https://etherscan.io/address/0xcA78AF7443f3F8FA0148b746Cb18FF67383CDF3f) * VaultFactory: [0x5577EdcB8A856582297CdBbB07055E6a6E38eb5f](https://etherscan.io/address/0x5577EdcB8A856582297CdBbB07055E6a6E38eb5f) * TokenizedStrategy: [0x254A93feff3BEeF9cA004E913bB5443754e8aB19](https://etherscan.io/address/0x254A93feff3BEeF9cA004E913bB5443754e8aB19) ### Version 3.0.2[​](https://docs.yearn.fi/developers/addresses/v3-contracts#version-302 "Direct link to Version 3.0.2") * Vault original: [0x1ab62413e0cf2eBEb73da7D40C70E7202ae14467](https://etherscan.io/address/0x1ab62413e0cf2eBEb73da7D40C70E7202ae14467) * VaultFactory: [0x444045c5C13C246e117eD36437303cac8E250aB0](https://etherscan.io/address/0x444045c5C13C246e117eD36437303cac8E250aB0) * TokenizedStrategy: [0xBB51273D6c746910C7C06fe718f30c936170feD0](https://etherscan.io/address/0xBB51273D6c746910C7C06fe718f30c936170feD0) ### Version 3.0.1[​](https://docs.yearn.fi/developers/addresses/v3-contracts#version-301 "Direct link to Version 3.0.1") * Vault ERC-5202 BluePrint: [0xDE992C652b266AE649FEC8048aFC35954Bee6145](https://etherscan.io/address/0xDE992C652b266AE649FEC8048aFC35954Bee6145) * VaultFactory : [0xE9E8C89c8Fc7E8b8F23425688eb68987231178e5](https://etherscan.io/address/0xE9E8C89c8Fc7E8b8F23425688eb68987231178e5) * TokenizedStrategy : [0xDFC8cD9F2f2d306b7C0d109F005DF661E14f4ff2](https://etherscan.io/address/0xDFC8cD9F2f2d306b7C0d109F005DF661E14f4ff2) ### Periphery Contracts[​](https://docs.yearn.fi/developers/addresses/v3-contracts#periphery-contracts "Direct link to Periphery Contracts") All generic periphery contracts and factories can be retrieved on chain from the `AddressProvider` Contract: | Name / ENS | Periphery Contract Address | | --- | --- | | **Protocol Address Provider**
address-provider.v3.ychad.eth | [0x775F09d6f3c8D2182DFA8bce8628acf51105653c](https://etherscan.io/address/0x775F09d6f3c8D2182DFA8bce8628acf51105653c) | | **APR Oracle**
apr.oracle.v3.ychad.eth | [0x1981AD9F44F2EA9aDd2dC4AD7D075c102C70aF92](https://etherscan.io/address/0x1981AD9F44F2EA9aDd2dC4AD7D075c102C70aF92) | | **Common Report Trigger** | [0xf8dF17a35c88AbB25e83C92f9D293B4368b9D52D](https://etherscan.io/address/0xf8dF17a35c88AbB25e83C92f9D293B4368b9D52D) | | **4626 Router** | [0x1112dbCF805682e828606f74AB717abf4b4FD8DE](https://etherscan.io/address/0x1112dbCF805682e828606f74AB717abf4b4FD8DE) | | **Accountant Factory** | [0xF728f839796a399ACc2823c1e5591F05a31c32d1](https://etherscan.io/address/0xF728f839796a399ACc2823c1e5591F05a31c32d1) | | **Debt Allocator Factory** | [0x03D43dF6FF894C848fC6F1A0a7E8a539Ef9A4C18](https://etherscan.io/address/0x03D43dF6FF894C848fC6F1A0a7E8a539Ef9A4C18) | | **Registry Factory** | [0x3A0fa8aac82aD94048098D6af6e8eB36c98816A1](https://etherscan.io/address/0x3A0fa8aac82aD94048098D6af6e8eB36c98816A1) | | **Splitter Factory** | [0xe28fCC9FB2998ba57754789F6666DAa8C815614D](https://etherscan.io/address/0xe28fCC9FB2998ba57754789F6666DAa8C815614D) | | **Auction Factory** | [0xbC587a495420aBB71Bbd40A0e291B64e80117526](https://etherscan.io/address/0xbC587a495420aBB71Bbd40A0e291B64e80117526) | | **Keeper** | [0x52605BbF54845f520a3E94792d019f62407db2f8](https://etherscan.io/address/0x52605BbF54845f520a3E94792d019f62407db2f8) | | **Base Fee Provider** | [0xe0514dd71cfdc30147e76f65c30bdf60bfd437c3](https://etherscan.io/address/0xe0514dd71cfdc30147e76f65c30bdf60bfd437c3) | For a more complete list of all available periphery contracts visit the [Periphery](https://docs.yearn.fi/developers/v3/periphery) section. Yearn Specific Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#yearn-specific-addresses "Direct link to Yearn Specific Addresses") -------------------------------------------------------------------------------------------------------------------------------------------------------- Yearn Specific contracts and roles, as well as the most up to date V3 registry can be retrieved on chain from the Role Manager. To find individual vaults, use the V3 Registry below or refer to [https://yearn.fi/v3](https://yearn.fi/v3) ### EVM Stable Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#evm-stable-addresses "Direct link to EVM Stable Addresses") These addresses are consistent across all EVM chains. | Name / ENS | Contract Address | | --- | --- | | **Current V3 Registry**
registry.v3.ychad.eth | [0xd40ecF29e001c76Dcc4cC0D9cd50520CE845B038](https://etherscan.io/address/0xd40ecF29e001c76Dcc4cC0D9cd50520CE845B038) | | **Legacy V3 Registry** | [0xff31A1B020c868F6eA3f61Eb953344920EeCA3af](https://etherscan.io/address/0xff31A1B020c868F6eA3f61Eb953344920EeCA3af) | ### Ethereum Mainnet (1) Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#ethereum-mainnet-1-addresses "Direct link to Ethereum Mainnet (1) Addresses") Ethereum-specific Yearn addresses | Name / ENS | Contract Address | | --- | --- | | **Role Manager**
role-manager.v3.ychad.eth | [0xb3bd6b2e61753c311efbcf0111f75d29706d9a41](https://etherscan.io/address/0xb3bd6b2e61753c311efbcf0111f75d29706d9a41) | | **Accountant**
accountant.v3.ychad.eth | [0x5A74Cb32D36f2f517DB6f7b0A0591e09b22cDE69](https://etherscan.io/address/0x5A74Cb32D36f2f517DB6f7b0A0591e09b22cDE69) | ### Optimism (10) Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#optimism-10-addresses "Direct link to Optimism (10) Addresses") Optimism-specific Yearn addresses | Name / ENS | Contract Address | | --- | --- | | **Role Manager** | [0x0000000000000000000000000000000000000000](https://optimistic.etherscan.io/address/0x0000000000000000000000000000000000000000) | | **Accountant** | [0x0000000000000000000000000000000000000000](https://optimistic.etherscan.io/address/0x0000000000000000000000000000000000000000) | ### Polygon (137) Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#polygon-137-addresses "Direct link to Polygon (137) Addresses") Polygon-specific Yearn addresses | Name / ENS | Contract Address | | --- | --- | | **Role Manager** | [0x9bcD66bf09ebe5DD35A868307B7638Fd281061E2](https://polygonscan.com/address/0x9bcD66bf09ebe5DD35A868307B7638Fd281061E2) | | **Accountant** | [0x54483f1592ab0aDea2757Ae0d62e6393361d4CEe](https://polygonscan.com/address/0x54483f1592ab0aDea2757Ae0d62e6393361d4CEe) | ### Base (8453) Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#base-8453-addresses "Direct link to Base (8453) Addresses") Base-specific Yearn addresses | Name / ENS | Contract Address | | --- | --- | | **Role Manager** | [0xea3481244024E2321cc13AcAa80df1050f1fD456](https://basescan.org/address/0xea3481244024E2321cc13AcAa80df1050f1fD456) | | **Accountant** | [0x1f399808fE52d0E960CAB84b6b54d5707ab27c8a](https://basescan.org/address/0x1f399808fE52d0E960CAB84b6b54d5707ab27c8a) | ### Arbitrum (42161) Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#arbitrum-42161-addresses "Direct link to Arbitrum (42161) Addresses") Arbitrum-specific Yearn addresses | Name / ENS | Contract Address | | --- | --- | | **Role Manager** | [0x3BF72024420bdc4D7cA6a8b6211829476D6685b1](https://arbiscan.io/address/0x3BF72024420bdc4D7cA6a8b6211829476D6685b1) | | **Accountant** | [0x9ab47be62631036cda3a64b8322704988427f366](https://arbiscan.io/address/0x9ab47be62631036cda3a64b8322704988427f366) | ### Katana (747474) Addresses[​](https://docs.yearn.fi/developers/addresses/v3-contracts#katana-747474-addresses "Direct link to Katana (747474) Addresses") Katana-specific Yearn addresses | Name / ENS | Contract Address | | --- | --- | | **Role Manager** | [0x4671394A28FF147cfcBc9c2b1aab9d3883597417](https://katanascan.com/address/0x4671394A28FF147cfcBc9c2b1aab9d3883597417) | | **Accountant** | [0x1f399808fE52d0E960CAB84b6b54d5707ab27c8a](https://katanascan.com/address/0x1f399808fE52d0E960CAB84b6b54d5707ab27c8a) | Copy page as Markdown * [Protocol Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#protocol-addresses) * [Core Contract Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#core-contract-addresses) * [Version 3.0.4](https://docs.yearn.fi/developers/addresses/v3-contracts#version-304) * [Version 3.0.3](https://docs.yearn.fi/developers/addresses/v3-contracts#version-303) * [Version 3.0.2](https://docs.yearn.fi/developers/addresses/v3-contracts#version-302) * [Version 3.0.1](https://docs.yearn.fi/developers/addresses/v3-contracts#version-301) * [Periphery Contracts](https://docs.yearn.fi/developers/addresses/v3-contracts#periphery-contracts) * [Yearn Specific Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#yearn-specific-addresses) * [EVM Stable Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#evm-stable-addresses) * [Ethereum Mainnet (1) Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#ethereum-mainnet-1-addresses) * [Optimism (10) Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#optimism-10-addresses) * [Polygon (137) Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#polygon-137-addresses) * [Base (8453) Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#base-8453-addresses) * [Arbitrum (42161) Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#arbitrum-42161-addresses) * [Katana (747474) Addresses](https://docs.yearn.fi/developers/addresses/v3-contracts#katana-747474-addresses) --- # yvUSD Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/yvusd-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown yvUSD domain (Ethereum mainnet)[​](https://docs.yearn.fi/developers/addresses/yvusd-contracts#yvusd-domain-ethereum-mainnet "Direct link to yvUSD domain (Ethereum mainnet)") ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | Name | Chain | Address | | --- | --- | --- | | yvUSD vault | Ethereum | [`0x696d02Db93291651ED510704c9b286841d506987`](https://etherscan.io/address/0x696d02Db93291651ED510704c9b286841d506987) | | Locked yvUSD | Ethereum | [`0xAaaFEa48472f77563961Cdb53291DEDfB46F9040`](https://etherscan.io/address/0xAaaFEa48472f77563961Cdb53291DEDfB46F9040) | | Zap Contract | Ethereum | [`0x7ba61c8e19414dcB8fe769a7Be63B508C8062bbA`](https://etherscan.io/address/0x7ba61c8e19414dcB8fe769a7Be63B508C8062bbA) | Copy page as Markdown * [yvUSD domain (Ethereum mainnet)](https://docs.yearn.fi/developers/addresses/yvusd-contracts#yvusd-domain-ethereum-mainnet) --- # yDaemon | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/data-services/ydaemon#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown [yDaemon](https://github.com/yearn/ydaemon) is a legacy REST API aggregator and indexer for Yearn Finance. For more detailed docs, reference [deepwiki](https://deepwiki.com/yearn/ydaemon) . If you are looking to integrate Yearn data, we recommend using the [Kong API](https://docs.yearn.fi/developers/data-services/kong) either via graphQL or REST. Key Features[​](https://docs.yearn.fi/developers/data-services/ydaemon#key-features "Direct link to Key Features") ------------------------------------------------------------------------------------------------------------------- * **Multi-Chain Support**: Ethereum, Optimism, Gnosis, Polygon, Sonic, Fantom, Arbitrum, Katana, and Base * **Real-time Data Indexing**: Continuously monitors blockchain state across all supported chains * **APY/APR Calculations**: Complex yield calculations including historical tracking and forward projections * **Price Aggregation**: Multi-source price feeds updated every 30 seconds * **Vault Classification**: Automatic categorization (V2, V3, Juiced, Gimme, Curve, Velodrome, etc.) * **Strategy Analytics**: Detailed strategy performance metrics and harvest history * **Risk Scoring**: 11-factor risk assessment system for vault safety ### Update Frequencies[​](https://docs.yearn.fi/developers/data-services/ydaemon#update-frequencies "Direct link to Update Frequencies") * Prices: Every 30 seconds * APY information: Every 10 minutes * Metadata: Every minute Supported Chains[​](https://docs.yearn.fi/developers/data-services/ydaemon#supported-chains "Direct link to Supported Chains") ------------------------------------------------------------------------------------------------------------------------------- | Chain ID | Network | | --- | --- | | 1 | Ethereum Mainnet | | 10 | Optimism | | 100 | Gnosis | | 137 | Polygon | | 146 | Sonic | | 250 | Fantom | | 8453 | Base | | 42161 | Arbitrum | | 747474 | Katana | API Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#api-endpoints "Direct link to API Endpoints") ---------------------------------------------------------------------------------------------------------------------- ### Example calls[​](https://docs.yearn.fi/developers/data-services/ydaemon#example-calls "Direct link to Example calls") #### List vaults on Yearn UI[​](https://docs.yearn.fi/developers/data-services/ydaemon#list-vaults-on-yearn-ui "Direct link to List vaults on Yearn UI") [https://ydaemon.yearn.fi/vaults/v3?hideAlways=true&strategiesDetails=withDetails&strategiesCondition=inQueue&chainIDs=1,10,137,250,8453,42161,747474](https://ydaemon.yearn.fi/vaults/v3?hideAlways=true&strategiesDetails=withDetails&strategiesCondition=inQueue&chainIDs=1,10,137,250,8453,42161,747474) #### List retired vaults[​](https://docs.yearn.fi/developers/data-services/ydaemon#list-retired-vaults "Direct link to List retired vaults") [https://ydaemon.yearn.fi/vaults/retired](https://ydaemon.yearn.fi/vaults/retired) ### Vault Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#vault-endpoints "Direct link to Vault Endpoints") #### All Chains (Simplified Format)[​](https://docs.yearn.fi/developers/data-services/ydaemon#all-chains-simplified-format "Direct link to All Chains (Simplified Format)") GET /vaults # All Yearn vaults (all chains)GET /vaults/all # Same as aboveGET /vaults/detected # All detected vaultsGET /vaults/v2 # All V2 Yearn vaultsGET /vaults/v3 # All V3 Yearn vaultsGET /vaults/juiced # Juiced vaultsGET /vaults/gimme # Gimme vaultsGET /vaults/retired # Retired vaultsGET /vaults/pendle # Pendle integration vaultsGET /vaults/optimism # Optimism-specific vaultsGET /vaults/pooltogether # PoolTogether integrationGET /vaults/cove # Cove integrationGET /vaults/morpho # Morpho vaultsGET /vaults/katana # Katana vaultsGET /vaults/ajna # Ajna vaultsGET /vaults/velodrome # Velodrome vaultsGET /vaults/aerodrome # Aerodrome vaultsGET /vaults/curve # Curve vaultsGET /vaults/tvl # Total TVL across all chains #### Chain-Specific (Legacy Format)[​](https://docs.yearn.fi/developers/data-services/ydaemon#chain-specific-legacy-format "Direct link to Chain-Specific (Legacy Format)") GET /{chainID}/vaults/all # All vaults for specific chainGET /{chainID}/vaults/v2/all # V2 vaults for chainGET /{chainID}/vaults/v3/all # V3 vaults for chainGET /{chainID}/vaults/juiced/all # Juiced vaults for chainGET /{chainID}/vaults/gimme/all # Gimme vaults for chainGET /{chainID}/vaults/retired # Retired vaults for chainGET /{chainID}/vaults/some/{addresses} # Multiple specific vaults (comma-separated)GET /{chainID}/vaults/{address} # Single vault detailsGET /{chainID}/vault/{address} # Same as aboveGET /{chainID}/vaults/tvl # TVL for specific chain **Pagination & Sorting Query Parameters:** page (numeric) * Default: 1 * Range: 1-3000 * Used in: Vault list endpoints limit (numeric) * Default: 200 * Range: 1-3000 (or 1-1000 for Rotki endpoints) * Records per page skip (numeric) * Default: 0 * Range: 0-10000 * Records to skip (Rotki-specific) orderBy (string) * Default: 'featuringScore' * Valid values: featuringScore, name, symbol, decimals, type, tvl, address, version, timestamp, profit, loss, profitValue, lossValue * Legacy-specific: apr.net\_apy, apr.composite.boost, apr.points.week\_ago, apr.type, details.order orderDirection (string) * Default: 'asc' * Valid values: asc, desc **Filtering Query Parameters:** strategiesCondition (string) * Default: 'debtRatio' * Valid values: * all - Include all strategies * inQueue - Only strategies in withdrawal queue * debtLimit - Only strategies with non-zero debt limit * debtRatio - Strategies with non-zero debt ratio allocation * absolute - Strategies with actual debt > 0 hideAlways (boolean) * Default: false * Valid values: true/false (or 1/0, yes/no) * Hides vaults marked as hidden or retired * Incompatible with migrable=true migrable (string) * Default: 'none' * Valid values: * none - Don't include migrable vaults if hideAlways/retired * all - Include all migrable vaults * nodust - Include migrable vaults with TVL > $100 * ignore - Completely ignore vaults with migrations available * Incompatible with hideAlways=true chainIDs (string) * Default: All supported chains * Valid values: Comma-separated chain IDs: 1, 10, 137, 250, 8453, 42161 * Example: "1,137,42161" * Supported chains: * 1 = Ethereum * 10 = Optimism * 137 = Polygon * 250 = Fantom * 8453 = Base * 42161 = Arbitrum humanized (boolean) * Default: false * Valid values: true/false * Used in: Price endpoints * Returns floating-point prices instead of raw big integers * `?skip=N` - Skip N vaults from the query (default: 0) * `?first=N` - Limit results to N vaults ### Strategy Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#strategy-endpoints "Direct link to Strategy Endpoints") GET /{chainID}/strategies/all # All strategies for chainGET /{chainID}/strategies/{address} # Specific strategy detailsGET /{chainID}/strategy/{address} # Same as aboveGET /{chainID}/reports/{address} # Harvest reports for strategy ### Harvest & User Earnings Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#harvest--user-earnings-endpoints "Direct link to Harvest & User Earnings Endpoints") GET /{chainID}/vaults/harvests/{addresses} # Harvest history for vaultsGET /{chainID}/earned/{address}/{vaults} # Earnings per vault per userGET /{chainID}/earned/{address} # All earnings for user on chainGET /earned/{address} # All earnings for user (all chains) ### Token Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#token-endpoints "Direct link to Token Endpoints") GET /tokens/all # All tokens (all chains)GET /{chainID}/tokens/all # All tokens for chain ### Price Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#price-endpoints "Direct link to Price Endpoints") GET /prices/all # All prices (all chains)GET /{chainID}/prices/all # All prices for chainGET /{chainID}/prices/{address} # Price for specific tokenGET /{chainID}/prices/some/{addresses} # Prices for multiple tokensGET /{chainID}/prices/all/details # All prices with metadataGET /prices/some/{addresses} # Prices across chainsPOST /prices/some # POST body with addresses array **Price Format:** Returns price in USD with 6 decimal precision (e.g., "999727" = $0.999727) ### Info/Utility Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#infoutility-endpoints "Direct link to Info/Utility Endpoints") GET / # Welcome messageGET /health # Health check with timestampGET /info/chains # Supported chains configurationGET /info/vaults/blacklisted # Blacklisted vault addressesGET /{chainID}/status # Chain indexing status ### Custom Integration Endpoints[​](https://docs.yearn.fi/developers/data-services/ydaemon#custom-integration-endpoints "Direct link to Custom Integration Endpoints") GET /rotki/list/vaults # Vaults formatted for RotkiGET /rotki/count/vaults # Vault count for Rotki Risk Score System[​](https://docs.yearn.fi/developers/data-services/ydaemon#risk-score-system "Direct link to Risk Score System") ---------------------------------------------------------------------------------------------------------------------------------- The `riskScore` array in vault data contains 11 risk factors (scored 0-5 each): | Index | Risk Factor | | --- | --- | | 0 | Code review quality | | 1 | Testing coverage and quality | | 2 | Code complexity | | 3 | Market risk exposure | | 4 | Protocol integration complexity | | 5 | Centralization risk | | 6 | External protocol audit status | | 7 | External protocol centralization | | 8 | External protocol TVL size | | 9 | External protocol longevity | | 10 | External protocol type risk | **Overall Risk Level:** * \-1: Not assessed * 1: Safest * 5: Riskiest Vault Categories[​](https://docs.yearn.fi/developers/data-services/ydaemon#vault-categories "Direct link to Vault Categories") ------------------------------------------------------------------------------------------------------------------------------- ### Vault Types[​](https://docs.yearn.fi/developers/data-services/ydaemon#vault-types "Direct link to Vault Types") * "Yearn Vault" - Yearn V2 vaults * "Automated Yearn Vault" - Yearn V3 vaults * Various integration-specific types ### Vault Kinds[​](https://docs.yearn.fi/developers/data-services/ydaemon#vault-kinds "Direct link to Vault Kinds") * "Legacy" - Older vault versions * "Single Strategy" - One strategy per vault * "Multi Strategy" - Multiple strategies (V3) Architecture Overview[​](https://docs.yearn.fi/developers/data-services/ydaemon#architecture-overview "Direct link to Architecture Overview") ---------------------------------------------------------------------------------------------------------------------------------------------- ### Data Sources[​](https://docs.yearn.fi/developers/data-services/ydaemon#data-sources "Direct link to Data Sources") yDaemon aggregates data from multiple sources: 1. **Yearn Subgraph**: Base data source for vault and strategy information 2. **Yearn Meta**: Configuration and metadata (risk scores, descriptions, icons) 3. **Yearn Lens Oracle**: On-chain price data for tokens and vaults 4. **Blockchain RPC**: Direct chain queries via Tenderly and other providers 5. **Curve API**: Pool and gauge information for Curve vaults 6. **External Price Feeds**: Gamma, Pendle, and other protocol-specific data ### Caching Strategy[​](https://docs.yearn.fi/developers/data-services/ydaemon#caching-strategy "Direct link to Caching Strategy") * **Vault Data**: 5-minute cache TTL * **Price Data**: 1-minute cache TTL * **Token Data**: 5-minute cache TTL * Background daemons refresh data continuously Performance & Features[​](https://docs.yearn.fi/developers/data-services/ydaemon#performance--features "Direct link to Performance & Features") ------------------------------------------------------------------------------------------------------------------------------------------------ * Handles multiple chains simultaneously * Websocket support for real-time updates (where available) * Batch operations via multicall contracts * Optimized block range queries per chain * CORS enabled for all origins * gzip compression enabled Code Examples[​](https://docs.yearn.fi/developers/data-services/ydaemon#code-examples "Direct link to Code Examples") ---------------------------------------------------------------------------------------------------------------------- ### Fetch All Vaults on Ethereum[​](https://docs.yearn.fi/developers/data-services/ydaemon#fetch-all-vaults-on-ethereum "Direct link to Fetch All Vaults on Ethereum") curl https://ydaemon.yearn.fi/1/vaults/all // JavaScript/TypeScriptconst response = await fetch('https://ydaemon.yearn.fi/1/vaults/all');const vaults = await response.json();console.log(`Found ${vaults.length} vaults`);vaults.forEach(vault => { console.log(`${vault.name}: TVL $${vault.tvl.tvl.toLocaleString()}`);}); # Pythonimport requestsresponse = requests.get('https://ydaemon.yearn.fi/1/vaults/all')vaults = response.json()for vault in vaults: print(f"{vault['name']}: TVL ${vault['tvl']['tvl']:,.2f}") ### Get Specific Vault Details[​](https://docs.yearn.fi/developers/data-services/ydaemon#get-specific-vault-details "Direct link to Get Specific Vault Details") # Get yvDAI vault detailscurl https://ydaemon.yearn.fi/1/vaults/0xdA816459F1AB5631232FE5e97a05BBBb94970c95 // TypeScript with type safetyinterface VaultResponse { address: string; name: string; symbol: string; tvl: { totalAssets: string; tvl: number; price: number; }; apr: { netAPR: number; fees: { performance: number; management: number; }; };}const getVaultDetails = async (chainId: number, vaultAddress: string): Promise => { const response = await fetch(`https://ydaemon.yearn.fi/${chainId}/vaults/${vaultAddress}`); return await response.json();};const vault = await getVaultDetails(1, '0xdA816459F1AB5631232FE5e97a05BBBb94970c95');console.log(`APR: ${(vault.apr.netAPR * 100).toFixed(2)}%`); ### Get Token Prices[​](https://docs.yearn.fi/developers/data-services/ydaemon#get-token-prices "Direct link to Get Token Prices") # Get DAI pricecurl https://ydaemon.yearn.fi/1/prices/0x6B175474E89094C44Da98b954EedeAC495271d0F# Returns: "999727" (meaning $0.999727) // Get multiple token pricesconst tokens = [ '0x6B175474E89094C44Da98b954EedeAC495271d0F', // DAI '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC];const addresses = tokens.join(',');const response = await fetch(`https://ydaemon.yearn.fi/1/prices/some/${addresses}`);const prices = await response.json();// Convert from 6-decimal format to standard priceObject.entries(prices).forEach(([address, price]) => { console.log(`Token ${address}: $${(price / 1e6).toFixed(6)}`);}); ### Get User Earnings[​](https://docs.yearn.fi/developers/data-services/ydaemon#get-user-earnings "Direct link to Get User Earnings") # Get earnings for a user across all vaults on Ethereumcurl https://ydaemon.yearn.fi/1/earned/0x742d35Cc6634C0532925a3b844Bc454e4438f44e ### Pagination Example[​](https://docs.yearn.fi/developers/data-services/ydaemon#pagination-example "Direct link to Pagination Example") // Fetch vaults in batchesconst BATCH_SIZE = 100;let allVaults = [];let skip = 0;while (true) { const response = await fetch( `https://ydaemon.yearn.fi/1/vaults/all?first=${BATCH_SIZE}&skip=${skip}` ); const vaults = await response.json(); if (vaults.length === 0) break; allVaults = allVaults.concat(vaults); skip += BATCH_SIZE; if (vaults.length < BATCH_SIZE) break; // Last page}console.log(`Total vaults: ${allVaults.length}`); Copy page as Markdown * [Key Features](https://docs.yearn.fi/developers/data-services/ydaemon#key-features) * [Update Frequencies](https://docs.yearn.fi/developers/data-services/ydaemon#update-frequencies) * [Supported Chains](https://docs.yearn.fi/developers/data-services/ydaemon#supported-chains) * [API Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#api-endpoints) * [Example calls](https://docs.yearn.fi/developers/data-services/ydaemon#example-calls) * [Vault Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#vault-endpoints) * [Strategy Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#strategy-endpoints) * [Harvest & User Earnings Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#harvest--user-earnings-endpoints) * [Token Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#token-endpoints) * [Price Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#price-endpoints) * [Info/Utility Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#infoutility-endpoints) * [Custom Integration Endpoints](https://docs.yearn.fi/developers/data-services/ydaemon#custom-integration-endpoints) * [Risk Score System](https://docs.yearn.fi/developers/data-services/ydaemon#risk-score-system) * [Vault Categories](https://docs.yearn.fi/developers/data-services/ydaemon#vault-categories) * [Vault Types](https://docs.yearn.fi/developers/data-services/ydaemon#vault-types) * [Vault Kinds](https://docs.yearn.fi/developers/data-services/ydaemon#vault-kinds) * [Architecture Overview](https://docs.yearn.fi/developers/data-services/ydaemon#architecture-overview) * [Data Sources](https://docs.yearn.fi/developers/data-services/ydaemon#data-sources) * [Caching Strategy](https://docs.yearn.fi/developers/data-services/ydaemon#caching-strategy) * [Performance & Features](https://docs.yearn.fi/developers/data-services/ydaemon#performance--features) * [Code Examples](https://docs.yearn.fi/developers/data-services/ydaemon#code-examples) * [Fetch All Vaults on Ethereum](https://docs.yearn.fi/developers/data-services/ydaemon#fetch-all-vaults-on-ethereum) * [Get Specific Vault Details](https://docs.yearn.fi/developers/data-services/ydaemon#get-specific-vault-details) * [Get Token Prices](https://docs.yearn.fi/developers/data-services/ydaemon#get-token-prices) * [Get User Earnings](https://docs.yearn.fi/developers/data-services/ydaemon#get-user-earnings) * [Pagination Example](https://docs.yearn.fi/developers/data-services/ydaemon#pagination-example) --- # yYB Contract Addresses | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/addresses/yyb-contracts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown A list of deployed yYB contracts. Current Addresses[​](https://docs.yearn.fi/developers/addresses/yyb-contracts#current-addresses "Direct link to Current Addresses") ------------------------------------------------------------------------------------------------------------------------------------ | Contract Name | Contract Address | | --- | --- | | yYB Boosted Staker | [0x5D2eA33449A60a70E8FCdc5251FDd86a030fAD91](https://etherscan.io/address/0x5D2eA33449A60a70E8FCdc5251FDd86a030fAD91#code) | | Rewards Distributor | [0x1d02F6A86Ed5650f93E40FCD62fa5727c32ad746](https://etherscan.io/address/0x1d02F6A86Ed5650f93E40FCD62fa5727c32ad746#code) | | Boosted Staker Utilities | [0xb70E1CBFf4DFf345b3Aa832CC1C03cA26766AD55](https://etherscan.io/address/0xb70E1CBFf4DFf345b3Aa832CC1C03cA26766AD55#code) | | yvyYB (Auto-Compounter Vault) | [0x1F6f16945e395593d8050d6Cc33e4328a515B648](https://etherscan.io/address/0x1F6f16945e395593d8050d6Cc33e4328a515B648#code) | | yvcrvUSD-2 (crvUSD Vault) | [0xBF319dDC2Edc1Eb6FDf9910E39b37Be221C8805F](https://etherscan.io/address/0xBF319dDC2Edc1Eb6FDf9910E39b37Be221C8805F#code) | | lp-yYB v2 (vault) | [0x0844C227b892be5d7c837000C096f64bFc316c2d](https://etherscan.io/address/0x0844C227b892be5d7c837000C096f64bFc316c2d#code) | | YB Token | [0x01791F726B4103694969820be083196cC7c045fF](https://etherscan.io/address/0x01791F726B4103694969820be083196cC7c045fF#code) | | yYB Token | [0x22222222aEA0076fCA927a3f44dc0B4FdF9479D6](https://etherscan.io/address/0x22222222aEA0076fCA927a3f44dc0B4FdF9479D6#code) | [yYB Docs](https://docs.yearn.fi/getting-started/products/ylockers/yyb/overview) Copy page as Markdown * [Current Addresses](https://docs.yearn.fi/developers/addresses/yyb-contracts#current-addresses) --- # StableCredit | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/stablecredit#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown StableCredit combines three pillars of existing DeFi infrastructure: * Minting synthetic debt (DAI, Synthetix). * Decentralized lending platform (Compound, AAVE). * Automated Market Maker (AMM) functionality (Uniswap, Sushiswap). Mechanics[​](https://docs.yearn.fi/developers/deprecated-products/stablecredit#mechanics "Direct link to Mechanics") --------------------------------------------------------------------------------------------------------------------- StableCredit will enable users to deposit assets as collateral and obtain a line of credit (denominated in StableCredit USD) based on the dollar value of the assets at deposit. For example, a user can deposit 100 LINK and will obtain 1,100worthofStableCreditUSD(atthetimeofwritingLINKis 1,100 worth of StableCredit USD (at the time of writing LINK is ~1,100worthofStableCreditUSD(atthetimeofwritingLINKis 11). StableCredit USD can then be traded for other assets available in the protocol. Exchange rates between StableCredit USD and assets in the protocol are determined by price feeds from oracles (Chainlink), and current utilization ratios of assets within the platform. For example, if liquidity providers have lent 100 DAI to the pool and 90 DAI is borrowed, the utilization ratio is 90%. Similar to how bonding curves work, there will then be a significant premium for any additional DAI borrowing (the cost to borrow DAI will be > $1). Users will be able to borrow up to 75% of the value of their collateral (i.e., utilization ratio of 75%). The AMM will also support single-sided liquidity exposure for liquidity providers (LPs). Current popular AMM models, such as Uniswap and Sushiswap, require LPs to deposit both assets in a liquidity pool. For example, in a ETH-USDC liquidity pool, the liquidity provider would be required to deposit ETH and USDC in a 50/50 ratio. This increases the barrier to entry for liquidity providers and also the capital requirements. Single-sided liquidity provisioning will enable LPs to deposit only one of the assets in the liquidity pool (i.e., either ETH or USDC). As a result, the barriers of entry to be a LP will be greatly reduced, and should contribute to an overall increase in capital efficiency. Summary[​](https://docs.yearn.fi/developers/deprecated-products/stablecredit#summary "Direct link to Summary") --------------------------------------------------------------------------------------------------------------- Users can: * Deposit collateral and obtain a line of credit (StableCredit USD). * Borrow other assets with this line of credit (similar to Aave or Compound). * Trade the asset borrowed for another asset in the pool (existing AMM functionality). Additional Learning Resources & Background[​](https://docs.yearn.fi/developers/deprecated-products/stablecredit#additional-learning-resources--background "Direct link to Additional Learning Resources & Background") ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * [Initial Medium Post introducing StableCredit](https://medium.com/iearn/introducing-stablecredit-a-new-protocol-for-decentralized-lending-stablecoins-and-amms-7252a43ee56) * [Animation illustrating the mechanics of StableCredit](https://twitter.com/finematics/status/1305188626008100865) * [Bankless video about StableCredit, featuring Andre Cronje](https://www.youtube.com/watch?v=SkTuMVBLBNQ) * [CODEUP 38 video about StableCredit, featuring Andre Cronje](https://www.youtube.com/watch?v=bdC3rNDChbw&feature=youtu.be&t=2002) Copy page as Markdown * [Mechanics](https://docs.yearn.fi/developers/deprecated-products/stablecredit#mechanics) * [Summary](https://docs.yearn.fi/developers/deprecated-products/stablecredit#summary) * [Additional Learning Resources & Background](https://docs.yearn.fi/developers/deprecated-products/stablecredit#additional-learning-resources--background) --- # Woofy | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/woofy#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown The WOOFY token is the blue dog companion token of YFI. Utilizing special Woof technology, it allows two-way conversion between the two tokens, allowing holders to be exposed to YFI in a fluffier package. At its core, WOOFY solves two problems: YFI not being dog themed, and the price of a single YFI being too high in USD terms. **1 YFI = 1,000,000 WOOFY**. YFI and WOOFY can always be exchanged with one another at that fixed rate using either the [WOOFY Ethereum contract](https://etherscan.io/address/0xd0660cd418a64a1d44e9214ad8e459324d8157f1#code) , or the [Woofy website](https://woofy.finance/) . How to Woof and Unwoof[​](https://docs.yearn.fi/developers/deprecated-products/woofy#how-to-woof-and-unwoof "Direct link to How to Woof and Unwoof") ----------------------------------------------------------------------------------------------------------------------------------------------------- ![](https://i.imgur.com/HqfCYZX.png) [WOOFY](https://etherscan.io/address/0xd0660cd418a64a1d44e9214ad8e459324d8157f1) can be created ("woofed") by depositing YFI on the [Woofy website](https://woofy.finance/) . It can also be redeemed ("unwoofed") for the equivalent amount of YFI at any time. #### Converting YFI to WOOFY[​](https://docs.yearn.fi/developers/deprecated-products/woofy#converting-yfi-to-woofy "Direct link to Converting YFI to WOOFY") * **Step 1**: Visit [https://woofy.finance](https://woofy.finance/) * **Step 2**: Select 'Woof' above the swap interface * **Step 3**: Enter the amount of YFI you would like to convert * **Step 4**: Approve the YFI * **Step 5**: Click 'Woof' below the swap interface #### Converting WOOFY to YFI[​](https://docs.yearn.fi/developers/deprecated-products/woofy#converting-woofy-to-yfi "Direct link to Converting WOOFY to YFI") * **Step 1**: Visit [https://woofy.finance](https://woofy.finance/) * **Step 2**: Select 'Unwoof' above the swap interface * **Step 3**: Enter the amount of WOOFY you would like to convert * **Step 4**: Click 'Unwoof' below the swap interface If it's your first time holding either token after the exchange, make sure to click 'Add Token' above the token's logo so that it will appear in your wallet. Copy page as Markdown * [How to Woof and Unwoof](https://docs.yearn.fi/developers/deprecated-products/woofy#how-to-woof-and-unwoof) --- # Delegated Funding DAO Vaults | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/delegated-funding-dao-vaults#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown YFI holders can provide capital to DAOs approved to accept funding in the DAO vault ecosystem. DAOs wishing to receive funding are required to setup [Gitcoin Grants](https://gitcoin.co/grants/) page and apply for funding via the [Yearn governance forum](https://gov.yearn.fi/) . If there is sufficient interest to approve the DAO for funding an off-chain vote will be conducted ([https://vote.yearn.fi](https://yearn.snapshot.page/#/) ). If voting is successful the DAO will be added to the DAO vault ecosystem. Governance determines weekly, monthly, and yearly credit limits that the DAO can access via the [DAO vault](https://yborrow.finance/) . The DAO is free to repay the credit line on their own terms, and in tokens or other collateral options accepted in the yearn ecosystem. Any profits are shared between vault LPs. ### Resources[​](https://docs.yearn.fi/developers/deprecated-products/delegated-funding-dao-vaults#resources "Direct link to Resources") * Medium article: [Delegated Funding DAO Vaults](https://medium.com/iearn/delegated-funding-dao-vaults-7ab05a63d7ba) Copy page as Markdown * [Resources](https://docs.yearn.fi/developers/deprecated-products/delegated-funding-dao-vaults#resources) --- # veCRV Boosts | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown > **This page is outdated since yveCRV was deprecated in favour of yCRV. Check the new yCRV [page](https://docs.yearn.fi/getting-started/products/ylockers/ycrv/overview) > .** Almost everything that yVaults interact with is available to the public. So how is Yearn able to offer users better yield than they'd be able to achieve on their own? ![](https://i.imgur.com/6lmhESr.png) Curve Finance Synergy[​](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#curve-finance-synergy "Direct link to Curve Finance Synergy") --------------------------------------------------------------------------------------------------------------------------------------------------------- Many of Yearn's strategies utilize Curve Finance's liquidity mining program. [Curve Finance](https://curve.finance/) has a 300 year token distribution program for those who provide liquidity for their low slippage decentralized exchange. ### veCRV Boosts[​](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#vecrv-boosts-1 "Direct link to veCRV Boosts") CRV is distributed continuously to users who stake certain liquidity provider tokens in Curve's [gauge](https://resources.curve.finance/base-features/understanding-gauges) . Those CRV rewards can be increased when the user locks up their CRV in the [Locker](https://dao.curve.finance/locker) . This locker gives the staker veCRV in return, which bears the right to vote in governance and to claim a portion of the protocol's fees. Locking CRV allows users to boost the CRV rewards they are receiving when providing liquidity in eligible pools. The amount of the boost is determined by how much CRV was locked and their relative stake in the pool. ![](https://i.imgur.com/QaMMdr7.png) Using the Backscratcher yVault, Yearn locks up a significant amount of CRV indefinitely, and distributes the boosts to various yVaults. ### Backscratcher yVaults[​](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#backscratcher-yvaults "Direct link to Backscratcher yVaults") The Backscratcher yVault, yvBOOST and pSLPyvBOOST-ETH, capitalizes on liquidity mining in a way that's beneficial to both Curve and Yearn. Users deposit CRV into the yVault which is locked infinitely. In return they receive a token that represents a share of the Backscratcher pool. Revenue earned from Curve through Curve fee sharing is distributed in the Backscratcher pool and can be redeemed by depositors on a weekly basis. Additionally, 10% of all CRV earned by Yearn Finance is deposited into Backscratcher and locked infinitely. Because of this, people who want to stake CRV will always receive a higher share of the Backscratcher yVault's revenue than staking directly through Curve. They also can earn emissions of tokens like SUSHI and PICKLE for providing liquidity. Users will never be able to withdraw their original CRV, but because of the incentives on yveCRV liquidity and the value that the token accrues from various sources of revenue, they will be able to swap it for another asset for some price. In return, control over the locked CRV's boosts is given to Yearn, and utilized throughout various yVaults. Auto-compounding yield[​](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#auto-compounding-yield "Direct link to Auto-compounding yield") ------------------------------------------------------------------------------------------------------------------------------------------------------------ Compounding yield requires transaction fees to be paid to the Ethereum blockchain. This can be expensive and cut into returns. Because yVaults batch your transaction with many other depositors, it is cumulatively lower cost and higher return to earn yield using the vaults. Currently, gas costs are covered by the Keep3r network, meaning that users are compounding returns while bearing no cost. Leverage[​](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#leverage "Direct link to Leverage") ------------------------------------------------------------------------------------------------------------------ Yearn utilizes the [Iron Bank (C.R.E.A.M. Finance)](https://docs.ib.xyz/) to access credit that is used to enhance yVault yields. Only white-listed addresses have this feature available to them, meaning that typically, individuals are not able to do this on their own. ![](https://i.imgur.com/WJIjOKv.png) Some strategies also implement flash loans, which is typically a backend service that requires development experience to take advantage of. Partnerships[​](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#partnerships "Direct link to Partnerships") ------------------------------------------------------------------------------------------------------------------------------ The Backscratcher yVault is only possible due to synergistic relationships with protocols like Curve, SushiSwap and Pickle Finance. Our relationships across DeFi allow yVault depositors benefits that they cannot get elsewhere. Yearn actively collaborates on development with protocols like the ones mentioned to create new opportunities for yield and further DeFi as an industry. Copy page as Markdown * [Curve Finance Synergy](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#curve-finance-synergy) * [veCRV Boosts](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#vecrv-boosts-1) * [Backscratcher yVaults](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#backscratcher-yvaults) * [Auto-compounding yield](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#auto-compounding-yield) * [Leverage](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#leverage) * [Partnerships](https://docs.yearn.fi/developers/deprecated-products/vecrv-boosts#partnerships) --- # yBribe | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/ybribe/#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown [yBribe](https://ybribe.com/) is a platform where vote-escrowed Curve (veCRV) holders can receive compensation from buyers interested in increasing CRV emissions to their Curve pool’s gauge. In DeFi, incentives for voting are commonly referred to as ‘bribes’. yBribe enables veCRV holders — be they protocols, DAOs, or individual users, to extract the value of their voting power. ![](https://i.imgur.com/WedS2iP.png) **yBribe pairs users looking to buy votes, with those looking to sell them.** Curve conducts weekly gauge votes that determine the allocation of CRV rewards to various pools. By buying votes, DAOs, protocols, and users can influence the direction of these rewards while boosting yields in pools beneficial to them. To do this, use the ‘Offer Bribe’ function on yBribe. Once the bribe is posted, voters will see the pending APR for that gauge increase. veCRV holders can sell their gauge votes to the highest bidder each week by voting on the bribed gauge with the highest APR. Why yBribe[​](https://docs.yearn.fi/developers/deprecated-products/ybribe/#why-ybribe "Direct link to Why yBribe") ------------------------------------------------------------------------------------------------------------------- #### yBribe is fully trustless, permissionless and non-custodial[​](https://docs.yearn.fi/developers/deprecated-products/ybribe/#ybribe-is-fully-trustless-permissionless-and-non-custodial "Direct link to yBribe is fully trustless, permissionless and non-custodial") * A new UI makes it easy for veCRV holders to identify the best opportunities. * Convex votes are excluded from the system to make bribes more efficient. * Fully trustless design and 100% on-chain design. * The codebase is fully audited. Copy page as Markdown * [Why yBribe](https://docs.yearn.fi/developers/deprecated-products/ybribe/#why-ybribe) --- # Yearn Lens | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/data-services/yearn-lens#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Yearn Lens is a series of smart contracts that aggregate and format Yearn v2 Vault data into standardized interfaces. Architecture[​](https://docs.yearn.fi/developers/data-services/yearn-lens#architecture "Direct link to Architecture") ---------------------------------------------------------------------------------------------------------------------- ### Block Diagram[​](https://docs.yearn.fi/developers/data-services/yearn-lens#block-diagram "Direct link to Block Diagram") ![Chart](https://i.imgur.com/IWSIiJi.png) ### Key Concepts[​](https://docs.yearn.fi/developers/data-services/yearn-lens#key-concepts "Direct link to Key Concepts") * Lens * The lens contract acts as the primary data aggregator * Registry adapters can be added or removed from the lens contract * The lens contract supports many of the same methods as the registry adapters, but returns aggregated views across asset types * Registry Adapters * The purpose of registry adapters is to read data from various registries and return data in a standardized format * Currently registry adapters exist for: * v1 Vaults * v2 Vaults * Earn * Iron Bank * veCrv * All registry adapters must implement a standardized set of methods (details below) * Registry adapters have the ability to return metadata specific to an asset type (for example for vaults: `pricePerShare`, `controller`, etc.) * Oracle * The oracle contract is responsible for fetching price information from various sources * The oracle is intended for non-critical off-chain calculations * TVL calculations * Token and asset balance normalizations * Not intended to be used with strategies or other contracts * Prices are returned in USDC * Supports adding, removing and upgrading price calculations * Currently supported calculations: * Sushiswap market price (based on `getAmountsOut`) * Uniswap market price (based on `getAmountsOut`) * Sushiswap/Uniswap LP token prices (based on `getReserves`) * Iron Bank market price (based on `exchangeRateStored`) * Curve LP token price (based on `virtualPrice` and base underlying token price) * The oracle contract itself is very lightweight * A cascading fallback mechanism is utilized to fetch the most appropriate price for a given asset * This means the majority of logic lives on calculation contracts * This also means the oracle contract gets direct access to all underlying calculation contract helper methods ### Key Features[​](https://docs.yearn.fi/developers/data-services/yearn-lens#key-features "Direct link to Key Features") * Obtain all Yearn family asset data in a standardized interface * Obtain all user asset and token balances/allowances * Ability to return USDC normalized balances as well as base asset balances * Obtain various TVL calculations for Yearn * Total TVL * TVL per asset type * TVL per asset * Integration with all Yearn family protocols * v1/v2 vaults * Iron Bank * Earn * VeCrv (base contract and pJar) Contracts[​](https://docs.yearn.fi/developers/data-services/yearn-lens#contracts "Direct link to Contracts") ------------------------------------------------------------------------------------------------------------- ### Registry Adapters[​](https://docs.yearn.fi/developers/data-services/yearn-lens#registry-adapters "Direct link to Registry Adapters") #### Schema[​](https://docs.yearn.fi/developers/data-services/yearn-lens#schema "Direct link to Schema") ##### Standardized Interfaces[​](https://docs.yearn.fi/developers/data-services/yearn-lens#standardized-interfaces "Direct link to Standardized Interfaces") All registry adapters are required to implement the following interfaces. ###### AdapterMetadata[​](https://docs.yearn.fi/developers/data-services/yearn-lens#adaptermetadata "Direct link to AdapterMetadata") struct AdapterMetadata { string typeId; string categoryId; string subcategoryId;} ###### Asset[​](https://docs.yearn.fi/developers/data-services/yearn-lens#asset "Direct link to Asset") struct Asset { address id; string typeId; string name; string version; uint256 balance; uint256 balanceUsdc; // Asset TVL == balance * token.priceUsdc Token token; AssetMetadata metadata;} ###### AssetStatic (static) (not connected)[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetstatic-static-not-connected "Direct link to AssetStatic (static) (not connected)") struct AssetStatic { address id; string typeId; string name; string version; Token token;} ###### Token (static) (not connected)[​](https://docs.yearn.fi/developers/data-services/yearn-lens#token-static-not-connected "Direct link to Token (static) (not connected)") struct Token { address id; string name; string symbol; uint8 decimals;} assetsStatic():[{ id: "0x123...", typeId: "v2Vault", name: "YFI Vault", version: "0.3.2", tokenId: "0x234..." token: { id: "0x234...", name: "yearn.fi", symbol: "YFI", decimals: 18 }}] ###### AssetDynamic (dynamic) (not connected)[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetdynamic-dynamic-not-connected "Direct link to AssetDynamic (dynamic) (not connected)") struct AssetDynamic { address assetId; address tokenId; AssetMetadata metadata; TokenAmount underlyingTokenBalance; // Amount of underlying token in the asset} ###### TokenAmount (dynamic)[​](https://docs.yearn.fi/developers/data-services/yearn-lens#tokenamount-dynamic "Direct link to TokenAmount (dynamic)") struct TokenAmount { uint256 amount; uint256 amountUsdc;} assetsDynamic():[{ assetId: "0x123", tokenId: "0x456", metadata: { pricePerShare: "101000022394340034000" }, underlyingTokenBalance: { amount: "53233222334444334444", // vault.totalAssets() amountUsdc: "3422233333445" }}] ###### Position (dynamic) (connected)[​](https://docs.yearn.fi/developers/data-services/yearn-lens#position-dynamic-connected "Direct link to Position (dynamic) (connected)") struct Position { address assetId; string typeId; address tokenId; uint256 balance; // asset.balanceOf(account) - shares owned by user TokenPostion underlyingTokenBalance; // Amount of underlying token in the asset that a user owns TokenPosition accountTokenBalance; // Amount of underlying token a user owns Allowance[] tokenAllowances; Allowance[] assetAllowances;} positionsOf(account):[{ assetId: "0x123", typeId: "deposit", tokenId: "0x545", balance: "105344343435553", // vault.balanceOf(account) underlyingTokenBalance: { amount: "53233222334444334444", // vault.balanceOf(account) * pricePerShare amountUsdc: "3422233333445" }, accountTokenBalance: { amount: "4424424000238", // token.balanceOf(account) amountUsdc: "23323" }, tokenAllowances: [{ owner: "0x4800", // Account spender: "0x123", // Asset address amount: "115335543535353535235325325325235235325235425235" }], assetAllowances: [{ owner: "0x123", // Asset address spender: "0x456", // Trusted migrator amount: "115335543535353535235325325325235235325235425235" }]}] ###### Position[​](https://docs.yearn.fi/developers/data-services/yearn-lens#position "Direct link to Position") struct Position { address assetId; uint256 balance; uint256 balanceUsdc; TokenPosition tokenPosition; Allowance[] allowances;} ###### Token[​](https://docs.yearn.fi/developers/data-services/yearn-lens#token "Direct link to Token") struct Token { address id; string name; string symbol; uint8 decimals; uint256 priceUsdc;} ###### TokenPosition[​](https://docs.yearn.fi/developers/data-services/yearn-lens#tokenposition "Direct link to TokenPosition") struct TokenPosition { address tokenId; uint256 balance; uint256 balanceUsdc; Allowance[] allowances;} struct Allowance { address owner; address spender; uint256 allowance;} ##### Adapter-specific Interfaces[​](https://docs.yearn.fi/developers/data-services/yearn-lens#adapter-specific-interfaces "Direct link to Adapter-specific Interfaces") Each registry adapter can export asset metadata that is specific to the asset type. ###### Vault[​](https://docs.yearn.fi/developers/data-services/yearn-lens#vault "Direct link to Vault") struct AssetMetadata { string symbol; uint256 pricePerShare; bool migrationAvailable; address latestVaultAddress; uint256 depositLimit; bool emergencyShutdown;} ###### Earn[​](https://docs.yearn.fi/developers/data-services/yearn-lens#earn "Direct link to Earn") `TBD` ###### Iron Bank[​](https://docs.yearn.fi/developers/data-services/yearn-lens#iron-bank "Direct link to Iron Bank") `TBD` ###### veCrv[​](https://docs.yearn.fi/developers/data-services/yearn-lens#vecrv "Direct link to veCrv") `TBD` #### Methods[​](https://docs.yearn.fi/developers/data-services/yearn-lens#methods "Direct link to Methods") All registry adapters are required to implement the following methods. ##### registryAddress[​](https://docs.yearn.fi/developers/data-services/yearn-lens#registryaddress "Direct link to registryAddress") Get the registry address associated with the adapter. The adapter pulls most information from the registry. `registryAddress` is defined in the adapter consturctor. address public registryAddress; ##### assetsLength[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetslength "Direct link to assetsLength") Get the number of assets the registry adapter is capable of returning. function assetsLength() public view returns (uint256); `RETURN` Number of registry adapter assets ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);uint256 assetsLength = registryAdapter.assetsLength(); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response "Direct link to Example Response") 32 ##### positionSpenderAddresses[​](https://docs.yearn.fi/developers/data-services/yearn-lens#positionspenderaddresses "Direct link to positionSpenderAddresses") address[] public positionSpenderAddresses; ##### setPositionSpenderAddresses[​](https://docs.yearn.fi/developers/data-services/yearn-lens#setpositionspenderaddresses "Direct link to setPositionSpenderAddresses") function setPositionSpenderAddresses(address addresses) ##### assetsAddresses[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetsaddresses "Direct link to assetsAddresses") Get a list of asset addresses from the asset adapter's associated registry. function assetsAddresses() public view returns (address[] memory); `RETURN` Array of asset addresses ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-1 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);address[] assetAddresses = registryAdapter.assetsAddresses(); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-1 "Direct link to Example Response") ['0xE14d13d8B3b85aF791b2AADD661cDBd5E6097Db1', '0xdCD90C7f6324cfa40d7169ef80b12031770B4325', '0x986b4AFF588a109c09B50A03f42E4110E29D353F', '0xcB550A6D4C8e3517A939BC79d0c7093eb7cF56B5'] ##### assetTvl[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assettvl "Direct link to assetTvl") Get TVL for a specific asset (in USDC). function assetTvl(address assetAddress) public view returns (uint256); ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-2 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);address assetAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;uint256 assetTvl = registryAdapter.assetTvl(assetAddress); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-2 "Direct link to Example Response") `1637032292` ##### assetsTvl[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetstvl "Direct link to assetsTvl") Get aggregated TVL for all assets in the adapter's registry. function assetsTvl() external view returns (uint256); `RETURN` Aggregated TVL scoped to the adapter's assets in USDC ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-3 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);uint256 assetTvl = registryAdapter.assetsTvl(); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-3 "Direct link to Example Response") `443923433354832` ##### asset[​](https://docs.yearn.fi/developers/data-services/yearn-lens#asset-1 "Direct link to asset") Get a specific asset including metadata specific to the asset type. The response extends the standardized `Asset` interface. function asset(address assetAddress) public view returns (Asset memory); `assetAddress` The address of the asset to fetch `RETURN` An asset struct containing information about the asset ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-4 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);address assetAddress = 0xe2F6b9773BF3A015E2aA70741Bde1498bdB9425b;registryAdapter.asset(assetAddress); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-4 "Direct link to Example Response") { name: 'WTFTM Vault', id: 0xe2F6b9773BF3A015E2aA70741Bde1498bdB9425b, version: '0.3.2', totalAssets: 129999966466476313000000, totalAssetsUsdc: 14355444934422, // TVL metadata: { controller: 0x19D3364A399d251E894aC732651be8B0E4e85001, pricePerShare: 142004300000000000 ... }} ##### assets[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assets "Direct link to assets") Get all assets for a registry adapter function assets() external view returns (Asset[] memory); `RETURN` An array of asset structs containing information about the assets ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-5 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);registryAdapter.assets(); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-5 "Direct link to Example Response") [ { name: 'WFTM Vault', id: 0xe2F6b9773BF3A015E2aA70741Bde1498bdB9425b, // vault address version: '0.3.2', totalAssets: 129999966466476313000000, totalAssetsUsdc: 14355444934422, // TVL metadata: { controller: 0x19D3364A399d251E894aC732651be8B0E4e85001, pricePerShare: 142004300000000000 ... } }, { name: 'fUSD Vault', id: 0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9, version: '0.3.2', totalAssets: 4593326846642963130309078, totalAssetsUsdc: 45444930943854422, // TVL metadata: { controller: 0x19D3364A399d251E894aC732651be8B0E4e85001, pricePerShare: 101003300000000000 ... } }] ##### positionOf[​](https://docs.yearn.fi/developers/data-services/yearn-lens#positionof "Direct link to positionOf") Get the position of an account for a specific asset address. function positionOf(address accountAddress, address assetAddress) public view returns (Position memory); ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-6 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);address accountAddress = 0x481140F916a4e64559694DB4d56D692CadC0326c;address assetAddress = 0xe2F6b9773BF3A015E2aA70741Bde1498bdB9425b;registryAdapter.positionForAsset(accountAddress, assetAddress); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-6 "Direct link to Example Response") { assetId: 0xe2F6b9773BF3A015E2aA70741Bde1498bdB9425b, // vault address depositedBalance: 10422000000000000000, depositedBalanceUsdc: 10422000, tokenBalance: 2110000000000000000, tokenBalanceUsdc: 2110000, tokenAllowance, 1157343987545498574545495749587452... // max uint256} ##### positionsOf[​](https://docs.yearn.fi/developers/data-services/yearn-lens#positionsof "Direct link to positionsOf") Get all positions for an account for every adapter asset. function positionsOf(address accountAddress) external view returns (Position[] memory); ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-7 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);address accountAddress = 0x481140F916a4e64559694DB4d56D692CadC0326c;registryAdapter.positionsOf(accountAddress); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-7 "Direct link to Example Response") [ { assetId: 0xe2F6b9773BF3A015E2aA70741Bde1498bdB9425b, // vault address depositedBalance: 10422000000000000000, depositedBalanceUsdc: 10422000, tokenBalance: 2110000000000000000, tokenBalanceUsdc: 2110000, tokenAllowance, 1157343987545498574545495749587452... // max uint256 }, { assetId: 0x19D3364A399d251E894aC732651be8B0E4e85001, // vault address depositedBalance: 10422000000000000000, depositedBalanceUsdc: 10422000, tokenBalance: 0, tokenBalanceUsdc: 0, tokenAllowance, 0 }] ##### tokens[​](https://docs.yearn.fi/developers/data-services/yearn-lens#tokens "Direct link to tokens") Get unique tokens for the adapter. function tokens() external view returns (Token[] memory); ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-8 "Direct link to Solidity") RegistryAdapter registryAdapter = RegistryAdapter(0xABCD...);registryAdapter.tokens(); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-8 "Direct link to Example Response") [ { id: 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, // token address name: 'USD Coin', symbol: 'USDC', decimals: 18, priceUsdc: 100000 }, ...] ### Oracle[​](https://docs.yearn.fi/developers/data-services/yearn-lens#oracle "Direct link to Oracle") #### Methods[​](https://docs.yearn.fi/developers/data-services/yearn-lens#methods-1 "Direct link to Methods") ##### setCalculations[​](https://docs.yearn.fi/developers/data-services/yearn-lens#setcalculations "Direct link to setCalculations") Set oracle calculation contract addresses. Each calculation contract must implement getPriceUsdc(). The order of calculation contracts matters as it determines the order preference in the cascading fallback mechanism. function setCalculations(address[] memory calculationAddresses) public onlyManagers; `calculationAddresses` An array of addresses for underlying calculation contracts ##### calculations[​](https://docs.yearn.fi/developers/data-services/yearn-lens#calculations "Direct link to calculations") View the calculation contract addresses currently associated with the oracle. function calculations() external view returns (address[] memory); `RETURN` An array of calculation contract addresses associated with the oracle ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-9 "Direct link to Example Response") [ "0xfC714174E5c8bd056a45a5337E7b402CC4af7BF3", "0x55e9B18fefFF7E00548d54480373Fc8843De8eA4", "0x88dE7d7F7b9597C86b8cD195374FbF602934F334"] ##### getPriceUsdcRecommended[​](https://docs.yearn.fi/developers/data-services/yearn-lens#getpriceusdcrecommended "Direct link to getPriceUsdcRecommended") Get the currently recommended price given a token address. function getPriceUsdcRecommended(address tokenAddress) public view returns (uint256); `tokenAddress` The token address for which to obtain a price recommendation `RETURN` Recommended price in USDC (6 decimals) ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-10 "Direct link to Example Response") `103000` ##### getNormalizedValueUsdc[​](https://docs.yearn.fi/developers/data-services/yearn-lens#getnormalizedvalueusdc "Direct link to getNormalizedValueUsdc") Calculate normalized USDC value given a token address and an amount. function getNormalizedValueUsdc(address tokenAddress, uint256 amount) external view returns (uint256); `tokenAddress` The token address `amount` The amount of value to convert (in token decimals) `RETURN` Recommended price in USDC (6 decimals) ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-11 "Direct link to Example Response") `3442238822` ##### tokenAliases[​](https://docs.yearn.fi/developers/data-services/yearn-lens#tokenaliases "Direct link to tokenAliases") Given a token address fetch a token alias address. This is necessary for certain wrapped or special case tokens that do not have a token price available in the oracle. mapping(address => address) public tokenAliases; ##### addTokenAlias[​](https://docs.yearn.fi/developers/data-services/yearn-lens#addtokenalias "Direct link to addTokenAlias") Add a new token alias mapping. function addTokenAlias(address tokenAddress, address tokenAliasAddress) public onlyManagers; `tokenAddress` The token address that will receive an alias `tokenAliasAddress` The new token alias address ##### addTokenAliases[​](https://docs.yearn.fi/developers/data-services/yearn-lens#addtokenaliases "Direct link to addTokenAliases") Batch add new token alias mappingings. function addTokenAliases(TokenAlias[] memory tokenAliases) public onlyManagers `tokenAliases` An array of `TokenAlias` structs (`[[tokenAddress, tokenAliasAddress]]`) ##### removeTokenAlias[​](https://docs.yearn.fi/developers/data-services/yearn-lens#removetokenalias "Direct link to removeTokenAlias") Remove a token alias mapping. function addTokenAlias(address tokenAddress, address tokenAliasAddress) public onlyManagers; `tokenAddress` The token address whose alias will be removed ### Calculation[​](https://docs.yearn.fi/developers/data-services/yearn-lens#calculation "Direct link to Calculation") #### Standardized methods[​](https://docs.yearn.fi/developers/data-services/yearn-lens#standardized-methods "Direct link to Standardized methods") All calculation contracts must implement the following methods. ##### getPriceUsdc[​](https://docs.yearn.fi/developers/data-services/yearn-lens#getpriceusdc "Direct link to getPriceUsdc") Fetch the recommended price given a token address. Reverts if no relevant price is found. function getPriceUsdc(address tokenAddress) public view returns (uint256) ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-12 "Direct link to Example Response") `103000` #### Calculation specific methods[​](https://docs.yearn.fi/developers/data-services/yearn-lens#calculation-specific-methods "Direct link to Calculation specific methods") Helper utilities for various calculations. These methods are indirectly exposed to the oracle via the oracle's cascading fallback mechanism. All of these methods can be called via the oracle contract by generating a custom ABI with the desired methods. Since these helper methods do not represent the primary use case of the oracle contract (the primary use case is fetching price) determining the details of each method implementation is left to the user. ##### Sushiswap[​](https://docs.yearn.fi/developers/data-services/yearn-lens#sushiswap "Direct link to Sushiswap") function getPriceFromRouter(address token0Address, address token1Address) public view returns (uint256);function getPriceFromRouterUsdc(address tokenAddress) public view returns (uint256);function isLpToken(address tokenAddress) public view returns (bool);function getRouterForLpToken(address tokenAddress) public view returns (PriceRouter);function getLpTokenTotalLiquidityUsdc(address tokenAddress) public view returns (uint256);function getLpTokenPriceUsdc(address tokenAddress) public view returns (uint256); ##### Curve[​](https://docs.yearn.fi/developers/data-services/yearn-lens#curve "Direct link to Curve") function getBasePrice(address curveLpTokenAddress) public view returns (uint256);function getVirtualPrice(address curveLpTokenAddress) public view returns (uint256);function isCurveLpToken(address tokenAddress) public view returns (bool);function getFirstUnderlyingCoinFromPool(address poolAddress) public view returns (address);function getCurvePriceUsdc(address curveLpTokenAddress) public view returns (uint256); ##### IronBank[​](https://docs.yearn.fi/developers/data-services/yearn-lens#ironbank "Direct link to IronBank") function isIronBankMarket(address tokenAddress) public view returns (bool);function getIronBankMarkets() public view returns (address[] memory);function getIronBankMarketPriceUsdc(address tokenAddress) public view returns (uint256); ### Lens[​](https://docs.yearn.fi/developers/data-services/yearn-lens#lens "Direct link to Lens") #### Methods[​](https://docs.yearn.fi/developers/data-services/yearn-lens#methods-2 "Direct link to Methods") ##### addAdapter[​](https://docs.yearn.fi/developers/data-services/yearn-lens#addadapter "Direct link to addAdapter") Add a registry adapter. The registry adapter must conform to the standardized registry adapter interface. function addAdapter(address adapterAddress) public onlyManager; `adapterAddress` Address of the adapter to add ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-9 "Direct link to Solidity") Lens lens = Lens(0x9b8b9F6146B29CC32208f42b995E70F0Eb2807F3);address adapterAddress = 0xe11ba472F74869176652C35D30dB89854b5ae84D;lens.addAdapter(adapterAddress); ##### removeAdapter[​](https://docs.yearn.fi/developers/data-services/yearn-lens#removeadapter "Direct link to removeAdapter") Remove a registry adapter. function removeAdapter(address adapterAddress) public onlyManager; `adapterAddress` Address of the adapter to remove ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-10 "Direct link to Solidity") Lens lens = Lens(0x9b8b9F6146B29CC32208f42b995E70F0Eb2807F3);address adapterAddress = 0xe11ba472F74869176652C35D30dB89854b5ae84D;lens.removeAdapter(adapterAddress); ##### adapters[​](https://docs.yearn.fi/developers/data-services/yearn-lens#adapters "Direct link to adapters") Fetch a list of registry adapter addresses. function adapters() external view returns (address[] memory); ###### Solidity[​](https://docs.yearn.fi/developers/data-services/yearn-lens#solidity-11 "Direct link to Solidity") Lens lens = Lens(0x9b8b9F6146B29CC32208f42b995E70F0Eb2807F3);address[] memory = lens.adapters(); ###### Example Response[​](https://docs.yearn.fi/developers/data-services/yearn-lens#example-response-13 "Direct link to Example Response") ['0xE14d13d8B3b85aF791b2AADD661cDBd5E6097Db1', '0xdCD90C7f6324cfa40d7169ef80b12031770B4325', '0x986b4AFF588a109c09B50A03f42E4110E29D353F', '0xcB550A6D4C8e3517A939BC79d0c7093eb7cF56B5'] ##### assetsFromAdapter[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetsfromadapter "Direct link to assetsFromAdapter") function assetsFromAdapter(RegistryAdapter registryAdapterAddress) external view returns (RegistryAdapter.Asset[] memory) See: [registryAdapter.assets](https://docs.yearn.fi/developers/data-services/yearn-lens#assets) ##### assets[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assets-1 "Direct link to assets") Fetch all assets for all supported protocols. function assets() external view returns (RegistryAdapter.Asset[] memory) See: [registryAdapter.assets](https://docs.yearn.fi/developers/data-services/yearn-lens#assets) ##### positionsFromAdapter[​](https://docs.yearn.fi/developers/data-services/yearn-lens#positionsfromadapter "Direct link to positionsFromAdapter") Fetch positions for an account for a specific adapter. function positionsFromAdapter( address account, RegistryAdapter registryAdapterAddress ) external view returns (RegistryAdapter.Position[] memory) See: [registryAdapter.positionsOf](https://docs.yearn.fi/developers/data-services/yearn-lens#positionof) ##### positionsOf[​](https://docs.yearn.fi/developers/data-services/yearn-lens#positionsof-1 "Direct link to positionsOf") Fetch all positions for an account within the ecosystem. function positionsOf(address account) external view returns (RegistryAdapter.Position[] memory) See: [registryAdapter.positionsOf](https://docs.yearn.fi/developers/data-services/yearn-lens#positionof) ##### assetsLength[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetslength-1 "Direct link to assetsLength") function assetsLength() public view returns (uint256); Get the total number of assets for all Yearn family protocols See: [registryAdapter.assetsLength](https://docs.yearn.fi/developers/data-services/yearn-lens#assetslength) ##### assetsAddresses[​](https://docs.yearn.fi/developers/data-services/yearn-lens#assetsaddresses-1 "Direct link to assetsAddresses") function assetsAddresses() public view returns (address[] memory); Get all addresses for all Yearn family assets See: [registryAdapter.assetsAddresses](https://docs.yearn.fi/developers/data-services/yearn-lens#assetsaddresses) ##### allowances[​](https://docs.yearn.fi/developers/data-services/yearn-lens#allowances "Direct link to allowances") Batch fetch allowances given an owner, tokens and spender. This is a helper utility for fetching large amounts of token allowances for a specific set of contracts function allowances( address owner, address[] memory tokens, address[] memory spenders ) external view returns (uint256[] memory) Copy page as Markdown * [Architecture](https://docs.yearn.fi/developers/data-services/yearn-lens#architecture) * [Block Diagram](https://docs.yearn.fi/developers/data-services/yearn-lens#block-diagram) * [Key Concepts](https://docs.yearn.fi/developers/data-services/yearn-lens#key-concepts) * [Key Features](https://docs.yearn.fi/developers/data-services/yearn-lens#key-features) * [Contracts](https://docs.yearn.fi/developers/data-services/yearn-lens#contracts) * [Registry Adapters](https://docs.yearn.fi/developers/data-services/yearn-lens#registry-adapters) * [Oracle](https://docs.yearn.fi/developers/data-services/yearn-lens#oracle) * [Calculation](https://docs.yearn.fi/developers/data-services/yearn-lens#calculation) * [Lens](https://docs.yearn.fi/developers/data-services/yearn-lens#lens) --- # yPRISMA Interface Guide | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Quick Start[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#quick-start "Direct link to Quick Start") ------------------------------------------------------------------------------------------------------------------------------------ 1. On the landing page, click "Launch App" to enter the yPRISMA app. 2. Click "Connect Wallet" (top right) to connect to your preferred wallet. 3. When you see your wallet address, instead of "Connect Wallet", you're connected! Stake yPRISMA[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#stake-yprisma "Direct link to Stake yPRISMA") ------------------------------------------------------------------------------------------------------------------------------------------ You'll begin on the "EARN mkUSD" tab, which is the home for yPRISMA staking. ![image](https://docs.yearn.fi/assets/images/screen-1-01eeee2914532ca9a5d2f323175ee5b5.png) Inside this tab, you can perform the following actions: 1. Stake 2. Unstake 3. Claim Rewards 4. Get yPRISMA There's also a helpful data panel on the right-hand side with the following information: * **Max Staking APR:** The current APR for stakers with the maximum 2.5x boost * **Your Boost:** The average boost of all your staked yPRISMA - it will be somewhere between the minimum (0.5x) and the maximum (2.5x) * **Staked Amount:** The total amount of yPRISMA you have in the Yearn Boosted Staker * **Your APR:** The current APR you are receiving based on your boost * **Claimable Rewards:** The current $ value of your mkUSD rewards available to claim * **Total Staked:** The total amount of yPRISMA staked in the Yearn Boosted Staker * **Min/Max APR:** The current minimum APR (based on 0.5x boost) and maximum APR (based on 2.5x boost) * **Total Rewards Last Week:** The total $ value of mkUSD rewards shared between Yearn Boosted Staker users last week ### 1\. Stake[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#1-stake "Direct link to 1. Stake") First, you'll need some yPRISMA. You can mint or buy yPRISMA with PRISMA via the zapper on the "Get yPRISMA" tab. Alternatively, yPRISMA can be purchased directly through the following platforms: * [Curve Finance](https://curve.finance/#/ethereum/swap?from=0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee&to=0xe3668873d944e4a949da05fc8bde419eff543882) - The primary liquidity source for yPRISMA * [CowSwap](https://swap.cow.fi/#/1/swap/ETH/YPRISMA) - DEX aggregators like CowSwap should also work well ![image](https://docs.yearn.fi/assets/images/stake-1-c67dfc2ec8947ff1d9fd8822900640e8.png) You'll need to approve the Yearn Boosted Staker contract and then you can stake your yPRISMA. Once staked, the data panel on the right-hand side will update to display your new boost multiplier, staked amount, and APR. ![image](https://docs.yearn.fi/assets/images/data-panel-1-d1c22959b75fc2b8a58fc3095b41880d.png) ### 2\. Unstake[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#2-unstake "Direct link to 2. Unstake") You're free to unstake your yPRISMA at any time with no lock-ups or penalties. ![image](https://docs.yearn.fi/assets/images/unstake-1-d324c1e25adbcb368a2b657564290d2c.png) The total amount of yPRISMA you have staked will appear below the unstaking field. To unstake your full balance, simply click the max button which will auto-fill the amount. Then click "Unstake" to receive your yPRISMA tokens back to your wallet. Again, the data panel on the right will update following your unstaking. A max unstake will reset your boost, staked amount and APR to zero. A partial unstake may increase your boost and APR as the least-weighted amounts are unstaked first. ### 3\. Claim Rewards[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#3-claim-rewards "Direct link to 3. Claim Rewards") You can view the $ value of your claimable rewards in this tab, as well as the amount in yvmkUSD-A vault tokens. ![image](https://docs.yearn.fi/assets/images/claim-1-eda64293dfccaf1a6beea255cda94dba.png) As the vault earns yield, the price of your vault tokens will increase as there is more underlying mkUSD in the vault for you to redeem upon withdrawal. For example, 100 yvmkUSD-A could represent 150 mkUSD (~$150.00), dependent on the total cumulative earnings of the vault. Your mkUSD rewards accrue week over week and are never lost if unclaimed. To claim them to your wallet, all you need to do is click "Claim All" and confirm the transaction . ### 4\. Get yPRISMA[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#4-get-yprisma "Direct link to 4. Get yPRISMA") Here you'll find an interface for Yearn's yPRISMA zapper contract. You'll need to have PRISMA tokens in your wallet in order to use it. ![image](https://docs.yearn.fi/assets/images/zap-1-c03e1d275caa4b992c6d56b96b74bc7b.png) Using the zapper is as simple as clicking "Mint". Your PRISMA will then either be locked with Yearn (minting you new yPRISMA at a 1:1 ratio) or swapped for yPRISMA via the Curve pool (if this would output more yPRISMA). Auto-Compound yPRISMA[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#auto-compound-yprisma "Direct link to Auto-Compound yPRISMA") ------------------------------------------------------------------------------------------------------------------------------------------------------------------ Clicking the "EARN yPRISMA" tab switches you to our auto-compounding yPRISMA V3 vault. ![image](https://docs.yearn.fi/assets/images/auto-comp-screen-1-0320175c8ca04feebebcb889ea97cd2c.png) Inside this tab, you can perform the following actions 1. Deposit 2. Withdraw There's also a helpful data panel on the right-hand side with the following information: * **Estimated Vault APY:** The "live" APY of the vault, after fees, and with the compounding of returns taken into consideration * **Deposited Amount:** The $ value of your yPRISMA deposited in the vault * **Earned:** The $ value of yPRISMA you have earned whilst in the vault * **Total Deposits:** The total amount of yPRISMA deposited in the vault by all users * **TVL:** The $ value of all yPRISMA deposited in the vault ### 1\. Deposit[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#1-deposit "Direct link to 1. Deposit") You'll need to approve the vault contract to allow it to access your yPRISMA and then you can go ahead and deposit your yPRISMA. ![image](https://docs.yearn.fi/assets/images/auto-comp-deposit-1-ad5fe6e321b8978b798722576d79146f.png) And that's it. There's nothing more for you to do. You'll receive "yvyPRISMA" vault tokens to your wallet, which are like a deposit receipt. They represent your share of the yPRISMA yVault. As the vault earns yield, the price of your vault tokens will increase as there is more underlying yPRISMA in the vault for you to redeem upon withdrawal. ### 2\. Withdraw[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#2-withdraw "Direct link to 2. Withdraw") You can make a withdrawal from the vault at any time. ![image](https://docs.yearn.fi/assets/images/auto-comp-withdraw-e499db645d0870b6a146e5c99f7619ab.png) The total amount of yvyPRISMA vault tokens you have in your wallet will appear below the withdraw field. To withdraw your full balance, simply click the max button which will auto-fill the amount. Then click "Withdraw" to receive yPRISMA tokens back to your wallet. Prisma Vaults[​](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#prisma-vaults "Direct link to Prisma Vaults") ------------------------------------------------------------------------------------------------------------------------------------------ At the bottom of the Earn page, you'll find a list of Yearn's Prisma-based auto-compounding vaults. ![image](https://docs.yearn.fi/assets/images/vaults-list-6c7bc555b9e915d7a803c435e2dcbaa0.png) Clicking on a vault will open up the vault detail page in a new tab. Here you can make deposits and withdrawals, as well as finding more data on the vault and strategies themselves. ![image](https://docs.yearn.fi/assets/images/vault-factory-32172bd1c03b08c314a3e7580a7780d2.png) info You can find more information on Yearn's vaults [**here**](https://docs.yearn.fi/getting-started/products/yvaults/overview) . Copy page as Markdown * [Quick Start](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#quick-start) * [Stake yPRISMA](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#stake-yprisma) * [1\. Stake](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#1-stake) * [2\. Unstake](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#2-unstake) * [3\. Claim Rewards](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#3-claim-rewards) * [4\. Get yPRISMA](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#4-get-yprisma) * [Auto-Compound yPRISMA](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#auto-compound-yprisma) * [1\. Deposit](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#1-deposit) * [2\. Withdraw](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#2-withdraw) * [Prisma Vaults](https://docs.yearn.fi/developers/deprecated-products/yPrisma/yprisma-guide#prisma-vaults) --- # yVaults V3 | Yearn Docs [Skip to main content](https://docs.yearn.fi/getting-started/products/yvaults/v3#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown ![image](https://docs.yearn.fi/assets/images/v3-banner-93acc0166dd22853f5152eea551dd1b5.png) Overview[​](https://docs.yearn.fi/getting-started/products/yvaults/v3#overview "Direct link to Overview") ---------------------------------------------------------------------------------------------------------- **V3 Vaults are the newest, shiniest yVaults. More flexibility, better security, more Yearn goodness!** Yearn's v3 yVaults are a decentralized suite of yield-generating products built to fit any need. They are designed to be un-opinionated and customizable infrastructure for the world to build on, making yield generation as safe, efficient, and easy as possible for all parties. Version 3 of yVaults iterates on Version 2 by increasing its robustness and developing Yearn’s path towards further decentralization, while keeping the same proven product (yield-bearing tokens). Version 3 has all the same functionality as Version 2, but with many more added benefits and improvements to continue to grow the Yearn ecosystem. V3 also sees the introduction of "Tokenized Strategies". Strategies are now capable of being standalone 4626 vaults themselves. These single-strategy vaults can be used as stand-alone vaults or easily added as a strategy to a Multi-Strategy Vault. ![image](https://docs.yearn.fi/assets/images/yvaults-v3-more-detail-fe81f3237d78cfa8da477bb310d65da2.png) v3 yVault Improvements[​](https://docs.yearn.fi/getting-started/products/yvaults/v3#v3-yvault-improvements "Direct link to v3 yVault Improvements") ---------------------------------------------------------------------------------------------------------------------------------------------------- Version 3 of yVaults improves on Version 2 by: * Increasing vault modularity, allowing for smaller and safer pieces of code. * Simplifying strategy creation, empowering strategists and reducing the chance for errors. * Providing additional strategy functionality by implementing the Tokenized Strategy. * Adopting ERC-4626 compatibility for easy integrations. * Decreasing gas costs to report profits and update debts. * Adding new product and vault types. Read More[​](https://docs.yearn.fi/getting-started/products/yvaults/v3#read-more "Direct link to Read More") ------------------------------------------------------------------------------------------------------------- **V3 developer docs:** [https://docs.yearn.fi/developers/v3/overview](https://docs.yearn.fi/developers/v3/overview) **dApp:** [https://yearn.fi/v3](https://yearn.fi/v3) **Guides** [V3 Interface Guide](https://docs.yearn.fi/getting-started/guides/using-yearn-v3) Copy page as Markdown * [Overview](https://docs.yearn.fi/getting-started/products/yvaults/v3#overview) * [v3 yVault Improvements](https://docs.yearn.fi/getting-started/products/yvaults/v3#v3-yvault-improvements) * [Read More](https://docs.yearn.fi/getting-started/products/yvaults/v3#read-more) --- # Vault Tokens | Yearn Docs [Skip to main content](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown yVault Tokens are like a deposit receipt. They represent a user's share of the yVault that they are participating in. **For example**, if you deposit YFI in a yVault you will receive yvYFI in return. yvYFI would be the yVault Token. If your yVault generates profit, the share price of your yVault tokens will increase. This happens because more underlying tokens are in the yVault to redeem upon withdrawal. ![](https://i.imgur.com/3zkSnoE.png) ![](https://i.imgur.com/yrGEVCr.png) Once a user's liquidity is withdrawn from the yVault, their yVault Token will be burned. yVault Tokens are [ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) , meaning they can be transferred and traded as any other common Ethereum token. The vault tokens have evolved between v1, v2, and v3, here are a couple of main differences: V1 yVault Tokens[​](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#v1-yvault-tokens "Direct link to V1 yVault Tokens") -------------------------------------------------------------------------------------------------------------------------------------------- * Each vault contract can use only 1 yield strategy contract. * Vault tokens are prefixed with a leading `y`, so a v1 vault for USDC gives the user yUSDC. V2 yVault Tokens[​](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#v2-yvault-tokens "Direct link to V2 yVault Tokens") -------------------------------------------------------------------------------------------------------------------------------------------- * Each vault contract can use up to 20 yield strategy contracts. * Vault tokens are prefixed with `yv`, so a v2 vault for USDC gives the user yvUSDC. V3 yVault Tokens[​](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#v3-yvault-tokens "Direct link to V3 yVault Tokens") -------------------------------------------------------------------------------------------------------------------------------------------- * All V3 vaults are [ERC-4626](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626/) compliant. * Vaults can be either [multi-strategy](https://docs.yearn.fi/developers/v3/overview#definitions) or [single-strategy (Tokenized Strategy)](https://docs.yearn.fi/developers/v3/overview#definitions) . * Multi-strategy vaults tokens are prefixed with `yv` and appended with a ["category"](https://docs.yearn.fi/developers/v3/Integrating_v3#category) , so a v3 vault for USDC with a category type of `1` gives the user `yvUSDC-1`. * Single strategy vaults are prefixed with `ys`, so a v3 single strategy vault gives the user `ysUSDC`. Copy page as Markdown * [V1 yVault Tokens](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#v1-yvault-tokens) * [V2 yVault Tokens](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#v2-yvault-tokens) * [V3 yVault Tokens](https://docs.yearn.fi/getting-started/products/yvaults/vault-tokens#v3-yvault-tokens) --- # yBOLD | Yearn Docs [Skip to main content](https://docs.yearn.fi/getting-started/products/yvaults/yBold#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown yBOLD is Yearn's BOLD tokenized Stability pool product. It is designed to tokenize the different benefits of a BOLD-in-Stability-Pool position in a simple, user-friendly way. Let's review the basics of yBOLD: * 1 yBOLD represents 1 BOLD deposited in one of Liquity V2's Stability Pools * They are always redeemable for the underlying BOLD without any withdrawal fees or waiting period * They have no transfer restrictions and thus can always be swapped in DEX pools or used in other DeFi integrations Get yBOLD[​](https://docs.yearn.fi/getting-started/products/yvaults/yBold#get-ybold "Direct link to Get yBOLD") ---------------------------------------------------------------------------------------------------------------- If you have BOLD tokens, you can convert them to yBOLD either by minting yBOLD at a 1:1 rate or buy yBOLD with BOLD (or another token) using CowSwap, which may or may not get you a better rate. Earn Yield on yBOLD[​](https://docs.yearn.fi/getting-started/products/yvaults/yBold#earn-yield-on-ybold "Direct link to Earn Yield on yBOLD") ---------------------------------------------------------------------------------------------------------------------------------------------- There are 2 main ways to earn yield on your yBOLD; (1) depositing to the Curve LP to earn trading fees and CRV emissions (AKA lp-yBOLD), or (2) staking it in the yBOLD Auto-Compounder vault (AKA ysyBOLD) to earn more yBOLD. How It Works[​](https://docs.yearn.fi/getting-started/products/yvaults/yBold#how-it-works "Direct link to How It Works") ------------------------------------------------------------------------------------------------------------------------- When you deposit BOLD into yBOLD, Yearn routes your funds into the different Liquity V2 Stability Pools. Revenue for Stability Pool depositors comes from (1) liquidation fees and (2) 75% of the system's interest rate earnings. When you stake yBOLD, you'll receive ysyBOLD (Staked Yearn BOLD). Over time, the value of ysyBOLD increases relative to yBOLD as rewards compound automatically. Why Use yBOLD?[​](https://docs.yearn.fi/getting-started/products/yvaults/yBold#why-use-ybold "Direct link to Why Use yBOLD?") ------------------------------------------------------------------------------------------------------------------------------ **TLDR: Highest rewards, lowest risk.** * Auto-Compounding: Liquidation rewards and protocol earnings are automatically re-invested into the Stability Pool, growing your position. * Auto-optimizing: The allocation between the different stability pools is re-evaluated every 30 minutes and if there's a more profitable allocation, the vault makes the change automatically. * Optimized rewards dumping: Instead of using hardcoded swap paths, Yearn uses a Dutch Auction to allow for MEV bots to compete to provide you with the best price. * No oracles: No oracles are being used to price the collateral token rewards. * Immutable: yBOLD is designed with immutability in mind. A few months after launch, once we're confident no funny stuff happens, we'll revoke any privileged rights (which are almost non-existent anyway). * Composable: yBOLD and ysyBOLD can be integrated into DeFi protocols as a productive version of BOLD. Risks[​](https://docs.yearn.fi/getting-started/products/yvaults/yBold#risks "Direct link to Risks") ---------------------------------------------------------------------------------------------------- * Smart Contract Risk: yBOLD relies on smart contracts from both our wrapper and Liquity V2. Use at your own risk. * Protocol Risk: If Liquity V2 experiences bad debt or exploits, your yield (and principal) may be impacted. * Stability Pool Risk: If there are losses in the Stability Pool, or we are not able to sell the collateral rewards at a favorable price, the strategy could experience losses. If such a scenario ever happens, the strategy automatically works towards refunding any losses in yBOLD. Integrations[​](https://docs.yearn.fi/getting-started/products/yvaults/yBold#integrations "Direct link to Integrations") ------------------------------------------------------------------------------------------------------------------------- yBOLD and ysyBOLD can be used in protocols that support ERC-4626 tokens. If you're building an integration or need help, reach out on [Telegram](https://t.me/yearnfinance/) or [Discord](https://discord.gg/yearn) . Copy page as Markdown * [Get yBOLD](https://docs.yearn.fi/getting-started/products/yvaults/yBold#get-ybold) * [Earn Yield on yBOLD](https://docs.yearn.fi/getting-started/products/yvaults/yBold#earn-yield-on-ybold) * [How It Works](https://docs.yearn.fi/getting-started/products/yvaults/yBold#how-it-works) * [Why Use yBOLD?](https://docs.yearn.fi/getting-started/products/yvaults/yBold#why-use-ybold) * [Risks](https://docs.yearn.fi/getting-started/products/yvaults/yBold#risks) * [Integrations](https://docs.yearn.fi/getting-started/products/yvaults/yBold#integrations) --- # yVaults FAQ | Yearn Docs [Skip to main content](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown yVaults ELI-5[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#yvaults-eli-5 "Direct link to yVaults ELI-5") ---------------------------------------------------------------------------------------------------------------------------------- Yearn Vaults are contracts on the Ethereum blockchain—and the layer2 networks that sit atop it. They allow you to deposit cryptocurrency tokens you own and earn interest on them. When you deposit, your tokens are combined with other depositors' tokens and directed toward interest earning opportunities. How and which opportunities are chosen depends on the _Strategies_ used by the vault. You receive a receipt token (aka a Vault Token) that can be used to retrieve your original deposit plus any interest earned. V1, V2, V3, Juiced... Whats the difference?[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v1-v2-v3-juiced-whats-the-difference "Direct link to V1, V2, V3, Juiced... Whats the difference?") --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- So many options! But don't worry, it isn't so complicated. * V3 are the newest vaults. They are probably your best bet unless you can't find what you are looking for. * V2 are older vaults, but are still used for Curve and Curve-based pools like Velodrome and Aerodrome. * V1 vaults are the OG and not supported so you shouldn't even see them anywhere. If you do, or if you need to access funds deposited during DeFi summer, hop in the [discord](https://discord.gg/yearn) and let us know. * Juiced Vaults are (now deprecated) vaults built to use Ajna, which is a lending and borrowing protocol. They have their own [frontend](https://juiced.yearn.fi/) and [docs](https://docs.juiced.app/) so check those out. One thing to be aware of is that since Ajna is a lending platform, you may not be able to withdraw funds immediately if there is high borrowing demand. What is Gimme?[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#what-is-gimme "Direct link to What is Gimme?") ------------------------------------------------------------------------------------------------------------------------------------ [Gimme](https://gimme.mom/) is a (now deprecated) easy-to-use frontend focused on making Yearn super simple. It currently supports yVaults on Polygon and Base and will roll out other L2s soon. You can easily zap right into Yearn's single asset V3 vaults and start earning fast! How Do Vault Tokens Work?[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#how-do-vault-tokens-work "Direct link to How Do Vault Tokens Work?") --------------------------------------------------------------------------------------------------------------------------------------------------------------------- yVault Tokens are like a deposit receipt. They represent a user's share of the yVault that they are participating in. **For example**, if you deposit YFI in a yVault you will receive yvYFI in return. yvYFI would be the yVault Token. If your yVault generates profit, the share price of your yVault tokens will increase. This happens because more underlying tokens are in the yVault to redeem upon withdrawal. ![image](https://i.imgur.com/3zkSnoE.png) ![image](https://i.imgur.com/yrGEVCr.png) Once a user's assets are withdrawn from the yVault, their yVault Token will be burned. yVault Tokens are [ERC-20](https://ethereum.org/en/developers/docs/standards/tokens/erc-20/) , meaning they can be transferred and traded as any other common Ethereum token. The vault tokens have evolved between v1, v2, and v3, here are a couple of main differences: ### V1 yVault Tokens[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v1-yvault-tokens "Direct link to V1 yVault Tokens") * Each vault contract can use only 1 yield strategy contract. * Vault tokens are prefixed with a leading `y`, so a v1 vault for USDC gives the user yUSDC. ### V2 yVault Tokens[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v2-yvault-tokens "Direct link to V2 yVault Tokens") * Each vault contract can use up to 20 yield strategy contracts. * Vault tokens are prefixed with `yv`, so a v2 vault for USDC gives the user yvUSDC. ### V3 yVault Tokens[​](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v3-yvault-tokens "Direct link to V3 yVault Tokens") * All V3 vaults are [ERC-4626](https://ethereum.org/en/developers/docs/standards/tokens/erc-4626/) compliant. * Vaults can be either [multi-strategy](https://docs.yearn.fi/developers/v3/overview#definitions) or [single-strategy (Tokenized Strategy)](https://docs.yearn.fi/developers/v3/overview#definitions) . * Multi-strategy vaults tokens are prefixed with `yv` and appended with a ["category"](https://docs.yearn.fi/developers/v3/Integrating_v3#category) , so a v3 vault for USDC with a category type of `1` gives the user `yvUSDC-1`. * Single strategy vaults are prefixed with `ys`, so a v3 single strategy vault gives the user `ysUSDC`. tip Didn't find what you are looking for? Check out additional frequently asked questions and troubleshooting [here](https://docs.yearn.fi/getting-started/guides/user-faq) Copy page as Markdown * [yVaults ELI-5](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#yvaults-eli-5) * [V1, V2, V3, Juiced... Whats the difference?](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v1-v2-v3-juiced-whats-the-difference) * [What is Gimme?](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#what-is-gimme) * [How Do Vault Tokens Work?](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#how-do-vault-tokens-work) * [V1 yVault Tokens](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v1-yvault-tokens) * [V2 yVault Tokens](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v2-yvault-tokens) * [V3 yVault Tokens](https://docs.yearn.fi/getting-started/products/yvaults/yvaults-faq#v3-yvault-tokens) --- # Yearn Principles | Yearn Docs [Skip to main content](https://docs.yearn.fi/getting-started/yearn-principles#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Trust[​](https://docs.yearn.fi/getting-started/yearn-principles#trust "Direct link to Trust") ---------------------------------------------------------------------------------------------- You can't build trustless systems without trust. ------------------------------------------------ ### Yearn runs on trust. Trust fosters strong connections and helps things run smoothly, allowing Yearn to circumvent the burdens of traditional corporate middle management. We move at the speed of trust because we believe it's the most efficient way to get things done - all our other principles are possible because we choose to trust each other. ![drawing of purple man](https://docs.yearn.fi/img/principles/trust.png) Autonomy[​](https://docs.yearn.fi/getting-started/yearn-principles#autonomy "Direct link to Autonomy") ------------------------------------------------------------------------------------------------------- Do'ers, do. ----------- ### Belief is great, but building is better. As a contributor, you are the person who knows what's best to do for Yearn. We don't wait for approvals or authorization, permission is self granted, and action is revered. As a self starter at Yearn you have nothing between you and the glorious horizon. The future belongs to those who do. ![drawing of man with axe and tree](https://docs.yearn.fi/img/principles/doers.png) Respect[​](https://docs.yearn.fi/getting-started/yearn-principles#respect "Direct link to Respect") ---------------------------------------------------------------------------------------------------- Revere one another. ------------------- ### Conflict is inevitable, but it doesn't have to be destructive. We operate under the assumption that our fellow contributors are fundamentally good, reasonable, and trustworthy. Stir some hard work, talent and capability into the mix and it's easy to see why even when things go wrong, we always take the Most Respectful Interpretation of each others actions. ![drawing of woman holding weight](https://docs.yearn.fi/img/principles/revere.png) Creativity[​](https://docs.yearn.fi/getting-started/yearn-principles#creativity "Direct link to Creativity") ------------------------------------------------------------------------------------------------------------- Boxes are for squares. ---------------------- ### Creativity is our competitive edge. When boldness is met with trust and empathy, magic occurs. We understand that the craziest ideas can spawn entirely new industries - Yearn is living proof of it. No thought is too crazy, no plan too weird, no ambition too out there. Yearn exists in a realm beyond nation state borders, but we're proud to let our freak flag fly. ![drawing of woman with flag and comet](https://docs.yearn.fi/img/principles/boxes.png) Meritocracy[​](https://docs.yearn.fi/getting-started/yearn-principles#meritocracy "Direct link to Meritocracy") ---------------------------------------------------------------------------------------------------------------- You are what you do. -------------------- ### Yearn is a place that values ideas over identity. Whether you're a DeFi OG or a newb on the Discord, the best contributions will always be respected. We're all for personality, but never cult of personality. Here, work always trumps credentials - we don't care who you are, only what you do. ![drawing of woman holding mirror](https://docs.yearn.fi/img/principles/doers.png) Chaos[​](https://docs.yearn.fi/getting-started/yearn-principles#chaos "Direct link to Chaos") ---------------------------------------------------------------------------------------------- <3 Chaos. --------- ### Decentralization isn't just best for the protocol, it's also best for the people building it. The future doesn't look like a corporate strategy deck or some complex org chart. It looks like nature - messy, chaotic and full of surprises. Yearn find order from chaos, scaling in harmony with other orgs and the wider space. ![drawing of man dancing with fire](https://docs.yearn.fi/img/principles/chaos.png) Community[​](https://docs.yearn.fi/getting-started/yearn-principles#community "Direct link to Community") ---------------------------------------------------------------------------------------------------------- Humans and code. ---------------- ### The protocol isn't our only product. Yearn is a community of independent builders who are free to sprout new organizations and grow the network organically. Each day Yearn supports the flourishing DeFi ecosystem by uniting exceptional people around radical projects that make finance more flexible and accessible. This synergistic relationship guides Yearn to build its code and community with integrity. ![drawing of woman holding hoop](https://docs.yearn.fi/img/principles/code.png) Copy page as Markdown * [Trust](https://docs.yearn.fi/getting-started/yearn-principles#trust) * [Autonomy](https://docs.yearn.fi/getting-started/yearn-principles#autonomy) * [Respect](https://docs.yearn.fi/getting-started/yearn-principles#respect) * [Creativity](https://docs.yearn.fi/getting-started/yearn-principles#creativity) * [Meritocracy](https://docs.yearn.fi/getting-started/yearn-principles#meritocracy) * [Chaos](https://docs.yearn.fi/getting-started/yearn-principles#chaos) * [Community](https://docs.yearn.fi/getting-started/yearn-principles#community) --- # yvUSD | Yearn Docs [Skip to main content](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Overview[​](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#overview "Direct link to Overview") ------------------------------------------------------------------------------------------------------------- **yvUSD** is a USD-denominated cross-chain vault built on Yearn's V3 vault architecture. In standard Yearn vaults, the assets deposited into a vault stay on the same chain. But yvUSD applies a new design approach: combine the battle-tested Yearn vault with cross-chain capital deployment to maximize yield. Users deposit their assets to the vault on mainnet and the vault uses native asset bridges, like Circle's CCTP protocol, to send the assets to strategies on other chains. ![yvUSD Design](https://docs.yearn.fi/assets/images/summary1-e254863dc28347718ef27039272b3884.png) Because only a strategy contract is needed on another chain, rather than the entire Yearn vault infra, the new design allows for a more nimble approach to capturing yield for users across chains. ![yvUSD with strategies on 3 chains](https://docs.yearn.fi/assets/images/summary2-e306cc8dd6cba0b902ed85b850e5651a.png) How yvUSD differs from a standard Yearn vault[​](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#how-yvusd-differs-from-a-standard-yearn-vault "Direct link to How yvUSD differs from a standard Yearn vault") ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- * **Cross-chain deployment:** yvUSD strategies can deploy capital on other chains via native asset and/or chain bridges. Other Yearn vaults keep assets on the same chain as the vault. * **Different strategy risk profile:** yvUSD can include cross-chain components, duration risk (holding PT tokens) and leveraged loopers (e.g., Morpho Blue), adding additional cross-chain, time, and liquidation/borrow-rate risks compared to standard Yearn vaults. * **Withdrawals can be non-atomic:** While the expectation is for withdrawals to be atomic just like a normal vault, it is possible that under certain conditions, there may be a delay. * **Optional lock wrapper:** `Locked yvUSD` adds a cooldown plus a withdrawal window to make withdrawals more predictable for users who opt in, and it can add a "locker bonus" yield component. Risks To Understand[​](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#risks-to-understand "Direct link to Risks To Understand") ---------------------------------------------------------------------------------------------------------------------------------------------- yvUSD and its strategies involve risks beyond standard single-chain Yearn vaults: * Smart contract risk (Yearn vaults, strategies, and integrations) * Stablecoin risk (depegs, issuer/custody risk, liquidity) * Duration risk (Illiquidity of fixed rate tokens and exposure to interest rate changes when holding fixed-rate or longer-term debt positions) * Cross-chain risk (bridging and remote execution/accounting) * Leverage/liquidation risk (for looper strategies that borrow against collateral) Locked yvUSD[​](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#locked-yvusd "Direct link to Locked yvUSD") ------------------------------------------------------------------------------------------------------------------------- `Locked yvUSD` is a companion vault that wraps `yvUSD` shares and enforces a withdrawal cooldown. This is an optional opt-in product for users who can commit to delayed withdrawals, in exchange for an additional yield component (a "locker bonus") sourced from the vault's fee mechanics. The rationale for this feature is as follows: yvUSD can more effectively deploy capital into longer duration or cross-chain strategies with liquidity guarantees enforced by the locked yvUSD cooldown mechanics. These strategies in turn earn higher yield than their fully liquid counterparts and therefore all users earn better overall returns. ### Withdrawal process[​](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#withdrawal-process "Direct link to Withdrawal process") Withdrawing from `Locked yvUSD` is a two-step process: 1. **Start cooldown** — call `startCooldown(shares)` to lock a specific number of shares for withdrawal. The current cooldown period is `Fetching contract data...`. 2. **Withdraw** — once the cooldown expires, withdraw within the `Fetching contract data...` withdrawal window. If the withdrawal window expires before the user withdraws, the cooldown must be restarted from step 1. Shares locked in an active cooldown cannot be transferred. ![Withdrawal timeline for Locked yvUSD](https://docs.yearn.fi/assets/images/Locked-yvUSD-timeline-3370e8aaa3696aeff3dcd5c4d9c3c7e7.png) Read More[​](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#read-more "Direct link to Read More") ---------------------------------------------------------------------------------------------------------------- [Debank Bundle of yvUSD strategies](https://debank.com/bundles/221066/portfolio) [yvUSD Deep Dive](https://docs.yearn.fi/developers/yvusd) [Circle Cross-Chain Transfer Protocol (CCTP)](https://www.circle.com/cross-chain-transfer-protocol) Copy page as Markdown * [Overview](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#overview) * [How yvUSD differs from a standard Yearn vault](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#how-yvusd-differs-from-a-standard-yearn-vault) * [Risks To Understand](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#risks-to-understand) * [Locked yvUSD](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#locked-yvusd) * [Withdrawal process](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#withdrawal-process) * [Read More](https://docs.yearn.fi/getting-started/products/yvaults/yvusd#read-more) --- # CommonHealthCheck.sol | Yearn Docs [Skip to main content](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#__docusaurus_skipToContent_fallback) On this page Copy page as Markdown Functions[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#functions "Direct link to Functions") ------------------------------------------------------------------------------------------------------------------------- ### setGovernance[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setgovernance "Direct link to setGovernance") function setGovernance( ) external ### setManagement[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setmanagement "Direct link to setManagement") function setManagement( ) external ### setProfitLimitRatio[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setprofitlimitratio "Direct link to setProfitLimitRatio") function setProfitLimitRatio( ) external ### setlossLimitRatio[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setlosslimitratio "Direct link to setlossLimitRatio") function setlossLimitRatio( ) external ### setStrategyLimits[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setstrategylimits "Direct link to setStrategyLimits") function setStrategyLimits( ) external ### setCheck[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setcheck "Direct link to setCheck") function setCheck( ) external ### check[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#check "Direct link to check") function check( ) external returns (bool) ### \_runChecks[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#_runchecks "Direct link to _runChecks") function _runChecks( ) internal returns (bool) ### \_executeDefaultCheck[​](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#_executedefaultcheck "Direct link to _executeDefaultCheck") function _executeDefaultCheck( ) internal returns (bool) Copy page as Markdown * [Functions](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#functions) * [setGovernance](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setgovernance) * [setManagement](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setmanagement) * [setProfitLimitRatio](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setprofitlimitratio) * [setlossLimitRatio](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setlosslimitratio) * [setStrategyLimits](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setstrategylimits) * [setCheck](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#setcheck) * [check](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#check) * [\_runChecks](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#_runchecks) * [\_executeDefaultCheck](https://docs.yearn.fi/developers/smart-contracts/V2/CommonHealthCheck#_executedefaultcheck) ---