Enum TapretNodePartner

Source
pub enum TapretNodePartner {
    LeftNode(TapNodeHash),
    RightLeaf(LeafScript),
    RightBranch(TapretRightBranch),
}
Expand description

Information proving step of a tapret path in determined way within a given tap tree.

The structure hosts proofs that the right-side partner at the taproot script tree node does not contain an alternative OP-RETURN commitment script.

Variants§

§

LeftNode(TapNodeHash)

Tapret commitment is on the right side of the tree; i.e the node hashing partner can’t contain an alternative commitment.

§

RightLeaf(LeafScript)

Single script spending path was present before tapret commitment, which becomes a second leaf at level 1.

§

RightBranch(TapretRightBranch)

Multiple script spending paths were present; or a single script spending path should be hidden from revealing the script in the proof.

To prove that the 1-st level branch is not a script leafs containing an alternative OP_RETURN commitment we have to reveal the presence of two level 2 structures underneath.

Implementations§

Source§

impl TapretNodePartner

Source

pub fn right_branch(a: TapNodeHash, b: TapNodeHash) -> TapretNodePartner

Constructs right-side tapret branch proof structuring a and b children node hashes in the correct consensus order (i.e. lexicographically).

Source

pub fn check_no_commitment(&self) -> bool

Checks that the sibling data does not contain another tapret commitment.

The check ensures that if the sibling data are present, their first 31 bytes are not equal to TAPRET_SCRIPT_COMMITMENT_PREFIX, and if the sibling is another node, the hash of its first child in the proof is smaller than the hash of the other.

Source

pub fn check_ordering(&self, other_node: TapNodeHash) -> bool

Checks that the sibling has a correct ordering regarding some other node.

Source

pub fn tap_node_hash(&self) -> TapNodeHash

Computes node hash of the partner node defined by this proof.

Trait Implementations§

Source§

impl Clone for TapretNodePartner

Source§

fn clone(&self) -> TapretNodePartner

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 TapretNodePartner

Source§

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

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

impl<'de> Deserialize<'de> for TapretNodePartner

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for TapretNodePartner

Source§

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

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

impl From<LeafScript> for TapretNodePartner

Source§

fn from(v: LeafScript) -> Self

Converts to this type from the input type.
Source§

impl Hash for TapretNodePartner

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 TapretNodePartner

Source§

fn cmp(&self, other: &TapretNodePartner) -> 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 TapretNodePartner

Source§

fn eq(&self, other: &TapretNodePartner) -> 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 TapretNodePartner

Source§

fn partial_cmp(&self, other: &TapretNodePartner) -> 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 Serialize for TapretNodePartner

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StrictDecode for TapretNodePartner

Source§

fn strict_decode(reader: &mut impl TypedRead) -> Result<Self, DecodeError>

Source§

fn strict_read(reader: impl ReadRaw) -> Result<Self, DecodeError>

Source§

impl StrictDumb for TapretNodePartner

Source§

fn strict_dumb() -> Self

Source§

impl StrictEncode for TapretNodePartner

Source§

fn strict_encode<W: TypedWrite>(&self, writer: W) -> Result<W>

Source§

fn strict_write(&self, writer: impl WriteRaw) -> Result<(), Error>

Source§

impl StrictSum for TapretNodePartner

Source§

impl StrictType for TapretNodePartner

Source§

const STRICT_LIB_NAME: &'static str = LIB_NAME_BPCORE

Source§

fn strict_name() -> Option<TypeName>

Source§

impl StrictUnion for TapretNodePartner

Source§

impl Eq for TapretNodePartner

Source§

impl StructuralPartialEq for TapretNodePartner

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

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

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

Compare self to key and return true if they are equal.
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> Same for T

Source§

type Output = T

Should always be Self
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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

Source§

impl<T> VerifyEq for T
where T: Eq,

Source§

fn verify_eq(&self, other: &T) -> bool

Verifies commit-equivalence of two instances of the same type.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,