-
Notifications
You must be signed in to change notification settings - Fork 491
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
Asymmetric features #885
Comments
where is the line drawn on pure core LN protocol and LN application layer for me pure core LN should not meddle with what application layer need implement anyway and can do so without extra cruft at pure core LN or maybe i did not understand where the line is drawn / should be drawn ... |
@lndhub-admin I think this is completely orthogonal to the problem? The feature chosen is just here to illustrate my point. |
wallet(LN) need be connected to the LN be able send / receive today a flapping node is not a node = a wallet offline is not a node = wallets are not nodes. having "pure core LN protocol" deal with that is to make a capable channel construct, meaning LN application layer has to be able service the above scenario that some do today ! where do we think email would be today if i had to be present to receive when sender send ! using a construct like a add to the trampoline concept with the concepts of courier and post-box that would also have additional benefits when comes to privacy but in this specific use case allow for a deferred send / receive, allowing devices when inactive have presence as active by proxy and by channel Que be serviced or have service channel return request after set time-out (1D / 7D). a wallet connects and open to a trampolineEX(tended) channel that forwards a pay_req and returns a preimage to wallet, in-turn if trampolineEX fails in settling pay_req at once it now have the amt in pay_req and retries settle until receives a preimage from receiver, alternatively time-out and balance back amt in pay_req to channel of initiating connected wallet. that would have above case be in-band LN-Native or it is even possible today make same as a application out-of-band service deliver same functionality without dependencies OS notification services. -- how do You do that ? I do not know ! but to have "pure core LN protocol" deal with application services out-of-band is <&*("/&%€"9> |
There are a lot of thing I don't understand in your answer. What I want to enable are asymmetrical features, where one node uses a service from another node without providing this service himself. It doesn't matter whether it's a wallet or a server node, this is something that may be beneficial in all cases. For example nodes on raspberry pis may want to leverage #881 which is an asymmetrical feature. Please just forget about wallet or no wallet (or the specific example I gave) and just focus on the abstract proposal. |
You say You do not understand and follow up with i missed the point ... If You did not understand how can You say i missed the point ... I might very well missed the point and Please both tell me what You did not understand and what i should understand. A node can ask a node for service ? that node might have not have ? and if my node do not have a carwash my node should still be able use Your carwash ? clear as mud . where is the dictionary for services and how would nodes find and interpret them M2M. :edit: N2N |
You're talking about wallet vs node and specific features and application layer vs core layer...all that has nothing to do with the proposal and is completely derailing the conversation. Please forget about the concrete example that I mentioned and focus on the high-level proposal. Some features are inherently asymmetrical (for example #881), where there is a "client" and a "provider". The goal of this issue is to discuss how that can be enabled. |
In the issue You use a model and in a answer using that same model is then derailing the issue ? |
"I support the client side of this protocol and I only want to connect to nodes that support the provider side of this protocol". so graph could have feature announced and client then filters out ? |
That's not sufficient. You would of course do that for the first connection. One downside though if you stop connecting to peers who turn off the feature is that you don't have the opportunity to do a clean |
well filter announcements - probe for active - then use or goto10 |
No, that doesn't solve the following connections once you have a channel. |
"But imagine you're connected, everything goes well, and then at some point the provider turns off the feature." this is the nature of how YOU built the channels in LN . peers comes and goes - maybe peers should have backup proxys fallback redundancy where a fellow peer takes over when flapping ... impossible with today's undocumented protocol. anyhow do not build in services outside of Your application that You need be up and stable = how come we should now build in services to a decentralized graph we know changes . in a model of Yours have a storage for channel backups is bad . since peer might dissapeer (<-- hint) . backup of channels a node operator has to make inhouse ! to secure place. so what is use case that keysend as communication could not cover here ... |
After discussing it with @rustyrussell, he made me realize that we can actually interpret the existing spec in a way that makes that work (fortunately, present Rusty is at least as smart as past Rusty!). When we have a
The client peer would set If clients want to ensure they only connect to providers who have activated that service, they should set
When the client receives a remote peer's
We simply need to clarify this common pattern of |
Our feature bits mechanism works well for symmetric features (where both peers play the same role) but not so well for asymmetric features (where there is a client and a service provider). Here is a hypothetical example to illustrate that. Any similarity to existing wallet features is entirely coincidental. 😄 🦅
Alice has a mobile lightning wallet, that can be woken up via push notifications.
Bob runs a lightning node that can send push notifications to mobile wallets to wake them up on important events (e.g. incoming htlcs).
We can't use a single feature bit to model that, because what Alice supports is actually "I can be woken up via push notifications", but she can't send push notifications to other nodes (and similarly, Bob only supports waking up other nodes, not receiving push notifications).
So we must use two feature bits:
wake_me_up_plz
andi_say_wake_up
. Alice activateswake_me_up_plz
, Bob activatesi_say_wake_up
and it's now clear what part of the protocol each node can handle. But how does Alice require her peers to supporti_say_wake_up
? She can't turn on the feature with the mandatory bit because then her peers would be confused and think she can wake up other devices. I see two potential solutions:optional
andmandatory
bits for asymmetric feature: the odd bit would mean "I support this feature" and the even bit would mean "I require my peer to support this feature"Thoughts?
The text was updated successfully, but these errors were encountered: