pub enum ExitState {
Start(ExitStartState),
Processing(ExitProcessingState),
AwaitingDelta(ExitAwaitingDeltaState),
Claimable(ExitClaimableState),
ClaimInProgress(ExitClaimInProgressState),
Claimed(ExitClaimedState),
VtxoAlreadySpent(ExitVtxoAlreadySpentState),
}Expand description
A utility type to wrap ExitState children so they can be easily serialized. This also helps with debugging a lot!
Variants§
Start(ExitStartState)
Processing(ExitProcessingState)
AwaitingDelta(ExitAwaitingDeltaState)
Claimable(ExitClaimableState)
ClaimInProgress(ExitClaimInProgressState)
Claimed(ExitClaimedState)
Terminal state: the exit is fully complete, and the VTXO has been claimed by the user or spent by another user who owns a VTXO that is deeper in the tree than this one.
Note: The circumstances in which the latter can occur are typically when the user has stale data and is trying to exit an already-spent VTXO.
VtxoAlreadySpent(ExitVtxoAlreadySpentState)
Terminal state: the exit cannot proceed because the VTXO has already been spent offchain. A user can start a unilateral exit for a VTXO but later spend it via a refresh, arkoor, etc, in that situation an exit will enter this state.
Implementations§
Source§impl ExitState
impl ExitState
pub fn new_start(tip: BlockHeight) -> Self
pub fn new_processing<T: IntoIterator<Item = Txid>>( tip: BlockHeight, txids: T, ) -> Self
pub fn new_processing_from_transactions( tip: BlockHeight, transactions: Vec<ExitTx>, ) -> Self
pub fn new_awaiting_delta( tip: BlockHeight, confirmed_block: BlockRef, wait_delta: BlockDelta, ) -> Self
pub fn new_claimable( tip: BlockHeight, claimable_since: BlockRef, last_scanned_block: Option<BlockRef>, ) -> Self
pub fn new_claim_in_progress( tip: BlockHeight, claimable_since: BlockRef, claim_txid: Txid, ) -> Self
pub fn new_claimed(tip: BlockHeight, txid: Txid, block: BlockRef) -> Self
pub fn new_vtxo_already_spent(tip: BlockHeight) -> Self
Sourcepub fn is_pending(&self) -> bool
pub fn is_pending(&self) -> bool
Checks if the state is awaiting the confirmation of every exit transaction in the tree and the exit delta required for the VTXO to become claimable.
Note: This excludes the claimable state, use ExitState::is_claimable for that.
Sourcepub fn is_claimable(&self) -> bool
pub fn is_claimable(&self) -> bool
A simple helper for ExitState::Claimable, at this point an exit can be spent on-chain and redeemed into a UTXO controlled by the user.
pub fn requires_confirmations(&self) -> bool
pub fn claimable_height(&self) -> Option<BlockHeight>
Sourcepub fn warrants_exited_vtxo(&self) -> bool
pub fn warrants_exited_vtxo(&self) -> bool
True once every exit transaction has confirmed on-chain (i.e. the exit has reached
at least ExitState::AwaitingDelta). At that point the VTXO can be considered
crate::vtxo::VtxoStateKind::Exited: the underlying onchain outpoint is committed
to the exit chain, the server can see it and will refuse to service the VTXO for
any payment operations offchain, and there’s nothing left to undo client-side.
Note: we deliberately don’t flip the VTXO at Processing — even with every tx
broadcast, mempool eviction is still possible until confirmation, so we hold off
to keep Exited an accurate “this is gone” signal.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ExitState
impl<'de> Deserialize<'de> for ExitState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ExitState
Source§impl Into<ExitState> for ExitStartState
impl Into<ExitState> for ExitStartState
Source§impl Into<ExitState> for ExitProcessingState
impl Into<ExitState> for ExitProcessingState
Source§impl Into<ExitState> for ExitAwaitingDeltaState
impl Into<ExitState> for ExitAwaitingDeltaState
Source§impl Into<ExitState> for ExitClaimableState
impl Into<ExitState> for ExitClaimableState
Source§impl Into<ExitState> for ExitClaimInProgressState
impl Into<ExitState> for ExitClaimInProgressState
Source§impl Into<ExitState> for ExitClaimedState
impl Into<ExitState> for ExitClaimedState
Source§impl Into<ExitState> for ExitVtxoAlreadySpentState
impl Into<ExitState> for ExitVtxoAlreadySpentState
impl StructuralPartialEq for ExitState
Auto Trait Implementations§
impl Freeze for ExitState
impl RefUnwindSafe for ExitState
impl Send for ExitState
impl Sync for ExitState
impl Unpin for ExitState
impl UnsafeUnpin for ExitState
impl UnwindSafe for ExitState
Blanket Implementations§
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> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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