[][src]Trait miniscript::miniscript::satisfy::Satisfier

pub trait Satisfier<ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> {
    pub fn lookup_sig(&self, _: &Pk, _to_pk_ctx: ToPkCtx) -> Option<BitcoinSig> { ... }
pub fn lookup_pkh_pk(&self, _: &Pk::Hash) -> Option<Pk> { ... }
pub fn lookup_pkh_sig(
        &self,
        _: &Pk::Hash,
        _to_pk_ctx: ToPkCtx
    ) -> Option<(PublicKey, BitcoinSig)> { ... }
pub fn lookup_sha256(&self, _: Hash) -> Option<[u8; 32]> { ... }
pub fn lookup_hash256(&self, _: Hash) -> Option<[u8; 32]> { ... }
pub fn lookup_ripemd160(&self, _: Hash) -> Option<[u8; 32]> { ... }
pub fn lookup_hash160(&self, _: Hash) -> Option<[u8; 32]> { ... }
pub fn check_older(&self, _: u32) -> bool { ... }
pub fn check_after(&self, _: u32) -> bool { ... } }

Trait describing a lookup table for signatures, hash preimages, etc. Every method has a default implementation that simply returns None on every query. Users are expected to override the methods that they have data for.

Provided methods

pub fn lookup_sig(&self, _: &Pk, _to_pk_ctx: ToPkCtx) -> Option<BitcoinSig>[src]

Given a public key, look up a signature with that key to_pk_ctx denotes the ToPkCtx required for deriving bitcoin::PublicKey from MiniscriptKey using ToPublicKey. If MiniscriptKey is already is bitcoin::PublicKey, then the context would be NullCtx and [descriptor.DescriptorPublicKeyCtx] if MiniscriptKey is [descriptor.DescriptorPublicKey]

In general, this is defined by generic for the trait ToPublicKey

pub fn lookup_pkh_pk(&self, _: &Pk::Hash) -> Option<Pk>[src]

Given a Pkh, lookup corresponding Pk

pub fn lookup_pkh_sig(
    &self,
    _: &Pk::Hash,
    _to_pk_ctx: ToPkCtx
) -> Option<(PublicKey, BitcoinSig)>
[src]

Given a keyhash, look up the signature and the associated key Even if signatures for public key Hashes are not available, the users can use this map to provide pkh -> pk mapping which can be useful for dissatisfying pkh. to_pk_ctx denotes the ToPkCtx required for deriving bitcoin::PublicKey from MiniscriptKey using ToPublicKey. If MiniscriptKey is already is bitcoin::PublicKey, then the context would be NullCtx and [descriptor.DescriptorPublicKeyCtx] if MiniscriptKey is [descriptor.DescriptorPublicKey]

In general, this is defined by generic for the trait ToPublicKey

pub fn lookup_sha256(&self, _: Hash) -> Option<[u8; 32]>[src]

Given a SHA256 hash, look up its preimage

pub fn lookup_hash256(&self, _: Hash) -> Option<[u8; 32]>[src]

Given a HASH256 hash, look up its preimage

pub fn lookup_ripemd160(&self, _: Hash) -> Option<[u8; 32]>[src]

Given a RIPEMD160 hash, look up its preimage

pub fn lookup_hash160(&self, _: Hash) -> Option<[u8; 32]>[src]

Given a HASH160 hash, look up its preimage

pub fn check_older(&self, _: u32) -> bool[src]

Assert whether an relative locktime is satisfied

pub fn check_after(&self, _: u32) -> bool[src]

Assert whether a absolute locktime is satisfied

Loading content...

Implementations on Foreign Types

impl<ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> Satisfier<ToPkCtx, Pk> for ()[src]

impl<ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> Satisfier<ToPkCtx, Pk> for HashMap<Pk, BitcoinSig>[src]

impl<ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> Satisfier<ToPkCtx, Pk> for HashMap<Pk::Hash, (Pk, BitcoinSig)> where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>, 
[src]

impl<'a, ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>, S: Satisfier<ToPkCtx, Pk>> Satisfier<ToPkCtx, Pk> for &'a S[src]

impl<'a, ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>, S: Satisfier<ToPkCtx, Pk>> Satisfier<ToPkCtx, Pk> for &'a mut S[src]

impl<A, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A,) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, C, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B, C) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>,
    C: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, C, D, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B, C, D) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>,
    C: Satisfier<ToPkCtx, Pk>,
    D: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, C, D, E, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B, C, D, E) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>,
    C: Satisfier<ToPkCtx, Pk>,
    D: Satisfier<ToPkCtx, Pk>,
    E: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, C, D, E, F, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B, C, D, E, F) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>,
    C: Satisfier<ToPkCtx, Pk>,
    D: Satisfier<ToPkCtx, Pk>,
    E: Satisfier<ToPkCtx, Pk>,
    F: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, C, D, E, F, G, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B, C, D, E, F, G) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>,
    C: Satisfier<ToPkCtx, Pk>,
    D: Satisfier<ToPkCtx, Pk>,
    E: Satisfier<ToPkCtx, Pk>,
    F: Satisfier<ToPkCtx, Pk>,
    G: Satisfier<ToPkCtx, Pk>, 
[src]

impl<A, B, C, D, E, F, G, H, ToPkCtx: Copy, Pk> Satisfier<ToPkCtx, Pk> for (A, B, C, D, E, F, G, H) where
    Pk: MiniscriptKey + ToPublicKey<ToPkCtx>,
    A: Satisfier<ToPkCtx, Pk>,
    B: Satisfier<ToPkCtx, Pk>,
    C: Satisfier<ToPkCtx, Pk>,
    D: Satisfier<ToPkCtx, Pk>,
    E: Satisfier<ToPkCtx, Pk>,
    F: Satisfier<ToPkCtx, Pk>,
    G: Satisfier<ToPkCtx, Pk>,
    H: Satisfier<ToPkCtx, Pk>, 
[src]

Loading content...

Implementors

impl<'psbt, ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> Satisfier<ToPkCtx, Pk> for PsbtInputSatisfier<'psbt>[src]

impl<ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> Satisfier<ToPkCtx, Pk> for After[src]

impl<ToPkCtx: Copy, Pk: MiniscriptKey + ToPublicKey<ToPkCtx>> Satisfier<ToPkCtx, Pk> for Older[src]

Loading content...