Persons A, B and C put x€, y€ and z€ in a pot, respectively. Suppose that anyone can make a withdrawal from the pot as long as they prove they have such a right and that the y€ that B deposited is addressed to me. Is there a way for me to prove cryptographically that I am entitled to that amount without revealing that its origin was B?

  • $\begingroup$ How / by who are you entitled to get the money? I see a few problems with this, even simple practical ones: if B just put 251.93 in the pot and you take the same amount then it would be rather obvious to an observer what would be going on. $\endgroup$ – Maarten Bodewes May 26 '19 at 20:04
  • 3
    $\begingroup$ Not sure I understand the question, but perhaps you should see how Zcash works. $\endgroup$ – forest May 27 '19 at 0:43
  • $\begingroup$ @Fiono Didn't you mean to say, "...and that the x€ that A deposited..." instead of "...and that the x€ that B deposited..."? $\endgroup$ – Patriot May 27 '19 at 2:08

How about the following, not practical, but proof of viability with lot's of usage of Secure-Multi-Party-Computation) :

A,B,C generate using secure multi-party-computation: a joint private/public key, none of them have the private key individually only together. Also a simple symmetric key shared between them (each with one shard).

The initial balance sheet is encrypted with the shared symmetrical key.

When someone wants to give money to someone, they sign a statement saying so with their own personal private key, and then encrypt the signed transfer order with the shared public key. When this encrypted transfer order is presented, together they may apply secure multi party computation, to verify it, verify balance, approve/reject the order and produce new encrypted balance(Possibly also provide ZKP of correctness of the process).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.