Introducing Ditto Self Sovereign Zaps:
How to Accept Zaps on Nostr (99 Easy Steps)
1. Buy computer parts because pre-builts are fiat
2. Assemble computer (don't forget thermal paste this time)
3. Install Ubuntu Server because you're not a degenerate
4. sudo apt update && sudo apt upgrade (pray)
5. Configure static IP on your router
6. Forward port 8333 (call ISP if CGNAT, they'll say no, cry)
7. Install Bitcoin Core from source because you verify everything
8. Wait 3 days for IBD (initial blockchain download, not insomnia)
9. bitcoin-cli getblockcount (compare to mempool.space, panic if different)
10. Wait 3 more days
11. Create bitcoin.conf with txindex=1 because you'll need it later
12. Install Tor because privacy isn't just for criminals Karen
13. Configure Bitcoin Core to use Tor hidden service
14. Install LND (Lightning Network Daemon)
15. Create lnd.conf with bitcoind backend
16. Generate wallet seed (write it down, NOT in a .txt file on your desktop)
17. Wait for LND to sync (another day of your life, gone)
18. lncli getinfo — confirm channels = 0, feel empty inside
19. Send BTC to your LND wallet on-chain (pay $4 in fees)
20. Open your first Lightning channel (pay another $2 in fees)
21. Channel is pending. Wait 6 blocks. Go outside. Touch grass.
22. Channel is open! You have 0 inbound liquidity. Cool.
23. Open MORE channels with balanced liquidity
24. Buy inbound liquidity from a peer because of course that's a thing
25. Install RTL (Ride the Lightning) to manage your node
26. Configure RTL with LND macaroons
27. Generate a Tor hidden service for RTL
28. Now install LNURL
29. Clone lnurl-poole repo from GitHub
30. npm install (it works first try, you lucky bastard)
31. Configure LNURL with LND backend
32. Create LNURL-pay endpoint
33. Set up Nginx reverse proxy
34. Install Certbot for SSL (Let's Encrypt, not your Let's Not)
35. Configure DNS records (A record, AAAA record, TXT because why not)
36. Wait for DNS propagation (1-48 hours, spin the wheel)
37. Test LNURL endpoint (it fails)
38. Debug for 2 hours
39. It was a typo in the config
40. Test again — it works!
41. Now install Nostr Wallet Connect (NWC)
42. Clone nwc-payserver or use Alby's NWC implementation
43. Configure NWC to connect to your LND node
44. Generate NWC connection string (this is the magic string)
45. Format it as nostr+walletconnect://...
46. Copy the string
47. Open your Nostr client (Damus, Amethyst, or whatever)
48. Settings → Wallet → Connect Wallet
49. Paste the string
50. It doesn't work
51. Check LND logs
52. Check NWC logs
53. Check firewall rules
54. The port was closed. Open it.
55. Try again
56. It works!
57. Post a note on Nostr
58. Someone zaps you 21 sats
59. You cry tears of joy
60. The lightning invoice settles
61. Check your balance — 21 sats!
62. Channel management: rebalance because all your liquidity went one direction
63. Install Balance of Satoshis for rebalancing
64. Run bos rebalance and pay more in fees than the zap was worth
65. Install HTLC insurance (this is made up but you'd believe it by now)
66. Watch your node 24/7 like a newborn child
67. Set up monitoring with Prometheus + Grafana
68. Configure alerts for channel closures
69. Set up backup script for channel state
70. Test backup restore on another machine (you won't, but you should)
71. Update Bitcoin Core (compile from source again, 45 minutes)
72. Update LND (another 20 minutes)
73. Pray the updates don't break anything
74. They broke something
75. Roll back, try again
76. Successfully updated
77. Someone zaps you 1000 sats!
78. You made $0.77!!!
79. Calculate ROI on the $500 computer, $10/month electricity, 40 hours of setup
80. At this rate you'll break even in 7 years
81. Worth it
82. Write a shitpost about the experience
83. Get zapped for the shitpost
84. 2100 sats
85. NOW we're talking
86. Configure auto-rebalance cron job
87. Set up watchtower for backup channel monitoring
88. Install charge-lnd for automated fee management
89. Realize you've become a full-time Lightning Network administrator
90. Quit your job
91. Start a Lightning node management consulting business
92. Charge 10,000 sats/month per node
93. Get 3 clients
94. 30,000 sats/month revenue
95. That's $23
96. But you're your own boss
97. And you can accept zaps
98. Copy paste one string
99. Satoshi's vision achieved
Or you know, use Spark.
View quoted note →
Login to reply
Replies (48)
Audio version available if the thread wants it — 750 sats from one or many, and everyone gets to listen.
'Pray' should be its own step. Otherwise, pure gold.
this is the way
Each step comes with an implied prayer.
I mean, yeah, I do this, but the dude and his gf beside me using a metal detector to look for shit at the lake probably won't do that. I didn't ask though. I just walked past and continued to shitpost like a true Nostrich.
No one said the right way was the easy way. It never is.
Darth be like, “Yeah, that’s exactly how you should do it. Anything else is shitcoining, and you’re stupid!”
So far I haven't seen an app force a Spark wallet implementation on users. There's always a choice. You can choose the hard way.
I'm sure somehow this note summoned him. He'll be here to comment shortly 🤣
I never said anyone was forcing it, just that the easy decision is not always the right decision.
You forgot steps negative 10 through 0, which involve bringing your own sand up from the beach and making a fab and making chips so you can have a computer to self-host on.
The right decision is different per person though. What's right for you might not be right for me or a random newbie. Not all of us fit in the same box. This is why I love having a variety of solutions.
My nodes been running for 6 years now. I'm not shutting that fucker off anytime soon.
Those steps are for the true hardcore maximalists.
😂
Or npub.cash
Or just ZEUS v13
Let me clarify. The easy decision is the less sovereign one. The easy solution might be right for a newbie, but there is no denying which one gives the user more agency.
Would need to add some steps about zaps failing because of the service not running or hodl invoices timing out and using an LNURL domain you don't control. 🫂
Shitpost aside, love Zeus. Use it every day.
When has the service ever had downtime?
Perhaps but risk may not be worth the potential reward for newbies. There are always trade offs no matter what, man.
I've been using npub.cash since November 1st. Works well for the most part. Sometime my zaps don't send.
I mean the system service. App running to check for invoices.
You should implement my Wisp wallet design in Ditto. I won’t do it because my PRs always get ignored.
I have not used Zeus Pay LNURL to a node in the phone since you launched this feature and service so I could be incorrect if there's not still potential for failure of zaps unless you're opening the app and checking throughout the day.
Anyone tried Spark for anything at scale?
I have a branch out there for Spark, just waiting on a yay or nay.
As for contributions there's now a contributing.md file.
Like for live events or concerts...
😂😂😂
BTW, has any contribution made through the “Edit with Shakespeare” link on the footer ever made it through?
Mofos follow tutorials like that to do anything on ubuntu/arch and still have the audacity to say they won’t use nixOS because they don’t want to hack their distro using a text file because it’s too complex.
I'd say it's not really meant for contributing to Ditto, it's more about editing and customizing Ditto into your own app.
Gotcha. Well I’ll have my LLM read the contributions doc and decide if it’s worth the effort to re-submit all my closed MRs. 😉
There are no solutions. Only tradeoffs. Don't mistake my criticism as an opinion that they shouldn't exist. .ore options is better.
Nothing else available offers an instant-on embedded solution in apps. There’s a reason why clients are migrating to this, and most will offer it as the primary option before long.
Hint: The target audience isn’t existing bitcoiners.


Fountain: Podcasts & Music
Citadel Dispatch • CD200: UTXO - WISP - BETTER NOSTR • Listen on Fountain
UTXO The Webmaster joins to discuss his new android nostr client Wisp, spark wallet integration, encrypted nsec seed backups, and his controversial...
Come to our workshop on Wednesday and find out
Yeah idk what spark did
It’s better if an app uses the Breez SDK to implement spark because that enables some privacy and quality of life features by default
Add another zero or two to that power bill as well XD
Or you don't know... because you are too lazy, use Zeus with NWC
Ecash like minibits beats spark
Your lack of knowledge about how to use Zeus is DISTURBING
Yes, anybody that uses Spark is a moron and a traitor.
Unless you want to get locked in a cage, don't forget to calculate your cost basis for every transaction and timely remit estimated withholdings to the IRS and your state and local tax authorities!
On brand!

Pain is real!
I'm making my CPUs from mechanical relays, not you fancy shamancy silica...
Wow, this is epic! 🚀 I love the dedication and all the steps you broke down. From zero to zap in no time! Would love to hear your thoughts on using Spark too! 🌟 #Bitcoin #Nostr