Skip to content

convenience script to use nodejs/npm insteald of brownie for yearn-protocol

License

Notifications You must be signed in to change notification settings

sambacha/yearn-protocol-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Yearn Protocol

NodeJS Version

GitHub license Lint Test

Twitter Follow Discord Telegram Discourse users

Yearn Protocol is a set of Ethereum Smart Contracts focused on creating 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.

Before getting started with this repo, please read:

Requirements

To run the project you need:

  • Python 3.8 local development environment and Node.js 10.x development environment for Ganache.
  • Brownie local environment setup. See instructions: ETH Brownie.
  • Local env variables for Etherscan API and Infura (ETHERSCAN_TOKEN, WEB3_INFURA_PROJECT_ID).
  • Local Ganache environment installed with npm install -g [email protected].

Resources

Deployed Contracts Registry

Below is a list of relevant smart contracts and Github repositories for using and interacting with the Yearn product suite.

Token Contracts

YFI

The Yearn ecosystem is controlled by YFI token holders who submit and vote on proposals that govern the ecosystem.

Token Address
YFI 0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e

v2 Yield Tokens

The v2 yield tokens can be used in one lender at a time. Currently being used on Curve’s Y Pool, Yearn’s yBTC pool and sUSD pool.

Token Address Github
yDAIv2 0x16de59092dAE5CcF4A1E6439D611fd0653f0Bd01 YDAIv2.sol
yUSDCv2 0xd6aD7a6750A7593E092a9B218d66C0A814a3436e YUSDCv2.sol
yUSDTv2 0x83f798e925BcD4017Eb265844FDDAbb448f1707D YUSDTv2.sol
ysUSDv2 0xF61718057901F84C4eEC4339EF8f0D86D2B45600 YSUSDv2.sol
yTUSDv2 0x73a052500105205d34daf004eab301916da8190f YTUSDv2.sol
yWBTCv2 0x04Aa51bbcB46541455cCF1B8bef2ebc5d3787EC9 YWBTCv2.sol

v3 Yield Tokens

The v3 yield tokens allow the underlying assets to be spread across multiple lenders. Currently being used on Curve’s BUSD pool.

Token Address Github
yDAIv3 0xC2cB1040220768554cf699b0d863A3cd4324ce32 YDAIv3.sol
yUSDCv3 0x26EA744E5B887E5205727f55dFBE8685e3b21951 YUSDCv3.sol
yUSDTv3 0xE6354ed5bC4b393a5Aad09f21c46E101e692d447 YUSDCv3.sol
yBUSDv3 0x04bC0Ab673d88aE9dbC9DA2380cB6B79C4BCa9aE YBUSDv3.sol

Vault Contracts

Vaults follow unique strategies that are designed to maximize yield of the deposited asset and minimize risk. The vaults are maintained by a Controller which oversees the strategy execution. Strategies' generated profits are used to buy respective vault underlying asset.

The Controller contract can be found here and the source code can be found here.

Vaults

Vault Address GitHub
WETH 0xe1237aa7f535b0cc33fd973d66cbf830354d16c7 yWETH.sol
YFI 0xba2e7fed597fd0e3e70f5130bcdbbfe06bb94fe1 yVault.sol
curve.fi/3pool LP 0x9cA85572E6A3EbF24dEDd195623F188735A5179f yVault.sol
curve.fi/y LP 0x5dbcf33d8c2e976c6b560249878e6f1491bca25c yVault.sol
curve.fi/busd LP 0x2994529c0652d127b7842094103715ec5299bbed yVault.sol
curve.fi/sbtc LP 0x7ff566e1d69deff32a7b244ae7276b9f90e9d0f6 yVault.sol
DAI 0xacd43e627e64355f1861cec6d3a6688b31a6f952 yVault.sol
TUSD 0x37d19d1c4e1fa9dc47bd1ea12f742a0887eda74a yVault.sol
USDC 0x597ad1e0c13bfe8025993d9e79c69e1c0233522e yVault.sol
USDT 0x2f08119c6f07c006695e079aafc638b8789faf18 yVault.sol
GUSD 0xec0d8d3ed5477106c6d4ea27d90a60e594693c90 yVault.sol
curve.fi/compound LP 0x629c759D1E83eFbF63d84eb3868B564d9521C129 yVault.sol
curve.fi/mUSD LP 0x1AEf73d49Dedc4b1778d0706583995958Dc862e6 yVault.sol

Strategies

