[EP3.3] [Executable] Sell ETH into USDC

Does sound interesting, so using Milkman we could set up a 2 week (time here is an open question) rolling order that would sell x amount of ETH per block through cowswap?

Is there risk here of someone seeing these orders and being able to manipulate the liquidity pools around it? I guess not considering the small amount of ETH per sale.

I’m also conscious of this sounding like a good idea but also adding more complexity to this ongoing process. We could execute a 5000 ETH auction, then explore the Milkman option for the remaining 5k balance?

Having looked at the code, I’m not sure how @middleway.eth intended this to work. I can’t see how you’d use a batch transaction to DCA, but I could be missing something.

The actual code and interface is very straightforward - simpler, I think, than the Gnosis auction - and I don’t think there’s much opportunity for price manipulation here.

Hey everyone,

After the above discussion, today we’re going to put this proposal up onchain for voting (and hopefully execution) based on the Milkman / cowswap strategy outlined above.

Remember if you haven’t already delegated you can head here to delegate your votes! Or vote yourself on Tally!


Even if not doing a DCA, I still think the proposal should consider doing multiple sell orders. 10k Ether is a lot of ethers to sell in one single day.

The price impact for a 10k ETH sell order is 0.8%, while for 1k ETH sell order it is 0.2% roughly speaking.
The DAO can save on average 0.6% for splitting to ten 1k orders.
It is nice, but low savings in comparison to ETH volatility, just putting it in perspective.

Generally I think that a single order should be sufficient. If you want to delay the vote for another day, happy to help to construct a transaction for a DCA/TWAP order to be considered as another option.
@nick.eth, using the validFrom price checker, you can construct a “good after time” order.

If you create ten such orders with validFrom being spaced 1 week apart, and combine them in a multicall, you get a single transaction that creates a TWAP selling strategy.


This proposal is now live on Tally.
Voting is open for 7 days.
Please go vote!


I voted FOR this proposal as I generally agree with the plan of responsibly managing the DAO’s funds and making sure there is enough runway for 2 years.The team has expenses and we need to make sure they are covered even if it the market takes another downturn.

As for using cowswap instead of a gnosis auction as @middleway.eth suggested, that’s an interesting idea. Has any such big swap happened via cowswap? The commands look straightforward.

Regarding the question of splitting up into smaller sells, that may indeed be a good idea, but depends on how far apart they would be executed. As you may avoid slippage but as mentioned above you are exposed to ETH’s own volatility.

1 Like

@lefterisjp I shared some examples above

1 Like

It’s not about price impact, it’s about volatility. I think the decision on “when” to sell is inherently a bad one. If Ether goes up the next day, then you’re accused of terrible timing, if it drops, you’re accused of dumping.

Unless the person selling is a certified market analyst or an astrologer (either will have the same chance), then we should try not to time it, but to make multiple sell orders.


This is definitely a legit point.
I can’t advise on WHEN is the best timing for selling an asset…
I think TWAP is good if you want to average out the exposure to price volatility.

Always happy to help implement it, if this is the request :blush:

After discussion with the DXdao community, Caney Fork voted AGAINST this proposal for the simple reason that this sale should have been split up in smaller increments over several months aka DCA-ing this sale

In this thread, DCA (or its equivalent) was suggested at least six times (from @AvsA , @Limes @dave-nimi @0x70626a @spencecoin @nic ) but there was no counter argument for why that method (or something similar) wasn’t used. The only criticism of DCA was from Nick:

I’d be supportive of DCAing, and your project seems like a great tool for that - but we can’t be its first user with such a large amount of money at stake, particularly prior to an audit.

This is referring to a specific tool and does not preclude using Gnosis auction (or milkman) in smaller amounts over a longer time period as was suggested by @AvsA

Even if not doing a DCA, I still think the proposal should consider doing multiple sell orders. 10k Ether is a lot of ethers to sell in one single day.

It was even suggested by @5pence.eth that @James would adjust the proposal accordingly

I believe James is planning to re-write this and break it up into several smaller Gnosis auctions as a way to DCA the swap.

DXdao was in a similar situation with a treasury made up of 100% ETH. Over 2021, it executed a series of treasury diversification proposals. It acquired almost $13m of stablecoins through 20+ trades. In our view, ENS should take a similar approach, hence our “No” vote on this proposal.

We support treasury diversification for ENS and are heartened by the use of treasury tools like milkman/Cowswap that allow the DAO to remain sovereign, but we strongly believe this proposal should be split up into smaller amounts (500-1000 ETH) over several months.


Hearing from another DAO on how they handled treasury management is super useful. Thanks for sharing this perspective. If there are others in this community that have a similar experience, I encourage them to share their learnings as well.

1 Like

All of the alternatives we were aware of at the time would have required a DAO vote for each sale, which was judged to be an undue burden on delegates.

I don’t think that’s an undue burden. I would be happy to vote on each sale, and I can’t imagine it’s all that much work for a steward to put up a vote once per month (or whatever DCA period was decided).

1 Like

For me, it is clear from this thread and current proposal outcome, that there’s consensus for ensuring runway by converting ETH to stablecoins.

The strategy for how to execute this trade is debatable.
A DCA strategy is not guaranteeing a better outcome than a single trade…
I personally think that in light of ENS current treasury composition which is heavily skewed toward ETH, and in light of the recent positive ETH price action - executing all at once is definitely a legitimate strategy.

Having said that, I wanted to note that it is possible to create a DCA-style order with the existing Milkman contracts. We’ve setup an example TWAP order for 2Ξ split evenly into 8 0.25Ξ parts every hour. They use the same infrastructure as the Milkman order that is currently proposed with an additional validFrom check for each part
Here you can find a tutorial with code example on how to create and examine TWAP orders on CoW Protocol
Here are the individual order executions for each part

That was may understanding as well and the reason I supported Cowswap. You can use Milkman to create, say 100 sales of 100 ether (or even just 10 sales of 1000 ether, with a minimum starting time for each. We are already doing multi calls on the contract, don’t see why we can’t extend it that way.

You might be right. You may be wrong. We don’t know and that’s why I support multiple sales. It’s neutral.


Regarding the recent CowSwap vulnerability: I’ve looked into this myself, as well as reaching out to CowSwap and to Sam Sun. All of us are in agreement that the vulnerability does not affect this swap (or any other swap; it only affected CowSwap’s accumulated fees.)


Dear ENS community

The incident from this morning has probably captured the community attention.
For the sake of full transparency, we’ve posted a detailed post mortem here.

I’ll also provide a short tl;dr

  • CoW Swap’s settlement contract stores only accrued fees, but never keeps user funds
  • The protocol allows solvers to approve arbitrary contracts which helps them to provide users with best routes in real time
  • This also exposes accrued fees (internal protocol funds) to some risks, which are mitigated by requiring solvers to post collateral as a security bond.
  • The damage from today’s incident has already been fully covered by the bond of the responsible solver
  • User funds were never at risk!!!

There was some misleading media coverage - we hope that this helps to clear up what really happened.


EP 3.3 passed and will be executed after a 2-day timelock.