DerGigi

DerGigi Fanpage

Lightning Prisms

Thoughts on the automatic splitting of sat flows.

Gigi

March 11, 2023 · 7 min read

One aspect that is still massively under-utilized is the programmability of Bitcoin. While simple things like scheduled payments and automated payment splits do exist, we are undoubtedly still trapped in conventional thinking when it comes to the flow of sats.

I'd like to share a simple idea that was shared with me a couple of months ago in the hopes that it will spread far and wide and, in the best case, that someone will just go ahead and implement it. (Or a better version of it.)

Here is the idea:

All credit to Mr. Kukks, who is now officially out of time[^fn-time-up] to implement it himself.

[^fn-time-up]: I promised Kukks not to talk about it for a couple of weeks so he could go ahead and implement it, but he was preoccupied with improving everyone's privacy, which is very important, too, of course! In any case, I'm sorry, Kukks, but your time is up!

Lightning Prisms

A Lightning Prism is a construct that allows for "lightning address value split workflows," to quote the originator.

Here's the gist of it:

  • A prism is identified by a lightning address (or similar)
  • A prism has one or multiple recipients
  • Another prism can be one of the recipients
  • Splits are defined programmatically

This simple construct allows for all kinds of use cases and can be implemented on the application layer without any changes to Bitcoin or Lightning.

One obvious use case is value-splits for blog posts and similar long-form writing. Imagine if every blog post (or book chapter) had its own Lightning address, splitting value to author, editor, illustrator, and proof-readers automatically.

The concept of these value splits already exists in Podcasting 2.0, where it is widely applied to podcasts and episodes. One could argue that having a separate identifier for the split construct is the natural evolution of these payment splits, as it is easier to reason about them and chain them together.

Another obvious use case is the splitting of nostr zaps. Imagine that every "quote-tweet" that gets zapped results in an automated payment split, passing on 50% (or whatever the user has configured) to the original note. Or imagine a prism that's created on-the-fly, splitting zaps equally for everyone tagged in a note.

Because payments are forwarded, every prism acts as a proxy of sorts. This can be useful for organizations and individuals alike, as your payment identifier remains the same even if your underlying infrastructure or wallet provider changes.

Issues & Improvements

There are two main issues: fees and privacy. One has to account for fees to pay for the splitting and forwarding, but there's also the issue that lightning addresses are IP-based, which has certain privacy implications. We could do LNURL over nostr—again, shout-out to Kukks—which brings up the following question: Are Lightning Addresses the right level of abstraction for Lightning Prisms?

In the end, we don't want to send sats to addresses, but to people. If nostr continues to catch on, it might turn itself into the global address book for these kinds of things, i.e., the go-to place to look up payment information of people, organizations, and other entities. In the future, a prism might have multiple nprofile or npub identifiers as targets, behind which the actual payment information lies.

In any case, at this point in time, I'm not too terribly concerned about implementation details. I'm concerned with a lack of imagination, which is what this post is supposed to address.

Speaking of imagination: why don't we have any spending wallets that automatically move sats to a different wallet above a certain threshold? I'm more than happy to have some lunch money in a custodial wallet, but once it's worth three months of rent, I'm not as comfortable anymore. Why can't the wallet automatically send all excess sats to my fully self-sovereign lightning address once it's more than a dinner's worth of sats? Or do a loop-out once a month to move the sats to cold storage?

Anyway, I digress.

One improvement I'd love to see is to provide a way to make Lightning Prisms transparent. In the best case, users should have a way to see how payments are split that is both easy to understand and verify. One possibility would be to broadcast a NIP-33 parameterized replaceable event every time a prism is created or updated. Of course, depending on the use case, it might make sense to keep the final destination(s) hidden from public view.

I'm sure there are more issues and plenty of other improvements to be had. But as always, perfect is the enemy of the good, so let's talk about practical solutions that can be implemented and used right now.

Implementation

Prisms based on lightning addresses can be built today without much effort. You can even build this yourself without any programming experience using two LNbits extensions: scrub & split. Add satdress on top of it all to give every wallet its own lightning address, and voilà, you've got yourself a Lightning Prism! You can even build a nice interface as a wrapper around it, as all of the above can be created programmatically with simple API calls.

