One day bitcoin will not be needed anymore.

When man has returned to his rightful resting place in the abode that is his only home in our world, when the truth of things have returned to themselves and words like duty, dignity, honor have meaning once again; and only then will he no longer have the need for Bitcoin.

Reserved and awaiting anytime beings will need to return to truth, Bitcoin will offer itself as The Timechain—the first direct record of the digitization of the social contract actualized. Bitcoin will be reflected upon as the Twelve Tablets, Magna Carta, and The Declaration of Man, and what those *ideas* mean in the concourse of human history.

Bitcoin offers an answer to the miseries of Fiat and the perniciousness of statism and all of its horrible appendages of death, surveillance, and fear. It is the call and command to decide by the individual alone to do away with the old world of flesh and steel to abscond into the space of the digital where the state can no longer find its footing from which it can exert its physical and actual power from. Here he may transform into the anon that is the partisan of this new global digital civil war.

It is from this space here that man may answer the secret call that is only for his private ears: the whisper of knowledge that a better world is possible, and it is here that it shale be created. Not just for some people; but all people. Not just for our time, but for all of time. Not just for some wealth but all wealth. Here he will begin his long sojourn into the darkest of nights that is nihilism of modernity and the nightmare of fiat money.

But with the small light that is Bitcoin growing with every 10 minutes, it acts as The North Star shining brighter as the world gets darker. Even in the thick of night where we may not see each other; we may all coordinated to move toward that star to find our way out of the night, and toward the dawn that is man’s triumphant return truth having meaning in the world once again.

It is very long from now these things will be widely known, and that the truth of such things will be able to speak for themselves once again. It will only be then, in this future that now seems utterly impossible today, where truth has returned to itself and no longer will man be consigned to the fiat world of lies and deception that bitcoin will no longer be needed.

While always free and open to the use for all beings; Bitcoin will no longer have the purpose it will have today. Man will be able to speak for himself once again and be able to actualize the value of what is said through his being itself. It will only be then, in the world that freely offers man back to himself through language that we will no longer have the need for Bitcoin as we do today.


My fireside chat with nostr:npub1hk0tv47ztd8kekngsuwwycje68umccjzqjr7xgjfqkm8ffcs53dqvv20pf  at Pacific Bitcoin is, quite tragically, extremely relevant today as the drums of war beat loudly on every media outlet.

https://youtu.be/MbznlOe9p_0?si=D8eNY-AWY9_C8kLT


I think a fair amount about why I am doing this (as in working in Bitcoin and educating around it as I see it), and why I don’t just throw it to the win and live my own happy little life.

The truth is that I think if we are not ‘all in’ we may very well lose. And not just bitcoin, but the wider vision of the Cypherpunks, and the possibility of a truly free internet and what that promise would mean to humanity.

I simply cannot walk away. I must do this because I feel morally and ethically obliged to fight fiat on every front available so that the lies may finally be seen by all for what they are: lies.

Damn lies that have pulled the whole of Earth into its nihilism and despair; damning language itself to its collapse and presenting the impossible idea of freedom from the State and its infinite tyranny.

We must win—or all of posterity will be enslaved forever.


Web based fedimint wallet, that's sweat!

https://webimint.sirion.io/


Got an rss link?


nostr:npub1pww7030g95nv9ptfpgfu69jpfxj6pm33xxueztsupwekce45wx4sm6en60 made these two awesome tutorials on how to use coinjoin in BTCPay.
https://www.youtube.com/watch?v=zGVCrwMKKn0
https://www.youtube.com/watch?v=g5nFckPfPcA

But the more the better!


Amidst what's going on lately, I thought it might be a good time to remind everyone that nostr:npub155m2k8ml8sqn8w4dhh689vdv0t2twa8dgvkpnzfggxf4wfughjsq2cdcvg supports both PayJoin and CoinJoin.

So if you're running a BTCPay instance, you can:

1. Withdraw Bitcoin from exchanges with PayJoin, obscuring the amount to outside observers.
2. Auto-initiate CoinJoin when certain conditions are met (desired Bitcoin amount and fee market).

Bonus: You can easily run your own coordinator, mixing your Bitcoin without using mainstream services and coordinators.

This could be a great asset for local communities with regular Bitcoin flows (e.g., DCA of members) to boost privacy collectively.

The best part? It takes about 20 minutes to set up. I'm considering creating a video guide - would you watch it if I did?

https://m.primal.net/HPxP.png

https://m.primal.net/HPxQ.png

https://m.primal.net/HPxR.png


I love how cutting edge computer science research papers now have "nostr" in the title.

nostr:nevent1qqs2v8qk405yq52zsj6dhg4emkf3qgkth5hrrkwhqzza8p2ejrsxp6cpz3mhxue69uhhyetvv9ujuerpd46hxtnfdupzpw788jhyz5pdmtt6gyf9smw273pzsyxkp2jt2lrr0nx35artq7zyqvzqqqqqqy63lv8k


Merkelize all the things.
This is such an obvious improvement, in hindsight.


Only 72 hours into the release of GPTs by OpenAi we are already starting to see open source alternatives.
This is just the beginning.

https://github.com/langchain-ai/opengpts


Looking forward to that one.


I heard you like 'em trees.
But how about the scionic merkel dag trees?

https://www.hornetstorage.com/


I've implemented a BitStream proof of concept by Robin Linus in Cashu for atomic swaps between files and Lightning payments.

Atomicity is achieved via a "Nutbond" Ecash contract which can be challenged if the downloaded file doesn't decrypt right.

An explainer and demo video is linked below.

How it works:
- Clients requests download
- Server sends encrypted file, Lightning invoice & Nutbond
- Client verifies bond and pays LN invoice
- Client decrypts file with LN preimage
- If decrypt fails, client challenges Nutbond & gets refund

Some notable differences to the original proposal:
- Nutbonds are issued for each user, not per file
- Bond doesn't burn but acts as a refund to user
- No Merkle trees yet. Next logical step. Vibes well with BitTorrent.
- Bond is Ecash. Payment is on LN, could also be Ecash.

This took me a few hours to implement showing how easy it is to experiment with new contracting primitives in Cashu.

Bitcoiners are coming up with beautiful solutions for practical problems. Special thanks to Robin for sharing his cool ideas with us. Love the energy!

🎥👇 Demo (10 min):

https://mega.nz/file/rVsF1RQS#Q1ycXiC3fcsRbIYUVBxMFDQZAqKbW5PHWZdhqkj0P8A

Original post: https://twitter.com/robin_linus/status/1723343871067804060

https://image.nostr.build/8a31466566bb0ab73c60d246df35c33e1416b428878cde169e5f3673a54a9bfe.jpg


That's awesome, I'm glad to hear it!


Logic might not be popular, but it is indisputably true.

https://mises.org/library/against-intellectual-property-0


Why wouldn't it be possible for the same identity?

It's similar to the event withholding attack you mentioned, there is no "global consensus" on nostr, how would you know that I published my second action chain on some other relay you don't connect to?


Regarding 2, what prevents you from building two action changes simultaneously?


Here’s the paper https://robinlinus.com/bitstream.pdf

https://nostrcheck.me/media/public/ec6e426cf36633c979be28198b14d9499489b905cc12b58dfdf901a488bd2a9f.webp
nostr:note1e5aejwj2ylr854qjq6wv34hhmg3k58fd5eydvthsf5swshwddxdq6c67gd


More and more mainstream coverage of the benefits of mining and other heavy compute for grid management.

https://www.youtube.com/watch?v=Udf8ZJFvPeQ


Here my talk at Bitcoin Amsterdam about running a FOSS company.

It's definitely possible to be profitable, in fact, that should be your number one priority.

https://www.youtube.com/watch?v=PmuJ2Ot5Lhk


Another fascinating cypherpunk as fuck must read:

True Names, by Vernor Vinge

https://i.pinimg.com/originals/f9/c4/eb/f9c4eb08265f8cc5e8e54467b0a6bbef.jpg


If you want some dystopian (soon to be non) fiction, then read "This Perfect Day" by Ira Levin.

http://ecx.images-amazon.com/images/I/61iq0GmCidL._SL500_.jpg


When you're at the end of your nostr time line.

https://image.nostr.build/4d03c529f991ca641b62cb664c3eb15ae5489da423ac0d756d20efcd921fef3e.jpg


swearing = snake detection


Been waiting on this one for weeks!


Up on @fountain_app

Once Bitten with Izzy.

@HodlersWay

https://fountain.fm/episode/SJpyaObVsIbc7umIf4Jz


15 seasons, that's crazy!


Subscribe to the Bitcoin Takeover podcast, season 15 is coming! 🔥

Here are the 2nd most popular episodes on Spotify, by year 🥈

2019: S3 E10 with nostr:npub1cf3zeytdnwgwzz5pk2ax0vvmmlzad03xcft4d50ejrfhsh8pxcdsefx7gk (417 downloads)

2020: S4 E7 with nostr:npub1ej493cmun8y9h3082spg5uvt63jgtewneve526g7e2urca2afrxqm3ndrm (834 downloads)

2021: S8 special with nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt (2066 downloads)

2022: S10 special with Chris Derose (2133 downloads)

2023 (so far): S12 E17 with nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt (2494 downloads)

Thank you for listening and supporting the show over the years! https://image.nostr.build/b3d349539d2cd591a1daa2805f9dcfc3cbe6feebb5fed5c89592f125895bca99.png


To communicate, we need to connect. Mouth to ear, face to face, but also over longer distances.

For our parallel monetary system in the dark forest, we need some form of connectivity as well. That does not necessarily mean internet connection though. Local Cashu mints, or local lightning channels. The peer to peer nature of lightning is underappreciated. We do not need internet connectivity or uninterrupted connection to the whole bitcoin p2p network to be able to make local transactions.

Peer to peer messaging, using encryption and signatures is one of the better researched areas of cryptoanarchy, that's what cypherpunks started with.

Basic infrastructure can be built on email, with even simple apps and encrypted groups. DeltaChat is a good example. For high latency and resilience, mesh networks are even better. Reticulum is media independent (LoRA, tcp/ip, paper qr codes), encrypted by default and dynamic mesh routed protocol suite. For longer distances, take messages few times a day using a long range drone. Old school fidonet style mashed up with high tech UAV.

