-
Notifications
You must be signed in to change notification settings - Fork 28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for KeySend (a.k.a. Sphinx Send) #33
Comments
Key send still feels a little "wild west" to me to fully know exactly what I'd be building, and how the UX would play out. Joule primarily interacts with web applications that hypothetically have a server involved to facilitate invoice generation. Typically the invoice generation and payment goes hand-in-hand with the authentication to enforce that the user paid for their content. How does this work with podcasts and preventing people from streaming if they haven't paid? Or is this merely for tipping? |
Hello @wbobeirne, thanks for your quick response. Yes, it is for tipping. I don't know how the UX would be, I have not tried the existing providers yet (just found out about WebLN today). |
That's right. We're not using it as a paywall. We're using it as a way for listeners to choose to send a certain amount of sats per minute to the podcast creator as they listen. It works well, and has been fairly solid so far. I'm receiving sats on my voltage LND node each minute when someone listens to our show on the Sphinx app. |
@wbobeirne now that you have more information on the use case, do you see it being part of WebLN? |
Hey @wbobeirne , just checking if you have any new thoughts on this topic. |
@dellagustin are you interested in working together on a proposal for this? I also think it is time for an webln update and maybe a proposal for a v1. :) |
Would love to see what a proposed API would look like, but given that it's a different set of arguments, not all implementations of WebLN will necessarily support it out of the box, and not all nodes will know how to send / receive them, I'm a little hesitant to try to overload |
for me webln describes the interface how lightning apps and user's wallets communicate. In my point of view WebLN specifies how the communication is done and not necessarily limits what can be communicated. |
Ha, so I was looking around at Sphinx's codebas and noticed they basically copy the interface for WebLN with their sphinx bridge: https://github.com/stakwork/sphinx-bridge. And they implemented a separate
Totally agree! However those methods are one-off separate methods that you either do or do not support, full-stop. If keysend were just a part of But I fully intended for certain wallets not to support certain features, that's why I standardized the |
yes, backwards compatibility must be a priority. (if I was just wondering how we can keep the spec flexible enough that we do not have to define new methods for all potential features. (or we should be quick in standardizing new features - the podcastindex example shows that the implementation there is held back by the missing support for the not-so-new-anymore keysend feature) thinking out loud: In an extension I am currently working on I add support to connect a lnbits wallet. And lnbits does not support |
This is my preference, WebLN should ideally behave more like W3 / BIPs / BOLTs in that people can feel free to draft specs and work on implementations quickly and out in the wild, with some understanding of what "stage" a feature is in. I think defining new methods is a lot more straight-forward for developers than having uncertain behavior when calling a single method.
I think we should roll with this the way browsers do; the typing assumes the feature is available in all implementations once the spec for the method is accepted, and it's up to the developer to account for missing features in various implementations. The TypeScript types can remain assuming the features exist, and developers can either throw caution to the wind and assume the methods are available, or do
Haha no kidding, had I had the foresight that there'd be many alternative payment methods in Lightning, I'd have been more specific with the names! All that said, I think given the Sphinx team has already gotten some momentum on |
One reason I've held off on this is that I'm aware that LND is focusing on AMP instead of keysend, and plans to do a lot of changes around it, see lightningnetwork/lnd#5190 (comment) and other notes like this in their GitHub. Perhaps we should avoid attaching to the concept of a "keysend" and instead come up with generic naming that just means payment without invoice. Spontaneous payment, push payment, etc. |
Hey all, I have been out for some time, finally I could read the full thread.
I am fine with this, I also agree that checking if a method or property exists is kind of a standard for backwards compatible web development.
I see two options here,
One question that comes to mind here: how does the implementation of WebLN decide what to send, if it implements keysend now, how does it decide when to switch to spontaneous AMPs? does it try one and if it fails, tries the other as a fallback? References:
|
Hello All, any plans to add support for key send to the spec in the near future?
I am asking this due to the work being done at podcastindex.org to monetize podcasts by streaming sats using lightning key send transfers.
References
podcast:value
The text was updated successfully, but these errors were encountered: