1
0
Fork 0
mirror of https://github.com/lightning/bolts.git synced 2025-02-22 22:25:42 +01:00
Commit graph

296 commits

Author SHA1 Message Date
Rusty Russell
01571c1e58 Bolt 11: Invoice Protocol for Lightning Payments (#183)
This specifies a draft invoice protocol for lightning payments.

Particular thanks for detailed feedback from:
* ZmnSCPxj <ZmnSCPxj@protonmail.com>
* @Saicere  
* @kallewoof
* @halseth 
* @cdecker 

Signed-off-by: Rusty Russell <rusty@blockstream.com>
2017-06-27 20:08:13 +09:30
Olaoluwa Osuntokun
5e666b6c99 BOLT 9: remove feature bit for channels_public
This commit removes the feature bit for channels_public as they have
been deprecated by the addition of the `announce_channel` field in the
`open_channel` message.
2017-05-27 10:30:42 +09:30
Olaoluwa Osuntokun
667ca1fdd6 BOLT 2: allow peers to conditionally signal channel announcement in open_channel
This commit gives peers the ability to signal their intent to make a
channel private in the `open_channel` message. This differs from the
current method as now peers are able to create multiple channels with
heterogeneous announcement policies _without_ disconnecting and
re-connecting in-between each channel funding. The prior requirement
for the nodes to re-connect was burdensome and unnecessary.

[ Minor tweaks from feedback folded in -- RR ]
2017-05-27 10:30:42 +09:30
Olaoluwa Osuntokun
38601f6edb BOLT 2: link to BOLT 7 when referring announcement_signature msg
This commit modifies the “Normal Operation” summarization by including
a link to BOLT #7 when mentioning the `announcement_signature` message.
Previously a reader would need to search other documents to figure out
what an `announcement_signature` was, and its purpose.
2017-05-27 10:30:42 +09:30
ZmnSCPxj
13326cca3c Enable travis to spellcheck BOLT#10 to 99. 2017-05-26 14:31:50 +09:30
Rusty Russell
1e228bcf8f Clarify init-message description
This is based on a series of patches from @EmelyanenkoK which makes the treatment of feature bits clearer and adds rationale so that future extensions can be made wisely.

Thanks to all involved!

Closes: #156 
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-25 09:43:31 +09:30
Rusty Russell
95e7196560 BOLT 3: fix references to RIPEMD160(revocationkey)
They should be HASH160, aka RIPEMD160(SHA256()).

Closes: #179
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-23 17:56:53 +02:00
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
Olaoluwa Osuntokun
61b5b3f7b4 BOLT 3: clarify description of revocation key derivation (#170)
This commit attempts to clarify some ambiguity in the way the
revocation key derivation was formerly described. Rather than framing
the description in terms of local vs remote nodes, we instead frame the
description around the _process_ of creating a new commitment
transaction for a remote node,

[ minor typos and remove weird part-sentence -- RR ]
2017-05-20 09:50:51 +09:30
Rusty Russell
7d6a4f82f4 tools/spellcheck: expiries is a valid word.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-19 11:12:54 +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
EmelyanenkoK
032d55832d Delete obsolete reference to padding 2017-05-19 10:44:24 +09:30
Rusty Russell
8b600e28ff FIXUP: length fixes from pm47 2017-05-18 09:56:05 +09:30
Christian Decker
6713b26272 aspell: Make CI happy again 2017-05-18 09:56:05 +09:30
Olaoluwa Osuntokun
60f611d7b7 BOLT 7: add current and next-generation tor onion addresses
This commit extends the set of define address descriptor types to
include support for v2 (current-gen) and v3 (next-gen) onion service
addresses. This enables user to run their Lightning nodes as onion
services, only accepting in-bound connections via their onion
addresses. Running a Lightning node behind Tor may serve to boost the
privacy of a user as they no longer need to give away their location
when advertising their node as willing to accept in-bound connections.

The current generation onion service address are widely deployed and
similar looking. They consume 10-bytes of space as they are the SHA-1
hash of a 1024-bit RSA public key. Encoding using base-32, they look
like: v2cbb2l4lsnpio4q.onion.

The next-generation onion services addresses are defined within
prop224[1]. These addresses are a bit longer as they includes a full
e25519 public key (32-bytes), a 2-byte checksum, and finally a 1 byte
version. The full length of the raw version of these addresses are
35-bytes. When encoded using base-32, then next-gem onion address look
like: btojiu7nu5y5iwut64eufevogqdw4wmqzugnoluw232r4t3ecsfv37ad.onoin.

[1]:
https://gitweb.torproject.org/torspec.git/tree/proposals/224-rend-spec-n
g.txt
2017-05-18 09:56:05 +09:30
Olaoluwa Osuntokun
91f0deb1c1 BOLT 7: use bullet points, not numbers to enumerate address descriptor types 2017-05-18 09:56:05 +09:30
Rusty Russell
5801656c6d BOLT 2: make opening retransmissions atomic and better specified.
1. Tell the node when to broadcast the funding tx (we didn't do this!).
2. Allow timeouts generally if no progress is made (originally this
   was just when waiting for funding_locked, but it applies generally).
3. Use `funding_signed` as the commitment point: before this, we forget,
   after this, we remember.  If lost, we'll timeout.
4. The core of the retransmission requirements now only applies to
   the normal and shutdown states, and will be revised separately
   depending on #172

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-18 09:49:19 +09:30
Rusty Russell
41790a9cd7 BOLT 2: add suggestion to retransmit errors, and rationale section.
Moves it together with the similarly-reasoned `closing_signed`
retransmission.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-18 09:49:19 +09:30
Rusty Russell
72b2d4e6c2 BOLT 5: define what "failing a channel" means.
We talk about failing a channel, or channels, but we never spelled
out what a node does in that case.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-18 09:48:53 +09:30
Olaoluwa Osuntokun
3a359c8e1e BOLT 2: correct sat/Kb to sat/Kw conversion to avoid over paying (#176)
This commit fixes an advisory error in the current spec draft. We
currently use `fee-per-kw` where `kw = 1000` weight to determine the
proper fee to pay for commitment transactions. Currently, the spec
advises implementer to take the typical sat/Kb at _multiply_ by 4. This
will result in implementations overpaying for commitment transactions
as the scaling should actually be in the _opposite_ direction. As the
weight is scaled up by 4, for fee-per-kw should be scaled down by 4.
So: sat/Kb * 1/4, instead of sat/Kb * 4.

[Minor fixup: "1/4th" to "1/4", better english, and doesn't trip spellcheck. -- RR]
2017-05-18 09:48:29 +09:30
Rusty Russell
1b4195c842 BOLT 5: specifically use to_local instead of to-self.
Not all of them: sometimes we refer to to-self including HTLCs which we're
spending ourselves, but in three places we're explicitly referring to
the `to_local` output.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
f0da3978e9 Underscores for all terms, not just fields.
Plus a few more missing ones, and some consistency fixes in names
as pointed out by Roasbeed and Fabrice.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
5f06896403 BOLT 3: instead of ripemd-of-X, use RIPEMD160(X).
This is more specific and clearer.

Reported-by: Olaoluwa Osuntokun <laolu32@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
63edd2e869 BOLT 3: use correct field name for HTLC timeout value.
It's called cltv_expiry in BOLT 2's update_add_htlc.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
407b9927bf BOLT 3: Replace many hyphens with underscores in descriptions.
Not sure how I missed these:
1. funding-pubkey -> funding_pubkey
2. to-self-delay -> to_self_delay
3. per-commitment-point -> per_commitment_point
4. per-commitment-secret -> per_commitment_secret
5. revocation-basepoint -> revocation_basepoint
6. delayed-payment-basepoint -> delayed_payment_basepoint
7. payment-basepoint -> payment_basepoint

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
260e7776ac BOLT 7: more trivial hyphen to underscore updates.
1. ipv4-addr -> ipv4_addr
2. ipv6-addr -> ipv6_addr
3. fee-base-msat -> fee_base_msat
4. htlc-amount-msat -> amount_msat
5. fee-proportional-millionths -> fee_proportional_millionths

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
43b0b1c284 BOLT 2: sha256-of-onion -> sha256_of_onion in descriptions.
Missed this replacement.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-15 12:54:53 -07:00
Rusty Russell
8ee57b9773 tools: update for new format.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
128966e3c0 BOLT 9: Add CC-BY license tag.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
d3cda9bef2 BOLT 8: Add CC-BY icon image (to match other BOLTs)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
2800f12025 BOLT 8: fix trivial typo.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
c0fa965036 BOLT 3: Add URL for BIP69.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
67efbd0872 BOLT 5: Add TOC, Authors section, add BOLT URL references.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
6340cf0db5 BOLT 7: underscores and backticks everywhere.
Also:
1. feature -> features
2. rgb -> rgb_color
3. node-id -> node_id
4. node_update -> node_announcement

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
ab530266e4 BOLT 5: underscores and backticks everywhere.
One minor change to refer to field name:
	preserves `to_self` delay
to:
	preserves `to_self_delay` requirement.

Typo fixes:
1. revocation -> revoke_and_ack
2. ctlv_expiry -> cltv_expiry.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +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
Rusty Russell
8c0e55ac37 BOLT 4: underscores and backticks everywhere.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
44fe02edbf BOLT 2: underscores and backticks everywhere.
Many old fieldnames fixed up:
1. funding_amount -> funding_satoshis
2. max_htlc_value_in_flight -> max_htlc_value_in_flight_msat
3. update_commit -> commitment_signed
4. route -> onion_routing_packet

Typo fixes:
1. fee_rate -> feerate_per_kw
2. amount_sat -> amount_msat
3. script_pubkey -> scriptpubkey

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
Rusty Russell
4f585fe2d0 BOLT 1: underscores and backticks everywhere.
Typo fix: bytelen -> byteslen

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-11 11:20:36 +09:30
ZmnSCPxj
d140405a6f 07-routing-gossip.md: channel_update: Update text about end indication.
The channel end is now indicated via a single bit
     in `flags`, not an entire byte.
2017-05-09 16:27:36 +09:30
ZmnSCPxj
eb928390b9 07-routing-gossip.md: Move some text about ipv6 and port from channel_update to node_announcement.
`channel_update` does not make sense as it does not have fields
    with either addresses or ports.
  Moved it to `node_announcement` on the assumption that the text
    was just inserted in the wrong place, since `node_announcement`
    is described before `channel_update` and does have addresses
    and ports.
2017-05-09 16:27:36 +09:30
ZmnSCPxj
77c9272ed6 02-peer-protocol.md: Minor typo: update_htlc_add, verb should come first 2017-05-09 16:27:36 +09:30
Rusty Russell
8bc2304705 BOLT 2: remove requirement for missing field.
minimum-depth is no longer in the opening message.

Closes: #157
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-09 16:26:52 +09:30
Pierre-Marie Padiou
f22119b51a fixed typo in BOLT 7 2017-05-07 12:01:12 +09:30
Fabrice Drouin
06de1a586e BOLT4: fix onion reply test vectors (see #158) 2017-05-05 12:01:51 +09:30
EmelyanenkoK
85f4365c47 Fix typo
max-htlc-value-in-flight-msat had two different designations
2017-05-03 13:10:27 +09:30
Rusty Russell
8a35f1f134 tools/spellcheck: add modern words to our dict (Travis is old)
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-03 13:08:07 +09:30
Rusty Russell
c7092de08b tools/spellcheck.sh: add --check option, add tests to travis.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
2017-05-03 13:08:07 +09:30