Ever growing UTXO when sending Z transactions

When you send a Z transaction one UTXO will never be spent. That creates an ever increasing UTXO set.

Is there any solution for this?

I am not entirely sure I understand your issue but in terms of dealing with a large number of of UTXOs and/or unspent notes you can merge them to a single UTXO/note using z_mergetoaddress. See here for full details (and you need to manually enable this feature) z_mergetoaddress - Zcash 4.5.1-1 RPC Docs

1 Like

Validating nodes don’t need to store the whole note commitment set/tree. (That is the nearest equivalent to the transparent UTXO set in the shielded part of the protocol. I’m assuming you didn’t mean the transparent UTXO set because you said “Z transactions”.) They do need to store the frontier authentication path of this tree, but that’s logarithmic in size (determined by the depth of the tree).

Validating nodes do need to store the whole nullifier set, and that is ever-increasing in the current protocol. Yes there are solutions to this; the best IMHO is to switch to an account-based protocol like Ethereum or Coda, which can also be made private with similar (or better) security properties to the Sander and Ta-Shma-type protocol used by Zerocash and Zcash. That would solve the issue you refer to, because there would be no more notes as such, only account balances.

Currently nodes store the whole blockchain, so solving nullifier set growth isn’t the most pressing issue in terms of storage use. Also, storage is very cheap.

2 Likes