Is there a possibility of zero-knowledge proof of stake without disclosing your balance?
It is possible to generate a proof of balance (reserve proof), which states you own at least the claimed amount.
See rpc doc about it.
So theoretically, it is possible.
I have a few of thoughts on this:
- The most straightforward way I can think of, in any use case, would be to use a combination of time-locked outputs and a type of reserve proof. This way, the user simultaneously publicly demonstrates the ownership of funds and not being able to spend said funds for a certain duration. One would probably wield their "power" by signing with the private key of the staked transaction.
- Perhaps there could be a form of decentralized governance, where voting is allowed if one stakes their coins for the duration of a particular period of time. Again, their vote would be verified by checking they signed with the appropriate private key. [I haven't explored the math, but...] Perhaps there could also be a key image generated at this level to ensure one vote per private key without disclosing the signer.
- Using staking as a means of entitling a wallet/address to passive income seems tricky, but may be possible, though maybe not with the same characteristics of a typical interest-bearing account, and not with Monero as it currently is. There would need to be some fundamental change to current consensus rules (such as breaking out a staking reward from the mining reward) before it'd be worth devising such a scheme.