Oddbean new post about | logout

Notes by calle πŸ‘οΈβš‘πŸ‘οΈ | export

 I still can't believe we're having an ecash btc++ conference in two days. 

Just a year ago we were merely a handful of nutcases. Now we have a whole ecosystem to build on. Incredible. 
 I've been thinking too much about NFC payments lately. It would be insane if we could achive card-to-terminal payments one day but I think challenges with storage and coin selection make the naive approach (store nuts on card, terminal takes them out) infeasible in the short term. However, we can still achieve a lot with phones. 

The naive approach with phones would be to send the nuts directly via NFC form device to device. This is possible in Android through Host Card Emulation (HCE) where one phone can pretend to be an NFC card with data on it (the nuts) and the other phone simply scans it. Unfortunately, Apple will never allow us to use their (your!!) hardware for HCE so we shouldn't depend on it. 

There is an alternative approach though, which use payment requests. Payment requests are a work-in-progress Cashu NUT protocol update. They are generated by a receiver to tell the sender how to send them nuts. They include information transport methods (how to reach the receiver), optional amount and receiver pubkey. For example, a payment request can say "send 100 sats to this HTTP endpoint, or DM this pubkey on nostr". It can also include instructions to lock the tokens to a pubkey. A payment request can be shared as a QR code, which can be scanned by another cashu wallet that then makes the payment (similar UX like Lightning invoices).

We can use payment requests in combination with NFC to make a very good payment UX that works with Android, iPhones, and on the web (webnfc). If we put a payment request onto an NFC card, that card can be scanned by a sender's phone. The sender's phone could then do the coinselection and send the nuts via nostr to the receiver, for example. This would basically be almost instant. A web wallet like cashu.me could even generate payment requests and store them on an NFC card (from the browser) which another cashu.me wallet could scan (also from the browser) to make a payment. A little bit like a cursed PoS system.

Should be further explored! 
 Fantastic writeup of the case by the law firm Bird & Bird who represented COPA in the trial against Craig Wright
https://www.twobirds.com/en/insights/2024/global/a-different-way-to-defraud-the-lessons-from-the-trial-of-bitcoins-origins 
β–² β–Ό
 Ecash wallet can be indistinguishable from lightning wallet and should be built this way

Ecash i... 
 πŸ”₯
nostr:nevent1qqsqla6t6cajgjxgr3g6javv3tfp3ulmzg7kxfsu286qn9thh8sj8gqpzamhxue69uhhyetvv9ujuurjd9kkzmpwdejhgtczyp489kuw70emnmj7ekqga4ksvvw3unw6t3w6murcsugy6vu406aysqcyqqqqqqg9zt7dn 
β–² β–Ό
 The fact that I have to do a layover in Amsterdam flying to Berlin. Makes me want to eat a shotgun  
 Before you eat it, hit me up! 
β–² β–Ό
 If HBO calls you asking to be part of a who's Satoshi documentary, you tell them GFY. 
 You can't surface too early as an investigative journalist 
β–² β–Ό
 #bullishNuts v0.1.2 adds support for the cashuB format when sending ecash. πŸ₯œ 
 I don't do DMs here, please use Matrix or even Telegram for DMs sir 
β–² β–Ό
 I keep trying wallets #eCash capable and npub.cash is definitely a very clean, easy to use one. L... 
 Awesome feedback! nostr:nprofile1qqsdmup6e2z6mcpeue6z6kl08he49hcen5xnrc3tnpvw0mdgtjemh0spz3mhxue69uhhyetvv9ujumn0wd68ytnzvuq36amnwvaz7tmjv4kxz7fwdehhxarj9emkjun9v3hx2apwdfcqzynhwden5te0danxvcmgv95kutnsw43qvqle0h is the amazing dev behind npub.cash 
β–² β–Ό
 Ok ok ok ... I will expend some energy in this platform. Y'all twisted my arm ;) 
 *protocol (nobody owns you here) 
β–² β–Ό
 Primal is leaving everyone behind with UX, catch up guys.
Everyone is leaving primal behind with ... 
 iris.to is up there  
 πŸ“’ sovereign.app and Chamberlain mint release with a nice blog post by nostr:nprofile1qqsxkxud4s60l3sagexlamcquj5y5czwzuh0vwglkc5jj0t0zenpfrqprdmhxue69uhkx6rjd9ehgurfd3kzumn0wd68yvfwvdhk6qgdwaehxw309ahx7uewd3hkcqg5waehxw309aex2mrp0yhxgctdw4eju6t0pz6090.

