I had implemented basically the same primitive (proof of ownership of X funds at N utxos) here and more specifically in this blog post.
You’ll notice I deliberately included a range proof to avoid the obvious footgun of “my balance is exactly X” and then people enumerating 4 utxos that add up to X. I see you’ve also done that with your “at least” clause.
The taproot limitation there is specifically related to attempts to create spontaneous anon sets (i.e. no cooperation) over public keys that are already on the blockchain, plus the fact that this allows pure EC-based ZKP techniques (think: Bulletproofs), specifically building algebraic Merkle trees using the secp/secq 2-cycle (all of that is “Curve Trees”). It can be very cheap when well optimized, including in proving time.
Another closely related project with more a focus on utxo ownership for Lightning gossip applications, as @murch alluded to, was by @halseth here: ZK-gossip for lightning channel announcements
@halseth 's work is more closely aligned with what I gather you’re describing here, since it was also using the more generalized ZKP techniques, which are certainly heavier than Curve Trees, but that’s probably just necessary.
At the very least I guess we can say all these ideas are closely related ![]()
I’d earlier done work on ring-signature based proofs of ownership but that’s much more limited because of the linear scaling. See “RIDDLE”.