Btcpayserver, bluewallet or Zeus with local nodes, Cashu and others add payment infrastructure on top of mesh networks. For lightning, you can receive bitcoin state using Blockstream satellite receiver. Determine current prices using on chain data with UTXO.live.

Starlink or other ISPs are nice, but what if internet connection is down? Let's be conscious, play with the tech and know what we'll do. Direct experience is even better. We can do this.

https://nostrcheck.me/media/public/233a31f7322b3b26f0745d338faae3f2bcfde6acbea85f8ca7ad14060a9be455.webp


Entering a forest, most people don't dare to mentally comprehend the dark part of the forest. Its inhabitants are always friendly, exchange ideas and trade, but not every visitor is allowed inside the dark part of the forest.

When people are infected with the statist virus, they might not understand or know how to interact with the booming life of the dark forest. The old ways have to be left outside. People who are free will always find a way.

They are welcome and we gladly interact with them. Together we grow, create and enjoy what liberated life has to offer.

In the dark forest, we are together, free of the old ways.
https://nostrcheck.me/media/public/fab43b5aa282ccd08c3a62b1c64b9c1600d616088b5d1bc789c3ebc35898b530.webp


Does musig / frost work for encryption?


Vexl.it is a beautifully designed peer to peer market place.
Cypherpunk as fuck.


How to reply to a PoS shitcoiner:

PoS has been around for thousands of years, it's nothing new. Government money is proof of stake, as are company shares.

Egyptians, Romans, and Chinese were using this 2000+ years ago. Italian city states perfected it 800 years ago. Stake based systems are not new.

Using stake to solve the Byzantine General's Problem is also not new. Cypherpunks have been working on this shit since the late 80s.

The cypherpunks on the mailing list (that Satoshi sent the white paper to for peer review) are literally the people who created the *entire body cryptographic of work* used by proof of stake coins today (stake based byzantine fault tolerance).  They are well aware of the fundamental limitations of stake based BFT because they are ones who came up with it in the first place...

If Bitcoin was proof of stake *you would never have heared of it* because it wouldn't have survived 5 minutes of peer review by any real cryptographers.

Time-based difficulty-adjusted PoW *is* the breakthrough and is the *only* reason you and anyone has ever heard of a "blockchain".

The failure modes of stake based BFT are well known, and it fails *every time* for a number of reasons, but if you are betting on a shitcoin to increase in value then the failure mode will probably involve the fact that stakeholders have an incentive to increase the supply to benefit from the cantillion effect.

Mathematical fact: you cannot deploy external capital to defend a system that is secured by internal history (stake). This is why stake based BFT does *not* secure against attack by a state or central bank, which means *anything* secured by PoS MUST comply with governments.

Bitcoin's value proposition is that Bitcoin let's you do things that bankers and governments *don't want you to do*. If bankers and governmensts can nuke your shitcoin, then you do what they say or they nuke it.

What's the value proposition beyond CBDCs if your shitcoin ultimately has to comply with governments and bankers?

You cannot out-stake a bad actor who has aquired sufficient stake to fuck with the system, your only option is to fork them out. Then it becomes a competition between charismatic personalities convincing the market to follow their authority (their fork) instead of the other guy.

So how do you solve the problem of removing a bad actor without requiring some form of authority? Read the Bitcoin white paper. Satoshi knew exactly how stake based systems fail, that's *exactly* why he used proof of work instead.


Can't wait to read it.


On android you can activate both grey scale and night light (red tint) at the same time.


black


Turning your phone to grey scale is a great hack.


How do you get your coins? I talk about peer-to-peer crypto acquisition in the latest episode of the OptionPlus podcast - how it was intended! From historical veksláks in totalitarian regimes to modern OTC dealers, I offer insights into private and secure crypto acquisition methods inspired by among others - pot dealers. We do not have to fear regulations, markets always provide what is in high demand. Discover hedging techniques that otc traders use and the importance of money as a memory of good deeds of society. 🎧

https://hackyourself.io/2023/11/08/how-peer-to-peer-over-the-counter-dealers-return-crypto-to-its-cypherpunk-roots/


Bitcoin Optech newsletter #276 is here:

- announces an upcoming change to the Bitcoin-Dev mailing list
- briefly summarizes a proposal to allow aggregating multiple HTLCs together
- recaps the "Fee Estimator updates from Validation Interface/CScheduler thread" PR Review Meeting
- Bitcoin Core 26.0rc2 release candidate
- Optech Newsletter #276 Recap on Twitter Spaces
https://bitcoinops.org/en/newsletters/2023/11/08/

Administrators for the Bitcoin-Dev mailing list announced that the organization hosting the list plans to cease hosting any mailing lists after the end of the year.

The administrators sought feedback from the community about options...
https://bitcoinops.org/en/newsletters/2023/11/08/#mailing-list-hosting

Johan Torås Halseth posted to the Lightning-Dev mailing list a suggestion for using a covenant to aggregate multiple HTLCs into a single output that could be spent all at once if a party knew all the preimages...
https://bitcoinops.org/en/newsletters/2023/11/08/#htlc-aggregation-with-covenants

'Fee Estimator updates from Validation Interface/CScheduler thread' is a PR by Abubakar Sadiq Ismail (ismaelsadeeq) that modifies the way the transaction fee estimator data is updated. It moves fee estimator updates from occurring synchronously during mempool updates to instead occur asynchronously...
https://bitcoinops.org/en/newsletters/2023/11/08/#bitcoin-core-pr-review-club

Bitcoin Core 26.0rc2 is a release candidate for the next major version of the predominant full node implementation.

There’s a scheduled meeting of the Bitcoin Core PR Review Club dedicated to testing on 15 November 2023.
https://bitcoincore.reviews/v26-rc-testing

Bitcoin Optech will host an audio recap discussion of this newsletter with special guests Johan Torås Halseth and Abubakar Ismail on Twitter Spaces Thursday at 15:00 UTC. Join us to discuss or ask questions!
https://twitter.com/i/spaces/1gqxvQwkqOgJB


A short interview about bitcoin privacy from Bitcoin Amsterdam:
https://cryptopotato.com/bitcoin-privacy-reimagined-wasabi-wallet-pushes-for-a-decentralized-future-interview-with-ceo-max-hillebrand/


Under the premise 'FORGE BLOCKS NOT BULLETS', after dozens of hours on block 794890, I have completed my drawing 'Bitcoin - Peacemaker'. A drawing with a lot of meaning and an appeal:
https://nostr.build/i/0caed33c782f5de46860df02f99a271de6e6d546767684b1296798a83bfeb1bb.jpg


nostr:npub1nstrcu63lzpjkz94djajuz2evrgu2psd66cwgc0gz0c0qazezx0q9urg5l conference in Tōkyō was magic 🇯🇵⚡

This is what happens when people from all around the world meet to make social media a better place:

https://v.nostr.build/X65L.mp4


https://m.primal.net/HPXD.png

🚀 Breaking News: Geyser migrates to Nostr! 🌌

Every Geyser project now gets a unique Nostr identity (NPUB) - a big leap for the Open Creator Economy!

🧵

🆕 Your Geyser project lives on Nostr, regardless of whether you're logging in via Nostr or Twitter.  This means broader visibility and more engagement for your content on Nostr platforms!
This has several implications:

📣 Cross-Platform Freedom: Tired of content silos? Us too. Now creators can share content freely across platforms, reaching wider audiences.
Stay tuned for more exciting content features!

🤝 Stronger Connections:
Leveraging Nostr's open social graph, Geyser will enhance:
- Cross-platform follows
- Home page curation based on your Nostr network
- Seamless activity sync between Geyser and Nostr

🛡 Trust & Transparency:
Nostr's open graph helps mitigate scams and impersonation.
Plus, a creator's reputation on Geyser now carries over across Nostr – fostering a more trustworthy environment for the donation economy.

🔓 Data Ownership:
With the ability to export your NSEC using a Private Key Kit, creators maintain control and mobility across Nostr clients, reinforcing our commitment to creator autonomy and censorship resistance. More on this soon.

🌅 Just the Beginning:
Aligning with Nostr opens doors to exciting features: Nostr Posts, replies, polls, hidden posts... Imagine Patreon, but with content flowing seamlessly across the Nostrverse.

🔄 Building Geyser around Openness:
- Embracing open-source philosophy
- Building on robust technical architecture
- Enhancing product potential for creators
We're thrilled about what this means for the broader creator community!

👏 The Superteam
Thanks to the team that made this happen: @npub1jknfxfjynyc6mk3juls0vf6mas8rs747ae9m26e7jn6x56kyqt3quttcvj, @npub13v9zh6hka0heyh5w0ru0ptdyrauf3wx6w25fwxufnz9l0ptax60sg63rka, nostr:npub107jk7htfv243u0x5ynn43scq9wrxtaasmrwwa8lfu2ydwag6cx2quqncxg, @npub1epy7emnm3c6syjwwuwc4hwj6rhrnuux750w6lgrc05fgmdkqfrlq47w65v, @npub1nqe7qkvauxkyay57yxdappqusuzhz3a2gdqvlpk4alygaetege9sskzqnv

💼 Join Our Journey:
Want to start building on one of the best creator tools in the lightning/Nostr space?
We're hiring and designers! DM for details and be part of the change!


Well, that escalated quickly! Transaction fees are up, but our coinjoin of the week demonstrates how Wasabi adapts to avoid costly dust. No 5000 sat and 6561 sat output denominations were chosen, concentrating value into spendable amounts - https://mempool.space/tx/d79435d0672e3b8dee91979e804e1273d8a69802371f772f64037e0ccbe43af5


Amazing progress with btcpay bank, keep building nostr:npub14j7wc366rf8efqvnnm8m68pazy04kkj8fgu6uqumh3eqlhfst0kqrngtpf! 💚


Nostrasia was amazing.
I'm simply baffled by the INSANE progress of freedom tech in the last couple years.
Keep building, peers, we're winning hard!


Rockstarception at #BTCPayDay

nostr:npub1j8y6tcdfw3q3f3h794s6un0gyc5742s0k5h5s2yqj0r70cpklqeqjavrvg
https://image.nostr.build/b98d6020f86783f33defbd344792601769f42978e33e8fb38a49e8846f1503ef.jpg


