Please describe your proposed solution.
It's clear that it's not possible to have a single chain process all the computation in the world. Although people still attempt this (Solana, BNB, EOS, Tron, etc.), most recent projects are trying to optimize for safely splitting computation off of the L1 (Cosmos, Polkadot, Ethereum, Avalanche, Cardano). This concept was even part of the initial Cardano roadmap in 2017.
Cardano itself has multiple work stream that are tackling this: Mamba (IOG sidechain), Milkomeda, Orbis and Hydra to name a few.
However, even though Cardano needs move computation out of the base layer to scale, current users are hesitant to due this as it will cause them to lose their staking rewards on mainnet (so unless the L2 can provide them more than 4% APY, they will be losing money). Additionally, the fact that this ADA is unstaked has a negative impact on the total % of ADA staked in the network which is a crucial metric for the safety of Cardano
Although Cardano provides liquid staking in the protocol itself, it is by itself not powerful enough for use-cases where ownership of tokens is tracked by some off-chain state (sidechains, CeFi, L2s, etc). However, our solution leverages the built-in liquid staking in Cardano to providing staking rewards for users of these protocols
The general proposed solution works as follows:
- Cardano user A want to use Milkomeda
- A wraps 50 ADA and get 50 milkADA on Milkomeda. The ADA on the Cardano side is staked by to a pool chosen by the Milkomeda DAO
- By default, users get no staking rewards at all (all the staking rewards go to the Milkomeda DAO)
- A user on Milkomeda can wrap their milkADA into a smart contract (which locks their ADA for 1+ epoch) to get back stMilkADA which we encourage DEXs, etc. to support 1:1 with ADA
- Milkomeda DAO shares staking rewards with stMilkADA holders every epoch
So now stMilkADA holders are getting their staking rewards while still being able to use Milkomeda
One key issue with this is who should the ADA on Cardano be delegated to? If you have a single pool (which is okay if you have <64M ADA), then it's simple. However, if you want to delegate to multiple pools or you have 64M+ ADA, you have to split it up to multiple pools. I think the easiest way to do it is instead of constantly rebalancing the UTXO set maintained by the bridge (which would be a nightmare) is to abuse the fact that staking snapshots are only taken on epoch boundaries. Every time an epoch boundary approaches, you rebalance your bridge to make sure the delegation is split correctly, and then re-adjust back to your old configuration (if needed) after the boundary has passed. The problem with this approach is Cardano has no fee market so there is no guarantee your rebalancing will happen before the epoch boundary (but the lack of a fee market makes many use-cases in Cardano including L2 and DeFi in general very unreliable so we are hoping a solution like the tiered fees proposal by IOG will be introduced)
Notably, we see three steps towards fully implementing this system:
- v1: implement the protocol with single stake pool run by the Milkomeda Foundation. This is not ideal, but will make dApps on Milkomeda start being able to integrate stMilkADA support and gets Milkomeda users their staking rewards as soon as possible (currently they earn nothing)
- v2: delegating to multiple fixed stake pools. This will require implementing the rebalancing protocol mentioned above
- v3: delegating to a dynamic set of stake pools voted on by the Milkomeda DAO (most likely outside of the scope of this proposal due to the complexity, but we're mentioning it here for completeness)
Please describe how your proposed solution will address the Challenge that you have submitted it in.
Liquid staking is a hot topic at the moment because for a lot of protocols that drive adoption, it is hard to get the necessary adoption without liquid staking options. A reference implementation of liquid staking for Cardano will not only be useful in itself, but also inspire other protocol and business models that would not have been possible without this construction
What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?
The lack of tiered fees or fee markets in Cardano makes it hard to ensure that rebalancing the stake pool delegation happens in an orderly fashion. During times of congestion (such as in 2021 where txs could take over an hour to appear on-chain), this may cause protocols to miss rebalancing (causing users to lose their staking rewards) and may cause downtimes in L2 onboarding as it may have to pause during the rebalancing. If a solution isn't implemented for Cardano, liquid staking may be too unreliable for protocols to adopt (but can be enabled without any additional modifications once the issue is resolved in Cardano itself)