Vtxo

Struct Vtxo 

Source
pub struct Vtxo { /* private fields */ }
Expand description

Represents a VTXO in the Ark.

The correctness of the return values of methods on this type is conditional on the VTXO being valid. For invalid VTXOs, the methods should never panic, but can return incorrect values. It is advised to always validate a VTXO upon receipt using Vtxo::validate.

Be mindful of calling Clone on a Vtxo, as they can be of non-negligible size. It is advised to use references where possible or use an std::rc::Rc or std::sync::Arc if needed.

Implementations of PartialEq, Eq, PartialOrd, Ord and Hash are proxied to the implementation on Vtxo::id.

Implementations§

Source§

impl Vtxo

Source

pub fn id(&self) -> VtxoId

Get the identifier for this Vtxo.

This is the same as Vtxo::point but encoded as a byte array.

Source

pub fn spec(&self) -> VtxoSpec

Get the spec for this VTXO.

Source

pub fn point(&self) -> OutPoint

The outpoint from which to build forfeit or arkoor txs.

This can be an on-chain utxo or an off-chain vtxo.

Source

pub fn amount(&self) -> Amount

The amount of the Vtxo.

Source

pub fn chain_anchor(&self) -> OutPoint

The UTXO that should be confirmed for this Vtxo to be valid.

It is the very root of the VTXO.

Source

pub fn policy(&self) -> &VtxoPolicy

The output policy of this VTXO.

Source

pub fn policy_type(&self) -> VtxoPolicyKind

The output policy type of this VTXO.

Source

pub fn expiry_height(&self) -> BlockHeight

The expiry height of the Vtxo.

Source

pub fn server_pubkey(&self) -> PublicKey

The server pubkey used in arkoor transitions.

Source

pub fn exit_delta(&self) -> BlockDelta

The relative timelock block delta used for exits.

Source

pub fn exit_depth(&self) -> u16

Returns the total exit depth (including OOR depth) of the vtxo.

Source

pub fn arkoor_depth(&self) -> u16

Returns the OOR depth of the vtxo.

Source

pub fn server_htlc_out_payment_hash(&self) -> Option<PaymentHash>

Get the payment hash if this vtxo is an HTLC send arkoor vtxo.

Source

pub fn is_arkoor_compatible(&self) -> bool

Whether this Vtxo can be spent in an arkoor tx.

Source

pub fn arkoor_pubkey(&self) -> Option<PublicKey>

The public key used to cosign arkoor txs spending this Vtxo. This will return None if Vtxo::is_arkoor_compatible returns false.

Source

pub fn past_arkoor_pubkeys(&self) -> impl Iterator<Item = PublicKey> + '_

Iterate over all arkoor pubkeys in the arkoor chain of this vtxo.

This does not include the current arkoor pubkey, for that use Vtxo::arkoor_pubkey.

Source

pub fn user_pubkey(&self) -> PublicKey

Returns the user pubkey associated with this Vtxo.

Source

pub fn output_taproot(&self) -> TaprootSpendInfo

The taproot spend info for the output of this Vtxo.

Source

pub fn output_script_pubkey(&self) -> ScriptBuf

The scriptPubkey of the output of this Vtxo.

Source

pub fn txout(&self) -> TxOut

The transaction output (eventual UTXO) of this Vtxo.

Source

pub fn is_arkoor(&self) -> bool

Whether this VTXO contains our-of-round parts. This is true for both arkoor and lightning vtxos.

Source

pub fn transactions(&self) -> VtxoTxIter<'_>

Iterator that constructs all the exit txs for this Vtxo.

Source

pub fn claim_satisfaction_weight(&self) -> Weight

The satisfaction weight required to spend the output when doing a unilateral exit.

Source

pub fn round_cosign_pubkeys(&self) -> Vec<PublicKey>

The set of cosign pubkeys that is present in all of the exit nodes of the non-arkoor part of the exit path.

Source

pub fn arkoor_pubkeys(&self) -> HashSet<PublicKey>

The set of all arkoor pubkeys present in the arkoor part of the VTXO exit path.

Source

pub fn validate( &self, chain_anchor_tx: &Transaction, ) -> Result<ValidationResult, VtxoValidationError>

Fully validate this VTXO and its entire transaction chain.

The chain_anchor_tx must be the tx with txid matching Vtxo::chain_anchor.

Trait Implementations§

Source§

impl Clone for Vtxo

Source§

fn clone(&self) -> Vtxo

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 Vtxo

Source§

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

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

impl Hash for Vtxo

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Vtxo

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for Vtxo

Source§

fn eq(&self, other: &Self) -> 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 PartialOrd for Vtxo

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl ProtocolEncoding for Vtxo

Source§

fn encode<W: Write + ?Sized>(&self, w: &mut W) -> Result<(), Error>

Encode the object into the writer.
Source§

fn decode<R: Read + ?Sized>(r: &mut R) -> Result<Self, ProtocolDecodingError>

Decode the object from the writer.
Source§

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

Serialize the object into a byte vector.
Source§

fn deserialize(byte_slice: &[u8]) -> Result<Self, ProtocolDecodingError>

Deserialize object from the given byte slice.
Source§

fn serialize_hex(&self) -> String

Serialize the object to a lowercase hex string.
Source§

fn deserialize_hex(hex_str: &str) -> Result<Self, ProtocolDecodingError>

Deserialize object from hex slice.
Source§

impl<'a> VtxoRef for &'a Vtxo

Source§

fn vtxo_id(&self) -> VtxoId

The VtxoId of the VTXO
Source§

fn vtxo(&self) -> Option<&Vtxo>

If the Vtxo can be provided, provides it
Source§

impl VtxoRef for Vtxo

Source§

fn vtxo_id(&self) -> VtxoId

The VtxoId of the VTXO
Source§

fn vtxo(&self) -> Option<&Vtxo>

If the Vtxo can be provided, provides it
Source§

impl Eq for Vtxo

Auto Trait Implementations§

§

impl Freeze for Vtxo

§

impl RefUnwindSafe for Vtxo

§

impl Send for Vtxo

§

impl Sync for Vtxo

§

impl Unpin for Vtxo

§

impl UnwindSafe for Vtxo

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. 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