Have we considered batch deposit/withdraw?

Currently the Ether gas fee is too high and make TC not convenient to some people. A simply deposit would cost around 0.13 ETH and a withdraw is around 0.06 ETH. In total that’s 0.2 ETH (at today’s price that’s over $800).

The proposal is to automatically or manually break down any amount and only create 1 transaction for deposit.

For example, say I have 120 ETH, in the current setup I need to make 3 deposits: 100, 10, 10. But what if we can combine the 3 deposit into 1 single transaction and store the 3 notes in the note account?

Since there are 3 notes in the note account, I can withdraw separately. Similarly, we can provide another feature to aggregate withdraws. So I can choose any number of unspent notes to withdraw in 1 transaction.

Curious to know what people think.


I agree that fees are not great and that it’s too expensive to use Tornado properly, but what you’re proposing could have various privacy implications. E.g., the most obvious one: if you deposit and withdraw the same custom amount, it’s much easier to de-anonymize you.

Also, one batched 30 ETH deposit doesn’t have the same anonset as 3 separate 10 ETH deposits from different wallets. However, in practice I guess that many people would just make 3 deposits from the same wallet… so no difference.

What would be useful, if somehow possible: partial withdrawals… i.e., you deposit 10 ETH and then you can withdraw 1 ETH at a time (to different wallets). This would increase TX fees, but help anonymity and privacy a lot.

(Could also work the other way around … you deposit 10x 1 ETH but then you withdraw 1x 10 ETH).

totally agree with you that if done incorrectly, it might leak privacy. that’s why I proposed that each note is separate. using the same example, if I want to mix 120 ETH, currently I need about (0.13 + 0.06) * 3 = 0.6 ETH to deposit and withdraw.

As you can see, deposit is more expensive then withdraw. So if we can combine the deposit, even we still withdraw 3 times, it will cut down the total cost to 0.13 + 0.06 * 3 = 0.3 ETH. If we combine any of the two withdraws (e.g. 10 ETH + 10 ETH) in one transaction, that’s 0.13 + 0.06 * 2 = 0.25 ETH.

Something like this might make sense but

  1. Someone has to do the thinking to understand how it impacts anonymity/unlinkability

  2. I fear this would be a very major implementation change

Might be easier to wait for lower fees in sharded PoS :wink: