Nutstash newsletter: #1 🚀
I decided to write a short newsletter, to keep track of the progress of Nutstash and show the Cashu and Bitcoin community what I'm working on. #BuildInPublic . It's my first time trying this, so I appreciate your feedback! Thanks!
Cashu animated QR Codes
Ecash is an amazing technology for transfering value without leaving loads of data traces. Almost like physical cash! Ecash is a bearer asset, which means it can easily be transfered peer-to-peer through any means imaginable. You could use your favorite messenger or email, or even print it and send it per post!
cashuAeyJ0b2tlbiI6W3sicHJvb2ZzIjpbeyJpZCI6IjBOSTNUVUFzMVNmeSIsImFtb3VudCI6MTYsInNlY3JldCI6InRvd1NqS1NwR1ZTelltN3hIZzcwbXlnSklnRUdnOGY0ZUhTS1lSNzV0aGs9IiwiQyI6IjAyNWVmZWZhNGZhMmNlNzJmYjdlNTMwYjFlZDE3ZDJmMmYzYjgwNjEyZDhmOGQ3MjQ4MDcxYWQxYjgwYmM3NDk3NyJ9XSwibWludCI6Imh0dHBzOi8vbGVnZW5kLmxuYml0cy5jb20vY2FzaHUvYXBpL3YxLzRncjlYY216M1hFa1VOd2lCaVFHb0MifV19
This string of data is litterally money. You have to be quick tho! try to redeem it:
A problem with these methods though, is that they leave additional data traces. The best way to transfer ecash is "air-gapped", without relying on any permanent data traces. A commonly used technology for acheiving this are QR codes:
This is also cash!
Now the difference is, I can easily show this QR code to someone near me and they can scan it with their camera, and we don't have to rely on networking and sending/storing the data on any third party server.
there is a problem though...
While scanning the QR code above was easy, I cheated a little. The token inside the QR code has a specific amount of 32 sats
. To preserve privacy inside a cashu system, we cannot create tokens of arbitrary amounts. The goal in cashu is to break the link of creation and destruction cycle of a token. You can imagine, if we create a token of value 23421 sats
, it is very easy to distinguish from other tokens, and thus becomes easy to link. That is why we need tokens of uniform sizes. In cashu, we chose numbers of 'powers of two', since you can easily create any number with just "one of each". For example, if we want to create a 31 sat token, that would mean we need to create a 16 sat, 8 sat, 4 sat, 2 sat and 1 sat token
. As you might notice, with the amount of tokens we need, the size of our data grows. It quickly becomes impossible to pack this data into a single QR code.
Animated QRs to the rescue
So what we can do to solve this problem, is we just split the data up into chunks, and create a bunch of QRs from that data that the wallet continuously scans!
This is also money, but you'll need to use this experimental wallet to scan the QR code:
https://cashu-wallet-git-send-receive-gandlaf21.vercel.app/
The proof of concept for this was pretty easy to implement, but as you can see, this animated QR code is not scannable by the normal phone camera. It needs a protocol for creating reassembling the chunks. We want cashu wallets to interoperate with eachother, so we need to add this to the cashu protocol, but the discussion on the specific implementation is still ongoing.
Plans 📆
- Next week will be reserved for nutstash design and UX
Progress ✅
-
Implement proof of concept
-
draft for protocol
Problems ✋
- Trade-off between existing protocols that have unneeded functionality but good efficiency and specific cashu protocols that are more simple but might not be as interoperable with other apps (not cashu)