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

892 Commits

Author SHA1 Message Date
Rusty Russell
e6faf71c30 BOLT 3: Add test vectors for per-commitment-secret generation
These were generated (and recovery tested) by the command-line tool at:

	https://github.com/rustyrussell/ccan/tree/master/ccan/crypto/shachain/tools

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-08 11:00:05 +10:30
Rusty Russell
2c91aa869f BOLT 8: make temporary handshake keys explicit.
This makes it clear that we do reuse the second one (and hence must
increment the nonce there).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-08 10:58:03 +10:30
Rusty Russell
1da044eb06 BOLT 8: clarify handshake nonces.
Spell out the send/receive nonces for the normal message transport;
they're 0 except in one place where Act3 re-uses temp_k from Act2.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>


Header from folded patch 'typo-fixes.patch':

Typo fixes to squash.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-08 10:58:03 +10:30
Rusty Russell
15bda3eedd BOLT 8: explicit sn and rn nonces.
Spells it out that they are two separate nonces.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-08 10:58:03 +10:30
Rusty Russell
d251c7eef3 BOLT 8: fix sk,rk definition for responder.
Cut & paste and insufficiently mangled from initiator wording...

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-08 10:58:03 +10:30
Rusty Russell
df871d659e BOLT 8: fix handshake Act 3 receiver hash calculation.
We always hash in the ciphertext.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-08 10:58:03 +10:30
Christian Decker
3431ff587b Merge pull request #40 from pm47/logical-grouping
BOLT 1: Changed logical grouping of messages
2016-12-07 12:00:28 +01:00
pm47
a04dd425e8 changed logical grouping of messages 2016-12-07 10:38:37 +01:00
Christian Decker
890bb5f992 Merge pull request #39 from cjamthagen/temp
[trivial] Some spelling and language fixes in BOLTs 3,4,5
2016-12-07 10:14:39 +01:00
Christopher Jämthagen
6750398c97 Some spelling and language fixes in BOLTs 3,4,5 2016-12-07 10:04:57 +01:00
pm47
1bb765819e moved update_fee message to 'normal operations' 2016-12-07 11:20:38 +10:30
pm47
248281738b fixed toc 2016-12-06 17:18:25 +01:00
Pierre-Marie Padiou
9bb732f991 Moved msg type description from BOLT#2 to BOLT#1 (#35)
* moved msg type description from BOLT#2 to BOLT#1
* added a ToC
2016-12-06 15:54:10 +01:00
Christopher Jämthagen
9fff656d70 Some spelling and language fixes in BOLTs 0,1,2 2016-12-06 15:30:48 +01:00
Rusty Russell
eb49bf3a17 BOLT 8: More minor clarifications.
1. Note that we're using the IETF chachapoly variant, which has 96 bit nonces.
2. Note that we send over the serialization of the pubkey on the wire.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-06 13:39:31 +10:30
Rusty Russell
ffed58f1a5 BOLT 8: minor clarifications and fixes.
1. More than three variables.
2. Make nonce encoding explicit (Big-endian, like everything else).
3. `e` is a keypair in this context; use `re` for their pubkey.
4. Explicitly note `re` and `le` notation.
5. Fix RFC reference.
6. Close `` around HKDF.
7. Use `ss` for the shared secret; `s` is already taken.
8. Use `re` for their pubkey.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-06 13:39:11 +10:30
Olaoluwa Osuntokun
57235bbd50
BOLT 02: update opening channel establishment paragraph
This commit updates the opening paragraph in the channel establishment
section. The messages referenced are were from the prior iteration of
the funding messages and naming scheme. The section has been updated to
properly reference the latest messages and also to give a bit more
context to the reader to start with.
2016-12-05 12:16:35 -08:00
pm47
58d1733d6d typo 2016-12-05 12:51:46 +01:00
pm47
844ee6910e fixed ToC links 2016-12-05 12:47:59 +01:00
pm47
8ae61d63e8 added a ToC 2016-12-05 12:45:47 +01:00
Christian Decker
61ccc9a378 Merge pull request #32 from esneider/patch-1
Fix typo
2016-12-04 12:12:57 +01:00
Dario Sneidermanis
b390d694d8 Fix typo 2016-12-04 01:16:08 -03:00
Rusty Russell
04d5cbc96c BOLT 0: Fix up name and link for BOLT 1
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-04 10:36:34 +10:30
Rusty Russell
4a6201232d BOLT 0: update index to add BOLT 7 and 8.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-04 10:23:08 +10:30
Rusty Russell
aa594c2608 BOLT 3: per-commitment not per-commit.
Be consistent.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-02 11:45:01 +10:30
Christian Decker
296075ec96 glossary: Added the _it's ok to be odd_ rule 2016-12-01 11:20:45 +01:00
Christian Decker
aa1ea27424 Merge pull request #31 from rustyrussell/remove-unneeded-padding
BOLT 2: remove attempts to align signatures.
2016-12-01 10:53:41 +01:00
Christian Decker
e7b029805d reorg: Deduplication and pointing to bolt08
Further separating the two specs by pointing to bolt08 for transport
details and deduplicating some of the information. Also fixed some
markup while I'm at it :-)
2016-11-30 19:40:55 -08:00
Christian Decker
e47c1af720 moveonly: Splitting BOLT 01 into two
So far we had both the transport layer, with its initialization details,
and part of the base protocol, with some generic messages like `init`
and `error` in a single spec. I propose we split the spec into two, one
for the transport layer and one for the communication on top of that
layer. This should make the independence of the two layers even clearer.

