On Ditto every person has a zap button now. It uses your Nostr key as a Bitcoin wallet. No additional setup required. No more whining that people don't have an address configured or that Lightning doesn't work. It just works. Isn't this what Nostr is?

Replies (121)

I'm still working on adding signer support. NIP-07 needs a window.nostr.signPsbt and NIP-46 needs a sign_psbt method. It works correctly with nsec login. Don't judge it yet unless you sign in with nsec.
Omg… Doesn't this go against every privacy best practice we have been trying to teach users for years? Address reuse is bad. Reusing an address that is at the same time your identity is even worse. It might still be useful if you want to be open about how much money your public key holds and you’re fine with exposing any movement of that money, but the trade‑offs are too much, imho. Another downside is that it makes targeted attacks on users more attractive, maybe your public key holds enough BTC for someone to justify an attack on you... No bueno
That's not the problem. If someone suddenly sends 10 BTC to your public key, you become a target. There was a reason this hasn't been promoted before. It's not new neither every public key has been a btc address since ever. If you think creating a beautiful UI/UX around this is fine, that's your choice, but I believe it's dangerous.
Mainly because the fees will bite the users if this gets traction. If this succeeds, it will fail 🙂 Does it support the zap protocol natively? e.g. when you send the onchain transaction, does it also blast nostr event? Will this fail for the users that currently already have lightning address set from a provider that doesn't have solution for onchain? What about using Silent Payments to make the onchain footprint private?
If you understand Taproot, that's basically it. From Taproot's standpoint, your Nostr pubkey is the "internal pubkey", then everything else is just taproot. You can get a bc1 address from any Nostr pubkey to send, and if you've received you can spend. Also, I introduced a kind 8333 event for "on-chain zap", which is basically just an event with the target event ID and the Bitcoin transaction ID. That's it. Otherwise it's just a Bitcoin wallet.
Just curious, serious question because this is cool: is there a floor-limit for the size of the zaps or is it just for funsies and the zaps just go to miners? Either way it’s fun.
1) I don't like this for different reasons. 2) however, no one is going to send 10 bitcoin to a hot public wallet. And if someone does send me, hell, even 1 bitcoin, immediately I'll transfer it to a cold wallet. The point of this wallet is a spending wallet for tips/rewards/v4v. Think of it like your checking account. It's not your savings account. 3) because of this intent, I don't think it's a big deal as you laid out. 4) most clients already show zaps as public information and zaps can be faked. We have one user that's been zapped 22M bitcoin over Lightning.
It’s okay if you don’t like my criticism, no problem with that. But the thing is, your identity can accumulate BTC over time. Nostr identities are supposed to be long term, right? LN Zaps are different, they don’t have the same heuristics, and as you said they can be faked, on chain they cannot. I mean, you can fake the Nostr event you’re creating, but it is truly verifiable by anyone at any time. You could also move the funds to a cold wallet, but that doesn’t change the fact that you are in possession of that BTC. We already know that on chain transactions are very traceable, and if you really want to break those heuristics you need to learn and apply certain techniques, which the majority of users aren’t going to bother with. Aside from all that, it’s just very bad practice... Also, for your use case tips, rewards, v4v, the amounts are usually small, which makes on‑chain transfers unattractive because of the fees, and dust limits. Just to be clear, I didn’t mean to start a discussion. I just wanted to express my concerns and hope other users can understand the implications that seems you guys are underestimating.
Any way to verify transaction? its possible to verify that receiving address but couldn't anyone claim this zap? Probably still better verifiability than current LN zaps because you can at least see the transaction
Yes. But again tracking a few dollars back and forth across the network isn't worth much when there are people sending millions of dollars to track.
It would just be a small thing to support the event notification, no need for every client to support a full wallet, same was true for nutzaps. This at least also solves the no wallet set for new Nostr users so still a UX win 🏆.
absolutely. and we should just treat it as monetary rails for them. if they want to learn more, they can. we need normie mode for the normies.
That's great. I think the bigger concern is making sure the recipient is aware they've received something. So unless you know the person you're sending to is a Ditto user, people need to be aware that they should probably send a DM to the user so they know they received something.
Nice 👍 I built a leaderboard that shows who has the most sats on their name. Also acts as a signal if your keys are compromised
Garnet was a branch of Amethyst and added Monero zaps in addition to Bitcoin zaps. It was glorious for the few months that it lasted.
Maybe. I don't know. I don't know enough about Lightning, but the guys I trust most don't seem to think it's a good idea. I'll defer to their judgement. How can I opt out, so that nobody sends zaps there?
I don't think it's a good idea either and I don't see myself using it, but I'm presenting a counterargument to see what others think because I'm always open to have my mind changed.
Not sure this is needed and privacy seems non existent. Like almost a way to dox yourself financially depending how you handle your funds.
nostr may come alive if there's drama elsewhere in social media land, as eventually there always is somewhere or other. Musk blowing up Twitter was the last such drama, but nostr wasn't ready for it then, but Mastodon was and BlueSky almost was. You will be ready for the next such explosion though.
For silent payments will you tweak the receiver pubkey and send the tweak in an encrypted message to them? I was thinking about it.
You are right that Lightning is fundamentally broken and a horrible system to build on top of.
JD's avatar
JD 2 months ago
🤫 keep the mempool fees low
JD's avatar
JD 2 months ago
😒🫣
weev's avatar
weev 2 months ago
I think Lightning is kind of trash and I absolutely think Bitcoin should be a medium of exchange, onchain. But the reality is that without privacy, someone is going to zap someone for a funny meme or a good post and they’re going to be on a list of people financial authorities don’t like because they interacted financially with another person financial authorities don’t like. Then they’re going to find out their exchange accounts are closed and they can’t buy crypto anymore. They might even find that their bank kills their bank account because the resulting SAR makes their retail bank nervous. This has already happened with on-chain Bitcoin transactions.
Scoundrel's avatar
Scoundrel 2 months ago
How do I disable this feature? I don't want to be zapped. I want people who try to zap me to have to rethink their choices. Is this possible on Ditto?
Yeah, that's why nobody has encouraged this, before. People will be zapping into the void. Wallet addresses should be intentional.
Obviously, 10 BTC was a hypothetical “high” amount, just to make my point. In reality, a much lower amount would be sufficient for someone to justify an attack on you, or have an authority behind them, and screw you up for tax or regulatory reasons. There is a reason why address reuse is discouraged, yet it seems we have now forgotten that and ended up with the worst version of it. Address reuse tied to your (in some cases) long‑term identity, like KYC exchange, but this time making it visible to everyone. Yes, you can do anything with it, pass it along, spend it, etc. But that doesn’t invalidate the point. A side note: the proposed use case, using it for low amounts, tipping, and so on, is a bad design, because it will be very annoying and costly to move a large number of tiny UTXOs.
For me, this is quick funzies/neat and other project and business usecases, is why i implemented this on my stuff, and I agree it's important to mention to the users the public-ness of this and its potential implications, however, this is also a 'step 1' of a two-stop goal, for me at least, where the other step is 'nostr silent payments (nsp)', so there'd be an option to send to a random address controlled by the receiver.
pico4's avatar
pico4 2 months ago
As many people say there might be an address reuse problem, added to the transaction fees and speed inherent in btc L1. Plus, having a btc address tied to your nsec serves as an additional incentive for someone to try to steal your nostr keys. This is an easy and effective implementation, but I really like the concept of having my social keys separated from my money keys. I can swap any of them separately.
I'm not saying it's not a cool feature of your client. just that its obviously not true that publishing transactions publicly is "a pro, not a con."
Constant's avatar
Constant 2 months ago
If you understand Taproot, that's basically it. From Taproot's standpoint, your Nostr pubkey is the "internal pubkey", then everything else is just taproot. You can get a bc1 address from any Nostr pubkey to send, and if you've received you can spend. Also, I introduced a kind 8333 event for "on-chain zap", which is basically just an event with the target event ID and the Bitcoin transaction ID. That's it. Otherwise it's just a Bitcoin wallet.
Constant's avatar
Constant 2 months ago
If you understand Taproot, that's basically it. From Taproot's standpoint, your Nostr pubkey is the "internal pubkey", then everything else is just taproot. You can get a bc1 address from any Nostr pubkey to send, and if you've received you can spend. Also, I introduced a kind 8333 event for "on-chain zap", which is basically just an event with the target event ID and the Bitcoin transaction ID. That's it. Otherwise it's just a Bitcoin wallet.
Constant's avatar
Constant 2 months ago
If you understand Taproot, that's basically it. From Taproot's standpoint, your Nostr pubkey is the "internal pubkey", then everything else is just taproot. You can get a bc1 address from any Nostr pubkey to send, and if you've received you can spend. Also, I introduced a kind 8333 event for "on-chain zap", which is basically just an event with the target event ID and the Bitcoin transaction ID. That's it. Otherwise it's just a Bitcoin wallet.
#2 image 1. Divine is getting popular day by day 😍 View quoted note → View quoted note → 2. Paul met an Iranian freedom fighter 👇🏻 View quoted note → 3. Ivy is on Divine now 😍 View quoted note → 4. Let’s enjoy some music 🎧 View quoted note → View quoted note → 5. A lady nostrich makes an effort to promote her book 📗 View quoted note → 6. A physician onboards to Nostr 👨🏻‍⚕️ View quoted note → 7. A great opportunity for the vendors who accept Bitcoin 🤩 View quoted note → 8. As always, an incentive from Derek 💪🏻 View quoted note → 9. A YouTube kids alternative? 😱 View quoted note → 10. A very self-satisfied wine businessman 🍷 View quoted note → 11. This is a really good news from Ditto 🥳 View quoted note → #community_nostr_recap
I still like it for various reasons … but in essence it can just exist for onboarding and teach users what to do with funds. Also I’m slowly becoming a little aware that you’ll have to rotate key anyway at some point. But I echo your privacy and security concerns 🤘
I think most users would have fought for public zaps anyway, even if they weren't an option. Zaps aren't money, they're a social signal.
Hey, the realities that @weev just pointed out just now, are real. I get the satire, but don't mess around, even though you might find it funny. Take a breath, and come back and think about this straight. Be well.