Struct Anchor

Source
pub struct Anchor {
    pub mmb_proof: BundleProof,
    pub mpc_protocol: ProtocolId,
    pub mpc_proof: MerkleProof,
    pub dbc_proof: Option<TapretProof>,
    pub fallback_proof: ReservedBytes<1>,
}
Expand description

Anchor is a client-side witness for the bitcoin txout seals.

Anchor is a set of data required for the client-side validation of a bitcoin txout single-use seal, which can’t be recovered from the transaction and other public information itself.

Fields§

§mmb_proof: BundleProof

The proof that each witness transaction input is used only in a single bundle.

§mpc_protocol: ProtocolId

The protocol under which the client-side witness is valid.

§mpc_proof: MerkleProof

The inclusion proof (using multiprotocol commitments) of a commitment under the [mpc_protocol] into the published witness.

§dbc_proof: Option<TapretProof>

The deterministic bitcoin commitment proof that the witness commitment is valid.

§fallback_proof: ReservedBytes<1>

Reserved for the future proofs regarding fallback seals.

Implementations§

Source§

impl Anchor

Source

pub fn is_fallback(&self) -> bool

Detect whether an anchor corresponds to a fallback proof or not.

§Nota bene

In the current version fallback proofs are not implemented, and this method always returns false.

Source

pub fn verify_fallback(&self) -> Result<(), AnchorError>

Verify the fallback proof.

§Nota bene

In the current version fallback proofs are not implemented, and this method always returns Ok(()) (since if there is no fallback proof defined, it is a case of a valid situation).

Trait Implementations§

Source§

impl ClientSideWitness for Anchor

Source§

type Proof = Proof

Proof which is passed from the client-side witness to the public-side witness during single-use seal validation.
Source§

type Seal = TxoSeal

Client-side witness is specific to just one type of single-use seals, provided as an associated type.
Source§

type Error = AnchorError

Error type returned by the Self::convolve_commit operation.
Source§

fn convolve_commit(&self, mmb_message: Message) -> Result<Proof, Self::Error>

Procedure that convolves the message with the client-side data kept in the client-side part of the seal closing witness. This produces Self::Proof, which is lately verified by SealWitness::verify_seal_closing and SealWitness::verify_seals_closing against the published part of the witness.
Source§

fn merge(&mut self, other: Self) -> Result<(), impl Error>
where Self: Sized,

Merge two compatible client-side witnesses together, or error in case of their incompatibility. Read more
Source§

impl Clone for Anchor

Source§

fn clone(&self) -> Anchor

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 Anchor

Source§

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

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

impl<'de> Deserialize<'de> for Anchor

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 Hash for Anchor

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 Anchor

Source§

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

Source§

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

Source§

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

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 Anchor

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 Anchor

Source§

fn strict_dumb() -> Self

Source§

impl StrictEncode for Anchor

Source§

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

Source§

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

Source§

impl StrictStruct for Anchor

Source§

impl StrictType for Anchor

Source§

const STRICT_LIB_NAME: &'static str = dbc::LIB_NAME_BPCORE

Source§

fn strict_name() -> Option<TypeName>

Source§

impl Eq for Anchor

Source§

impl StrictProduct for Anchor

Source§

impl StructuralPartialEq for Anchor

Auto Trait Implementations§

§

impl Freeze for Anchor

§

impl RefUnwindSafe for Anchor

§

impl Send for Anchor

§

impl Sync for Anchor

§

impl Unpin for Anchor

§

impl UnwindSafe for Anchor

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, 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>,