This commit is the first step towards that goal and simply moves blocks
of text into the new spec file. It should not change any semantics.
2016-11-30 19:40:55 -08:00
Rusty Russell
10f49ecb84 BOLT 3: Fix incorrect secret derivation.
There was talk of using a simple increment, but it was removed after
Tadge educated me.  Somehow this didn't get updated.

Reported-by: Tadge Dryja <tdryja@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-12-01 11:53:29 +10:30
Rusty Russell
e88dd27d12 BOLT 3: expand and correct HTLC transaction weights.
Inspired by Andrew Shvv's work, this expands the HTLC weight calculation
and fixes the gross errors (the witness program itself wasn't counted in
the weights!).

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-30 06:58:27 +10:30
Rusty Russell
970b39a40d BOLT 3: Note assumption about to-remote output existing.
Commit a0c4f7cfd1 "BOLT 3: add more detailed commitment transaction
estimation (#26)" simplified the weight formula to assume there was a
to-remote output.

This worst-case 18% error, but it's simple.  Document it.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-30 06:58:27 +10:30
andrew.shvv
a0c4f7cfd1 BOLT 3: add more detailed commitment transaction estimation (#26)
* add more detailed estimation
* fix miscalculations
2016-11-30 06:50:05 +10:30
Rusty Russell
7c884f2af4 BOLT 01: reorganize, tighten nomenclature.
Major changes:
1. Move crypto first, then cover contents
2. Use "lightning messages" explicitly to refer to upper layer, use
   "packet" in the one case where we refer to the whole thing.
3. Collapse "Transport Message Exchange" and "Protocol Message Encapsulation"
   into "Lightning Message Specification" which already contains much overlap.

Minor changes:
1. Put the big-endian requirement in the general overview, since the crypto
   layer uses that too.
2. Say "is" instead of "should be" encrypted: it's not an option.
3. Note why we separate local and global features.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-30 06:47:32 +10:30
Rusty Russell
b228a2e77d BOLT 2: remove attempts to align signatures.
They're really a blob of bytes, and we weren't aligning them correctly in
two cases anyway.  This gets rid of gratuitous padding, too.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-29 12:58:13 +10:30
Rusty Russell
351e0deda2 Merge pull request #24 from rustyrussell/rfc-short-packets
[RFC] BOLT 1, BOLT 2, BOLT 5: 2-byte lengths everywhere.
2016-11-29 11:16:38 +10:30
Rusty Russell
14e199d823 BOLT 1, BOLT 2, BOLT 5: 2-byte lengths everywhere.
Since our cryptopacket limits us to 2 bytes, and since people will
send 1-message-per-crypto-packet and nobody will test the
multiple-messages-in-one-cryptopacket code, let's just restrict to
64k messages.

1. Make cryptopacket length not include the HMAC, so we can actually send
   64k messages.
2. Remove len prefix from packet, make type 2 bytes, note alignment properties.
3. Change message internal lengths/counts from 4 to 2 bytes, since more
   is nonsensical anyway, and this removes a need to check before allocating:
    - init feature bitfield length
    - error message length
    - shutdown scriptpubkey length
    - commit_sig number of HTLC signatures
    - revoke_and_ack number of HTLC-timeout signatures
4. Change max-accepted-htlcs to two bytes, and limit it to 511 to ensure
   that commit_sig will always be under 64k.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-29 10:34:43 +10:30
Rusty Russell
d12f245b4d BOLT 2: clarify what feerate-per-kw stands for and how it's calculated.
Bitcoin still uses feerate-per-kb, which needs to be multiplied by 4
in segwit.  It's more than a little confusing.

Split the paragraphs, too, as it's a little overwhelming.

Reported-by: Olaoluwa Osuntokun <laolu32@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-28 13:18:09 +10:30
Rusty Russell
1a1dc1e70f Merge pull request #22 from lightningnetwork/fix-fee-calc
BOLT 3: Fix fee calculation.
2016-11-28 13:17:29 +10:30
Rusty Russell
2e0b7266d1 Merge pull request #14 from lightningnetwork/extraction-tools
tools/extract-formats.py: produce structure definitions and check alignment
2016-11-28 11:34:09 +10:30
Rusty Russell
727295e6bb Merge pull request #25 from lightningnetwork/open-first-commitment-point
Adding a first-per-commitment-point field to open_channel
2016-11-25 10:44:18 +10:30
Rusty Russell
be3b72b768 BOLT 2: rename open_channel's max-num-htlcs to max-accepted-htlcs.
This is what it actually is (and how it's documented): you can't control
the total since both sides can add at the same time, you can only tell
the other side how many *it* can add, and control how many you add.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2016-11-25 10:31:47 +10:30
Olaoluwa Osuntokun
a86c9f8944
BOLT 1: clarify handshake by making components more explicit
This commit clarifies the current draft of the crypto spec in several areas by
making the steps more explicit. In addition a few errors in the prior version
of this draft have been fixed.

Thanks @EthanHeilman for pointing out several ambiguities in the prior draft of
the document.

A future commit will contain the addition of several test vectors to ensure
implementation parity.
2016-11-24 15:06:13 -06:00
Pierre-Marie Padiou
a0bc945260 typo 2016-11-24 16:47:33 +01:00
Pierre-Marie Padiou
f8ad90b680 adding first-per-commitment-point to open_channel 2016-11-24 15:40:01 +01:00
Pierre-Marie Padiou
1781d28a97 fix tabs->spaces 2016-11-24 14:35:39 +01:00
Rusty Russell
bcb03f870f Merge pull request #16 from lightningnetwork/flags-in-routing
BOLT 7: Use a flags word, not padding.
2016-11-24 16:26:45 +10:30
Rusty Russell
0dd4583db1 Merge pull request #17 from lightningnetwork/funding-created-single-byte-outindex
BOLT 2: Only single byte for channel-index.
2016-11-24 12:42:36 +10:30
Rusty Russell
bfc392c6f9 Merge pull request #19 from lightningnetwork/fix-funding-locked-announce-sigs
BOLT 2: fix funding_locked announcement signatures.
2016-11-24 12:42:20 +10:30
Fabrice Drouin
de87eaa147 BOLT 3: fix witness scripts
1. Add a short paragraph on P2WSH (the witness script is omitted for brevity in all descriptions) and fix witness scripts for spending the different tx outputs.
2. use CHECK(MULTI)SIG instead of CHECK(MULTI)SIGVERIFY
3. Fix order and nulldummy for witness in HTLC transactions
4. Fix a minor typo (if -> it)

(Commits rebased and squashed together by Rusty)
2016-11-24 11:05:31 +10:30