YO Protocol Liquidity Source Integration Proposal

Title

YO Protocol integration

Author

Oscar, Head of Product at YO
@stechastic on Telegram
o@yolabs.xyz

Simple Summary

YO protocol is a multichain yield optimizer, allowing users to farm yield from the best DeFi protocols on any chain from one single vault. YO is the last vault you’ll ever need. Our flagship vaults: yoETH, yoUSD and yoBTC live on Base chain and anyone can mint to start earning yield from a basket of DeFi protocols in 3 chains or redeem to cash out.

Motivation

  • What unique value does your liquidity source bring?
    yoVaults aren’t widely traded on DEXs, making large swaps difficult or impossible. By integrating YO protocol as a liquidity source, users with size will be able to enter/exit YO via CoW Swap without problems.

  • How will it improve settlement quality?
    yoVaults have thin liquidity onchain. Currently a swap of $20k results in a price impact of over 35%. Furthermore, each yoVault needs its own liquidity pool onchain so bootstrapping liquidity for 3 vaults takes considerable time. An integration with a solver that can mint/redeem instead of swapping will result in a significant improvement in UX for users who default to CoWswap for the best price execution.

  • What trading pairs/assets are supported?
    Three pairs on Base chain

  1. yoETH <> WETH
  2. yoUSD <> USDC
  3. yoBTC <> cbBTC
  • Current trading volumes and liquidity depth
    Across all three vaults, roughhly $500k in daily volume. For swaps/mints into YO there is no cap on liquidity. For redemptions/swaps out, there is a max of 5% of the vault TVL for the redemption to be atomic.

Technical Specification

Price Discovery

  • How can solvers obtain price information?
    Solvers can call our custom onchain oracle contracts or call the convertToAssets() function from each of the vault contracts (same response either way).

  • API endpoints or on-chain methods

  1. Custom oracle:
    • function to query: getRate()
    • response is scaled to 18 decimals standardized
    • oracle contracts:
      • yoETH: 0xB0027C1C870573d5626Df1f049a12E39d3e613e9
      • yoBTC: 0x47fc979C519fA6c07D4dB6ab7B7573e20d94C5F9
      • yoUSD: 0x8Cb017261719799f8b5A3762Ebe2b0e214F9a735
  2. Vault contracts
    • function to query: convertToAssets() with a parameter of 1 share to convert, scaled to the number of decimals used by the vault token
    • vault contracts:
      • yoETH: 0x3A43AEC53490CB9Fa922847385D82fe25d0E9De7 (18 decimals)
      • yoBTC: 0xbCbc8cb4D1e8ED048a6276a5E94A3e952660BcbC (8 decimals)
      • yoUSD: 0x0000000f2eB9f69274678c76222B35eEc7588a65 (6 decimals)
  • Response formats and data structures
  1. Custom oracle:
    • response is uint256
  2. Vault contracts
    • response is uint256
  • Rate limits and performance characteristics
    None, data can be queried onchain directly

Settlement Interface

  • Smart contract addresses

    • yoETH: 0x3A43AEC53490CB9Fa922847385D82fe25d0E9De7 (18 decimals)
    • yoBTC: 0xbCbc8cb4D1e8ED048a6276a5E94A3e952660BcbC (8 decimals)
    • yoUSD: 0x0000000f2eB9f69274678c76222B35eEc7588a65 (6 decimals)
  • Function signatures
    Same signature for all three vault contracts:

    • deposit (0x6e553f65)
    • requestRedeem (0x7d41c86e)
  • Parameter specifications

    • deposit:
      • assets (uint256)
      • receiver (address)
    • requestRedeem
      • shares (uint256)
      • receiver (address)
      • owner (address)
  • Gas cost estimates

    • deposit: 120,000 gas units
    • requestRedeem: 120,000 gas units
  • Example transactions (on Base)

    • deposit: 0x99bcc95a2cd61da3695c2d8177c37acc434dc8a8105b27ee17f26b7e815da59f
    • requestRedeem: 0xe151feb1c79837e79cbde89503b16d128df7f252b4980e7674073745d52feb88

Integration Incentives

  • Are you offering integration grants? Not at the moment

Additional Information

  • Security audits
    Three audits by Hunter Security, Offbeat Security and Spearbit. Available here Security Audits | YO Protocol Documentation

  • Known limitations
    Redemptions beyond the available liquidity in the vault are subject to a 24 hr SLA. When simulating the transaction, the event requestRedeem() includes a boolean flag to indicate if the redemption is instant or not

Contact Information

  • Development team contacts
    k@yolabs.xyz, o@yolabs.xyz

  • Technical support channels
    Via email or the author’s telegram

  • Response time expectations
    Mid-july if possible