read the fucking manual.

https://image.nostr.build/c9d4234f568b23f0371f4a6ad9dcecffcefe749094ecbb1aaa143c2047a2c98f.jpg


Praxeologists get triggered.


Follow the nostrich.
https://image.nostr.build/367cbd44ccac8ff4cbc022f043452840a8ba71a8a9ec5c6011c0a2e946ace741.jpg


You're sitting on the most precious resource of cyberspace.

Protect it well.

#Bitcoin
 - nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt

#BitcoinTwitter
https://bitcointwitter.web.app/images/255.png


Use the payincoinjoin rpc command, and add a new address each month.


🎉Announcing the first ever BTCPay Day in Tokyo sponsored by DG Lab! 🎉

The event will be held on Nov 4th, the day after #Nostrasia in DG Lab Shibuya offices.

Our contributors will showcase what we have developed this year, with special focus on POS and NFC cards.

https://m.primal.net/HNOE.png

To register for the event and get the tickets, please visit:

https://day.btcpayserver.org

Fill out the registration form and join us!

We're particularly thrilled to welcome the attendees of https://nostr.world Nostrasia conference (Nov 1-3)

Add an extra day to your itinerary - it's a golden opportunity to dive deep into the BTCPay Server and connect with the vibrant Japanese Bitcoin community. 🇯🇵👏

In addition to extending our thanks to DG Lab for generously sponsoring BTCPay Day, we want to thank our long term supporters as well:

Spiral
OpenSats
BaillieGifford
HRF
Strike
WalletOfSatoshi
CoinCards
ivpnnet
ElSalvadorVisas
LunaNode

Your continued support ensures our development and the showcasing of FOSS tech! 🚀❤

See you in Tokyo, November 4th! 🗼🇯🇵


Zapplepay added autozaps, recurring bitcoin payments are finally here!

https://www.zapplepay.com/autozap/npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt


NEXT MAJOR FEATURE (8th Gen Exclusive)

Pixel 8 and Pixel 8 Pro are ARMv9 devices supporting hardware memory tagging. Stock OS currently has a very primitive experimental implementation available as a developer option. We're going to be deploying a more advanced implementation for hardened_malloc in production soon.

Hardware memory tagging is going to provide a massive increase to protection against remote exploitation for GrapheneOS users. It's the biggest security feature we'll be shipping since we started in 2014. We want to have it enabled by default in async (fast) mode for the base OS.

We can provide a toggle for choosing between asynchronous (fast) and synchronous (more secure).

Many user installed apps have latent memory corruption bugs so we aren't going to enable it for them initially. We'll provide a toggle for setting the default (disabled, async, sync).

There can be a per-app toggle for overriding the global default alongside the toggles we already provide for using the full 48-bit address space (enabled by default) and hardened malloc (enabled by default, requires 48-bit address space). This will be a security game changer.

ARM memory tagging support provides a limited form of memory safety for both memory unsafe languages (C, C++) and the small subset of unsafe code in memory safe languages (Rust, Java, Kotlin). hardened_malloc was designed to use memory tagging and will be making great use of it.

MTE uses 4 bit tags for each 16 bytes of memory. hardened_malloc will be using memory tagging for all small allocations, which means 128k and below by default. hardened_malloc already places random guards around large allocations and quarantines their address space on free.

The timeline?

Likely under 2 weeks to an experimental release with it disabled by default. Likely longer before we can enable it by default for the base OS in async mode.


Listen to nostr:npub12rv5lskctqxxs2c8rf2zlzc7xx3qpvzs3w4etgemauy9thegr43sf485vg & Lisa Neigut #niftynei talk about free open source software and Bitcoin scaling solutions in this new episode of the Bitcoin Takeover podcast!

Also available on Spotify & Apple Podcasts. Please subscribe!

https://youtu.be/7fpxmJcQkg4?si=e5V863EdH_n5w5d4


Why is nostr purple?


📢 Announcing Highlighter 2.0
Release name: "Sig"

Highlighter has gone through so many changes that it's essentially an entirely new nostr client.

The goal remains the same:

👉 A nostr client for your most valuable information. Your reading. Your notes. Your thoughts. A place to discover thoughtful, timeless content.

I have a lot to say about Highlighter, why I'm building it, what it is and where it's going. how it fits in the mainstream adoption of Nostr, and, to a degree, in the normalization of "keys over passwords", data sovereignty and more.

But these ideas are still rough. Very, very rough and demands a lot of filling in. This is still, very much, for the early adopters.

Let's focus on what's in this important release:

✅ Data-vending-machine support: you can now very easily highlight podcasts and video content in a text-native way.
✅ Patreon support: You can now create RECURRING subscriptions to support your favorite creators and shitposters. I will say a lot more about this and a follow up with a NIP to standardize and help other builders disrupt Patreon and bring creators of all kinds to Nostr easier and more compelling.
✅ Zap-splits: Zapping a highlight creates a split on everybody involved in you seeing that content.
✅ Curation: You can now create curations of articles and earn zap splits for your curation efforts.
✅ NIP-32 Labels: categorize highlights and "margin notes" with any category
✅ Full text support: Find what interests you across any topic in any type of event in nostr.

There's a LOT more to this release that I will be discussing in the next few days.

And a lot more to come.

Stay bullshit, my friend

https://highlighter.com


Wasabi is the most sophisticated Tor client.
No other software creates as many circuits in such a short time.

(if you know of any, please tell me!)


So bullish on Tor!

ARTI is making insane progress.


Thanks for stopping by!


Absolutely!
I've been searching hard for a better alternative, or how to improve the concept, but there simply isn't another way to build a wallet history privately.


Cool, don't hesitate to reach out with more questions. Thanks for giving it a try!


Too much running with you!


https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2023-October/022042.html

[bitcoin-dev] OP_Expire and Coinbase-Like Behavior: Making HTLCs Safer by Letting Transactions Expire Safely

tl;dr: this proposal would fix the recent lightning exploit Antoine found by making disabling the preimage branch of HTLCs once the timeout is reached.

Traditionally we've been dubious about making it possible for transactions to become invalid in the future. But in the post I argue that it is acceptable if we treat them similar to coinbase outputs, preventing outputs that may expire from being spent until they have 100 confirmations.


Still very much 'under development' but:

https://github.com/AdamISZ/pathcoin-poc

