Enum OutboundHTLCStateDetails
pub enum OutboundHTLCStateDetails {
AwaitingRemoteRevokeToAdd,
Committed,
AwaitingRemoteRevokeToRemoveSuccess,
AwaitingRemoteRevokeToRemoveFailure,
}
Expand description
Exposes the state of pending outbound HTLCs.
At a high level, an HTLC being forwarded from one Lightning node to another Lightning node goes through the following states in the state machine:
- Announced for addition by the originating node through the update_add_htlc message.
- Added to the commitment transaction of the receiving node and originating node in turn through the exchange of commitment_signed and revoke_and_ack messages.
- Announced for resolution (fulfillment or failure) by the receiving node through either one of the update_fulfill_htlc, update_fail_htlc, and update_fail_malformed_htlc messages.
- Removed from the commitment transaction of the originating node and receiving node in turn through the exchange of commitment_signed and revoke_and_ack messages.
This can be used to inspect what next message an HTLC is waiting for to advance its state.
Variants§
AwaitingRemoteRevokeToAdd
We are awaiting the appropriate revoke_and_ack’s from the remote before the HTLC is added on the remote’s commitment transaction after update_add_htlc.
Committed
The HTLC has been added to the remote’s commitment transaction by sending commitment_signed and receiving revoke_and_ack in return.
The HTLC will remain in this state until the remote node resolves the HTLC, or until we unilaterally close the channel due to a timeout with an uncooperative remote node.
AwaitingRemoteRevokeToRemoveSuccess
The HTLC has been fulfilled successfully by the remote with a preimage in update_fulfill_htlc, and we removed the HTLC from our commitment transaction by receiving commitment_signed and returning revoke_and_ack. We are awaiting the appropriate revoke_and_ack’s from the remote for the removal from its commitment transaction.
AwaitingRemoteRevokeToRemoveFailure
The HTLC has been failed by the remote with update_fail_htlc or update_fail_malformed_htlc, and we removed the HTLC from our commitment transaction by receiving commitment_signed and returning revoke_and_ack. We are awaiting the appropriate revoke_and_ack’s from the remote for the removal from its commitment transaction.
Trait Implementations§
§impl Clone for OutboundHTLCStateDetails
impl Clone for OutboundHTLCStateDetails
§fn clone(&self) -> OutboundHTLCStateDetails
fn clone(&self) -> OutboundHTLCStateDetails
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for OutboundHTLCStateDetails
impl Debug for OutboundHTLCStateDetails
§impl From<&OutboundHTLCState> for OutboundHTLCStateDetails
impl From<&OutboundHTLCState> for OutboundHTLCStateDetails
§fn from(state: &OutboundHTLCState) -> OutboundHTLCStateDetails
fn from(state: &OutboundHTLCState) -> OutboundHTLCStateDetails
§impl MaybeReadable for OutboundHTLCStateDetails
impl MaybeReadable for OutboundHTLCStateDetails
§fn read<R>(
reader: &mut R,
) -> Result<Option<OutboundHTLCStateDetails>, DecodeError>where
R: Read,
fn read<R>(
reader: &mut R,
) -> Result<Option<OutboundHTLCStateDetails>, DecodeError>where
R: Read,
Self
in from the given Read
.§impl PartialEq for OutboundHTLCStateDetails
impl PartialEq for OutboundHTLCStateDetails
§impl Writeable for OutboundHTLCStateDetails
impl Writeable for OutboundHTLCStateDetails
impl StructuralPartialEq for OutboundHTLCStateDetails
Auto Trait Implementations§
impl Freeze for OutboundHTLCStateDetails
impl RefUnwindSafe for OutboundHTLCStateDetails
impl Send for OutboundHTLCStateDetails
impl Sync for OutboundHTLCStateDetails
impl Unpin for OutboundHTLCStateDetails
impl UnwindSafe for OutboundHTLCStateDetails
Blanket Implementations§
§impl<T> AnyEq for T
impl<T> AnyEq for T
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request