UNIv2 Two-fold Protocol-owned Liquidity Strategy

Protocol-owned liquidity (PoL) is a popular provisioning tactic amongst some major revenue-generating initiatives in the market. It is indeed an interesting formula to diversify a protocols treasury and if architected correctly, a sustainable market for the native asset. Low liquidity, induces volatility. Arguably, Ethereum (ETH) is the prevalent pair for all decentralised markets on its network. While this asset has its benefits, it also inherits price exposure, which either is a magnitude greater or less than that of any token.

Furthermore, weighing the economic theory of; the more proactive a market is, the more accurate is its evaluation. While it can be easy to assume that any liquidity is beneficial to pair with. The liquidity and volatility of that asset matter in determining healthy market dynamics. Pairing two tokens could be highly volatile, competitive and potentially economically dangerous - if the liquidity, management and distribution of one asset were skewed. However, if the opposing pair was stable and redeemable for a fiat equivalent, it would be beneficial for stability.

Automated market makers (AMM) diverge in their selection, the notable pioneer in this field being the Uniswap protocol. Uniswap v2 is the most adopted and balanced landscape for liquidity provisioning and v3 being more suited to that of a competitive nature. As discussed and referenced in a previous forum post. While decentralised organisations are agile, they are not suited to proportional liquidity provisioning strategies. As only governance or quite complex smart logic must facilitate execution swiftly and proactively, both have risks to exploitation. The alternative solution is a facilitator accommodated via a multi-signature wallet for rebalancing, although it requires entrusting the actors to act faithfully.

Two-fold Protocol-owned-liquidity Strategy

Considering tornado’s core deployment and most adopted anonymity set share the commonality of Ethereum. The treasury should take a position in the native the asset of the fat protocol it operates on. Which would not only be useful in compensating transactional costs of infrastructure deployments but would be an effective economic thesis given how the protocol’s native asset is priced. Not only to mitigate risk but to amass monetary value if the general market experiences growth. As Ethereum transitions into its new consensus algorithm, the emissions will diminish promoting scarcity, furthered by its new deflationary properties introduced in EIP-1559. This network change transforms ETH into a revenue-generating asset when committed towards consensus.

This proposal constitutes the strategy of deploying 5% (275,000 TORN) of the treasuries resources towards a two-fold liquidity provisioning strategy, split amongst two markets; a DAI pair and an Ethereum pair. Following an incremental structure, split into five phases. Each phase is allocated 1% (55,000 TORN) of the entire treasury allocation. Where the opposing assets will be obtained through; firstly conducting a Dutch auction in ETH with half of the allocation, secondly liquidating a proportion of auction funds for DAI. In between these actions, a part of each balance is funnelled back to the treasury for future operational expenses (audits, salaries etc). Each phase will require a separate proposal to execute, mitigating potential further contingencies if they are to occur.

Phase execution

2022-01-30 15.09.27

Figure 1: Strategy flowchart

  • 1/2 of phase allocation is transferred to the Dutch auction contract, bidding begins
  • Auction concludes with a 1-week lockup for participants:
    • 1/4 of total ETH raised is transferred to the treasury
    • 1/4 of total ETH raised is provisioned to ETH/TORN
    • 1/2 of total ETH raised is liquidated for DAI
  • 1/2 of DAI holdings are transferred to the treasury
  • Remainder of DAI is provisioned to DAI/TORN

The price disparity created between DAI/ETH, TORN/ETH and DAI/TORN incentivises uniform ring trades to arbitrage the market, reducing volatility. Furthermore, incubating healthy price discovery for the protocols native asset and allowing direct exchangeability to its dollar equivalent value. While synthetic derivates for “staked” Ethereum exist, there are no permissionless solutions available. Nonetheless, should be monitored for potential extension of treasury resources accrued through this strategy.

Many thanks to @yoyoismee.eth, who recommended; a Dutch auction over liquidating assets into the market, lockup periods for auction participants and funnelling capital back to the treasury to cover operational expenses. He and @unbalancedparen have expressed interest on collaborating on this idea to bring it into execution if general sentiments are in favour.


We’ve loved building Tutela for Tornado. We would love to work for the long term with Tornado developing smart contracts in solidity.

That said, I am pretty sure we can help here :slight_smile:


I think that selling some TORN to diversify the treasury is a great idea. A few possible improvements in my opinion:

  • Sold tokens could be locked for much longer than a week, why not lock them for 6-12 month turning it into a strategic sale. For major sales it’s most likely that participants are long term investors, so the lock would help to ensure that their interests are aligned with Tornado Cash protocol.

  • If we decide to do a long term lock of sold tokens, I think it would be fair to make it possible to use them for governance voting. It has an additional benefit that voters with long term token lock tend to make better voting decisions.

  • A Dutch auction is an optimal way to sell tokens when the participants are rational. But in real life situations I think people understand simple fixed price sales much better, and such a sale has potential to attract much more potential buyers than an auction. Tornado Cash DAO had an auction recently and the participation in it was pretty low. So I would suggest selling TORN at fixed price with some % discount from the current market.

  • Doing the sale in multiple proposals could make it hard to gather voting quorum. I would suggest to make a single sale of for example 100k TORN, and in case of success and high interest maybe governance will decide to repeat it at some point.

  • I don’t fully understand why it’s better to split liquidity between TORN/DAI and TORN/ETH pairs instead of doing a single TORN/ETH pair. Most Uniswap pools are pared with ETH, and in case of stablecoin trades, Uniswap will just route the trade through appropriate pairs.


