Skip to content

Commit e0f0e60

Browse files
committed
bLIP-04: update from endorsement to accountable signal
Removed the `experiment_start/end` dates. This is done because in the previous iteration with endorsement signaling, the recommendation was for the sender to set it to 1 and that could have had privacy concerns when first deploying given that the default was to downgrade the signal to 0. Now the recommended default for both sending and forwarding nodes is to set `accountable` to 0. Hence, the dates have been removed as nodes can start setting the signal without leaking information about being the sender.
1 parent a833e7b commit e0f0e60

File tree

3 files changed

+62
-87
lines changed

3 files changed

+62
-87
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ For more detail on the process, please read [bLIP-0001](./blip-0001.md) and
2222
| [1](./blip-0001.md) | bLIP Process | Ryan Gentry | Active |
2323
| [2](./blip-0002.md) | Reserved Values | Bastien Teinturier | Active |
2424
| [3](./blip-0003.md) | Keysend | Valentine Wallace | Active |
25-
| [4](./blip-0004.md) | Experimental Endorsement | Carla Kirk-Cohen | Active |
25+
| [4](./blip-0004.md) | Experimental Accountability | Carla Kirk-Cohen | Active |
2626
| [10](./blip-0010.md) | Podcasting 2.0 | Satoshis Stream | Active |
2727
| [11](./blip-0011.md) | NameDesc | Hampus Sjöberg | Active |
2828
| [17](./blip-0017.md) | Hosted Channels | Anton Kumaigorodskiy | Active |

blip-0002.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ bLIPs may reserve feature bits by adding them to the following table:
5050
| 54/55 | `keysend` | A form of spontaneous payment | N | `var_onion_optin` | [bLIP 3](./blip-0003.md) |
5151
| 256/257 | `hosted_channels` | This node accepts requests for hosted channels | IN | | [bLIP 17](./blip-0017.md) |
5252
| 258/259 | `dns_resolver` | This node accepts DNSSEC proof requests | N | | [bLIP 32](./blip-0032.md) |
53-
| 260/261 | `htlc_endorsement` | This node forwards experimental htlc endorsement signals | N | | [bLIP 4](./blip-004.md) |
53+
| 260/261 | `htlc_accountability` | This node forwards experimental htlc accountability signals| N | | [bLIP 4](./blip-004.md) |
5454
| 262/263 | `bolt11_blinded_path` | This invoice may contain a new blinded path tagged field | I | `option_route_blinding` | [bLIP 39](./blip-0039.md) |
5555
| 729 | `option_supports_lsps` | This node supports LSPS protocol(s) | IN | | [bLIP 50](./blip-0050.md) |
5656

@@ -113,7 +113,7 @@ The following table contains extension tlv fields for the `update_add_htlc` mess
113113

114114
| Type | Name | Link |
115115
|--------|-----------------------------|--------------------------------|
116-
| 106823 | `endorsed` | [bLIP 4](./blip-0004.md) |
116+
| 106823 | `accountable` | [bLIP 4](./blip-0004.md) |
117117
| 65537 | `extra_fee` | [bLIP 25](./blip-0025.md) |
118118

119119
#### `ping`

blip-0004.md

Lines changed: 59 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
```
22
bLIP: 4
3-
Title: Experimental Endorsement Signaling
3+
Title: Experimental Accountable Signaling
44
Status: Active
55
Author: Carla Kirk-Cohen <[email protected]>
6+
67
Created: 2024-01-12
78
License: CC0
89
```
910

1011
## Abstract
1112

