The Cashu Protocol
Cashu is an ecash protocol built for Bitcoin. It is an open protocol which means that everyone can write their own software to interact with other Cashu apps. Applications that follow the specifications will be compatible with the rest of the ecosystem.
NUTs
Cashu NUTs (Notation, Usage, and Terminology) specify the Cashu protocol and can be found here.
BDHKE
The Blind Diffie-Hellmann Key Exchange (BDHKE) is the basic cryptographic scheme used in the Cashu protocol to sign and redeem ecash tokens. There are three actors in this model:
- Sending user: Alice
- Receiving user: Carol
- Mint: Bob
Bob (mint)
- kprivate key of mint (one for each amount)
- Kpublic key of mint
- Qpromise (blinded signature)
Alice (user)
- xrandom string (secret message), corresponds to point- Yon curve
- rprivate key (blinding factor)
- Tblinded message
- Zproof (unblinded signature)
Blind Diffie-Hellmann key exchange (BDHKE)
- Mint Bobpublishes public keyK = kG
- Alicepicks secret- xand computes- Y = hash_to_curve(x)
- Alicesends to- Bob:- B_ = Y + rGwith- rbeing a random blindind factor (blinding)
- Bobsends back to- Aliceblinded key:- C_ = kB_(these two steps are the DH key exchange) (signing)
- Alicecan calculate the unblinded key as- C_ - rK = kY + krG - krG = kY = C(unblinding)
- Alice can take the pair (x, C)as a token and can send it toCarol.
- Carolcan send- (x, C)to- Bobwho then checks that- k*hash_to_curve(x) == C(verification), and if so treats it as a valid spend of a token, adding- xto the list of spent secrets.
