Maelstrom - first on-chain mixer on Tezos

Cheers everybody,

we released the first version of Maelstrom ( last week, which empowers users to:

a) send Tezos to the contract and withdraw any amount of their liking from as many addresses they want to until the withdraws exceed the amount of Tezos, which have been send to the contract initially. During this process, there is no logical link between the sending and any of the withdrawing transaction(s). The user pays a small fee for using this process.

b) users can “lock” Tezos within the contract by sending Tezos to it (we call this provide liquidity). We wrote “lock”, because they can withdraw their Tezos any time the want. While users have Tezos locked in the contract, they are entitled to portions of the fees which the users pay when mixing Tezos.

That’s it for a small overview of the functionality. For a more detailed description, please head to our Medium post: Maelstrom — first on chain mixer DApp for Tezos (XTZ) | by Tezosmixermaelstrom | Feb, 2021 | Medium

We are currently working on the 2nd release, which will provide the same functionality for FA2 token.

Please tell us what you think about our solution. We would love to hear back from you.


This looks promising!

1 Like

Congrats on the release. Interested in hearing your thoughts about how Maelstrom fits in under the context that Sapling has now been introduced in EDO? Do you see them as complementary?

I would imagine mixing, and then entering the shielded pool would be better for privacy than simply withdrawing Tez straight from an exchange and entering a shielded pool … but I’m not sure where privacy leaks throughout the whole process.

Also, are you looking into a way to link Maelstrom into DEX’s (once Dexter is back, and whenever Quipuswap launches). One thing I’ve seen on Ethereum is that people watch specific addresses to inform themselves about market moves. Something like routing a transaction from Maelstrom into a DEX address directly. Then once they’re done swapping, withdraw from the DEX and into Maelstrom, and then into their personal address.

There was also this medium post about MASP: Multi-asset shielded pool project (MASP). How long do you think it would take Malestrom to build up a sufficiently sizable anonymity set for both XTZ and individual tokens?

1 Like

Thanks and sorry for the late reply.

The shielded pool and Maelstrom kinda work the same way. You will always be able to see the addresses of people who send token to a shielded pool/Tezos to Maelstrom and you will always be able to see who withdrawed. The logical link between sender and withdrawer is broken on both approaches.
The shielded pool and Maelstrom differ in two points imho:

  1. You will never have a arbitrage risk on Maelstrom, because you will never have to switch your XTZ to a shielded token.
  2. The incentive for users to use Maelstrom is higher, because they can actually earn XTZ by obscuring the transaction stream of the contract.

It sure would be possible to automate the process via API calls and integrate it into a DEX. If a DEX reaches out to us, we would be glad to help. In our dayjobs we are all “backend guys”, working with private permissioned and public chains and building APIs on top of them.

Regarding the MASP question:
We are currently building a NFT game, which will include token calls to other contracts. Once we reached that point within the project, we will update Maelstrom on the fly as we don’t expect the contract to need changes to many lines of code.
The end result would then be a second contract which can handle all token that are build according to the FA2 standard. Int he UI the user will then be able to toggle switch between XTZ mixing and FA2 mixing.
Regarding when this is about to happen, I’d go with a classic soon™ during the upcoming weeks.

Hope that answered your questions :slight_smile:

This looks very nice. I tested it out with small amounts and everything seems to be working. Do you have any plans for an audit? Volume is non-existent right now. I would love to start using this but without volume, I am still trackable.

1 Like

Perhaps a liquidity incentivization mechanism would help here. Some form of liquidity mining once Quipuswap is live?

For instance, a user provides liquidity to Maelstrom and provides a separate address to receive FA1.2 the protocol governance token rewards.

With TQ’s upcoming HomeBase release, this may be a good way to incentivize liquidity participation while tying the governance token into the HomeBase DAO framework. HomeBase announcement

I honestly think having the mixer is a good primer to using the Sapling pool when its eventually instantiated. First mix, then shield.

Cheers sauceeeeee,

We reached out to a couple of companies for an audit but didn’t even get any replies. If you know someone, feel free to send them to us.

The volume is indeed a problem, but I guess this is a chicken-egg problem. Without volume, no one used the liquidity provision to collect fees and without them, the transactions aren’t obscured.

You can still obscure them by yourself, as you can withdraw your mixed coins in tranches of your liking (if you didn’t notice).

When you mix 10 Tezos, you can withdraw 3mixed XTZ from address A, 3 from addres B, 2 from address C, 2 from address D.

Hope that helps.

We will soon release the version which provides the same functionality to any FA2 token, so maybe we will se an increase in usage of the platform then.

That would limit the service to the available FA1.2 token within the ecosystem of the mixer. But if someone approaches us for a corporation, we will gladly dig into the possibilities.

Our mixer v2 is on its way and will provide the same functionality to FA2 tokens.

Hi, we love your dApp at TezCorps! I’ve reached out to you in Discord to let you know I’ve started an unofficial fan Telegram for Maelstrom Mixer and we’re actively working on getting more folks involved in mixing and providing liquidity for mixing.

We would greatly appreciate a little bit of your time to figure out some things so we can better onboard new users and guide them in the ways of the dApp. The most pressing thing that would help us a lot is if you could fill out the Baking-Bad/TkTZ/BCD dApp listing form so that your app can be easily identified.

I like the fact that you can earn XTZ for providing liquidity to obscure. Awesome tool.