Next is to check that python-bitcointx installation with libsecp dependency can work on another machine (can't use release+wheel because taproot).
Apart from that, depencies are very light. But as noted in readme, if you want to test it with OP_CTV you need to be running Inquisition, i believe.


I got a decent stack of testnet sats if that's a help.

Isn't there a large value signet faucet by somewhere? I thought signet is supposed to fix the scarce availability of coins...


Wabisabi differenciates itself by having extremely low cost.

First, the UX is trivial and everything is automated, so there is little educational cost.

Second, the time until your entire wallet is private very short, so there is little time cost.

Third, the blockspace consumed is managed very efficiently, so there is little mining cost.

Fourth, not even the coordinator can steal from you, so there is little rug-pull risk cost.

Wasabi, BTCPay, and Trezor Suite users all participate in the same coinjoin transaction, and other wallets can implement this protocol too.


Yet another amazing article by Gustavo, this time about the many nuances of how Wasabi uses Tor to protect your privacy!

https://blog.wasabiwallet.io/explaining-wasabi-wallets-tor-implementation/


Nice new logo too!


Our embedded node, LSP, and self-custodial lightning addresses are now available for everyone to test.

https://blog.zeusln.com/zeus-v0-8-0-open-beta/


In Sanskrit, "sat" (सत्) refers to eternal, pure, godly. It is used to describe the Absolute Truth.


Found a nostr in Bali, not purple though...

https://image.nostr.build/067dbcd03778e0b1099af29f3c56c13f2facdacd26556e03adfeffe226552e41.jpg


add years to your life,
and life to your years.


Wasabi is built in such a way that the client does not trust the server, and no sensitive personal information ever leaves your laptop.

This means the coordinator (with whom you agree to the T&C) does not know your IP address, name, or which addresses belong to you.

You only trust the coordinator with uptime, meaning that it is expected that some addresses might be rejected from registering. In this case still nobody can steal your bitcoin, and you can spend them wherever you want.


Guess why we needed that cold plunge...


Blockspace in WabiSabi coinjoins are currently available for only 3 sats/vbyte, that's ridiculous, reclaim your privacy now and save yourself the sats when mempool is full again!


Excellent article by Gustavo about the critical importance of blockchain synchronization privacy, and how block filters are the only viable current solution.

https://bitcoinmagazine.com/technical/why-bitcoin-wallets-need-block-filters


How many bitcoiners can fit in this tub ?
nostr:npub1xtscya34g58tk0z605fvr788k263gsu6cy9x0mhnm87echrgufzsevkk5s nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt nostr:npub1h50pnxqw9jg7dhr906fvy4mze2yzawf895jhnc3p7qmljdugm6gsrurqev nostr:npub1spdnfacgsd7lk0nlqkq443tkq4jx9z6c6ksvaquuewmw7d3qltpslcq6j7

https://video.nostr.build/69e9cdfb469c99d576b4c9b4a195ac5b8318f3998c2e119814d4ae71242c3f55.mp4


Plebs together strong.


Right?! They really are!


Bitcoin Core v25.1 is released!

https://github.com/bitcoin/bitcoin/releases/tag/v25.1


Hier ist ein Kamingespräch mit nostr:npub1a3x6efyq88vh5ua2lxknf3rfa2afpy6xk5yl63ht4jqa5c455crsap459q und mir über die Zukunft von Künstlicher Intelligenz, und wie die gleichen Freiheitsprinzipien die Bitcoin so bahnbrechend machen, auch in der KI angewandt werden.

Das Fazit ist, ir müsst aufhören weniger zu sacken, denn die KI Agenten sind 24/7 motiviert so nützlich wie möglich zu sein um so viele sats wie möglich zu stacken.

Die BTC23 Konferenz IN Innsbruck war gigantisch, sei auf jeden Fall dabei nächstes Jahr in Wien!

https://www.youtube.com/watch?v=TVTTYRwiEpE


Bitcoin is the future.
But is visible to all.
You transactions are your business.

Reclaim your privacy.
WasabiWallet.io

https://video.nostr.build/a3dde25168ce01f1da8465bbd280f804d8a615bba2400d46700287d82fec05ba.mp4


More grants. More notes. More other stuff.

https://opensats.org/blog/nostr-grants-october-2023


Presenting Cashu Nutstrike 🥜☄ - USD Chaumian ecash mint running on a Strike Lightning backend.

Ecash is denominated in US-cents. You can mint and melt USD ecash with Bitcoin.

A Cashu ECASH HACKDAY project (apologies for twitter link, failed to upload the video anywhere else).

https://twitter.com/callebtc/status/1711472442349170834


I bet you were snacking nuts while defending...

Well done!


Someone posted an image of my encrypted nostr DMs on Twitter. Of course I know that it's possible to see the metadata but I didn't realize how creepy it feels. You can see who I talk to and when. You could deduce my social circles, maybe even real world activity related to my messaging patterns.

From now on, I will stop using normal DMs on nostr. The traces they leave is horrifying and you shouldn't use DMs either.

*Please do not send me any DMs from your npub if you have something to communicate to me.*

Use a random npub or a giftwrap or use a different method or use a different network to reach me.

Nostr DMs have always been a complete privacy hell and I urge anyone to realize this and act accordingly.

I repeat: DO NOT DM ME. I WONT DM YOU.


After 7 months of work, Wasabi has finally updated the Avalonia UI framework to v11!

This brings massive UI performance improvements, and lays the foundation for awesome features to come.

https://github.com/zkSNACKs/WalletWasabi/pull/10423


Exposing the Wasabi RPC server on an ephemeral hidden onion service!

Guess what magic we can do with this...

https://github.com/zkSNACKs/WalletWasabi/pull/11714


MASSIVE reliability improvement of Wasabi this year!!

December 2022, the success rate of the first attempt coinjoin transaction was 15%, and the success rate of the blame round 35%.

But today, first rounds succeed 50% of the time, and blame rounds even Ich 85%.

This is mind blowing!

Mega proud of the work by both Wasabi and Tor contributors! 🖤


evil is live spelled backwards


The new wcli interface is an amazing hacker UI, there are a bunch of advanced features possible!

https://github.com/wieslawsoltes/wcli

https://video.nostr.build/43b9b4b62af038834ae2d95490cef66fd63ffcf589e269d7536013424fa8fea2.mp4


As of today, my bitvm implementation supports adding 32 bit numbers. AND you can play with it online! (Testnet only.) Want to run #bitvm? Just visit this site!

https://supertestnet.github.io/tapleaf-circuits/


It's just bloddy difficult...

We're trying to make it more accessible for devs with the NWabiSabi library and the Wasabi daemon.

There's a revenue incentive for the devs though, so hopefully we will see more adoption soon.

Zksnacks.com/coinjoin-api


The UTXO set decreased by 30 coins thanks to this coinjoin.

It's pretty cool that user's can make anonymous consolidations with WabiSabi! We can manage the UTXO set growth without sacrificing user privacy.

nostr:nevent1qqstsudhvx2j2ccetemzww4d322k6qz9qksmze667tg6yrv920qhewgpr3mhxue69uhkummnw3ezumt4w35ku7thv9kxcet59e3k7mgzyzm7669svt0xkjsju50a22zurc0qa589z2xd4yatzx6p2z64a5e0cqcyqqqqqqgxk6q2c


Zoom out to see our coinjoin of the week!  This behemoth transaction contains 23 BTC - https://mempool.space/tx/927a4d5f3e17faae611f623eaf06206b966b30ba1bacbec49d7ab35afa50dbca

Bitcoin is divisible. WabiSabi coinjoins make Bitcoin divisible privately.

https://image.nostr.build/fe7e01d7f7777f12d969a556bb76c80dd5ddc353011b2ec39971c4dfe5b6d606.jpg


Number go up technology.

https://image.nostr.build/4a16f55a06512ccd9be991e6529e0943d3fd369da1c3f1abbde4dd7f6cb07d73.jpg


In Wasabi 2.0 you do not pay coordinator fee for remixes, however you do pay the mining fee for each vbyte of blockspace you use.


That's awesome to hear!

So many Bitcoin projects are prioritizing privacy, and in the last 5 years there was a mind blowing progress.

The base layer blockchain privacy is substantially improved, and there is so much possible on privacy optimized second layers.


Want to learn more why and how to integrate WabiSabi coinjoin into an existing Bitcoin wallet, here's an overview!

https://zksnacks.com/coinjoin-api/


New graphical user interface for the Wasabi RPC server!

https://github.com/wieslawsoltes/wcli


Cool, looking forward to your questions.

docs.wasabiwallet.io has a lot of info too


I'm struggling with that too, the paper mentions Poker, chess, go etc, but also zk verification execution, so maybe sidechains or something.


Additionally cost of attack is the coordinator fee.


To be an active adversary in coinjoin is expensive for two reasons:

The attacker has to pay the mining fee for each input and output.

The attacker has to pay the interest for bitcoin required for the attack, that's thousands of bitcoin per month.


Bitcoin script, yes.

But this is offchain Turing complete computation


Turing complete zero knowledge smart contract execution on Bitcoin without a soft fork!

bitvm.org

https://image.nostr.build/77e31c156a0875e2ffbdf3777a49fd7e185b405ef1513d101db01e785a0924bc.jpg


Rockets optimize for mass to orbit

Wallets optimize for time to transaction


Exactly.

If even one input does not sign the transaction, it is invalid and won't be accepted by any Bitcoin node.

That's why we initiate a "blame round" as second attempt, where only those inputs that signed the previous transaction are allowed. This smaller round is more likely to succeed. It often takes 5 attempts to finalize.


This is one of my favorite bitcoin transactions.

400 inputs, 407 outputs, 127.9 btc

It's a miracle that so many inputs managed to sign the same transaction at the same time.

https://mempool.space/tx/d465033214fd2309dcce5a90c45fcaa788aa4394ee36debe07aad8d8a37907d2


It's not that trivial to implement WabiSabi, it uses some fancy cryptography (keyed verified anonymous credentials, Peterson commitments etc), it requires the Tor control port for sophisticated network level identity management, and the input and output selection logic is non-trivial.

iiuc, sparrow could easily integrate the whirlpool code, because both are written in Java, the same reason why btcpay could easily integrate Wabisabi, as both are written in C#.

It's not impossible to implement across different programming languages (see Trezor Suite WabiSabi integration), but it's just a lot more work.


And it hasn't improved since 2019...


A couple important precautions to take with whirlpool:

- turn on tor, it's not on by default
- connect your own full node backend, your xpub gets leaked by default
- only make single input tx0 transactions, otherwise your pre-mix history is leaked by default
- prepare at least a month for the ceremony, it takes a long time by default, by default only 5 remixes is not enough
- do not use ricochet, it has a fingerprint by default and is super expensive

If you'd like to avoid all of these pitfalls, save a bunch of sats on fees, and be done with it in a day rather than half a year, just use WasabiWallet.io

If you wanna learn more, checkout coinjoins.org


If you want something that doesn't cost a fortune and take forever, try WasabiWallet.io

If you wanna know why Wasabi is so much better, checkout coinjoins.org


WabiSabi, obviously.

The other two are outdated by half a decade of improvements by Wasabi Wallet.

coinjoins.org


With the btcpay coinjoin plugin it's super easy to gain privacy as a merchant.

Incoming funds are automagically coinjoined in the background, and you can pay your suppliers privately in a batched payout coinjoin.


If only there were a coinjoin implementation that generates only private outputs, so that you don't have to worry about toxic change...

coinjoins.org
wasabiwallet.io


**Unpacking Wasabi Wallet’s Power Feature: The Headless Daemon**

Think of it as your wallet but on a diet. It uses fewer resources like CPU, GPU, memory, and bandwidth, allowing you to run Wasabi Wallet unobtrusively in the background.

The post Unpacking Wasabi Wallet’s Power Feature: The Headless Daemon (https://blog.wasabiwallet.io/unpacking-wasabi-wallets-power-feature-the-headless-daemon/) appeared first on Wasabi Wallet - Blog (https://blog.wasabiwallet.io).

https://blog.wasabiwallet.io/unpacking-wasabi-wallets-power-feature-the-headless-daemon/


Wasabi is designed in a way that the client does not trust the backend. No sensitive information is ever revealed: no xpub, no IP, no common input / output, etc.

Even if the wabisabi coordinator is run by an active adversary, the client should protect you. (those are bold claims, Wasabi is still WIP, and this architecture goal is bloody difficult to build)


Wasabi Wallet, BTCPay Server, and Trezor have the largest and most private coinjoins.  Unlike Whirlpool, there is no common input ownership revealed, no totic change to trace, and there's no coordinator fees charged for any inputs 1m sats or lower.

https://youtu.be/UbOAbXjzBJg?feature=shared


Without coinjoin, the person who pays you can track how long you hold on to the money, and where you spend how much. Likewise the person whom you pay can track your past behavior.

Checkout coinjoins.org for the motivation.


Better not, any single user multi input transaction is pretty bad for your privacy.

Thankfully Wasabi's post-coinjoin transactions have the lowest average consolidation count, because of efficient amount decomposition.


I would have agreed with you in the past, but Wasabi simply works by default in the background, there is no learning curve or complexities.

Receive, wait, send.
Privately.
It's as easy as that with Wasabi.


High fees, toxic chage, common input ownership, weakness to sybil attacks, no control over remixing, peers without Tor/full node protection, extra small coinjoin rounds, wasted blockspace from tx0.


Wasabi v2.0.4 is by far the most sophisticated solution.


I think the key difference is cost, which can be split up into time, complexity, and mining fees.

On all three of these, even Wasabi 1.0 (released in October 2018) is better than the currently deployed whirlpool scheme.

Wasabi 1.1 made a significant improvement on all three (multi denomination batching), and Wasabi 2.0 impvoved all by another factor of 10x (arbitrary amount coinjoin).

Nowadays, Wasabi 2.0.4 is so mind blowingly fast, easy to use, and cheap, that it is a joke to compare it to whirlpool.


Checkout coinjoins.org, it has a thorough comparison of each available implementation.


Don't trust, verify ;)


Yes, v2.0.4 has a bunch of amazing improvements in regards to speed, it's way faster to load, tor is even more optimized, and coinjoins are produced a lot more efficiently.

Glad that you noticed a difference!


Latest version of Wasabi wallet seems to coinjoin an order of magnitude faster (minutes compared to hours for my regular DCA)


Wasabi is designed with usability, efficiency and speed as priority, the latest v2.0.4 is excellent on all these three categories.


Cypherpunks are Austrian, always have been.


New feature prioritization approach for Bitcoin Core v27

https://github.com/bitcoin/bitcoin/issues/28599


The correct answer is:
"then you're a very boring person."


Nope, "just" coinjoin, nothing extra needed.


Satoshi gifted us a *theoretically perfectly anonymous* transaction system.

sats do not flow "from the second input to the third output".

Rather, sats on the input side get destroyed, and sats on the output side created. It's not a flow of sats, but more like a wormhole.

We have been stupid and made bad use of this miraculous technology. We have always made small single user transactions, and if there is a low count of inputs and outputs, the k-anonymity of this transaction is also low.

The extremely simple solution to maximize the privacy guarantees of Satoshi's transaction system, is to increase the count of inputs and outputs in a transaction.

That's it.

That's the trivial solution to Bitcoin's privacy "problem".

BIG TRANSACTIONS.


Also consider the onchain cost required to open and close (cooperatively or even forced) a channel, these costs will have to be amortized across each routed payment.

It seems to me, that using base money will always occur higher demurrage costs than using a money substitute. Thus bitcoin backed ecash is the already deployed short term solution that gets us to scalable and affordable anonymous transactions.


Meet the driving forces behind Bitcoin wallet apps: nostr:npub1klkk3vrzme455yh9rl2jshq7rc8dpegj3ndf82c3ks2sk40dxt7qulx3vt nostr:npub167hmfzj38hkumks4wxny89797la0sf7wnwfrw4enlmcl82msp0cs78schc nostr:npub1uq70uqgas9pyhds2zt57kr9se8rg3s68ztphjnq82ts8rzeknmeql7u0c2

Save the date:
📅Oct 26-27
🌋Bali, Indonesia

Use code WHITEPAPER for a 30% discount https://image.nostr.build/6064b397891b8e3176e08b1a036c997cde071affae5dbae1d80f79286933c1bb.jpg


Summarizing the mind blowing progress of privacy on Bitcoin and what's possible in the near term future.
My talk at #HCPP.

https://www.youtube.com/watch?v=79BQ0YlvDgQ


nostr:npub1az9xj85cmxv8e9j9y80lvqp97crsqdu2fpu3srwthd99qfu9qsgstam8y8 did it again...

https://satslink.com/


Now you can exclude coins from coinjoining in Wasabi with a simple RPC call!
https://github.com/zkSNACKs/WalletWasabi/pull/11540


Two direct USB C mics, one 3.5mm to USB C adapter. Neither works.


Not working in camera, jitsi app, riverside app.


Thanks, but the phone is unlocked when plugging in the USB mics.


I'm trying to get external USB microphones to work with Graphene OS, but none of them are recognized and the camera / call app uses the internal mic.
Any tips?
nostr:npub1gd3h5vg6zhcuy5a46crh32m4gjkx8xugu95wwgj2jqx55sfgxxpst7cn8c


Any tips on adding good voice models to RH Voice?


If you're craving some cypherpunk fiction, checkout Alongside Night.
https://web.archive.org/web/20211025165655/https://anarplex.net/hosted/files/Alongside_Night_free30.pdf


Bitcoin Optech newsletter #271 is here:
- summarizes a proposal for remotely controlling LN nodes using a hardware signing device
- describes privacy-focused research and code for allowing LN forwarding nodes to dynamically split LN payments
- looks at a proposal for improving LN liquidity by allowing groups of forwarding nodes to pool funds separately from their normal channels
- Optech Newsletter #271 Recap on Twitter Spaces
https://bitcoinops.org/en/newsletters/2023/10/04/

Bastien Teinturier posted to the Lightning-Dev mailing list about a proposed BLIP that would specify how a user could send signed commands to their LN node from a hardware signing device (or any other wallet)...
https://bitcoinops.org/en/newsletters/2023/10/04/#secure-remote-control-of-ln-nodes

Gijs van Dam posted to the Lightning-Dev mailing list about a plugin he’s written for Core Lightning and some research he’s performed related to it. The plugin allows forwarding nodes to tell their peers that they support payment splitting and switching (PSS)...
https://bitcoinops.org/en/newsletters/2023/10/04/#payment-splitting-and-switching

ZmnSCPxj posted to the Lightning-Dev mailing list a suggestion for what he calls sidepools. This would involve groups of forwarding nodes working together to deposit funds in a multiparty state contract—an offchain contract (that is anchored onchain similar to an LN channel) that would allow funds to be moved between the participants by updating the offchain contract state...
https://bitcoinops.org/en/newsletters/2023/10/04/#pooled-liquidity-for-ln

Bitcoin Optech will host an audio recap discussion of this newsletter with special guest Gijs van Dam on Twitter Spaces Thursday at 15:00 UTC. Join us to discuss or ask questions!
https://twitter.com/i/spaces/1OyKAWPldmNJb


What's the best text to speech software working on Graphene OS?


https://haltia.ai/, Personal AI assistant run entirely locally on device.


Für alle die's nicht nach Innsbruck geschafft haben, hier ist meine Präsentation über das Erbe der Cypherpunks für die Zukunft des Geldes.

http://youtu.be/1nyUGy5pfCw?si=uZ9W4toCSKnv28wL


What is the difference between Wasabi wallet, Samourai, and DMix?

In S14 E8 of the Bitcoin Takeover podcast, Fadi Barbara explains that the lack of a central coordinator for CoinJoin is an essential feature of his project.

However, the DMix participants must know each other and trust that they won’t reveal to the participants outside of the initial Taproot multisig who else is involved.

Listen to the entire episode on YouTube, Apple Podcasts & Spotify!

#privacy #bitcoinprivacy #coinjoin #dmix #samouraiwallet #samourai #wasabiwallet #wasabi #wabisabi #whirlpool #multisig #bitcoin #bitcoinpodcast #fadibarbara #bitcointakeover #bitcointakeoverpodcast #btctkvr https://video.nostr.build/20888bc238b1f3e00dad2fd1723696eed4f1cdc955a32cfac72f35380cc27d56.mov


The latest Wasabi release shows a noticeable improvement on all fronts!

https://image.nostr.build/84bcfa5fe445d20a24d037c61accb8f80f6558230c6e4ab763a2acc40514009d.jpg


nostr:npub1dd9znw7585wsam4d8p84ztdmtywwjsrayld6fzk4fvqdn5hpju4st5xe7p, a VPN with an additional blinded hop, meaning the VPN provider cannot spy on your traffic location.


First realm proxy merchants for the win.


Das After Dark Gespräch ist nun online, viel Spaß damit und Feedback ist gern gesehen! Falls ihr FairTalk was Gutes tun wollt, spendet gern per Lightning an fairtalk@getalby.com ⚡

https://youtu.be/b5BBy3Ts6b8


There are some awesome nuggets of the history of coinjoin here:
https://www.coinjoins.org/history


With arti you can configure tor to work fine for video calls on a phone.


We are beginning the development process for transmitting Nostr events in a peer-to-peer fashion, away from relays. This will start with Gift-wrapped DMs, Private Attachments, Private zaps, Private Text Notes, and Private Reactions; and will be the preferred transmission choice if both users are online, falling back to relays when they are not. Our Push Notification system already transmitted over 500,000 GiftWrapped Nostr events that relays will never see. With a full P2P this will get even better and will open the doors for voice and video calls directly inside Amethyst. Side-stepping relays won't be easy or quick. And I am sure we will get strong pushback from relay operators. But we will get there. And while this might start as an Amethyst feature, it will be a NIP and other clients will be able to join the privacy train.

Nostr is just starting.


Coinjoin of the week!

With 32 matching outputs worth 0.02097152, https://mempool.space/tx/75cb8fb4d36f553e5d4c0e9d0aa80111a20f18b19635dd29384b55f19a0b8a30 highlights the efficiency of load balancing when there is a huge amount of liquidity available.


They bought a stick of gum with a $100 bill and said "keep the change".


In that case the pool wouldn't broadcast the transaction, but only include it in it's own candidate block.


Someone paid 8,182,079 sats/vbyte feerate, oooops...
https://mempool.space/tx/d5392d474b4c436e1c9d1f4ff4be5f5f9bb0eb2e26b61d2781751474b7e870fd


All things considered, there's a 15% fee savings when using taproot vs segwit0 single pubkey addresses.

The fee savings is even more substantial for multisig addresses.


You forgot the most legendary piece of merch...

https://image.nostr.build/cde1a4e231cbbad4f8ccea276fbbce59a70e6640e620c78c45d0741788df3461.jpg


abundance = beauty


Guess what this is:

https://mempool.space/tx/d87dd9c691daa972314818186de16bcd2f23e05078f717442e8988d0560db510


Yes, it's one of many moderation features that are off by default for self-hosted instances.


Excellent summary, thanks for the work, that's good progress!


By an accident of history, I have been knee-deep for the last week or two in several NIPs related to encrypted DMs and group chat. The accident is [my proposal](https://github.com/nostr-protocol/nips/pull/706) for encrypted groups — which will help me turn Coracle into something approximating a replacement for Facebook, rather than Twitter.

In order to make that happen though, a few things need to happen first. I need a better way to encrypt messages without leaking metadata, and (un)fortunately I'm no cryptographer. It's well known that NIP 04 has a number of issues, and there have been several proposals to fix it since as early as October 2022.  Building on that foundation would be a waste of time.

My purpose in this post is to outline the problems with NIP 04 as it stands, and sketch out for you some possible solutions applicable not only to DMs, but to other encrypted use cases.

# NIP 04 Considered Harmful

It's pretty well-known that nostr DMs leak metadata. What this means is that when you send a DM to someone else, *anyone* can see:

- Who you are
- Who you sent a message to
- When you sent the message
- How big the message was

And, of course, vice versa. Now, I personally don't take the cyanide pill on this like some do. DMs in centralized social platforms are far less private even than this, since the platform can read them anytime they want, share them with law enforcement, and potentially leak them to the entire world. It's my opinion that if applications were designed with the above properties in mind, it would be possible to gamify DMs, making metadata leakage a feature rather than a bug. Of course, no one has designed such a thing, so maybe it's a moot point.

The much bigger problem, as I learned last week, has to do with the cryptography used in NIP 04 (and several other places, including private mute lists and app-specific data). Here's a quote from Paul Miller's very helpful [explanation](https://github.com/nostr-protocol/nips/pull/715#issuecomment-1675301250):

> 1. Unhashed ECDH exposes some curves to Cheon's attack 1, which allows an attacker to learn private key structure when doing continuous diffie-hellman operations. Hashing converts decisional oracle into a computational oracle, which is harder.
> 2. CBC IVs should not only be unrepeatable, they must be unpredictable. Predictable IV leads to Chosen Plaintext Attack. There are real exploits.
> 3. CBC with reused key has 96-bit nonces and loses 6 bits of security for every magnitude. 10**4 (10K) messages would bring archive security of the scheme to 72 bits. 72 bits is very low. For example, BTC has been doing 2^67 hashes/sec as per early 2023. Advanced adversaries have a lot of resources to break the scheme
> 4. CBC has continuously been exploited by Padding Oracle attack. We can't expect all implementations to have proper padding check
> 5. AES was modeled as ideal cipher. Ideal ciphers don't care about non-random keys. However, AES is not an ideal cipher. Having a non-IND key, as in NIP4, exposes it to all kinds of unknown attacks, and reducing security of overall scheme

There is a lot going on here, very little of which I (and likely you) understand. But the really horrifying takeaway for me is in items 1 and 3. If you read it carefully, you'll notice that the more times you use your private key to encrypt data using NIP 04's encryption scheme, the easier it is for an attacker to brute-force your key.

I want to be careful not to overstate this — I don't think this means that everyone's private key is compromised; it would require many thousands of signatures to meaningfully reduce the security of your key. But it does mean that NIP 04's days are numbered — and if we don't replace it, we have a real existential threat to the entire protocol on our hands.

So much for motivation to put NIP 04 to rest. Where do we go from here?

# The lay of the land

There are a few different components to making private messages work (whether we're talking about DMs or encrypted groups).

- Encryption scheme
- Explicit metadata hiding
- Implicit metadata hiding
- Transport and deliverability
- Identity and key exchange

Each of these components needs to be solved in order to create a robust messaging system on nostr.

## Encryption scheme

As mentioned above, NIP 04 is borked. Luckily, there are a few folks in the nostr dev community who know a thing or two about encryption, most notably Paul Miller. Way back in May, Paul [proposed](https://github.com/nostr-protocol/nips/pull/574) a new encryption scheme based on his implementation of XChaCha20, which is the same algorithm used by SMP (more on that below).

To move the proposal forward, I created a [different PR](https://github.com/nostr-protocol/nips/pull/715) with some edits and adjustments, which is very near to being merged. The implementation already exists in nostr-tools, and there are PRs out for nos2x and Alby as well.

## Explicit metadata hiding

As mentioned above, normal nostr messages share lots of information publicly, even if the content is encrypted, including:

- Kind
- Created timestamp
- Tags (topics, mentions, recipients, etc)
- Message size
- Author

Private messages have to hide this information, at the very minimum.

## Implicit metadata hiding

The above level of security should be enough for most use cases. But it definitely doesn't get us to total secrecy yet. Some additional metadata includes:

- Client fingerprinting
- Relay selection for publishing and queries
- IP address collection
- First seen timestamp
- Identification of users by AUTH
- Correlation of the event with other messages sent/received during a session

These issues are much harder to solve, because they are part of the process of delivering the message, rather than just constructing it. These issues can be mitigated to some extent by using TOR, proxying connections with relays, using short-lived connections, randomizing publish time, and careful selection of trusted relays. But all of these are only techniques to reduce exposure, and require a prescriptive protocol to wrap them all up into a cohesive whole.

## Transport and deliverability

In my view, the key feature of nostr that makes it work is relays. Relays provide storage redundancy and heterogeneity of purpose with a common interface shared by all instances. This is great for censorship resistance, but everything comes with a tradeoff.

Publishing notes is sort of like hiding easter eggs. If you want a kid to be able to find an egg, you have to put it somewhere they'll look for it. Putting an egg on the roof does not constitute "hiding" it, at least in a way consistent with the spirit of the game.

Historically, notes have been broadcast to whatever relays the user or client selects, without regard with someone else's preferences, resulting in apparently missing notes when author and recipient don't share a relay.

This problem has been partly solved by NIP 65, which encourages clients to publish notes where the recipient will look for them. There is some guesswork involved in selecting good relays, but the process is fairly straightforward for direct messages and group chats.

The situation can be improved further by DM-specific signaling, like what @fiatjaf has [suggested](https://github.com/nostr-protocol/nips/pull/700#discussion_r1289080435) as an addition to NIP 65. A user could then run his own relay that accepts messages from anyone, but only serves messages to himself. This would be the only relay well-behaved clients would ever write encrypted messages to, improving both privacy and deliverability.

Variants of this could also work for encrypted groups. For small groups, the same relay hints could be used as with DMs, and for larger groups with key sharing the admin could set up a dedicated relay for the group which members would write to.

This also creates a potential affordance for querying of encrypted events. If a relay is highly trusted, it could be added as a member to an encrypted group, gaining the ability to decrypt events. It could then receive REQ messages for those events, filter based on the encrypted content, and serve the encrypted version. This could greatly improve performance for larger groups where downloading all events isn't feasible.

## Identity and key exchange

One dimension of privacy that deserves its own section is identity and key exchange. In nostr, this is simpler than in other protocols because in nostr your pubkey *is* your username. Arguably, this is a flaw that will need to be solved at some point, but for now it means that we get to skip a lot of the complexity involved with binding a name to a key.

However, the problem is still relevant, because one effective way to improve privacy is through key exchange. In the case of DMs, it would be nice to be able to request an alias key from someone you want to communicate with in order to hide the only piece of metadata that has to remain on a message in order to deliver it, that is, the recipient.

There's a lot of good stuff about this problem in the [Messaging Layer Security](https://messaginglayersecurity.rocks/mls-architecture/draft-ietf-mls-architecture.html) protocol. The author of 0xChat has also put together a [draft spec](https://github.com/water783/nips/blob/nip101/101.md) for executing simple key exchange, albeit with less information hiding than in the MLS protocol.

Key exchange between individual users can be considered an optional privacy enhancement, but is required for group chat based on a shared key. In either case, exchanging keys is fairly straightforward — the real challenge is achieving forward secrecy.

By default, if at any point a user's private key is compromised, any messages that were retained by an attacker can then be decrypted. This is a major vulnerability, and solving it requires key exchange messages to be reliably discarded.

# What's cooking

So that's an overview of the problems that need to be solved for private DMs and group chats. Not all of these problems will be solved right away, just because the bar for creating a decentralized encrypted chat system on par (or better than) Signal is the kind of thing you get venture capital for.

So the question becomes, should we build a sub-par messaging system that is tightly integrated with nostr, or refer users to a better option for encrypted communication?

Well, why did Twitter create its own DM solution rather than integrating email? Was it to harvest user data, or to provide additional utility to their users by allowing the social graph to inform messaging? Native features simply create a better UX.

On the other hand, in Paul Miller's words:

> I would like to remind that nostr DMs, if nostr gets a traction, would be used by all kinds of people, including dissidents in dangerous places. Would you be willing to risk someone getting killed just because you want to keep backwards compatibility with bad encryption?

There is no easy answer, but it's clear that as we continue to work on this problem it is very important that applications communicate clearly the privacy implications of all "private" features built on nostr.

So, assuming we can pull off an appropriate balance between privacy and convenience, let me outline three new developments in this area that I'm excited about.

## Gift wrap

Way back in April, Kieran [proposed](https://github.com/nostr-protocol/nips/pull/468) a dumb, but effective, way of hiding metadata on DMs. The technique involved simply encrypting a regular nostr event and putting that in another event's `content` field. The neat thing about this is that not only does this hide some of the most revealing event metadata, it's not tied to a particular event kind — anything can be wrapped.

What this means is that we can build entire "nostr within nostr" sub-networks based on encryption — some between two users, others based on a shared group key. This is much more powerful than a messaging-specific encryption schema. Now we can make private reactions, private calendars, private client recommendations, private reviews. I find this very exciting!

This proposal was further developed by Vitor — the current version can be found [here](https://github.com/nostr-protocol/nips/pull/716). The latest version introduces double-wrapping, which can help prevent the wrapped event from being leaked by stripping its signature — that "draft" event is encrypted, wrapped, and signed to verify authorship without revealing contents, and then that wrapper is in turn wrapped and signed with a burner key to avoid revealing the author.

Wrapping also makes it possible to randomize the created timestamp to avoid timing analysis, as well as to add padding to a message, reducing the possibility of payload size analysis.

## New DMs and small groups

The main subject of Vitor's [proposal](https://github.com/nostr-protocol/nips/pull/686) was a new way to do DMs and small groups using double-wrapping to hide metadata. This works basically the same way NIP 04 did — a shared key is derived and the message is encrypted for the recipient, whose pubkey is revealed publicly so that it can be delivered.

However, Vitor was able to extend this to multiple recipients simply by wrapping the message multiple times, with multiple shared secrets. With the addition of some metadata on the inner event, this makes it possible to define a group where the members know who each other member is, but no one else does.

## Large groups

This proposal has one important limitation though — the number of events that need to be signed and broadcast is equal to `number of messages * number of members`. This is fine with 5, 10, or even 100 members, but becomes infeasible when you reach groups of 1000+ members.

For that, we have two similar proposals, [one by @simulx](https://github.com/nostr-protocol/nips/pull/580), and [one by myself](https://github.com/nostr-protocol/nips/pull/706). The differences between the two are not important for this discussion — both use gift wrap as a way to exchange and rotate shared group keys, and both support a weak form of forward secrecy.

As a side note, this is the proposal I'm most excited about, and why I got into nostr in the first place. Private community groups which can support shared calendars, marketplaces, notes, etc., are what I'm most excited to see on nostr.

# Shortcomings

The above proposals are great, but of course leave much to be desired. If these are built, nostr will be hugely improved in both security and functionality, with the following weaknesses:

- Deliverability is still an open question — are relay selections enough to ensure recipients get their messages, and no one else does?
- There is no way to create a group whose members cannot dox each other. You must always be able to trust the people you share a group with, and of course, the larger the group, the more people there are that can betray you.
- Content can always be shared outside a group, although in Vitor's small group proposal, the only way to verifiably leak messages would be to reveal your private key.
- Key rotation is not supported by the small groups proposal, but it may be possible to solve it for the entire protocol by building out a name resolution system for nostr.
- Forward secrecy for large groups is weak at best. A key rotation can be triggered at any time, including when a member leaves the group, but unless all relays and all members destroy the key rotation events, it may be possible to decrypt messages after the fact.
- Credential sharing still has to be bootstrapped, meaning at least one encrypted message for each participant may be publicly seen. Of course, credential sharing could also be done out of band, which would largely solve this problem.

# What about SimpleX?

Lots of people, including Semisol and Will, have expressed interest in integrating nostr with SimpleX and using their cryptography and transport instead of nostr's.

The first question to answer though, is which protocol should we use? SimpleX is split into a few different pieces: there's the [SimpleX Messaging Protocol](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md), which describes setting up unidirectional channels, the [SMP Agent Protocol](https://github.com/simplex-chat/simplexmq/blob/master/protocol/agent-protocol.md) which describes how to convert two unidirectional channels into a bidirectional channel, and the [SimpleX Chat Protocol](https://github.com/simplex-chat/simplex-chat/blob/stable/docs/protocol/simplex-chat.md) which describes a standard way to send chat messages across a bidirectional channel.

## SimpleX Chat Protocol

So far, most proposals to fix messaging have focused simply on DMs, and sometimes on group chat. This is SimpleX's wheelhouse, so it could definitely make sense to communicate that kind of information over SimpleX's top-level chat protocol, and leave nostr out of it entirely.

The downside of this is that it requires clients to support two different protocols, and connect users to two categories of servers. This isn't a deal breaker, but it does increase the complexity involved in writing a full-featured nostr client, especially since there are no implementations of the SimpleX protocol other than (17k lines of) Haskell.

Using SimpleX's chat protocol would also limit the message types we'd be able to encrypt. Anything outside SimpleX's protocol (like zaps for example) would have to be sent using a custom namespace like `nostr.kind.1234`, which wouldn't be recognized by normal SimpleX clients. There are also areas of overlap where both protocols describe how to do something, for example profile data, requiring clients to choose which kind to support, or send both.

Another wrinkle is that the SimpleX protocol is AGPL v3 licensed, meaning proprietary software would not be able to interoperate, and MIT licensed products would have to abide by their license's terms.

## SMP and Agent Protocols

The lower-level SMP and Agent protocols are more promising however, since their scope is narrower, and doesn't overlap as much with nostr's own core competencies. Both are quite simple, and very prescriptive, which should make it easy to create an implementation.

SMP is actually quite similar to some of the proposals mentioned above. Some of the same primitives are used (including XChaCha20 for encryption), and SMP is transport agnostic meaning it could be implemented over websockets and supported by nostr relays. The network topology is basically the same as nostr, except SimpleX doesn't make any assumptions about which servers should be selected, so in that regard nostr actually has an advantage.

The main incompatibility is that SimpleX requires the use of ed25519 and ed448 EdDSA algorithms for signatures, which means nostr's native secp256k1 signature scheme wouldn't be compatible. But this could be ok, since keys shouldn't be re-used anyway, and there are other ways to share a nostr identity.

## Forward secrecy?

Whenever a server is involved, several attack vectors inherently exist that would not in peer-to-peer systems. Servers can threaten user privacy by storing messages that should be deleted, analyzing user behavior to infer identity, and leaking messages that should otherwise be kept secret.

This has been used by some to suggest that nostr relays are not a good way to transport messages from one user to another. However, SMP has the same attack vector:

>Simplex messaging server implementations MUST NOT create, store or send to any other servers:
> - Logs of the client commands and transport connections in the production environment.
> - History of deleted queues, retrieved or acknowledged messages (deleted queues MAY be stored temporarily as part of the queue persistence implementation).
> - Snapshots of the database they use to store queues and messages (instead simplex messaging clients must manage redundancy by using more than one simplex messaging server). In-memory persistence is recommended.
> - Any other information that may compromise privacy or forward secrecy of communication between clients using simplex messaging servers.

So whether SimpleX servers or nostr relays are used, privacy guarantees are severely weakened if the server is not trustworthy. To maintain complete privacy in either scheme, users have to deploy their own servers.

## Relays to the rescue

Because nostr servers are currently more commonly self-hosted, and more configurable, this makes nostr the better candidate for channel hosting. Users can choose which relays they send messages to, and relay admins can tune relays to only accept messages from and serve messages to certain parties, delete messages after a certain time, and implement policies for what kinds of messages they decide to relay.

All that to say, SMP itself or a similar protocol could easily be built into nostr relays. Relays are not the wrong tool for the job, in fact they're exactly the right tool! This is great news for us, since it means SMP is applicable to our problem, and we can learn from it, even if we don't strictly implement the protocol.

## Bootstrapping over nostr

One assumption SMP makes is that channels will be bootstrapped out of band, and provides no mechanism for an initial connection. This is to ensure that channels can't be correlated with user identities. Out of band coordination is definitely the gold standard here, but coordination could also be done over the public nostr network with minimal metadata leakage — only that "someone sent {pubkey} something".

## Unidirectional channels

Unidirectional channels are a great primitive, which can be composed to solve various problems. Direct messages between two parties are an obvious use case, but the SimpleX Chat Protocol also includes an extension for groups, defined as `a set of bi-directional SimpleX connections with other group members`.

This is similar to Vitor's small-group model, and likewise isn't conducive to supporting very large groups, since a copy of every message has to be sent to each group member.

However, it's possible to build large groups on top of unidirectional channels by sharing receiver information within the group and having all participants read from and write to a single channel. In fact, this is very similar to how our large group proposals work.

## Conclusion

So, the takeaway here is that SimpleX's lower level protocols are great, and we should learn from them. It may be worth creating a NIP that describes the implementation of their unidirectional channels on nostr, and re-using that primitive in DM/group implementations, or simply following the same general process adapted to nostr.

I'm personally encouraged by reading SimpleX to see that we are headed in the right direction — although many of the details of our proposals have not been fully hammered out in the way SimpleX's has.

As for what the future holds, that's up to the builders. If you want to see tighter SimpleX integration, write a NIP and a reference implementation! I'll continue learning and fold in everything I can into my work going forward.

A survey of current work on building encrypted chat into nostr — and a review of the idea of building it on SimpleX.


Now there are two hardware wallets on the market can do coinjoin - Trezor T and Trezor One.

Be safe, don't coinjoin in SW wallets.

https://content.trezor.io/coinjoin-model-one


Status update from Belcher, he's very sick, send him some love.
https://gist.github.com/chris-belcher/ca5051285c6f8d38693fd127575be44d#update


Here is the simplest Simplicity program:

```
main := iden
```

This program takes an empty input and produces an empty output. Let’s do something more interesting, taking a bit and inverting it:

```
   bit0 := injl unit : 1 * 1 -> 2
   bit1 := injr unit : 1 * 1 -> 2

   padR := pair iden unit     : 2 -> 2 * 1
   bitflip := case bit1 bit0  : 2 * 1 -> 2
   main := comp padR bitflip  : 2 -> 2
```

Here the final Simplicity expression is our `main` function. By reading from bottom to top, we can see that it is the composition of several smaller functions, eventually grounding out in unit combinators. Unit combinators produce an empty output. Along with `iden`, which takes an arbitrary input and returns it unchanged, and `witness`, which outputs an externally-provided value, unit combinators form the basis for every Simplicity expression.

In this code snippet, we’ve provided type annotations to help indicate what data is flowing from each part of the expression to the next. Here “1” represents the unit type, which is what we’ve been referring to as an “empty output”. “2” represents a bit, which may take the value 0 or 1.

Don’t worry if you didn’t follow this snippet in any detail. It’s only here to show visually what Simplicity code looks like. Later in this post, we’ll analyze a more interesting program more carefully.

## A Specification Language

Ultimately, all programming languages express the idea of combining computations to build larger ones. Bitcoin Script (like Forth, or PostScript) does this by means of a stack machine, in which each computation manipulates a list of data objects in turn. Ethereum’s EVM uses a function call architecture where code can call other blocks of code (possibly in other contracts), which take data as input and return data as output. This is also the model used by pretty-much all mainstream programming languages today.

Programming languages use **side effects** to interact with the outside world, such as the transaction being spent. In EVM, contracts also have access to key-value data stores, which allow them to maintain state across transactions without explicitly passing it.

In both Bitcoin Script and EVM, bit inversion can be done with a single opcode (though the Bitcoin version can take many different inputs, most of which do not resemble bits, while the EVM version acts bitwise but always on 256 bits at once). It’s reasonable to ask why the Simplicity model leads to such verbosity for such simple things.

Our goal with Simplicity is to **formally specify** the semantics of programs, both in terms of what functions they represent, and what computational resources are involved in evaluating them. It would be possible, in principle, to formally specify a language which operates like Bitcoin Script or EVM, but the task would be extremely difficult, and the result would be nearly as difficult for anybody to verify. Instead, with Simplicity, we defined a small set of basic combinators, each of which reflects a mathematically fundamental way of combining functions. The resulting language’s semantics are so small that they [fit on a T-shirt](https://blog.blockstream.com/en-simplicity/).

In practice, for things like bit inversion, this code will only be written once, then reused. In fact, we’ve done the writing for you and built it into the language. When writing your own code, you can simply use the shortcut `jet_not` in place of the above code. We will talk more about jets in the next section.

Eventually, in practice, almost nobody will be writing Simplicity code at all. Simplicity provides a well-defined foundation for blockchain programs, but it is just that: a foundation. The real work will be done in higher-level languages, which compile down to Simplicity code alongside proofs of their correct operation.

## Programs Versus Expressions

Expressions that have trivial input and output values have a special name. We call these expressions **programs**. Mathematically speaking, only one function exists mapping a trivial input to a trivial output, so it’s not obvious that such Simplicity expressions would be useful at all. But not only are they useful, they’re the only such expressions allowed on the blockchain!

So, what is the strategy? There are actually two: one is that the Simplicity programs committed in addresses have **holes** in them, which are only filled in when coins are actually spent; the other is that Simplicity programs have **side effects**, which allow them to access blockchain data or abort early, thereby stepping outside the bounds of pure mathematical functions.

There are two ways to specify holes in Simplicity programs: the `disconnect` and `witness` combinators. `disconnect` is a bit subtle, and [we have talked about it in the past](https://blog.blockstream.com/disconnecting-simplicity-expressions/). But witnesses are very simple: the `witness` combinator returns a value of a given type, called a witness, (such as a digital signature, hash preimage, or specific choice of signing keys).

There are also two ways that Simplicity supports side effects: one is by introspecting transaction data (which we will also discuss more in a later post), and the other is by assertions. **Assertions** halt the program execution. In Bitcoin Script, the VERIFY opcode is used for assertions, and allows the program to fail if it encounters an invalid signature or other data. EVM uses the STOP opcode for the same purpose.

We can now see how a program whose input and output types are nominally trivial, can actually effect a useful computation: witnesses serve the purpose of program inputs, while assertions provide a “pass/fail” program output.

Let’s consider another example. Here is a program that takes two witnesses and checks them for equality:

```
-- Witnesses
wit1 := witness : 1 -> 2^32
wit2 := witness : 1 -> 2^32

-- Program code
pr1 := pair wit1 wit2 : 1 -> 2^64
jt2 := jet_eq_32      : 2^64 -> 2
cp3 := comp pr1 jt2   : 1 -> 2
jt4 := jet_verify     : 2 -> 1

main := comp cp3 jt4  : 1 -> 1
```

We can read this program from bottom to top: the program itself is a single expression called **main**, of type 1->1. Here the “type” of an expression indicates what kind of values it takes as input and output. The 1 type has only a single value, so describes no information. The 2 type has two possible values, so it can represent a single bit, 2^32 is a 32-bit string, and so on.

From the bottom equality, we see main is the **comp**osition of the expressions with names **cp3** and **jt4**. Then **cp3** is itself the composition of **pr1** and **jt2**, and so on. There are five combinators used in this program:

* **comp**, or composition, takes two expressions and evaluates the second with the first’s output as input.

* **pair** takes two expressions and produces a new expression whose output is a pair of values: the left part is the output of the first expression, and the right part the output of the second.

* **witness** takes no input but has a polymorphic type as its output: whatever type is needed for the program to make sense, that’s its type. And the value it yields is one provided at evaluation time.

* **jet_eq_32** is a **jet**, which means it is a single combinator that replaces a larger Simplicity expression. The replaced expression is called its **specification**, and a Simplicity interpreter can evaluate the jet either by evaluating the specification, or by using optimized machine code which has the same effect. This particular jet takes two 32-bit values and outputs a single bit, indicating whether the two values were equal (1) or unequal (0).

* **jet_verify** is also a **jet**. This one takes a single bit as input, and if that bit is 0, it aborts the program. It has no output.

## Conclusion

This was a dense blog post in which we saw what Simplicity code looks like, and observed that even simple-seeming functionality can look pretty complex when it’s written out explicitly. But this complexity reflects what’s actually going on inside. As a specification language, Simplicity allows us to make everything explicit, so that we can mathematically model it, prove the essential properties that we need for our applications, and then encapsulate it, confident that we have a rock-solid foundation for the things we believe about our code.

Simplicity has several more combinators and many jets, which we’ll talk about in future posts. As we build up the language, we’ll explore more practical examples and look at what it means to “prove” properties of programs.

My next post will introduce the concept of sharing, which allows two identical expressions to be merged into one, and introduces some subtleties related to what it means to be “identical”.

Join the [Simplicity discussions on GitHub](https://github.com/BlockstreamResearch/simplicity/discussions?discussions_q=&ref=blog.blockstream.com) to ask questions, connect with the community, and share your insights. And follow us at [@blksresearch](https://twitter.com/blksresearch?ref=blog.blockstream.com) on Twitter to stay up to date with the latest in Simplicity blog post releases.

Unlike most programming languages, Simplicity expressions are constructed from a series of combinators, which build up expressions from smaller ones. Such expressions represent functions taking some input and mapping it to some output.


I just know that the service makes arranging travels a breeze (I guess your OP was about a lack of convenience), and that the discounts and upgrades work sometimes as well (not all the time, it depends on flight or hotel).


Try the shopinbit.com travel concierge service, it's outstanding.


[SIDE EVENT]

Any cypherpunk out there not signed up for the meetup yet? You ain't serious for sure! 👀

Put your hoodie on and come to meet Lea Petrasova, #[0], #[1], #[2], #[3], @CypherpunkNow, and others face-to-face or mask-to-mask 🙃 at this #BTCPrague side event! 🖤

https://pay.cypherpunk.today/apps/3cepDfGU46a4bTf19K68Srr7eqC2/crowdfund

https://nostr.build/i/fd6164b0ecc920803bfbcab48e52139f92ead8139c3eda949a8d6dc25eaab76a.jpg


Solid stack.


This is the year we turn OpenSats into an absolute juggernaut and force for good in this world.

We are a 501c3 100% pass through non profit. You can receive a tax credit for your donations or donate anonymously with bitcoin. 100% pass through means we do not take a cut of donations. https://opensats.org/

If you are an open source contributor or maintain an open source project, apply here: https://opensats.org/apply


How about a new nostr client: lurker

For all those who want to read only, not write.

Private follower list.
Private bookmarks.
No profile.
No reactions.
No posts.
No replies.
No DMs.


Continuing with recommending content from #nostrica!

Next up we have marvelous "Learning from Others" session by #[0].

I was absolutely amazed by this one. I guess I just wasn't prepared for the amount of valuable information that Rabble will share. If you're looking for the best possible outcome for #nostr, then I strongly recommend watching this session and learning from Rabble's insights.

Sure, some may tune in just to catch early Twitter history and see pictures of a young #[1] (they are pretty good!). But once you move beyond that, you get to enjoy discussion on numerous frameworks (from those that categorize social media protocols... to more theoretical ones related to commons). And if you're a protocol developer, Rabble's insights will be particularly valuable in helping you avoid dead ends and make informed decisions!

Even the dark moments of the talk were integrated into providing valuable information and lessons to learn (kudos to #[2] for the way she responded to that threat!).

So: in the 207 days before #nostrica 2 - aka #[3] - starts, I recommend you watch this talk multiple times. And then do follow Rabble, #[4] and others building https://www.nos.social & https://www.planetary.social ... so great we have them in #nostr community!

https://www.youtube.com/watch?v=B6YQQC5Q_5g&t=10143s


nostrgit.com looks very promising already!


Ah, zaplife.lol of course!


What UI is this?


Damn, that was obvious, thanks Martijn, now it's working.


Oh, the public key is not hex format?


The file is here, what's wrong? towardsliberty.com/.well-known/nostr.json?name=max


Beautiful.


Thanks!

I use btcpay with a custom /btcpay domain, so I just did a redirect for .well-known to include /btcpay link.

It should work now?


Would be good to know, thanks!


Thanks, what's the content of the json?


Especially paid relays.


Yes.

That's why the sender waits with signing the transaction until the receiver gives an acknowledged of the entire transaction, the receiver does not tell specifically which output he agrees to, in practice its just probably "ACK TXID".


Yes exactly.

Well, this transaction is only valid if all input sign, and the coordinator has no inputs. The coordinator cannot force users to sign a transaction that is not to their liking, every user verifies that his desired outputs are included before signing that transaction.

Theft is not possible.


### Nostr Plebs Spaces is rebranding to Nostr Nests

We originally started Nostr Plebs Spaces to ease the transition for users coming from Twitter. Today, we are rebranding to Nostr Nests since we would not like to reuse the Spaces branding. (and the name is more fitting!)

We have also introduced the ability to link your Nostr public key and some improvements that could reduce choppy audio in bad connections.

We will be hosting a nest on https://nostrnests.com/general for the launch.

We will also in the future introduce linking your Nostr Plebs ID and Nostr login.

**What will happen to my rooms?**
Rooms will not be transferred. Please recreate your rooms. If your room name has been taken up by someone else, contact us.

**What about my profile?**
Your profile will not be transferred over. You will need to set it up again.


Sorry, this was meant for you
#[4]


The trick is, that every time you create a new credential, it's serial number is scrambled/blinded.

And whenever you spend or present a credential, then you must unblind the serial number.

So, the coordinator sees a random blinded cyphertext when the credential is created, and he sees a different random unblinded serial number when the credential is presented.

This is theoretically perfect privacy, meaning Esch credential looks indistinguishably random with the anonymity set of all users of this time period.


Not exactly.

Cashu or Fedimint use ecash as a money warehouse receipt redeemable at par for sats.

In Wabisabi coinjoin the ecash is used as anonymous access rights to the output side of the coinjoin transaction coordination.

The token is not "as good as" sats and it cannot be "redeemed" for sats. Instead it can be redeemed for the right to do an api call in the output registration phase.

A coinjoin coordination can fail frequently and for many reasons. If only one input fails to sign, the transaction is invalid, and even if all sign, it can still get double spent before confirmation.

The merchant doesn't consider himself paid when he receives the wabisabi credential, but only when the final transaction with his output is in the blockchain.

So far nobody has implemented this, but both BTCPay and Wasabi will have this functionality soonish in two weeks.


You should give that pan some love and a proper beef tallow seasoning...


You can only register 40k btc in a single input.

Meaning you can register multiple 40k inputs, and the coordinator doesn't even know they all belong to you.

Fwiw this value limit is the bit size of the value attribute of the credential, and it can be increased further by a bits, at the cost of increasing the bandwidth requirements of all users. 40k is probably good enough though.


Wasabi does this even better since you get private outputs of many denominations, allowing you to easily compose transactions that don't even create a change output-

https://nostr.build/i/nostr.build_d63a76eff36528adbcafb4573d127b5594748f1a42b81d1707698abfe0f7deac.png