mirror of
https://github.com/lightning/bolts.git
synced 2025-01-18 21:32:31 +01:00
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>
This commit is contained in:
parent
3a359c8e1e
commit
72b2d4e6c2
@ -15,6 +15,7 @@ Because Lightning is designed to be trustless, there is no risk of loss of funds
|
|||||||
# Table of Contents
|
# Table of Contents
|
||||||
* [General Nomenclature](#general-nomenclature)
|
* [General Nomenclature](#general-nomenclature)
|
||||||
* [Commitment Transaction](#commitment-transaction)
|
* [Commitment Transaction](#commitment-transaction)
|
||||||
|
* [Failing A Channel](#failing-a-channel)
|
||||||
* [Mutual Close Handling](#mutual-close-handling)
|
* [Mutual Close Handling](#mutual-close-handling)
|
||||||
* [Unilateral Close Handling](#unilateral-close-handling)
|
* [Unilateral Close Handling](#unilateral-close-handling)
|
||||||
* [On-chain HTLC Output Handling: Our Offers](#on-chain-htlc-output-handling-our-offers)
|
* [On-chain HTLC Output Handling: Our Offers](#on-chain-htlc-output-handling-our-offers)
|
||||||
@ -97,6 +98,43 @@ As an incentive for A and B to cooperate, an `OP_CHECKSEQUENCEVERIFY` relative t
|
|||||||
See [BOLT #3: Commitment Transaction](03-transactions.md#commitment-transaction) for more details.
|
See [BOLT #3: Commitment Transaction](03-transactions.md#commitment-transaction) for more details.
|
||||||
|
|
||||||
|
|
||||||
|
# Failing A Channel
|
||||||
|
|
||||||
|
Various error cases involve closing a channel, and this can be done in
|
||||||
|
several ways; the most efficient is preferred. Note that there are
|
||||||
|
requirements around sending the error message to the peer in
|
||||||
|
[BOLT #1: The `error` message](01-messaging.md#the-error-message).
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- If no local commitment transaction ever contained a `to_local`
|
||||||
|
or HTLC output, the node MAY simply forget the channel.
|
||||||
|
- Otherwise, if the current commitment transaction does not contain
|
||||||
|
`to_local` or HTLC outputs, a node MAY simply wait and rely on the
|
||||||
|
other node to close, but MUST not forget the channel.
|
||||||
|
- Otherwise, if the node has received a valid `closing_signed` message
|
||||||
|
with high enough fee level, it SHOULD use that to perform a mutual
|
||||||
|
close.
|
||||||
|
- Otherwise, it MUST use the last commitment transaction for which it
|
||||||
|
has a signature to perform unilateral close.
|
||||||
|
|
||||||
|
## Rationale
|
||||||
|
|
||||||
|
Since `dust_limit_satoshis` is supposed to prevent uneconomic output
|
||||||
|
creation (which would be left unspent forever in the blockchain), we
|
||||||
|
insist on spending the commitment transaction outputs.
|
||||||
|
|
||||||
|
In the early stages of a channel, it's common for one side to have
|
||||||
|
little or no money in the channel; with nothing to lose, there's no
|
||||||
|
reason to consume resources monitoring the channel state.
|
||||||
|
|
||||||
|
There's a bias towards using mutual close over unilateral because
|
||||||
|
outputs are unencumbered by delay, directly spendable by wallets, and
|
||||||
|
because fees tend to be less exaggerated than commitment transactions:
|
||||||
|
thus the only reason not to use the signature from `closing_signed`
|
||||||
|
would be if the fee offered was too small for it to be processed.
|
||||||
|
|
||||||
|
|
||||||
# Mutual Close Handling
|
# Mutual Close Handling
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user