[SIPS-030] Upcoming Real Yield USD Cellar Proposal + Cellars V2 Architecture

Upcoming Real Yield USD Cellar Proposal + Cellars V2 Architecture


The goal of this forum post is two-fold. First, it is to discuss the upcoming Cellar proposal asking Governance to accept the Real Yield USD stablecoin strategy. Second, it is to more broadly discuss the new Cellars V2 smart contract architecture that the Real Yield USD Cellar will be using.


Thus far, Cellars on Sommelier have been limited to long-only trading and portfolio management strategies. This was a limitation of the smart contract architecture which only supported buying/selling assets on Uniswap.

With Cellars V2, a new smart contract architecture recently audited by Macro, Cellars are able to integrate with virtually any DeFi protocol, enabling more sophisticated and interesting yield strategies to be built on Sommelier.

In this post, we’d like to discuss the first strategy being proposed to run on the Cellars V2 architecture: the Real Yield USD Cellar. We’d also like to do a light dive into the Cellars V2 architecture more generally.

Cellars V2

The Cellars V2 smart contract architecture enables Sommelier to integrate with almost any DeFi protocol. The architecture is based on an “adapter” framework where a Cellar contract (primarily responsible for accounting) references various adapter contracts to interact with DeFi protocols. For example, a Cellar that has reference to an Aave adapter will be able to execute actions (lending, borrowing, etc.) on Aave. This provides a scalable approach to integrating DeFi apps with Cellars: to allow Cellars to interact with a specific protocol, one need only build an adapter to that protocol.

The V2 architecture additionally introduces the concept of a “position” which a Cellar may deposit to or withdraw from. Positions may be represented by ERC20 tokens, NFTs (e.g. a Uniswap V3 LP position), or even more complex representations.

Given the increased flexibility of the new architecture, security becomes an even more important consideration. These concerns are mitigated in several ways. A strategy provider doesn’t have the ability to add new adapters or positions. While the functionality to add a new adapter (setupAdapter) and a new position (addPosition) exist in the Cellar contract, these functions are not exposed in Steward to strategy providers. Therefore, strategy providers are not able to call them directly and must go through a Governance process to add a new adapter or position. This ensures that Cellars remain consistent with what Governance expects of them, while retaining the flexibility to evolve in changing market conditions. Additionally, V2 Cellars contain a parameter called allowedRebalanceDeviation which specifies the maximum change in total value that a Cellar will tolerate for a single call. For example, if the rebalance deviation is 0.05% and a strategist is attempting to execute a swap that costs 0.06% of the total value, the swap will fail. The rebalance deviation will vary from Cellar to Cellar, and is one parameter that users can use to assess the risk profile of the Cellar.

It’s worth noting that there are a few areas for improvement in the current architecture. Namely, the registry contract (which specifies the set of adapters that a Cellar can access via Governance) and the price router (which informs the Cellar on how to price assets) are currently owned by multi-sigs. We plan on migrating ownership of these utility contracts to Gravity in the near future.

In summary, the Cellars V2 architecture provides a scalable approach to integrating arbitrary DeFi protocols into Sommelier strategies and actively managed DeFi vaults.

Proposal for cellar authorization for strategy Real Yield USD

The Real Yield USD Cellar is the first strategy to make use of the Cellars V2 architecture. The goals of the strategy are to maximize organic stablecoin yield on USDT, USDT, and DAI. By “organic” we mean yield that results from app usage (fees) rather than incentives.

For details on the Real Yield USD strategy (including strategy backtesting and comparisons), see the following writeup:


If approved, the chain will accept signed function calls submitted to the cellar contract from the cellar manager.

Name: Real Yield USD

Cellar share token: YieldUSD

Platform fee: 0.5% (0.4% for strategy provider + 0.1% for protocol)

Performance fee: 0%

Strategy provider: 7Seas https://www.7seas.capital/)

Cellar address: 0x4a2688599005d680E2E99421081D91F50199ae0A

Etherscan: CellarInitializable | Address 0x4a2688599005d680E2E99421081D91F50199ae0A | Etherscan

Source: GitHub - PeggyJV/cellar-contracts: Cellar Contracts for Sommelier

Audits (Macro): Sommelier A-4 | Macro Audits | The 0xMacro Library

While live-testing the Real Yield USD strategy on the deployed contracts, we discovered a missing feature: due to the non-standard USDT token approval process, we require the ability to zero-out approvals in the Uniswap V3 adapter. This ability was missing from the deployed contracts, therefore we needed to deploy a new set of contracts.
We re-deployed the following contracts:

Note that the owner of the Cellar at the time of writing is not Gravity. This is only temporary, as there are several setup calls and functions we need to test before transferring ownership. Ownership will be transferred to Gravity prior to the proposal going live

We have transferred ownership of the Cellar contract to Gravity in anticipation of the proposal going live.