You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We previously supported having multiple channels with our peer, because
we didn't yet support splicing. Now that we support splicing, we always
have at most one active channel with our peer. This lets us simplify
greatly the outgoing payment state machine: payments are always made
with a single outgoing HTLC instead of potentially multiple HTLCs (MPP).
We don't need any kind of path-finding: we simply need to check the
balance of our active channel, if any.
We may introduce support for connecting to multiple peers in the future.
When that happens, we will still have a single active channel per peer,
but we may allow splitting outgoing payments across our peers. We will
need to re-work the outgoing payment state machine when this happens,
but it is too early to support this now anyway.
This refactoring makes it easier to create payment onion, by creating
the trampoline onion *and* the outer onion in the same function call.
This will make it simpler to migrate to the version of trampoline
that is currently specified in lightning/bolts#836
where some fields will be included in the payment onion instead of the
trampoline onion.
Copy file name to clipboardExpand all lines: src/commonMain/kotlin/fr/acinq/lightning/channel/ChannelException.kt
+2Lines changed: 2 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -83,9 +83,11 @@ data class CannotAffordFirstCommitFees (override val channelId: Byte
83
83
data classCannotAffordFees (overridevalchannelId:ByteVector32, valmissing:Satoshi, valreserve:Satoshi, valfees:Satoshi) : ChannelException(channelId, "can't pay the fee: missing=$missing reserve=$reserve fees=$fees")
84
84
data classCannotSignWithoutChanges (overridevalchannelId:ByteVector32) : ChannelException(channelId, "cannot sign when there are no change")
85
85
data classCannotSignBeforeRevocation (overridevalchannelId:ByteVector32) : ChannelException(channelId, "cannot sign until next revocation hash is received")
86
+
data classCannotSignDisconnected (overridevalchannelId:ByteVector32) : ChannelException(channelId, "disconnected before signing outgoing payments")
86
87
data classUnexpectedRevocation (overridevalchannelId:ByteVector32) : ChannelException(channelId, "received unexpected RevokeAndAck message")
87
88
data classInvalidRevocation (overridevalchannelId:ByteVector32) : ChannelException(channelId, "invalid revocation")
88
89
data classInvalidFailureCode (overridevalchannelId:ByteVector32) : ChannelException(channelId, "UpdateFailMalformedHtlc message doesn't have BADONION bit set")
data classPleasePublishYourCommitment (overridevalchannelId:ByteVector32) : ChannelException(channelId, "please publish your local commitment")
90
92
data classCommandUnavailableInThisState (overridevalchannelId:ByteVector32, valstate:String) : ChannelException(channelId, "cannot execute command in state=$state")
91
93
data classForbiddenDuringSplice (overridevalchannelId:ByteVector32, valcommand:String?) : ChannelException(channelId, "cannot process $command while splicing")
0 commit comments