pub struct Arith<T: ExtParam> { /* private fields */ }
Expand description
Wrapper around [ArithInner
] that ensures that the expression is valid.
See [ArithInner
] for more details.
Note that the library allows construction of unchecked [Expr], but [
Arith`] is always checked.
Implementations§
Source§impl Arith<CovExtArgs>
impl Arith<CovExtArgs>
Sourcepub fn eval(
&self,
env: &TxEnv<'_, '_>,
s: &mut Stack<'_>,
) -> Result<bool, EvalError>
pub fn eval( &self, env: &TxEnv<'_, '_>, s: &mut Stack<'_>, ) -> Result<bool, EvalError>
Evaluate this expression with context given transaction and spent utxos
Sourcepub fn satisfy_helper<Pk: ToPublicKey>(
&self,
env: &TxEnv<'_, '_>,
sat: &dyn Satisfier<Pk>,
) -> Result<Satisfaction, EvalError>
pub fn satisfy_helper<Pk: ToPublicKey>( &self, env: &TxEnv<'_, '_>, sat: &dyn Satisfier<Pk>, ) -> Result<Satisfaction, EvalError>
Internal satisfaction helper for Arith. This allows us to cleanly write code that we can use “?” for early returns. The trait implementation of satisfy just calls this function with unwrap_or impossible.
Sourcepub fn push_to_builder(&self, builder: Builder) -> Builder
pub fn push_to_builder(&self, builder: Builder) -> Builder
Push this script to builder
Trait Implementations§
Source§impl<T: ExtParam> Extension for Arith<T>
impl<T: ExtParam> Extension for Arith<T>
Source§fn corr_prop(&self) -> Correctness
fn corr_prop(&self) -> Correctness
Calculate the correctness property for the leaf fragment.
See miniscript reference for more info on different types
Source§fn mall_prop(&self) -> Malleability
fn mall_prop(&self) -> Malleability
Calculate the malleability property for the leaf fragment.
See miniscript reference for more info on different types
Source§fn extra_prop(&self) -> ExtData
fn extra_prop(&self) -> ExtData
Calculate the Extra properties property for the leaf fragment.
See current implementation for different fragments in extra_props.rs
Source§fn script_size(&self) -> usize
fn script_size(&self) -> usize
Get the script size of the current fragment
Source§fn segwit_ctx_checks(&self) -> Result<(), ScriptContextError>
fn segwit_ctx_checks(&self) -> Result<(), ScriptContextError>
Validity rules for fragment in segwit context
Source§fn from_name_tree(
name: &str,
children: &[Tree<'_>],
) -> Result<Self, FromTokenIterError>
fn from_name_tree( name: &str, children: &[Tree<'_>], ) -> Result<Self, FromTokenIterError>
Create an instance of this object from a Tree with root name and children as
Vec<Tree>
.Source§fn tap_ctx_checks(&self) -> Result<(), ScriptContextError>
fn tap_ctx_checks(&self) -> Result<(), ScriptContextError>
Validity rules for fragment in tap context
Source§impl<T: Ord + ExtParam> Ord for Arith<T>
impl<T: Ord + ExtParam> Ord for Arith<T>
Source§impl ParseableExt for Arith<CovExtArgs>
impl ParseableExt for Arith<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>,
Produce a satisfaction for this from satisfier.
See satisfaction code in satisfy.rs for example
Note that the
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>,
Produce a satisfaction for this from satisfier.
See satisfaction code in satisfy.rs for example
Note that the
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
Encoding of the current fragment
Source§fn from_token_iter(
tokens: &mut TokenIter<'_>,
) -> Result<Self, FromTokenIterError>
fn from_token_iter( tokens: &mut TokenIter<'_>, ) -> Result<Self, FromTokenIterError>
Parse the terminal from
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>
Interpreter support
Evaluate the fragment based on inputs from stack. If an implementation of this
is provided the user can use the interpreter API to parse scripts from blockchain
and check which constraints are satisfied
Output Ok(true) when the ext fragment is satisfied.
Output Ok(false) when the ext fragment is dissatisfied,
Output Some(Err) when there is an error in interpreter value.
Source§impl<T: PartialOrd + ExtParam> PartialOrd for Arith<T>
impl<T: PartialOrd + ExtParam> PartialOrd for Arith<T>
Source§impl<PArg, QArg> TranslateExtParam<PArg, QArg> for Arith<PArg>
impl<PArg, QArg> TranslateExtParam<PArg, QArg> for Arith<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>,
Translates a struct from one generic to another where the translations
for Pk are provided by the given
ExtParamTranslator
.impl<T: Eq + ExtParam> Eq for Arith<T>
impl<T: ExtParam> StructuralPartialEq for Arith<T>
Auto Trait Implementations§
impl<T> Freeze for Arith<T>where
T: Freeze,
impl<T> RefUnwindSafe for Arith<T>where
T: RefUnwindSafe,
impl<T> Send for Arith<T>where
T: Send,
impl<T> Sync for Arith<T>where
T: Sync,
impl<T> Unpin for Arith<T>where
T: Unpin,
impl<T> UnwindSafe for Arith<T>where
T: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more