pub enum CovOps<T: ExtParam> {
IsExpAsset(AssetExpr<T>),
IsExpValue(ValueExpr<T>),
AssetEq(AssetExpr<T>, AssetExpr<T>),
ValueEq(ValueExpr<T>, ValueExpr<T>),
SpkEq(SpkExpr<T>, SpkExpr<T>),
CurrIndEq(usize),
IdxEq(IdxExpr, IdxExpr),
}
Expand description
Miniscript Fragment containing arith expressions Expr cannot be directly used a miniscript fragment because it pushes a 64 bit value on stack. Two expressions can be combined with Arith to something is of Base type B to be used in miniscript expressions
Variants§
IsExpAsset(AssetExpr<T>)
Checks that asset is explicit
[X] <1> EQUAL NIP
IsExpValue(ValueExpr<T>)
Checks if the value is explicit
[X] <1> EQUAL NIP
The script translation is same as that of IsExpAsset, but the data structure
distinguishes them for clarity.
AssetEq(AssetExpr<T>, AssetExpr<T>)
Checks that both assets are equal (maybe confidential)
[X] TOALTSTACK [Y] FROMALTSTACK EQUAL TOALTSTACK EQUAL FROMALTSTACK BOOLAND
ValueEq(ValueExpr<T>, ValueExpr<T>)
Checks that both values are equal (maybe confidential)
[X] TOALTSTACK [Y] FROMALTSTACK EQUAL TOALTSTACK EQUAL FROMALTSTACK BOOLAND
SpkEq(SpkExpr<T>, SpkExpr<T>)
Script pubkey equal. Checks the witness version and program. Also works for
legacy programs.
[X] TOALTSTACK [Y] FROMALTSTACK EQUAL TOALTSTACK EQUAL FROMALTSTACK BOOLAND
CurrIndEq(usize)
Current input index equality
<i> PUSHCURRENTINPUTINDEX EQUAL
IdxEq(IdxExpr, IdxExpr)
Index equality
[X] [Y] EQUAL
Implementations§
Source§impl CovOps<CovExtArgs>
impl CovOps<CovExtArgs>
Sourcepub fn push_to_builder(&self, builder: Builder) -> Builder
pub fn push_to_builder(&self, builder: Builder) -> Builder
Push this script to builder
Sourcepub fn from_tokens(tks: &[Tk<'_>]) -> Option<(Self, usize)>
pub fn from_tokens(tks: &[Tk<'_>]) -> Option<(Self, usize)>
Returns (self, start_pos) parsed reversed form tokens starting with index end_pos
Expression is parsed from tokens[start:end_pos]
Trait Implementations§
Source§impl<T, PArg, QArg, E> ExtTranslator<CovOps<PArg>, CovOps<QArg>, E> for T
impl<T, PArg, QArg, E> ExtTranslator<CovOps<PArg>, CovOps<QArg>, E> for T
Source§impl<T: ExtParam> Extension for CovOps<T>
impl<T: ExtParam> Extension for CovOps<T>
Source§fn corr_prop(&self) -> Correctness
fn corr_prop(&self) -> Correctness
Source§fn mall_prop(&self) -> Malleability
fn mall_prop(&self) -> Malleability
Source§fn extra_prop(&self) -> ExtData
fn extra_prop(&self) -> ExtData
Source§fn script_size(&self) -> usize
fn script_size(&self) -> usize
Source§fn from_name_tree(
name: &str,
children: &[Tree<'_>],
) -> Result<Self, FromTokenIterError>
fn from_name_tree( name: &str, children: &[Tree<'_>], ) -> Result<Self, FromTokenIterError>
Vec<Tree>
.Source§fn segwit_ctx_checks(&self) -> Result<(), ScriptContextError>
fn segwit_ctx_checks(&self) -> Result<(), ScriptContextError>
Source§fn tap_ctx_checks(&self) -> Result<(), ScriptContextError>
fn tap_ctx_checks(&self) -> Result<(), ScriptContextError>
Source§impl<T: Ord + ExtParam> Ord for CovOps<T>
impl<T: Ord + ExtParam> Ord for CovOps<T>
Source§impl ParseableExt for CovOps<CovExtArgs>
impl ParseableExt for CovOps<CovExtArgs>
Source§fn satisfy<Pk, S>(&self, sat: &S) -> Satisfactionwhere
Pk: ToPublicKey,
S: Satisfier<Pk>,
fn satisfy<Pk, S>(&self, sat: &S) -> Satisfactionwhere
Pk: ToPublicKey,
S: Satisfier<Pk>,
Satisfaction
struct also covers the case when
satisfaction is impossible/unavailableSource§fn dissatisfy<Pk, S>(&self, sat: &S) -> Satisfactionwhere
Pk: ToPublicKey,
S: Satisfier<Pk>,
fn dissatisfy<Pk, S>(&self, sat: &S) -> Satisfactionwhere
Pk: ToPublicKey,
S: Satisfier<Pk>,
Satisfaction
struct also covers the case when
dissatisfaction is impossible/unavailableSource§fn push_to_builder(&self, builder: Builder) -> Builder
fn push_to_builder(&self, builder: Builder) -> Builder
Source§fn from_token_iter(
tokens: &mut TokenIter<'_>,
) -> Result<Self, FromTokenIterError>
fn from_token_iter( tokens: &mut TokenIter<'_>, ) -> Result<Self, FromTokenIterError>
TokenIter
. Implementers of this trait are responsible
for making sure tokens is mutated correctly. If parsing is not successful, the tokens
should not be consumed.Source§fn evaluate(
&self,
stack: &mut Stack<'_>,
txenv: Option<&TxEnv<'_, '_>>,
) -> Result<bool, Error>
fn evaluate( &self, stack: &mut Stack<'_>, txenv: Option<&TxEnv<'_, '_>>, ) -> Result<bool, Error>
Source§impl<T: PartialOrd + ExtParam> PartialOrd for CovOps<T>
impl<T: PartialOrd + ExtParam> PartialOrd for CovOps<T>
Source§impl<PArg, QArg> TranslateExt<CovOps<PArg>, CovOps<QArg>> for CovOps<PArg>
impl<PArg, QArg> TranslateExt<CovOps<PArg>, CovOps<QArg>> for CovOps<PArg>
Source§fn translate_ext<T, E>(&self, t: &mut T) -> Result<Self::Output, E>
fn translate_ext<T, E>(&self, t: &mut T) -> Result<Self::Output, E>
Translator
.Source§impl<PArg, QArg> TranslateExtParam<PArg, QArg> for CovOps<PArg>
impl<PArg, QArg> TranslateExtParam<PArg, QArg> for CovOps<PArg>
Source§fn translate_ext<T, E>(&self, t: &mut T) -> Result<Self::Output, E>where
T: ExtParamTranslator<PArg, QArg, E>,
fn translate_ext<T, E>(&self, t: &mut T) -> Result<Self::Output, E>where
T: ExtParamTranslator<PArg, QArg, E>,
ExtParamTranslator
.