I did all that (minus the "build a nice interface as a wrapper around it") just to play around with the idea. Granted, it's a bit hacky and probably not the most stable or elegant solution, but it kinda works, and it can be used today.

The blogpost@satprism.com address that is shown above is a working example.[^fn-more] It will split any payments 50/50 to Kukks and myself, forwarding the splits to our respective self-sovereign lightning addresses which are provided by our BTCPay Server instances.

[^fn-more]: All prisms shown in this post are working examples: nostr-devs-eat-handsomely@satprism.com does an equal split to all devs mentioned in the note by Quiet Warrior, and dergigi-platobot@satprism.com is a split between the robot and myself. I also took the liberty to create rhr@satprism.com, which does a split for Marty and Matt, and there's also einundzwanzig@satprism.com for the German-speaking crew.

[^fn-interface]: I created the example prisms manually, so I'm afraid until someone builds a nice interface that allows users to create these themselves, there won't be an explosion of prisms. I like creating a gazillion lnbits wallets as much as the next guy, but clicking all the buttons to create the actual splits and forwards gets tiresome after a while.

I imagine multiple services being created that implement this properly, charging a small fee for providing said service. (As mentioned above, some sort of fee will be required to pay for routing fees, as payments are forwarded to external addresses.)

My hope is that these kinds of ideas and novel constructs become more prevalent as zaps and similar V4V payments—as well as Lightning in general—become more prevalent. Of course, in the best case, we will have these things natively integrated at the protocol level, but I see no reason why we shouldn't do a little experimentation with what we have today, even if the solutions are imperfect. Until Bolt12 and similar are widespread, hacking something together that just works is probably not the worst idea.[^fn-interface]

Final Thoughts

I expect this idea to find widespread adoption among writers and other content creators, just like the idea of "streaming sats"—and the splits of these value streams—found wide adoption among podcasters.

Special-purpose nostr clients for various content types are already in the works, with SubStack- and Medium-like interfaces like BlogStack and Habla popping up left and right.

What's still missing is attaching payment information to individual events (as opposed to user profiles) in order for each long-form content to have its own payment information. Maybe it's as easy as extending the NIP-23 metadata, or maybe it would make sense to have this kind of metadata for other event kinds too.

We'll figure it out, and by "we," I actually mean you guys: the developers that sit down to spec out and build stuff.

I'll be cheering you on while I shitpost on nostr.


This article first appeared on dergigi.com.

1

Written by

Gigi

Not doing DMs. Aspiring Saunameister.

dergigi.com

Comments (1)

Sir Libre · Oct 16, 2025

This can put you at risk with legal regulators regarding money changing laws and other such nonsense. Or you can just lobby the wallet providers to use keysend. Because it just works. It's: part of the lightning spec peer to peer difficult to censor private not a hack workaround like lnaddress requires very few network calls, therefore battery friendly supports TLV records And more. I really don't know why you are all using such a convoluted system like lnaddress, It's a hot mess. Alby, Fountain, ZBD, and Zeus all support keysend using NWC @npub1yvgrrzf…6pv9 made a similar splitting system from scratch that worked rather well called "The Split Box" but there are real issues with handling other people's money. When I send a boostagram it goes directly from my wallet to @npub14c7ksq2…l5l2 wallet. From my node to TJ's node, there is nothing more beautiful than that! Plus TJ also receives ton of useful data such as what song I was listening to, at what time during the song did I send my boostagram, How much was the original amount (before splits) of my boostagram and tons more through the TLV records. Not to mention since he's running his own node he can use Helipad to easily see the boostagrams AND generate reports in CSV format. https://github.com/Podcastinde…/helipad Image Helipad can be used to fire off webhooks to do all kinds of cool stuff like lighting disco balls and TTS'ing boostagrams during live shows or feeding an IRC bot that displays boostagrams to the chat room. All this functionality is provided by using the lightning protocol directly through un-censorable keysend. Image Putting a third party between the user and the artist is a very bad idea for many, many reasons. But what do I know, I've only been receiving boostagrams via keysend and reading them to my audience for 2 years.