This project is in its early stages and is not recommended for use at this time.
Please be aware that there may be bugs, errors, and incomplete features that could cause unexpected behavior or loss of data. We do not assume any liability for any issues that may arise from using this project.
We strongly encourage users to exercise caution and only use this project for experimental or educational purposes.
We appreciate your interest in this project and will continue to work on improving it. Thank you for your understanding.
https://github.com/cashubtc/nuts/tree/main
Number | Description | |
---|---|---|
00 | Notation and Models | ✅ |
01 | Mint public keys | ✅ |
02 | Keysets and keyset IDs | ✅ |
03 | Requesting a mint | ✅ |
04 | Mint tokens | |
05 | Melt tokens | |
06 | Split tokens |
big thanks to Tim Bouma @trbouma
This code in this repo is based on prior work and is intended to help in the understandng of blind signatures, which is the 'secret sauce' of Chaumian mints. The basic gist of the protocol is that the mint signs a secret value, which it cannot see. When this secret value is presented later on, the mint can confirm that it actually signed this secret value.
Protocol aside, the hardest thing to understand is how this scheme is actually useful, especially when the mint can't actually see what is being signed.
The original email from 1996 that proposed blind signature using elliptic curve cryptography (verus RST)
The original (and surprisingly readable) paper from David Chaum
https://chaum.com/wp-content/uploads/2022/01/Chaum-blind-signatures.pdf
https://cypherpunks.venona.com/date/1996/03/msg01848.html
An excellent explanatory gist by Adam Gibson with a corresponding video
A more recent post https://gist.github.com/RubenSomsen/be7a4760dd4596d06963d67baf140406
A minimal implementation https://github.com/phyro/minicash
And, finally, Cashu, a Chaumian Ecash wallet and mint with Bitcoin Lightning support
https://github.com/callebtc/cashu https://github.com/cashubtc/nuts
This repo implementation is based on this spec:
https://github.com/callebtc/cashu/blob/main/docs/specs/cashu_client_spec.md
Please run npm run test to see the code in action!