1
0
mirror of https://github.com/lightning/bolts.git synced 2024-11-19 01:50:03 +01:00
Commit Graph

72 Commits

Author SHA1 Message Date
Jim Posen
5a3b5ce0bd BOLT 4: Clarify the onion construction section.
The new description introduces the concept of an ephemeral private key,
which I find easier to reason about and suggests a linear instead of
quadratic construction algorithm.
2018-03-05 20:11:32 +01:00
Jim Posen
745629d0f2 BOLT 4: Correct blinding factor calculation.
The instructions reference nodepk_k instead of epk_k.
2018-03-05 20:11:32 +01:00
Jim Posen
f7eb7e4d96 BOLT 4: Correct shared secret calculation.
Reference code and all implementations hash the ECDH output point with SHA256.
2018-03-05 20:11:32 +01:00
practicalswift
2c3466a2af Remove trailing whitespace 2018-01-30 04:54:31 +00:00
Rusty Russell
f6a91fbb11 BOLT 4: the failure codes are not one long enumerated list.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2018-01-30 03:47:32 +00:00
Shannon Appelcline
29ae44ec6e BOLT-4 Re-Edits
Minor edits, clarifications, and standardizations.
2018-01-30 03:33:48 +00:00
MeshCollider
4b5379b2ac Fix formatting of BOLT links 2018-01-22 14:02:01 +01:00
Landon Mutch
6586287d88 BOLT 4: fix requested changes by @rustyrussell 2017-12-14 02:07:36 +00:00
Landon Mutch
c4c77235ef BOLT 4: seperate out returning errors requirements, copy edit changes 2017-12-14 02:07:36 +00:00
Landon Mutch
91fbda6cb1 BOLT 4: seperate error messages from requirements 2017-12-14 02:07:36 +00:00
Landon Mutch
08f23a7515 BOLT 4: add packet forwarding requirements section 2017-12-14 02:07:36 +00:00
Landon Mutch
e840fdbded BOLT 4: couple last fixes and TODOs added 2017-12-07 02:36:10 +00:00
Landon Mutch
8165f28692 fix changes requested by @rustyrussell and @shannona in pr-299-rebased branch 2017-12-07 02:36:10 +00:00
Landon Mutch
aed4b11423 make spell check happy 2017-12-07 02:36:10 +00:00
Landon Mutch
54b49c09db BOLT 4: complete second-pass copy edit, introduced new terminology 'erring node', require a few clarifications 2017-12-07 02:36:10 +00:00
Landon Mutch
051f98a75e BOLT 4: second pass copy edit, update node terminology;
second pass copy edit to line 253, according to stylesheet
update node terminology to remove ambiguity; update conventions section and implement consistent usage of terms: origin node, final node, processing node, hop, sending peer, and receiving peer
2017-12-07 02:36:10 +00:00
Landon Mutch
4381f38279 BOLT 4: complete first pass copy edit by applying stylesheet guidelines 2017-12-07 02:36:10 +00:00
Landon Mutch
fe53690a9d BOLT 4: copy edit to line 735 2017-12-07 02:36:10 +00:00
Landon Mutch
a66fcf684c BOLT 4: first pass copy edit to line 600 2017-12-07 02:36:10 +00:00
Landon Mutch
94f717410f BOLT 4: first pass copy edit to line 366 2017-12-07 02:36:10 +00:00
Landon Mutch
7ce3341254 BOLT 4: apply stylesheet updates, first pass copy edit to line 128 2017-12-07 02:36:10 +00:00
Landon Mutch
07f44a4419 BOLT 4: copy-edit, reword Overview 2017-12-07 02:36:10 +00:00
Landon Mutch
560ae85007 BOLT 4: add ToC, format headers 2017-12-07 02:36:10 +00:00
Rusty Russell
c93cd75d88
BOLT 2,4: allow an error for HTLCs which expire too far away. (#265)
Fixes: #261

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-10-31 00:21:58 +00:00
Rusty Russell
58d4d9bca3 BOLT 2: Details of HTLC Timeouts, ie. cltv_expiry_delta.
Complete rewrite, including a routing example and the new
min_final_cltv expirt.  I hope this makes it clear.

(Thanks to everyone who reviewed and gave feedback; you rock!)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-10-19 12:44:53 -07:00
Christian Decker
d7791b6d4d BOLT04: Clarify that nodes should continue to unwrap the error onion
This is a partial response to #250. Reordering the HMAC and Encrypt
steps do not give us much, but we might want to hide the route
length. So we suggest that the node should continue unwrapping until
the maximum route length of 20 is reached.
2017-10-17 00:14:08 +02:00
Rusty Russell
fcc8830cc9 Typo fix: CTLV -> CLTV.
Locktime, not timelock.  Found this in my code, too, so pretty sure
it's my fault!

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-10-07 14:57:20 +10:30
Christian Decker
578573f92f Update 04-onion-routing.md
Fixed test vector of full package
2017-09-18 22:47:28 +02:00
Christian Decker
0310e40eda BOLT04: Correct the sphinx packet version in the implementation 2017-09-18 22:47:28 +02:00
Fabrice Drouin
700b5e7a5d update test vectors
maximum error payload size is now 128 bytes, see #227
2017-09-13 13:02:46 +02:00
Olaoluwa Osuntokun
876b93151f BOLT 04: increase max size of onion payload messages (#227)
* BOLT 04: increase max size of onion payload messages

This commit increases the max size of the encapsulated onion error
messages. This is a follow up change to the recent change that added a
`chain_hash` field to the `channel_update` message. With the addition of
this field, the largest payload encoded within the onion errors has
expanded to 138 bytes:

  * msat_amount || 2_byte_len || channel_update.

As a result, the old fixed limit (including padding) is now
insufficient. We use 256 bytes here in order to give us room for future
message expansions.
2017-08-22 09:37:02 +09:30
Christian Decker
efd8096fa6 BOLT4: clarify that failure_code may reuse message type numbers
We reuse the numeric values that we previously assigned to message
types in the failure_code, but there is no possibility for a mixup
since the latter is not transmitted directly on the transport layer
but wrapped in a return packet. Hence there is no way of confusing the
two. Added a short clarification.

Reported-by: Janus Troelsen @ysangkok
Signed-off-by: Christian Decker <decker.christian@gmail.com>
2017-07-24 13:25:15 -07:00
Rusty Russell
365a5a0f9f BOLT 4: channel_id -> short_channel_id
Consistency with BOLT 7 makes this much clearer.

Closes: #195
Reported-by: https://github.com/nayuta-ueno
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-07-11 10:41:01 +09:30
Rusty Russell
068b0bccf9 BOLT 2,4,7: use 8 bytes for amounts, restrict add_htlc for bitcoin only. (#175)
We had 4 byte fields for amounts because people have no ability to assess
risk, and this limited the damage to $70 at a time.

But then that means $1 maximum HTLCs on Litecoin, which isn't enough
for a cup of (decent) coffee.

Rather than have boutique hacks for Litecoin we enlarge the fields now,
and simply have a bitcoin-specific restriction that the upper 4 bytes be 0.

The ctlv_expiry field is moved down in update_add_htlc, to preserve alignment.

Suggested-by: Olaoluwa Osuntokun <laolu32@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-23 12:36:34 +09:30
sstone
f7277cea43 BOLT 4: rationale for the last node's payload
Specify the payload for the last node in the route and how it is used to return
errors. The idea is to prevent the next to last node to guess if the next node is
the final one.
2017-05-19 11:12:54 +09:30
pm47
c60e5e05ec added a channel_disabled error message 2017-05-19 11:12:54 +09:30
pm47
b7a90e7e6a added UPDATE flag to temporary_channel_failure 2017-05-19 11:12:54 +09:30
Rusty Russell
bbe3c1979e BOLT 4: underscores and backticks everywhere.
This also converts data structures to the same format used elsewhere.

One other minor change, from:
	In addition, every _(address, HMAC)_-pair is incrementally obfuscated at each hop.
to:
	In addition, `hops_data` is incrementally obfuscated at each hop.

The old wording was left over from the previous format.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Fabrice Drouin
06de1a586e BOLT4: fix onion reply test vectors (see #158) 2017-05-05 12:01:51 +09:30
Rusty Russell
0b2e091da8 BOLT 4: typo fixes
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-03 13:08:07 +09:30
ZmnSCPxj via Lightning-dev
7d3083e79a Add spellcheck tool (requires aspell), also spellcheck.
This is a multi-part message in MIME format.

This patch should apply to http://github.com/lightningnetwork/lightning-rfc

Nonidealities:

Aspell triggers spelling errors on the hexadecimal strings in
the test vectors. I don't have enough aspell-fu to figure
out how to make Aspell ignore these.

There are 2 possible pluralizations of `HTLC`: `HTLCs` and
`HTLC's`. I'd prefer the latter, but for now I support both.
We should standardize pluralization; we can edit the
`.aspell.en.pws` file to remove the pluralization we won't
choose.
2017-05-03 13:08:07 +09:30
Christian Decker
4a2146b1ed BOLT04: Update the go reference implementation 2017-04-26 09:59:30 +09:30
Christian Decker
a8bf53bba5 BOLT04: Updated test vectors
These test vectors should match BOLT04 after the change to merge
per-hop payloads and routing info into a single `hop_data` field. They
were generated by the golang version and crosschecked with the
`lightningd` version.

The per-hop `hop_data` were changed to be initialized by byte-filling
the `short_channel_id` matching their position in the route, and by
setting the `amt_to_forward` and `outgoing_cltv` fields to the same
value, i.e., for hop 3 the values are:

  short_channel_id = 0x0303030303030303
  amt_to_forward = 0x0000003
  outgoing_cltv = 0x0000003
2017-04-26 09:59:30 +09:30
Rusty Russell
8b29062f78 BOLT 4: Simplify onion format.
1. Only one per-hop thing, called `per-hop`, or `hops_data` when in aggregate.
2. Move HMAC to the end of stuff it covers, both of the packet itself, and the per-hop.
3. Use `channel-id` instead of RIPEMD(nodepubkey).
4. Use 4 byte amounts.
5. This is all for realm "0", we can have future realms.  We also have 16
   bytes of unused padding.
6. No longer need the `gamma` key, but document the `_um_` key used for
   errors.
7. Use normal 32-byte HMAC, not truncated 20-bytes, which more than eats
   up the room we saved.

The result is that the onion is now 1366 not 1254 bytes, but simpler.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-04-26 09:59:30 +09:30
Christian Decker
48df730d42 bolt04: Specify that temporary channel failure also includes a channel_update 2017-04-26 06:05:22 +09:30
Rusty Russell
9dc3c5bf4a BOLT 4: clarify record keeping requirements. (#148)
We didn't note the actual requirements: we MUST reject replays we have forwarded
or paid to avoid replay attacks.  The details are difficult however; we have
to clean them out at some stage, and restrict the size somehow.  Suggest some
ways we could do that.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-04-24 05:19:54 +00:00
Fabrice Drouin
9cb9eef0de use 0x2002 (temporary node failure) as error message 2017-04-13 22:41:50 -07:00
Fabrice Drouin
52b7c2ddbf use correct cipher stream to obfuscate packets 2017-04-13 22:41:50 -07:00
Fabrice Drouin
2df1b0aecf BOLT 4: add test vectors for reply messages 2017-04-13 22:41:50 -07:00
Rusty Russell
e82b729a3a BOLT 4: error on last step if incorrect HTLC value.
This is particularly important if people start overpaying: a hop
may try to deduct 1 extra millisatoshi, which would be rejected by the
next unless the next is the final hop, enabling detection.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-04-10 17:57:17 -07:00