Let's see some Nostr clans!

nostr:nevent1qqs8wpemmpvu9wyn6fcqsx0g2hjl97kaghcvkj8xcgyxa9mwjxm5ruqppemhxue69uhkummn9ekx7mp0qgsxkxud4s60l3sagexlamcquj5y5czwzuh0vwglkc5jj0t0zenpfrqrqsqqqqqpgt44un 
β–² β–Ό
 the biggest genius of lightning imo is using bitcoin transactions to hold the state of balances i... 
 it's so nice. the htlc is used as an ephemeral gun to your head so that two parties can agree on an update on their commitment transactions. 
β–² β–Ό
 Back when the first β€œwho is Satoshi?” Hype was ripe, I sat down to do my own research. Long s... 
 Has it already aired? 
 nostr:nprofile1qqsqfyvdlsmvj0nakmxq6c8n0c2j9uwrddjd8a95ynzn9479jhlth3gpvemhxue69uhkv6tvw3jhytnwdaehgu3wwa5kuef0dec82c33w94xwcmdd3cxketedsux6ertwecrgues0pk8xdrew33h27pkd4unvvpkw3nkv7pe0p68gat58ycrw6ps0fenwdnvva48w0mzwfhkzerrv9ehg0t5wf6k2qgnwaehxw309ac82unsd3jhqct89ejhxtcpz4mhxue69uhhyetvv9ujuerpd46hxtnfduhsh8njvk maybe something for CDK websockets  
β–² β–Ό
 Procrastination has hit hard this week 
β–² β–Ό
 Clearly written specifications are becoming just as good as code, now that the more advanced LLMs... 
 I should run the NUTs through it to see if it can find any issues with the docs πŸ€™ 
β–² β–Ό
 I'm assuming some mints are cashuA and others are CashuB?  nostr:note1x536rhxfampz5x40xuef0t037rq... 
 Token encoding format is all client-side, mints do not care / don't know about token encoding. 
β–² β–Ό
 Long live the Unix epoch.
But exactly how long? 
nostr:nevent1qqsdahvt2uh0vh4zqrss3p9rnjcenpf0rtt... 
 the int32 people will overflow pretty soon, the uint32 people a little later, uint64 is afaik hundreds of billions of years.... 
 Hard to admit for some people but Unix time is likely going to have a more significant historical impact than the Gregorian calendar 
 Time keeping without centralization is a paradox 
 Correct, neither in the universe. 
 Not really hard. You define one clock as the truth and that's it, we've been doing it for a long time and it works great. 
 Let us pay in ecash. Paywall receives ecash, burns it and receives on LN. Just two simple API calls (see NUT-05) or you use cashu-ts and it's almost trivial :) 
 It's could be as straightforward as "paste token here"  in the beginning. Eventually (I hope soon), we will have NWC for ecash operations and ecash payment requests so that it's more convenient to pay ( nostr:nprofile1qqsdmup6e2z6mcpeue6z6kl08he49hcen5xnrc3tnpvw0mdgtjemh0spz3mhxue69uhhyetvv9ujumn0wd68ytnzvuq36amnwvaz7tmjv4kxz7fwdehhxarj9emkjun9v3hx2apwdfcqzynhwden5te0danxvcmgv95kutnsw43qvqle0h is the man here). 
 An nwc extension is trivial, let's get the harder things done first :) 
 When we have working payment requests, we can use that in NWC, we don't need to reinvent much  
 Once cashu.me can do payReq, we can just throw one at it via NWC. It would be super smooth. 
 Oh no, I'm getting too bullish again 
 cashu.me only does NWC for Lightning so far. NWC for Cashu will blow people's minds because it's going to be too fast and smooth  
 github.com/cashubtc/nutshell πŸ€™ 
β–² β–Ό
 Any nostr user, regardless of what apps you use, can setup automatic cross posting to Twitter / X... 
β–² β–Ό
 if i have only1 relay, how do I see posts that aren't on it? 
 outbox model, I connect to your relay to get your posts. 
