2
0
mirror of https://github.com/lnbook/lnbook synced 2024-11-01 03:20:53 +00:00
lnbook/communications_protocol.asciidoc

36 lines
1.8 KiB
Plaintext
Raw Normal View History

2020-02-09 16:37:18 +00:00
[[communications_protocol]]
== The communication protocol
After you discovered the overview of how the lightning network protocol worked in the last chapter we now want to present a few more details about the actual communication that takes place between the nodes to fulfill the most important tasks like opening a channel, forwarding a payment and closing the channel.
All communication takes place over a secure, encrypted and authenticated connection.
[NOTE]
====
While the specification of how to set up such a connection is part of the lightning network protocol and can be read upon in BOLT08 we will omit this in the book.
The reason is that BOLT08 mainly follows the handshake patterns from the noise protocol framework which is a standard template system for secure cryptographic handshakes.
This protocol framework is also used by Whatsapp and Wireguard and is very well documented.
If you want to learn more we suggest you check out http://www.noiseprotocol.org/
====
2020-02-17 17:38:10 +00:00
=== Lightning Messages
2020-02-17 17:38:10 +00:00
Each Lightning Message contains 2 bytes indicating the *type* of message, and a variable-length *payload*.
2020-02-17 17:32:50 +00:00
A *payload* needs to be interpreted according the *type*.
2020-02-17 17:38:10 +00:00
A Lightning Message falls into one of the following groups:
2020-02-17 17:32:50 +00:00
[cols="3,3,10",options="header"]
|=======
| Group | Type | Description
| Setup & Control | 0~31 | Messages related to connection setup, control, supported features, and error reporting
| Channel | 32~127 | Messages related to setup and close channels
| Commitment | 128~255 | Messages related to updating the current commitment transaction
| Routing | 256~511 | Messages related to node and channel announcements, or active route explorations
| Custom | 32768~65535 | Experimental or custom messages
|=======
=== Opening a Payment channel
=== forwarding, making and receiving a payment
=== closing the channel