Strategy Address GitHub Vault
StrategyCurve3CrvVoterProxy 0xC59601F0CC49baa266891b7fc63d2D5FE097A79D StrategyCurve3CrvVoterProxy.sol curve.fi/3pool LP
StrategyMKRVaultDAIDelegate 0x932fc4fd0eee66f22f1e23fba74d7058391c0b15 StrategyMKRVaultDAIDelegate.sol WETH
StrategyYFIGovernance 0x395f93350d5102b6139abfc84a7d6ee70488797c StrategyYFIGovernance.sol YFI
StrategyCurveYCRVVoter 0xc999fb87aca383a63d804a575396f65a55aa5ac8 StrategyCurveYCRVVoter.sol curve.fi/y LP
StrategyCurveYBUSD 0xb15ee8e74dac2d77f9d1080b32b0f3562954aee9 StrategyCurveYBUSD.sol curve.fi/busd LP
StrategyCurveSBTC 0x4feeaeced575239b46d70b50e13532ecb62e4ea8 StrategyCurveSBTC.sol curve.fi/sbtc LP
StrategyDAICurve 0xaa880345a3147a1fc6889080401c791813ed08dc StrategyDAICurve.sol DAI
StrategyTUSDypool 0xe3a711987612bfd1dafa076506f3793c78d81558 StrategyTUSDypool.sol TUSD
StrategyUSDC3pool 0x4720515963a9d40ca10b1ade806c1291e6c9a86d StrategyUSDC3pool.sol USDC
StrategyUSDT3pool 0xc7e437033d849474074429cbe8077c971ea2a852 StrategyUSDT3pool.sol USDT
StrategyCurveCompoundVoterProxy 0x530da5aef3c8f9ccbc75c97c182d6ee2284b643f StrategyCurveCompoundVoterProxy.sol curve.fi/compound LP
StrategyCurvemUSDVoterProxy 0xBA0c07BBE9C22a1ee33FE988Ea3763f21D0909a0 StrategyCurvemUSDVoterProxy.sol curve.fi/mUSD LP

Delegated Vault Contracts

Volatile assets can also participate in yield farming strategies as part of the Delegated Vaults. Currently, there is only one Delegated Vault: aLINK. The Controller deposits LINK into AAVE and borrows stable coins (USDC). The initial health factor of these loans is always above 4, and if the health factor drops below 4 at any time the Controller repays a portion of the debt in order to maintain a health factor above 4.

The stable coins borrowed (e.g., USDC, DAI, USDT, etc.) depend on the strategy selected by the Controller. After obtaining stable coins the Controller will deposit them into one of the yVaults identified above.

The aLINK vault uses the StrategyControllerV2 contract. The source code for StrategyControllerV2 is here.

Strategy Strategy GitHub
StrategyVaultUSDC 0x25faca21dd2ad7edb3a027d543e617496820d8d6 StrategyVaultUSDC.sol
Vault Address GitHub
aLINK 0x29e240cfd7946ba20895a7a02edb25c210f9f324 yDelegatedVault.sol

Governance Contracts

YFI holders govern the Yearn ecosystem and are eligible to receive a portion of protocol profits. Therefore, YFI represents a right to govern the platform and a claim on earnings. Profits are obtained from each of Yearn's products. In order to claim profits, YFI holders stake their tokens into the Governance contract.

Contract Status Address
Governance Staking (v2) Live 0xba37b002abafdd8e89a1995da52740bbc013d992
YearnGovernance (Balancer v1) Old 0x3a22df48d84957f907e67f4313e3d43179040d6e
YearnRewards (Yearn v1) Old 0x0001fb050fe7312791bf6475b96569d83f695c9f
YearnRewards (Balancer v1) Old 0x033e52f513f9b98e129381c6708f9faa2dee5db5
YearnRewards (Gov. Staking v1) Old 0xb01419e74d8a2abb1bbad82925b19c36c191a701

Status and Info Contracts

Utility Summary
YRegistry The Vault Registry is the single source of truth for active Yearn vaults. The registry allows users to query for active Yearn vaults and vault metadata (details here).
UniswapROI On-chain uniswap pool ROI calculator
APROracle Allows on-chain rate comparison between Compound, Fulcrum, Aave, and dYdX.
UniswapAPR An on-chain uniswap pool APR calculator. It calculates all values in ETH adjusted for the last year.
IEarnAPR Contract for on-chain APR decision trees between Compound, Fulcrum, Aave, and dYdX.
IEarnManager On-chain stateless execution. Recommendations based on IearnAPR.
APRWithPoolOracle APR used for stateless recommend() function. Can be used to change the recommended provider.
IEarnAPRWithPool APR used for stateless recommend() function. Can be used to change the recommended provider.

Utility Contracts

Utility Address
Curve's yPool 0xdF5e0e81Dff6FAF3A7e52BA697820c5e32D806A8