minus a few contradictions you made, you have actually took a few steps forward
so lets summarise:
contradictions
The only effective way to achieve that would be to include routing hints in the payment invoice, but that would require the cooperation of the sender. Usually, senders include only private channels that are directly connected to them.
VS
Here's what routing hints look like in invoices
invoices are not htlc updates to a blockchain formatted transaction output. but thank you for now recognising the messages that go between nodes, especially beyond the initial network map gossip
you have been narratting for pages that payments are blockchain formatted transaction(commitment) changes
where you have been thinking all HTLC are the outputs of a commitment
anyway, lets reply to the other points.
If the BC side is private it doesn't mean that CD is private and that Alice doesn't know anything it. The CD channel is public.
you like games, but do you know the game pass the parcel
if alice does not know diana or eric. then diana or eric cant tell alice about the bob-carol channel
bob has been told by carol not to tell alice about the bob-carol channel.
bob can tell alice about other public channels bob might have with different peers. but ot about carol. which is where alice does not know about diana and eric. and so alice cannot get the EDCBA back path from eric.. because bob is not passing the parcel of eric and diana.. and alice is not connected to eric
thus alice does not know there is a route to eric via bob-carol-diana-eric via a map
bob however is ok with being public to carol. so bob knows of alice. and carol knows alice-bob and carol is ok to send to diana and diana sends to eric. meaning eric knows of alice route. but eric is not node peer handshaked to alice to tell alice
messages are sent pass the parcel. not to some uber mempool map everyone is connected to.
its like bitcoin. there is no central mempool everyone uses, each node has a mempool only of the stuff it gets relayed by a peer. different nodes will have different maps(mempools) if certain peers are not connected to their peer or peer of peer
which is where you get a better map view if you have lots of channels with lots of peers and those peers have lots of channels to increase the chances of mapping everyone. (if they are all public)
its called the 6th degree of separation(kevin bacon)
The gossip is advertised not only to people who you have a direct channel with, but also to other Lightning nodes that randomly connect to your node. Alice must have learnt about that channel at some point from her other peers.
exactly. because alice has not been given details of carol, diana, eric. she cant get a copy of a eric->alice path unless eric connects to alice ((invoice with hints) where invoice is sent in some out of network communication EG blog post or a DM on a social platform)
If the BC channel suddenly goes public, the gossip will eventually reach every single node in the network. There would be no need for Alice to ask B for any details. However, If the BC channel was private all the time:
its a pass the parcel game.. not everyone connects to everyone randomly
again if you know the pass the parcel game you could turn that into a positive about how it avoids DDoS of random nodes
You can't ask B to temporarily tell you about C. You can't assume that B will have any way of forwarding your payment. In fact, Eric doesn't know it as well.
in a BC private channel set by carol.
carol is refusing to tell bob about diana.. meaning alice and bob dont know about diana which mean alice and bob dont know about eric on the map
again in the pass the parcel game. your not connecting to all nodes and interrogate their channels. your being passed parcels from a peer who gets data from a peer thats allowing said data to be passed or not
What would be the point of having a private channel if literally anyone could send a gossip message to your peer to reveal the existence of your channel? You would waste a ton of bandwidth and time trying to guess which node might have a private channel that could be used in your route.
so now your saying LN is not private and has no privacy.. wow the tables have turned.
the channel announcements are not broadcast to all nodes.. all nodes are not connected to all nodes.
as that would be a waste of bandwidth!!
its a pass the parcel game peer to peer. where a peer in the middle can refuse to pass
a node only knows of the map of its peers, peers
and so on. meaning its not one tree of everyone.. but several trees where one node in one corner wont have the same trees as another node in another corner.
If the channel between Diana and Eric was private, Eric could tell you about it through the payment invoice.
ill thank you with one step forward for admitting that its not all done in the network map. oh and yea invoices are not commitment edits(pre-empting you your narrative twist i can predict you will make)
oh and invoices are messages in msat denomination, not a blockchain formatted transaction template
you say that the transparent network map is on by default and requires an opt out to become private. but its actually the opposite. its an opt-in process of being private first and deciding to go public
Yes, it is default for LND, c-lightning and Eclair nodes which make up the vast majority of the network. All of them open public channels by default.
ok then if LN is now public. the privacy advert needs to stop.
seems bitcoin has privacy. because it does not reveal partners of partners to show all possible places to pay.
Ln has now become public and can show all possible people to pay
EG. if my network map is where ABCDE only have A and E with 1 channel and BCD with 2 channels
then the only network map ABCDE has is only of ABCDE. because they are peered to pass the parcel
because E is not connected to Z or M or T elsewhere. ABCDE wont know about all the other channels. it only knows about the ones peered to it
again needing an invoice or message outside of the network map. outside of a route parcel game
and multiple times i have been saying you cant update a HTLC until you know the amounts, and details to put into a HTLC
alice is not psychic.
you cannot change a HTLC unless you know the data that needs to be put in it, to change change it
It seems that your main argument now is that you can use private channels.
seems you again want to avoid the point and jump back to private channels, but hey lets go with it..
r (3): data_length variable. One or more entries containing extra routing information for a private route; there may be more than one
r field
pubkey (264 bits)
short_channel_id (64 bits)
fee_base_msat (32 bits, big-endian)
fee_proportional_millionths (32 bits, big-endian)
cltv_expiry_delta (16 bits, big-endian)
note: this is not a change to a commitment. this is not a network map view. its a message. measured in the denomination of msats
So, if DE channel was private, Eric could give you all the information you need about that channel to construct the "onion_routing_packet". You wouldn't need to request any additional information. If either BC or CD channel was private, you would have no way of learning that you can use either of them to reach Eric.
wait. but for a few posts you have been saying everyone knows everything... and now you admit that alice would have no way of knowing about eric via the network map..
.. finally another step forward
again for emphasis. because network map does not hold all info. such as CLTV amount_msat of active available balance, nor any other personal parameters like adding a bit of shade to each CLTV. making each one unique.
you cant just create a route in A using just A network map and just commit to bob. for an amount A guessed based solely on the network map
Of course, you can. "cltv_expiry_delta" is a part of "channel_update" message, so Alice knows all the information she needs from her network map if all channels in the route are public.
If you want to assume that BC channel is private and Carol is the destination then Carol needs to include routing hints for her BC channel in the payment invoice. This way, Alice has all the information she needs to construct "onion_routing_packet".
finally it appears your getting it. alice doesnt just use a network map and then constructs a commitment and signs it to bob. to initiate a payment(your narative all along) there are alot more messages that happen. before a commitment is edited/signed
also update messages(msat) are not just sent once at a network map initialisation of opening an app. or once at the invoice send
updates happen after invoices and also update again when things change, including along a route
EG even after alice knows of a route to diana by invoice(not map). alice then needs to
send message which then update the cltv so that alice can then once the route is established and everyone is accepting messages.
channel updates are not forced to only happen at 3 times:(your view)
network map initialisation
invoice send
commitment signed
channel updates can happen all the time
EG if alice is preparing to pay carol using say map or invoice. but during that preparation crol wants to pay her partner zoe, carol then has to change stuff.
EG if while alice is preparing to pay carol. bob(for his own reason separately) pays someone else for something else. he too has to change something.
EG if alice is preparing to pay diana, where diana sent an invoice with a hint path through CBA at each transaction BCE can change their cltv per transaction to add some privacy. meaning random numbers change every few seconds and updates occur
I also really like how you quoted
this routing example and talk about some weird update messages when the example clearly uses only two messages: "channel_update" which Alice received at some point in the past and "update_add_htlc" to send the payment.
again updates are not done just 'sometime in the past' (your view of just 3 times they occur)
i can right this second change my min dust, fee, cltv. anytime and update, without having to wait for a map gossip or invoice message or a payment.
when routes are built alice needs to know the latest total of msat and the cltv of the entire route. which can change from the app opening initialising network map view. and change from the invoice sent 5 minutes ago. because bobs circumstance has changed in the last 2 minutes
LN is not a network of relaying signed transactions like the bitcoin network
No one is relaying signed transactions. Commitment updates are local. Nodes relay instructions which tell them how they should update their local transactions.
thank you for admitting its not about commitment editing/signing.. and thank you for admitting is about sending messages (messages denominated in msat)
feels we have made some progress. even when you have contradicted your self in some small ways inbetween.. dont step back now