From 79a1d03966f8c668ca31125becbf710640504907 Mon Sep 17 00:00:00 2001 From: "joe.miyamoto" Date: Fri, 23 Apr 2021 19:53:31 +0900 Subject: [PATCH] Clarify about the length of `r` field in a invoice * In current spec, route-hint can't express more than 3 hops. * From a reader's point of view, what can not be done in a spec is often more important than what can be done. Thus clarify about its limitation. --- 11-payment-encoding.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/11-payment-encoding.md b/11-payment-encoding.md index 40d16a6d4..edc4cd0b5 100644 --- a/11-payment-encoding.md +++ b/11-payment-encoding.md @@ -145,12 +145,14 @@ Currently defined tagged fields are: * `x` (6): `data_length` variable. `expiry` time in seconds (big-endian). Default is 3600 (1 hour) if not specified. * `c` (24): `data_length` variable. `min_final_cltv_expiry` to use for the last HTLC in the route. Default is 18 if not specified. * `f` (9): `data_length` variable, depending on version. Fallback on-chain address: for Bitcoin, this starts with a 5-bit `version` and contains a witness program or P2PKH or P2SH address. -* `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) +* `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. + * Fields are + * `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) + * Be aware that `data_length` can express `2^10` (=1024 bits) as the longest, and a single hop will be 51 bytes (= 408 bits). So currently there is no way to specify a hint with more than two hops. * `9` (5): `data_length` variable. One or more 5-bit values containing features supported or required for receiving this payment. See [Feature Bits](#feature-bits).