Due to unexpected failures of github's LaTeX parsing (which were not evident until I published this, but have persisted afterwards), and since the mathematical parts are important in this, I have migrated this proposal to a blog post with identical content, but correctly formatted equations.
Please continue to put any comments here.
Very interesting. It's really cool seeing ideas develop in this direction. I was trying to solve a particular problem not that long ago and came up with what I believe to be a similar construction that uses the UTXO set for spam protection. It was with a slightly different blockchain design in mind (still utxo based), so I'll describe the TLDR here as it can be confusing reading the gist there. The idea is that a service
S
shares a public key with everyone and exposes 2 endpoints/claim
and/consume
. A user calls/claim
with a triplet<UTXO, UTXO_sig, blinded_hash_to_curve>
whereUTXO_sig
is a proof of ownership of UTXO andblinded_hash_to_curve
is the step1 of blind DHKE as described here. The service verifies UTXO is in the utxo set and that the signature is valid and issues a blind signature that is returned in the response. Blind signatures serve as credits the user obtained which can be used by calling/consume
with the unblinded signature - to prevent knowing which utxo consumed the credits. In my case, the service would issue storage tokens allowing to store 10kb of data for 3 days or so per credit consumed. It's essentially a Chaumian ecash service which issues tokens based on UTXO proofs. In my case, amounts were not involved in the scheme as an output itself is a proof of onchain fees being paid and was enough for the spam I was trying to solve - a spam attacker would need to pay onchain fees and would thus bring security to the network. This design obviously means each service would need to keep track of spent credits (similar to key images in your scheme). It however introduces potential timing attacks, but at least in theory, if you don't consume immediately after you claim, the anonymity set can be the set of all claimed tokens (zcash like). If amounts need to be taken into account, one could issue more blind signatures or even have pubkeys for different denominations. I had a brief discussion with @RubenSomsen on this and he mentioned a combination of ring-sigs and Chaumian ecash ideas could be possible which I think is also a potentially interesting direction to explore.