Tornado could consider partnering with a global autonomous collective like DXdao.eth.link who manage a mainnet treasury with 10k ETH in it and a diversified portfolio of stablecoins.
They are building and governing the multi-chain DEX Swapr, which currently has liquidity mining campaigns distributing its governance token.
Instead of Tornado selling and devaluing TORN, it could provide TORN and DXdao could provide ETH and/or stablecoins to jointly provide liquidity, sharing impermanent loss and revenue from trading fees. This can be done not only on Eth Mainnet, but also on Gnosis Chain or ArbitrumOne.
Due to the high gas fees, mainnet pools don’t see much traffic.
To offer a better UX with faster and cheaper transactions, Tornado can bridge TORN to Gnosis Chain via OmniBridge and bootstrap a liquidity pool with a long-term mining campaign in Swapr, giving dual rewards to LPs in the form of TORN and/or GNO, SWPR tokens.
The campaign can even be gamified by locking a portion of the rewards and tying it to a goal targeting TVL in a range, using Carrot.eth.

I agree with all of the above except

The goal of liquidity provisioning is capturing fees. Providing liquidity to a singular pair disincentivises arbitrage therefore, less value is accrued as a provisioner. It is feasible to assume providing more opportunities for price discrepancies across multiple pools with a standard of sufficient liquidity, entices proactivity.

I would argue the price disparity between a stablecoin, ETH, and a token is healthy to encourage a sustainable strategy. Over let’s say, just deploying with an ETH pair - which has the benefit of more depth, less slippage. Nevertheless, in either instance, whether markets grow or decline provisioners are still exposed to the crypto asset class.

Although when adding the dynamic of aspect of stablecoin provisioning, when markets experience growth the treasuries stable reserves also follow without requirements of liquidation, just rebalancing. Which I’d call adequate risk management of the treasuries resources.

While it is true the router can cater to the accessibility of automated purchases with other assets, it does not result in exposure to the treasury as a provisioner.

We definitely could work on this with every multisig signers @xgozzy. Let’s discuss more about this and put in place a ready-to-go proposal!

1 Like

Simulation time!

I’m working on a simulation for this strategy and would love to get some early feedback. for now, the primary focus is on fees from arbs.
I made a few simplifications and assumptions which I write in more detail in the notebook. feel free to play around, change things, fork, etc.
from here - co-lab notebook

early result.

Given the current MEV landscape, I assume that there will be enough bot watching uniV2 pool to arb on any opportunities. So I would assume that when ETH price moves, arbitrager will arb through these 2 pools to achieve EQB.

e.g. ETH down = buy Torn with ETH -> Sell Torn to DAI -> Buy ETH with DAI to end the loop. or vice versa.

If we use 1 hr time frame.
this means that we assume that arbitragers will take each opportunity within one hr. (sound conservative to me) we would achieve 2 digits APR. but TBH if we change to a more granular timeframe aka arbitrager is more active than that. we would have way higher APR.

here is some plot based on hourly data from:
Dec 27 2021 19:00 - Feb 07 2022 10:00
// feel free to rerun the script with a different period or time frame.

ps. there might be bugs. pls double check my code.

1 Like

Awesome work yoyo, interesting to see numerical data to back the economical theory of the proposal. Ring trades are very common with ease at the disposal of the Uniswap router and given the custom nature of MEV bots are usually executed with any distiniction of profit. We’ve seen countless times bots, executing inaffective arbs because due to poorly optimised strategies or other competiting actors succeeding before them.

This is a great parameter to start with but I believe it’s far from an equitable value to represent arbitage finality, 15 minutes or 30 minutes would be my recommendation. Results for both are seen below.

Figure 1: 30 min arb finality plot

Figure 2: 15 min arb finality plot

My only other recommendation then, is just labelling the x and y axises then benchmarking the dual strategy versus a singular formation.

Draft contract structures in place, unit test cases to follow. A recommendation by @yoyoismee.eth was to use clone proxies to save reoccuring costs of reploying the logic of the DelegatedVesting and DelegatedInstance implementations.

I’ve still yet to contemplate the potential risks of this.

1 Like

Hi, I’m a big fan of Tornado, was scrolling through the forum and saw this. Just wanted to mentioned that there are services like OndoFinance that lend stablecoins (right now FEI and FRAX are available) so that protocols can own the liquidity of their tokens. Just mentioned this in case you may find it more attractive than selling TORN for stables.

Disclaimer: I’m an active community member of Frax and actively looking for ways to expand.