Enum OutboundHTLCStateDetails

Source
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§

Source§

impl Clone for OutboundHTLCStateDetails

Source§

fn clone(&self) -> OutboundHTLCStateDetails

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OutboundHTLCStateDetails

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl MaybeReadable for OutboundHTLCStateDetails

Source§

fn read<R: Read>(reader: &mut R) -> Result<Option<Self>, DecodeError>

Reads a Self in from the given Read.
Source§

impl PartialEq for OutboundHTLCStateDetails

Source§

fn eq(&self, other: &OutboundHTLCStateDetails) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Writeable for OutboundHTLCStateDetails

Source§

fn write<W: Writer>(&self, writer: &mut W) -> Result<(), Error>

Writes self out to the given Writer.
Source§

fn encode(&self) -> Vec<u8>

Writes self out to a Vec<u8>.
Source§

fn serialized_length(&self) -> usize

Gets the length of this object after it has been serialized. This can be overridden to optimize cases where we prepend an object with its length.
Source§

impl StructuralPartialEq for OutboundHTLCStateDetails

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V