Replies (110)

Nobody is gonna kidnap my kids or $5 wrench attack me because there is “child porn attached ot my pub key on chain” (whatever the fuck that means, please explain). I guess my main point is this one: on-chain privacy is hard. Lightning privacy isn’t hard. It is my humble opinion that we should have sane defaults and encourage privacy best practices. Lightning is a sane default for zaps. Lightning has privacy best practices built in. On-chain privacy is very (very) hard, and any mistake you make might haunt you forever. And once more for good measure: address reuse is really, really bad. For everyone.
I am not sure that you fully understand that there is no privacy in lightning zaps. The zap event is killing any sense of privacy or anonymity you think you have. Saying that lightning zaps is a "sane" privacy implementation is worse than having public onchain zaps.
All the zaps that I have received so far, what did I spend them on? Can you tell? Did I even move those sats at all? Where did the sats go after I’ve received them? Less importantly: Is it possible that some of the zap receipts were faked, and thus there’s “zap events” out there that didn’t even move sats at all? Even less importantly: I had many lightning addresses attached to my profile up to now. Is it possible that one of those lightning addresses was controlled by someone else, and not me?
> Saying that lightning zaps is a "sane" privacy implementation That's not what I said. When it comes to zaps, Lightning is the sane choice, because of its properties. Using on-chain for those public payments is NOT the sane option, since on-chain leaves a trail that is forever auditable. “Forward secrecy” (if you want to call it that) does not exist. Plausible deniability does not exist. The option to say “I never touched that money” doesn’t exist. The option to say “I lost access to this wallet” does not exist either, unless you nuke your nsec.
Let me try to make my point once more: 1) Address reuse is actively harmful for the whole Bitcoin network. 2) On-chain privacy is very, very hard. 3) Lightning privacy is NOT hard What (3) means is that I can spend the zaps that I have received WITHOUT getting into trouble further. I can spend them at a merchant or whatever, and nobody will know. On-chain makes that way, way, way harder. On-chain is traceable. Further, nobody knows the current balance of my wallet. I might have spent everything. Or maybe I haven’t touched it. Switching to on-chain makes every user naked, and thus plausible deniability flies out the window.
We are not using "lightning", we are wrapping a lightning proof into signed events with the sole purpose to identify the parties involved. Yes: forward secrecy doesn't exist, plausible deinalibity don't exist. But not because of some on chain zaps implementation, but strictly because you are singing with public key cryptography and advertising your pubkey key as yourself to everyone. That is the definition of *verifiably* doxxing yourself. You are arguing against pubkey key reuse while reusing the same nostr key to sign the same thing you want a new key for.. nothing here makes any sense.
jostric's avatar
jostric 5 days ago
Can I opt out of receiving on Chain zaps? Or am I just stuck with it because my npub is public and sending BTC theres doable?
.'s avatar
. 5 days ago
Thank you Gigi 🙏
It doesn't matter. On nostr, they are all doxxing that lightning address and those transactions (which is what almost everyone does here). Of course, they can have other lightning wallets and those are not affected. Similarly, we are not doxying people's main Bitcoin wallet. It's only a wallet for nostr. Everything else is user education to hopefully not mix funds or keys.
It matters. It matters a lot. Providing and normalizing the use of long-term footguns is not the way. Building stuff that actively harms the privacy of all on-chain users (that's what address reuse does, remember?) is not the way.
Anyway, I know that you're gonna ship it anyway but this is too important for me to just shut up about. I hope that a more sane approach will win in the end. Silent Payments, for example. I'll go touch grass now.
This. I use lightning addresses for my profile and for fundraisers that are controlled by a group. It's not my address, I just have permission to use it. And I have cycled through various addresses. I even changed the wallet behind the addresses. There's an abstraction and obfuscation and deniability layer to Lightning that on-chain simply doesn't have.
Sure. But they take something very private and turn into something VERY public for the sake of memes. Any attacker can save those events forever in such a way that they don't even need the chain. In fact, it's even better than the chain because now they can sell databases of past zaps that no one else can find because they were deleted. We created the incentive to sell our info and create that marketplace. It's really bonkers if you think about zaps from a privacy perspective. Every decision we ever made made lightning worse than on chain transactions.
Address reuse is the point. It's the tradeoff we're choosing to make it dead simple. Without that it becomes complex and we fall down a hole, just like the thousand other holes we're already down. Bitcoin lacks focus.
Originally created by the real Satoshi:
robos's avatar robos
Scanless Silent Payments tl:dr: We built a complete silent payment notification system into Sparrow Wallet using Nostr encrypted DMs. When you send a silent payment to a Nostr identity, the recipient is automatically notified via NIP-17 with everything they need to claim the UTXO — no blockchain scanning required. This is a proof of concept and almost certainly has security issues.
View quoted note →
I’m with you, @Gigi Bitcoin on-chain has forward and backward privacy issues. It is not just that you have to unlink the past; one silly mistake in the future, and the unlinked becomes linked again.
Yes, but even if I use a dedicated wallet for on-chain zaps, I still need to fund that wallet somehow for future use — not every user earns sats directly on Nostr. With a Lightning wallet, nobody can see the transaction flow outside the Nostr ecosystem. But with an on-chain wallet, I don`t have that option. From my point of view, just because Lightning zaps aren`t perfectly private doesn`t mean I want something much worse and completely doxx my transaction flow to Nostr for the sake of convenience. Also, as a user, I was able to control whether I wanted to receive zaps on Nostr or not at all (by setting or not setting a Lightning address in my Nostr profile, or changing it whenever I wanted). But by adding this feature (on-chain zaps), anybody can send funds to me against my will.
I never used zaps for that reason. Nobody knows how much Monero I donated to people here con Nostr if any.
The trolling will really begin when people send Bitcoin from OFAC lists to known npubs and those with bad opsec and then start reporting it to agencies.
Just create a new oc wallet receive some oc zaps, every now and then make a swap oc-ln let it shake for a few weeks in your ln node over tor then swap ln-oc back.
Default avatar
Sosthene_ 4 days ago
Hi I'm one of silent payments implementers, don't hesitate to ping me if you want to have a chat and try to figure it out. Doing more address reuse is *not* acceptable at this point.
@Gzuuus @jb55 @cloud fodder @ChipTuner @Gigi @semisol @Enki @MichaelJ @Cody I'm actually kind of, sort of, low-key interested in on-chain _private_ zaps that don't suck and don't look like a government surveillance wet dream. Especially if clients were clever about it and used addresses from kind 10133 payment target events or w-tags on profiles (so, opt-in!) and recommended Lightning vs on-chain, depending upon the amount sent? Do we have a working group for that, to come up with a NIP for it, so that client devs like me can implement them? I don't know, if the tech is there, yet, but we could at least get a band together or something. Do any of you know of anyone working on this, that I didn't tag? Or does anyone want to just reply here and suggest themselves? 🙋🏻‍♂️ @Vitor Pamplona would you be interested in offering that as an alternative for your users, or even maybe as the default, if we got it to work?
Just a thought. Nostr feels like a natural complement to Silent Payments. The sender can wrap the txid in a NIP-17 encrypted event to notify the recipient, so they know exactly which transaction to verify locally with their scan key. Payments sent without a notification still need to be discovered through scanning, of course.
AlexAnarcho's avatar
AlexAnarcho 4 days ago
Monero addresses cannot be re-used. Bitcoin hinges on the user knowing what they do, which they dont.
Campy's avatar
Campy 4 days ago
Why would you ever want to do that?!
I mostly agree Vitor, but it depends on what you mean by "everything". A zap is a public record that one person made a payment to another person The question is whether the public record should also (implicitly or explicitly, it doesn't matter) point to the on-chain transaction That appears to be the real issue you all are discussing, and the issue would still exist even if each payment was to a different address Define "Noisy Payment" as a Silent Payment, but with a public event linking to the txid. Would that be a fix for onchain zaps, because it avoids address reuse; or equally harmful because the public can still see all the transactions?
The fact that "normie user dgaf" is exactly the reason why non-normie users should give a fuck and why devs shouldn't push harmful implementations, practices, or defaults.
We would just need someone with a large npub to kick off a working group thread by publishing a kind 30817 (you can do that from my client) event with a title like "Silent Payment Bitcoin Zaps" and a short text explaining what the goal is. The actual spec could be derived from the discussion or added in a fork and then merged back in. It would be the first Nostr Core spec written and developed on Nostr, @fiatjaf
It's a proof-of-concept, not a proper implementation. But it's pushing things in the right direction, as opposed to on-chain zaps.
I agree. But this path is obviously much harder, and most people tend to choose the easier route. I also have some ideas for deeper Nostr integration. Notifications could include the sender pubkey and event ID. I’m not sure yet how to pass that to wallets, maybe through QR codes or deep links. If the receiver is willing to make it public, they could publish something similar to a zap receipt event.
Akashi Hyogo's avatar
Akashi Hyogo 4 days ago
The issue starts when (normal) people inevitably connect these coins with their generational stacks either by wanting to zap sb or by moving their received zaps to cold storage.
weev's avatar
weev 4 days ago
On-chain privacy is not very hard. Pirate Chain (ARRR) has universal zk-Snarks, a technology that has been reliable for 14 years. Monero has universal ring signatures, a multi-decade-old idea invented by two of the guys whose initials are in RSA. These things are actually very easy to implement, and have been stably universally implemented on more useful blockchains, in the case of Monero, for 12 years now. Lightning offers no real privacy, nor fungibility. Nobody is actually using Lightning's onion routing, so there's no fucking traffic on the mix network. A mix network with no participants might as well be a straight tube. You aren't making smoothie if you only dump orange into your blender. It is just pulpy orange juice. Your "privacy" with Lightning is a complete illusion. And it's already further impacted Bitcoin fungibility. Got a Binance Japan account? Try to make a deposit with LN. You can't, because Japan's regulators do not like Lightning! You've got no fucking privacy, your mix network is fake and gay just like your retarded protocol, you don't end up with fungible currency at the end. On-chain privacy is the only way you get privacy. There is no privacy unless the privacy is universally implemented. With the ~$130M USD of real value dumped into Lightning, for virtually no fucking users on a protocol that wouldn't have scaled to accommodate any serious number of them anyways, we could have implemented on-chain privacy ten times over. Monero's upcoming FCMP++ upgrade is a thousand times more innovative and hard to implement than both zk-Snarks and ring signatures. I am sick of Lightning shills repeating the same tired lies over and over again. None of what you say is true, except #1, and that's only because Core is lazy and decadent and does not care about making Bitcoin actually useful as money, which would require fungibility (and privacy is a side effect of that). They only care about justifying yet another grift of venture capital on yet another feature that no significant number of people will ever even want to use.
@Anita Since you boosted/reposted this note, did you notice what is going on with onchain zaps recently here? Amethyst and Ditto have implemented these, and they use your nsec as a Bitcoin wallet, which causes address reuse with all its consequences.
weev's avatar
weev 4 days ago
Anyways, you should listen to Saylor on this issue:
Let's do it.. send a NIP on which way to do it that actually works. Right now a bunch of people are talking but nobody is doing shit. We need actual proposals/implementations from people that know what they are talking about.
I looked at Derick's on-chain zap address.. and the entire set of addresses associated with it. Including an address that has seen over 1 BTC in it's lifetime. on the first level 5 addresses were doxed. On the 2nd level it expands to this. I have no idea how you can think that this is something viable for zaps. That entire cluster of addresses is considered doxed. image
Well, since the user cannot opt out that option isn't given. People will receive unwanted on-chain zaps and from what I've seen so far even those who think they're Veteran Bitcoiners have already doxed addresses. (see my other comment). There is plenty of nostr users who haven't been around 2,,3 or 4 cycles and the self-doxing will be insane.
We could do it in such a way that receiving and sending in and out of Nostr is harder if that is the problem. So, once in, the money stays rotating between nostr keys in an identifiable way like what zaps do. Then in the end, it leaves via a mixing service for instance. Anyway, lots to work yet.
I once ran a service called nodeless, perhaps you remember, and when my users couldn't withdraw their money due to fees they didn't think it was awesome. But maybe bitcoin is dead and fees are low forever and who cares it's all moot anyway
weev's avatar
weev 4 days ago
I advise against this, as the feds specifically love to prosecute mixing services. As far as I can tell, if fungibility is not a property of your coin, then adding it is an overt act of criminal money laundering. Though this might be decided otherwise with Roman Sterlingov's upcoming appeal for allegedly running Bitcoin Fog, I don't know if that is going to work out. Because the community decided to fund Samourai, who had no intention of even going to trial, and gave them millions of dollars. Then they gave Sterlingov, the guy whose case will decide the law for all of us, 0.02 BTC. It is very blackpilling. Regardless there's Pirate Chain (ARRR) which has complete on-chain privacy thanks to universal zk-Snarks! As long as we are willing to let go of Bitcoin, we can have privacy on chain without custodial LN shenanigans and a completely broken user experience.
Address reuse is not only bad for the privacy of the whole network but also reused addresses will be an easy target for (in case they come) quantum computers as the public key has been exposed in a previous transaction. It’s already implemented? That I did not realize. I thought it’s a discussion for now.
Yes you probably can and if it's possibly it should be done right from the beginning. The current proposal (or implementation) is basically powerful metadata leakage and deterministic address derivation removes the user’s ability to compartmentalise identities. It may be a convenient approach UX-wise, but from an OPSEC perspective it’s pretty aggressive. Some users may not even realise they are creating a permanent public financial endpoint just by existing on the network. And this is before we even dive down the UTXO and consolidation rabbit hole. With the current approach Every public interaction potentially becomes chain-analysis metadata Every zap can help cluster identities Anyone can monitor balances, flows, spending timing, consolidation patterns Counterparties become graphable Future spending can leak wallet structure and habits Then, once the UTXO's get consolidated or moved it all turns into potential correlation points and if someone receives enough on-chain zaps and if fees evolve the entire thing becomes economically unsustainable.
It is actually always an issue since if you get these onchain zaps, you are in possession of these coins and your nsec is the private key to these coins. Nostr keys are generated the same way Bitcoin Taproot addresses are generated. Amd everyone can see that you have these coins and how you spend them.
I feel like it's worth mentioning that discussions on "it shouldn't be built because it can be used badly" is rarely a convincing argument. Vitor is right though, so long as we hold a secret key tied to a _public_ key it could always be used by some blockchain or whatever crypto technology to "send" money as we know it's just an identifier signed by the sender. None of us can stop that. Address reuse is bad for privacy yes. I think we'd be better off building a case for deniability, when we simply don't touch the funds. We can't control what others do, if they send funds to the address, which is public, the utxoset can be scanned. It can be public knowledge that I deny the funds, by not moving them. I'd think privacy is just as bad for senders in this regard.
So as far as I understand this. "Nostr" protocol aside. The secret key holder (as usual) is the one that must derive the receiving address correct? So the receiver must have some service "online" for the sender to request like we do with LNUL. The rest is communication ceremony. We should be able to keep it away from the nsec even further though right? I don't see any reason to have it constantly local to the nsec (part of the bunker). Could we consider a system that offers a simple http endpoint that responds with a fresh address. We already have lnurl servers running we could make this work also. Has a different surface area but needs no access to any secret keys, no encryption no leakage etc.
> I don't see any reason to have it constantly local to the nsec (part of the bunker). * Used for encryption yes I know. I mean another solution allowing us to eliminate usage of secret keys entirely for the ceremony.
Default avatar
NonMetalCoin 4 days ago
Raising friction for adversaries is good. Friction incentivizes innovation. This does not mean raising friction is foolish.
xenonsky's avatar
xenonsky 3 days ago
very stupid to build this surveillance future
I am one of those retards. Should I not zap? I also don't fully understand address reusability. If I buy Bitcoin should I make a new address each time?
Whenever wallet empty then just dispose it , produce the new one . Make sure you empty it first . I am agreed that devs shouldn’t push harm implementation.
- yes you should zap - yes you should buy btc and withdraw it to a new address every time - never use same address again (if you use sparrow wallet it automatically prevents this)
Analogue Dog's avatar
Analogue Dog 3 days ago
There are exceptions. Such as Bolt 12, which provides static payment addresses, but opaque transactions and balances.