12-
HTLC endorsement signaling is a [proposed](https://github.com/lightning/bolts/pull/1071)
13+
HTLC accountability signaling is a [proposed](https://github.com/lightning/bolts/pull/1280)
1314
component of a [hybrid approach](https://research.chaincode.com/2022/11/15/unjamming-lightning)
1415
to addressing [channel jamming attacks](https://bitcoinops.org/en/topics/channel-jamming-attacks)
1516
against the Lightning Network. This bLIP outlines a proposal to deploy an
16-
experimental endorsement TLV to the network to provide real world data to
17+
experimental accountable TLV to the network to provide real world data to
1718
inform specification of reputation algorithms.
1819

1920
## Copyright
@@ -22,78 +23,57 @@ This bLIP is licensed under the CC0 license.
2223

2324
## Specification
2425

25-
Experiment Parameters, expressed as unix time (seconds):
26-
* `experiment_start`: TODO: set once feature bit is widely deployed
27-
* `experiment_end`: 1767225600
28-
2926
### Adding an HTLC: `update_add_htlc`:
3027

3128
1. `tlv_stream`: `update_add_htlc_tlvs`
32-
1. type: 106823(`endorsed`)
29+
1. type: 106823 (`accountable`)
3330
2. data:
34-
* [`byte`:`endorsed`]
31+
* [`byte`:`accountable`]
3532

36-
The 3 least significant bits of the endorsement TLV are used to represent an
37-
endorsement value. A HTLC is considered to be endorsed if it is received
38-
with `endorsed`=7 and unendorsed if `endorsed=0`.
33+
The 3 least significant bits of the accountable TLV are used to represent an
34+
accountability value. A HTLC is considered to be accountable if it is received
35+
with `accountable=7` and unaccountable if `accountable=0`.
3936

4037
Sender:
41-
* If the current time is less than `experiment_end`:
42-
* if it is the original source of the HTLC:
43-
* if the current time is greater than or equal to `experiment_start`:
44-
* if it does not expect immediate fulfillment upon receipt by the
45-
final destination:
46-
* SHOULD set `endorsed` to `0`.
47-
* otherwise:
48-
* SHOULD set `endorsed` to `7`.
49-
* otherwise:
50-
* SHOULD set `endorsed` to `0`
51-
* MAY choose to set `endorsed` to `0` for some percentage of payments to
52-
prevent leaking its identity as the original sender.
38+
* if it is the original source of the HTLC:
39+
* SHOULD set `accountable` to `0`.
40+
* MAY set `accountable` to `7` to mimic observed forwarded traffic.
5341

5442
Receiver:
55-
* If the current time is less than `experiment_end`:
43+
* if `accountable`=7 in the incoming `update_add_htlc`:
44+
* SHOULD set `accountable` to `7` on its outgoing `update_add_htlc`
45+
* otherwise:
5646
* if running an experimental reputation algorithm:
57-
* SHOULD set `endorsed` at its discretion.
58-
* otherwise:
59-
* if `endorsed`=7 in the incoming `update_add_htlc`:
60-
* SHOULD set `endorsed`=7 on its outgoing `update_add_htlc`
61-
* otherwise:
62-
* SHOULD set `endorsed` to `0`.
63-
* MUST NOT use the experimental `endorsed` field in resource allocation
47+
* SHOULD set `accountable` at its discretion.
48+
* otherwise:
49+
* SHOULD set `accountable` to `0`.
50+
* MUST NOT use the experimental `accountable` field in resource allocation
6451
decisions.
6552

6653
## Deployment and Deprecation
6754

68-
### Deployment
69-
70-
Forwarding nodes can upgrade and begin to set `endorsed` signals immediately,
71-
as there is no privacy risk associated with propagating zero values. Feature
72-
bit signaling and a flag day are used to allow senders to set `endorsed` to `7`
73-
without leaking their identity as the original sender of the HTLC.
55+
Forwarding nodes can upgrade and begin to set `accountable` signals immediately,
56+
as there is no privacy risk associated with propagating zero values.
7457

7558
1. Nodes on the network upgrade to support sending and forwarding zero value
76-
`endorsed` signals.
77-
2. Choose a `experiment_start` parameter based on deployment of the
78-
`htlc_endorsed` signal on the network.
79-
3. After `experiment_start` has passed, sending nodes start to set `endorsed`
80-
to `7` as described above.
81-
4. When `experiment_end` is reached, sending node on the network stop setting
82-
the experimental `endorsed` field and intermediate nodes will stop
83-
relaying it, so the signal will cease to propagate through the network.
84-
85-
### Deprecation
86-
87-
If `endorsement` is merged to the BOLTs, the experimental field will naturally
88-
be deprecated when `experiment_end` is reached.
89-
90-
1. Nodes on the network may freely use an endorsement signal defined by the
91-
BOLTs, even if `experiment_end` has not yet been reached, as the experimental
92-
signal described in this bLIP is distinct from one outlined in the BOLTs.
93-
2. Once `experiment_end` has been reached, all nodes will stop relaying the
94-
experimental signal.
95-
3. In the next release, experimental code can safely be removed as it has been
96-
deprecated across the network.
59+
`accountable` signals.
60+
2. Nodes running experimental reputation algorithm may set non-zero accountable
61+
signals.
62+
3. Signals can be observed in the network to gather data to inform design of
63+
reputation algorithms.
64+
65+
We only expect nodes running experimental reputation algorithms to set a
66+
non-zero accountable signal in times of congestion; it will be normal for both
67+
sending and forwarding nodes to set zero value signals. There is no privacy
68+
concern for senders setting a zero accountable signal, as this is normal
69+
behavior for both sending and forwarding nodes.
70+
71+
To deprecate the signal once experimentation is complete:
72+
73+
1. Nodes running experimental reputation algorithms stop setting non-zero
74+
values.
75+
2. Remove the `htlc_accountability` feature bit and stop relaying and setting
76+
the TLV.
9777

9878
## Motivation
9979

@@ -104,38 +84,33 @@ setting so that we can direct further specification in an informed manner.
10484

10585
## Rationale
10686

107-
Endorsement signals are copied from the incoming `update_add_htlc` to allow
108-
positive signals to propagate through the network. Nodes wishing to participate
109-
in active experimentation may set this signal according to their local
110-
reputation algorithm, and this signal will be passively propagated by the
111-
upgraded portion of the route. This experimental signal is used to observe
112-
the behavior of reputation algorithms under real-world conditions, but is not
113-
used to allocate resources so that the experiment does not impact payment
87+
Positive accountability signals are copied from the incoming `update_add_htlc`
88+
to allow signals to propagate through the network. Nodes wishing to participate
89+
in active experimentation may set this signal according to their local
90+
reputation algorithm, and this signal will be passively propagated by the
91+
upgraded portion of the route. This experimental signal is used to observe
92+
the behavior of reputation algorithms under real-world conditions, but is not
93+
used to allocate resources so that the experiment does not impact payment
11494
traffic.
11595

116-
A flag day is included to mitigate privacy concerns that setting the
117-
endorsement signal on payments will expose the identity of the original sender.
118-
Nodes participating in the experiment will signal the `htlc_endorsed` feature
119-
in their node announcement to help chose an appropriate `experiment_start`.
120-
Once a sufficient portion of the network is upgraded to relay these signals, the
121-
presence of positive endorsement does not expose the sender as the original
122-
source of the HTLC. Senders are also advised to only set a positive endorsement
123-
signal for some percentage of payments to further protect sender privacy.
124-
125-
The `endorsed` TLV is encoded as a single `byte` rather than a boolean to allow
126-
flexible experimentation. Three bits of information are used to represent
127-
endorsement to allow for the future possibility of experimentation that relies
128-
on a range of endorsement values. HTLCs that are not endorsed include a TLV
129-
with a zero value byte so that they can be distinguished from those with no
130-
endorsement signal, which can be filtered out of experimental data as null
131-
values.
96+
HTLCs that are not accountable include a TLV with a zero value byte so that
97+
they can be distinguished from those with no accountability signal, which can
98+
be filtered out of experimental data as null values.
99+
100+
**Note: Previously we allowed a range for the `accountable` signal as it was
101+
used to signal endorsement of an HTLC. This endorsement could be interpreted
102+
as the level of trust in the upstream node and the HTLC resolving in time.
103+
Hence, we allowed a range to allow experimenting with different values. This
104+
signal has been repurposed (since it is an experimental read-only field) to
105+
now indicate accountability, which is a binary decision letting the downstream
106+
node know if it will be held accountable for the fast resolution of the HTLC.**
132107

133108
This experiment is opened as a bLIP because it is not intended to be a
134-
permanent part of the lightning specification. If a BOLT with endorsement
109+
permanent part of the lightning specification. If a BOLT with accountability
135110
signaling is merged to the BOLTs, the two signals can be handled independently
136111
and the experimental signal described in this bLIP can be removed after the
137112
end of the experimental period.
138113

139114
## Reference Implementations
140115

141-
* [LND](https://github.com/lightningnetwork/lnd/pull/8390)
116+
* TODO

0 commit comments

Comments
 (0)