β–² β–Ό
 It is very concerning how hard it is for people to get travel visa's to come to  nostr:npub17yqgp... 
 Lots of good computer people I know don't travel to the US (or even transfer via US) because of safety issues. It's not worth the risk. 
 πŸ₯œπŸΏοΈ

nostr:nevent1qqs0m3y3ze3r3e2uekv6a6m6wq8wdr52gtq2842raexn37ftzrauqlcpr4mhxue69uhkummnw3ezucnfw33k76twv4ezuum0vd5kzmp0qgsqfjg4mth7uwp307nng3z2em3ep2pxnljczzezg8j7dhf58ha7ejg242vsp 
 supplementing selenium with 2 brazil nuts a day 
 bolt12 offers πŸ”₯
nostr:nevent1qqszwj7wqzh7hhsmkqm50swgd7kjzsfzeg7p4lvk7w2qhnzyu074pcqpz4mhxue69uhkummnw3ezummcw3ezuer9wchsygqyjxxlcdkf8e7mdnqdvrehu9fz78pkkexn7j6zf3fj6lzetl4mc5psgqqqqqqsh2jhzc 
 I'm not aware of what lightning pre-pay is but if you mean "you pay upfront" it's that with pre-locking, you don't pay yet. If you don't end up paying, you wait for the timelock to expire and redeem it back yourself.

Here you go: https://github.com/cashubtc/nuts/blob/main/11.md 
β–² β–Ό
  nostr:npub12rv5lskctqxxs2c8rf2zlzc7xx3qpvzs3w4etgemauy9thegr43sf485vg is there a ecash API imple... 
 There are a few apps that use it already, it's pretty simple in design: put the NUT in an X-Cashu header, make the middleware read and receive it, and let the request through. I'm not aware of a comprehensive middleware that you can just plug and play but there are many libraries available depending on what you're building.

check this out: https://proxnut.com/ 
 I should give it another try, especially the desktop client looks great 
β–² β–Ό
 My zaps constantly fail using NWC with Minibits or cashu.me both using Minibits mint. How can I f... 
 outputs have already been signed! 
β–² β–Ό
 Question for nostr:npub12rv5lskctqxxs2c8rf2zlzc7xx3qpvzs3w4etgemauy9thegr43sf485vg and others who... 
 That's very interesting, it would indeed be very useful for mints not having to reveal their UTXOs for a proof of reserves. Thanks for noting that.

I haven't been able to look at your protocol yet so I have a rather basic bunch of questions that come to mind:

- The ~55 Mb keyset file you load seems to have information up to a certain block height. Is this file generic for the entire chain or custom to the prover? 
- The processing of the file takes quite some time and you mention this can be done once and proofs can be checked faster after that. Does the client need to do the processing or could someone else do it for them? 
- Does it require processing custom to the prover or can it be used to prove anyone's claim?
- Is there a window for cheating when the file is for a lower block height than the current one? Since I don't know the UTXOs, is there a way to make sure the coins haven't been moved since the proof was made?
- The range was from 100k to a power of two, you say it's just the way you set it up. Can the range be arbitrarily precise?

 
 @keychat has pioneered one of my favorite use cases of Cashu today, which is to pay for access to a a nostr relay with ecash. 1 event = 1 sat. 

They achieve this without accounts or registration. Your balance is not tied to your identity. You can post from any pubkey. If you want your real sats back on Lightning, you simply burn the ecash with the mint. The next step would be to run their own mint for their relay. 
 Cashu question: What’s the difference between the β€œlegacy” format (cashuA…) and the β€œne... 
 nostr:nprofile1qqsvwct7qgjz7kznled4z02pruvmgjkn7rdftg5dxw5m06f87f2a6tgpr3mhxue69uhkummnw3ezumt4w35ku7thv9kxcet59e3k7mgpp4mhxue69uhkummn9ekx7mqpz3mhxue69uhhyetvv9ujuerpd46hxtnfdufyudzh can upgrade cashu-ts and it will accept the new cashuB format as well :) 
β–² β–Ό
 Removing the last byte of the p2pk seems to be a bug caused by the tricky splice(start, end) fn, ... 
 nostr uses x-only keys (32 bytes) which don't have the first '02' byte, wheras cashu uses compressed pubkeys (33 bytes). I doubt that `.splice(2, -1)` removes the last byte. 
 code is a way to materialize your thoughts