Skip to main content

SignedVtxoTreeSpec

Struct SignedVtxoTreeSpec 

Source
pub struct SignedVtxoTreeSpec {
    pub spec: VtxoTreeSpec,
    pub utxo: OutPoint,
    pub cosign_sigs: Vec<Signature>,
}
Expand description

All the information needed to uniquely specify a fully signed VTXO tree.

Fields§

§spec: VtxoTreeSpec§utxo: OutPoint§cosign_sigs: Vec<Signature>

The signatures for the internal txs, from leaves to root.

Implementations§

Source§

impl SignedVtxoTreeSpec

Source

pub fn new( spec: VtxoTreeSpec, utxo: OutPoint, cosign_signatures: Vec<Signature>, ) -> SignedVtxoTreeSpec

Signatures expected for internal nodes ordered from leaves to root.

Source

pub fn nb_leaves(&self) -> usize

Source

pub fn exit_branch(&self, leaf_idx: usize) -> Vec<Transaction>

Construct the exit branch starting from the root ending in the leaf.

Panics if leaf_idx is out of range.

This call is quite inefficient and if you want to make repeated calls, it is advised to use CachedSignedVtxoTree::exit_branch instead.

Source

pub fn all_final_txs(&self) -> Vec<Transaction>

Get all final txs in this tree, starting with the leaves, towards the root

Source

pub fn into_cached_tree(self) -> CachedSignedVtxoTree

Source

pub fn detect_hashlock_version( &self, ) -> Result<HashlockVersion, HashlockVersionDetectError>

Detect the hashlock version this tree was signed with.

We forgot to properly encode this, so it detects it by looking at the first signature and seeing which version it is valid for.

Falls back to v1 for empty trees, they shouldn’t exist.

Source

pub fn with_detected_hashlock_version( self, ) -> Result<Self, HashlockVersionDetectError>

Return this tree with its hashlock version detected from the cosign signatures.

Use this before rebuilding transactions or VTXOs from a stored tree that may predate the v1 hashlock clauses; see Self::detect_hashlock_version.

Trait Implementations§

Source§

impl Clone for SignedVtxoTreeSpec

Source§

fn clone(&self) -> SignedVtxoTreeSpec

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SignedVtxoTreeSpec

Source§

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

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

impl PartialEq for SignedVtxoTreeSpec

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl ProtocolEncoding for SignedVtxoTreeSpec

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 StructuralPartialEq for SignedVtxoTreeSpec

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