Published on: 2018-05-15T14:54:08+00:00
In an email exchange between nayuta-ueno and ZmnSCPxj, the former requested clarification on whether c-lightning checks the 'r' field from payee's invoice. ZmnSCPxj replied that the invoice has a signature for the entire invoice, but only the payee's signature is included in the channel fee. The payee has an incentive to provide accurate channel information since incorrect information could lead to payment failure.Nayuta-ueno is currently implementing the `r` field to `ptarmigan` and has a query regarding the `r` field's signature. The `r` field does not contain a signature like the `channel_update`. ZmnSCPxj explains that the invoice has a signature for the whole invoice and only the payee signature is needed since the fee for this channel is from the peer of the payee. The payee has an incentive to provide accurate information about the channel as payment may fail if the channel fees or CLTV-delta is not as expected.ZmnSCPxj also mentions that while implementing support for the `r` field in invoices, he stumbled upon some issues regarding creating invoices with `r` fields. In order to receive via an unpublished channel, we need to know what onLightning fees the other side of that channel wants to charge. In case of an unpublished channel, we do not send `channel_announcement`, and in that case, we do not send `channel_update`. The other side of the channel never informs us of the onLightning fees they want to charge if we would receive funds by this channel. An idea that was considered for this was to simply send `channel_update` as soon as we lock in the channel. ZmnSCPxj asks other LN implementations like lnd, eclair, ucoin, lit if we should consider standardizing this behavior.In a mailing list discussion regarding the implementation of support for `r` field in invoices, ZmnSCPxj explained that in order to receive via an unpublished channel, it is necessary to know the onLightning fees that the other side of the channel wants to charge. A solution to this problem was proposed by sending `channel_update` as soon as the channel is locked-in, regardless of whether it is published or unpublished. This idea was brought up for standardization by all LN implementations, lnd, eclair, ucoin, and lit.ZmnSCPxj, a developer who is implementing support for 'r' field in invoices has stumbled upon some issues regarding creating invoices with 'r' fields. In order to receive via an unpublished channel, one needs to know what onLightning fees the other side of that channel wants to charge. But in case of an unpublished channel, we do not send channel_announcement and in that case, we do not send channel_update. So the other side of the channel never informs us of the onLightning fees they want to charge if we would receive funds by this channel. An idea that he wants to consider is to simply send `channel_update` as soon as they lock in the channel, which seems back-compatible. Software which does not expect this behavior will simply drop the `channel_update` (as they do not follow a `channel_announcement`). He is asking for inputs from other LN implementations (lnd, eclair, ucoin, lit) whether standardizing this behavior is a good idea or not.In a recent Lightning-dev mailing list, ZmnSCPxj raised some issues regarding creating invoices with `r` fields. In order to receive via an unpublished channel, one needs to know the onLightning fees that the other side of that channel wants to charge. However, in case of an unpublished channel, we do not send channel_announcement, and in that case we do not send channel_update. To solve this issue, an idea was proposed to simply send `channel_update` as soon as the channel locks in. It is suggested to standardize this behavior regardless of published/unpublished state.ZmnSCPxj, a member of the Lightning-dev mailing list, is seeking advice regarding creating invoices with `r` fields. To receive payments via an unpublished channel, it is necessary to know the onLightning fees the other side of the channel wants to charge, but if the channel has not been published, then neither has the channel announcement or update been sent. Therefore, the idea is to send a `channel_update` as soon as the channel is locked in, regardless of whether it is published or unpublished. This approach seems back-compatible because software that does not expect this behavior will simply drop the `channel_update`.
Updated on: 2023-07-31T20:03:15.702464+00:00