bLIP: 4
Title: Experimental Endorsement Signaling
Status: Active
Author: Carla Kirk-Cohen <carla@chaincode.com>
Created: 2024-01-12
License: CC0
HTLC endorsement signaling is a proposed component of a hybrid approach to addressing channel jamming attacks against the Lightning Network. This bLIP outlines a proposal to deploy an experimental endorsement TLV to the network to provide real world data to inform specification of reputation algorithms.
This bLIP is licensed under the CC0 license.
Experiment Parameters, expressed as unix time (seconds):
experiment_start: TODO: set once feature bit is widely deployedexperiment_end: 1767225600
tlv_stream:update_add_htlc_tlvs- type: 106823(
endorsed) - data:
- [
byte:endorsed]
- [
- type: 106823(
The 3 least significant bits of the endorsement TLV are used to represent an
endorsement value. A HTLC is considered to be endorsed if it is received
with endorsed=7 and unendorsed if endorsed=0.
Sender:
- If the current time is less than
experiment_end:- if it is the original source of the HTLC:
- if the current time is greater than or equal to
experiment_start:- if it does not expect immediate fulfillment upon receipt by the
final destination:
- SHOULD set
endorsedto0.
- SHOULD set
- otherwise:
- SHOULD set
endorsedto7.
- SHOULD set
- if it does not expect immediate fulfillment upon receipt by the
final destination:
- otherwise:
- SHOULD set
endorsedto0
- SHOULD set
- MAY choose to set
endorsedto0for some percentage of payments to prevent leaking its identity as the original sender.
- if the current time is greater than or equal to
- if it is the original source of the HTLC:
Receiver:
- If the current time is less than
experiment_end:- if running an experimental reputation algorithm:
- SHOULD set
endorsedat its discretion.
- SHOULD set
- otherwise:
- if
endorsed=7 in the incomingupdate_add_htlc:- SHOULD set
endorsed=7 on its outgoingupdate_add_htlc
- SHOULD set
- otherwise:
- SHOULD set
endorsedto0.
- SHOULD set
- if
- if running an experimental reputation algorithm:
- MUST NOT use the experimental
endorsedfield in resource allocation decisions.
Forwarding nodes can upgrade and begin to set endorsed signals immediately,
as there is no privacy risk associated with propagating zero values. Feature
bit signaling and a flag day are used to allow senders to set endorsed to 7
without leaking their identity as the original sender of the HTLC.
- Nodes on the network upgrade to support sending and forwarding zero value
endorsedsignals. - Choose a
experiment_startparameter based on deployment of thehtlc_endorsedsignal on the network. - After
experiment_starthas passed, sending nodes start to setendorsedto7as described above. - When
experiment_endis reached, sending node on the network stop setting the experimentalendorsedfield and intermediate nodes will stop relaying it, so the signal will cease to propagate through the network.
If endorsement is merged to the BOLTs, the experimental field will naturally
be deprecated when experiment_end is reached.
- Nodes on the network may freely use an endorsement signal defined by the
BOLTs, even if
experiment_endhas not yet been reached, as the experimental signal described in this bLIP is distinct from one outlined in the BOLTs. - Once
experiment_endhas been reached, all nodes will stop relaying the experimental signal. - In the next release, experimental code can safely be removed as it has been deprecated across the network.
The emergent properties of network-wide changes to Lightning are difficult to fully grasp without gathering real world data. This bLIP outlines a lightweight and reversible mechanism to assess various reputation algorithms in a read-only setting so that we can direct further specification in an informed manner.
Endorsement signals are copied from the incoming update_add_htlc to allow
positive signals to propagate through the network. Nodes wishing to participate
in active experimentation may set this signal according to their local
reputation algorithm, and this signal will be passively propagated by the
upgraded portion of the route. This experimental signal is used to observe
the behavior of reputation algorithms under real-world conditions, but is not
used to allocate resources so that the experiment does not impact payment
traffic.
A flag day is included to mitigate privacy concerns that setting the
endorsement signal on payments will expose the identity of the original sender.
Nodes participating in the experiment will signal the htlc_endorsed feature
in their node announcement to help chose an appropriate experiment_start.
Once a sufficient portion of the network is upgraded to relay these signals, the
presence of positive endorsement does not expose the sender as the original
source of the HTLC. Senders are also advised to only set a positive endorsement
signal for some percentage of payments to further protect sender privacy.
The endorsed TLV is encoded as a single byte rather than a boolean to allow
flexible experimentation. Three bits of information are used to represent
endorsement to allow for the future possibility of experimentation that relies
on a range of endorsement values. HTLCs that are not endorsed include a TLV
with a zero value byte so that they can be distinguished from those with no
endorsement signal, which can be filtered out of experimental data as null
values.
This experiment is opened as a bLIP because it is not intended to be a permanent part of the lightning specification. If a BOLT with endorsement signaling is merged to the BOLTs, the two signals can be handled independently and the experimental signal described in this bLIP can be removed after the end of the experimental period.