pub enum Terminal<Pk: MiniscriptKey, Ctx: ScriptContext> {
Show 28 variants
True,
False,
PkK(Pk),
PkH(Pk::Hash),
After(u32),
Older(u32),
Sha256(Hash),
Hash256(Hash),
Ripemd160(Hash),
Hash160(Hash),
Alt(Arc<Miniscript<Pk, Ctx>>),
Swap(Arc<Miniscript<Pk, Ctx>>),
Check(Arc<Miniscript<Pk, Ctx>>),
DupIf(Arc<Miniscript<Pk, Ctx>>),
Verify(Arc<Miniscript<Pk, Ctx>>),
NonZero(Arc<Miniscript<Pk, Ctx>>),
ZeroNotEqual(Arc<Miniscript<Pk, Ctx>>),
AndV(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
AndB(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
AndOr(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
OrB(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
OrD(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
OrC(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
OrI(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>),
Thresh(usize, Vec<Arc<Miniscript<Pk, Ctx>>>),
Multi(usize, Vec<Pk>),
MultiA(usize, Vec<Pk>),
TxTemplate(Hash),
}
Expand description
All AST elements
Variants§
True
1
False
0
PkK(Pk)
<key>
PkH(Pk::Hash)
DUP HASH160 <keyhash> EQUALVERIFY
After(u32)
n CHECKLOCKTIMEVERIFY
Older(u32)
n CHECKSEQUENCEVERIFY
Sha256(Hash)
SIZE 32 EQUALVERIFY SHA256 <hash> EQUAL
Hash256(Hash)
SIZE 32 EQUALVERIFY HASH256 <hash> EQUAL
Ripemd160(Hash)
SIZE 32 EQUALVERIFY RIPEMD160 <hash> EQUAL
Hash160(Hash)
SIZE 32 EQUALVERIFY HASH160 <hash> EQUAL
Alt(Arc<Miniscript<Pk, Ctx>>)
TOALTSTACK [E] FROMALTSTACK
Swap(Arc<Miniscript<Pk, Ctx>>)
SWAP [E1]
Check(Arc<Miniscript<Pk, Ctx>>)
[Kt]/[Ke] CHECKSIG
DupIf(Arc<Miniscript<Pk, Ctx>>)
DUP IF [V] ENDIF
Verify(Arc<Miniscript<Pk, Ctx>>)
[T] VERIFY
NonZero(Arc<Miniscript<Pk, Ctx>>)
SIZE 0NOTEQUAL IF Fn ENDIF
ZeroNotEqual(Arc<Miniscript<Pk, Ctx>>)
[X] 0NOTEQUAL
AndV(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
[V] [T]/[V]/[F]/[Kt]
AndB(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
[E] [W] BOOLAND
AndOr(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
[various] NOTIF [various] ELSE [various] ENDIF
OrB(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
[E] [W] BOOLOR
OrD(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
[E] IFDUP NOTIF [T]/[E] ENDIF
OrC(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
[E] NOTIF [V] ENDIF
OrI(Arc<Miniscript<Pk, Ctx>>, Arc<Miniscript<Pk, Ctx>>)
IF [various] ELSE [various] ENDIF
Thresh(usize, Vec<Arc<Miniscript<Pk, Ctx>>>)
[E] ([W] ADD)* k EQUAL
Multi(usize, Vec<Pk>)
k (
MultiA(usize, Vec<Pk>)
TxTemplate(Hash)
<hash> OP_CHECKTEMPLATEVERIFY OP_DROP
Implementations§
Source§impl<Pk: MiniscriptKey, Ctx: ScriptContext> Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Ctx: ScriptContext> Terminal<Pk, Ctx>
Sourcepub fn encode(&self, builder: Builder) -> Builderwhere
Pk: ToPublicKey,
pub fn encode(&self, builder: Builder) -> Builderwhere
Pk: ToPublicKey,
Encode the element as a fragment of Bitcoin Script. The inverse
function, from Script to an AST element, is implemented in the
parse
module.
Sourcepub fn script_size(&self) -> usize
pub fn script_size(&self) -> usize
Size, in bytes of the script-pubkey. If this Miniscript is used outside of segwit (e.g. in a bare or P2SH descriptor), this quantity should be multiplied by 4 to compute the weight.
In general, it is not recommended to use this function directly, but
to instead call the corresponding function on a Descriptor
, which
will handle the segwit/non-segwit technicalities for you.
Trait Implementations§
Source§impl<Pk: Clone + MiniscriptKey, Ctx: Clone + ScriptContext> Clone for Terminal<Pk, Ctx>
impl<Pk: Clone + MiniscriptKey, Ctx: Clone + ScriptContext> Clone for Terminal<Pk, Ctx>
Source§impl<Pk: MiniscriptKey, Ctx: ScriptContext> Debug for Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Ctx: ScriptContext> Debug for Terminal<Pk, Ctx>
Source§impl<Pk: MiniscriptKey, Ctx: ScriptContext> Display for Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Ctx: ScriptContext> Display for Terminal<Pk, Ctx>
Source§impl<Pk: MiniscriptKey, Ctx: ScriptContext> ForEachKey<Pk> for Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Ctx: ScriptContext> ForEachKey<Pk> for Terminal<Pk, Ctx>
Source§impl<Pk, Ctx> FromTree for Terminal<Pk, Ctx>where
Pk: MiniscriptKey + FromStr,
Pk::Hash: FromStr,
Ctx: ScriptContext,
<Pk as FromStr>::Err: ToString,
<<Pk as MiniscriptKey>::Hash as FromStr>::Err: ToString,
impl<Pk, Ctx> FromTree for Terminal<Pk, Ctx>where
Pk: MiniscriptKey + FromStr,
Pk::Hash: FromStr,
Ctx: ScriptContext,
<Pk as FromStr>::Err: ToString,
<<Pk as MiniscriptKey>::Hash as FromStr>::Err: ToString,
Source§impl<Pk: Hash + MiniscriptKey, Ctx: Hash + ScriptContext> Hash for Terminal<Pk, Ctx>
impl<Pk: Hash + MiniscriptKey, Ctx: Hash + ScriptContext> Hash for Terminal<Pk, Ctx>
Source§impl<Pk: MiniscriptKey, Ctx: ScriptContext> Liftable<Pk> for Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Ctx: ScriptContext> Liftable<Pk> for Terminal<Pk, Ctx>
Source§impl<Pk: Ord + MiniscriptKey, Ctx: Ord + ScriptContext> Ord for Terminal<Pk, Ctx>
impl<Pk: Ord + MiniscriptKey, Ctx: Ord + ScriptContext> Ord for Terminal<Pk, Ctx>
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl<Pk: PartialEq + MiniscriptKey, Ctx: PartialEq + ScriptContext> PartialEq for Terminal<Pk, Ctx>
impl<Pk: PartialEq + MiniscriptKey, Ctx: PartialEq + ScriptContext> PartialEq for Terminal<Pk, Ctx>
Source§impl<Pk: PartialOrd + MiniscriptKey, Ctx: PartialOrd + ScriptContext> PartialOrd for Terminal<Pk, Ctx>where
Pk::Hash: PartialOrd,
impl<Pk: PartialOrd + MiniscriptKey, Ctx: PartialOrd + ScriptContext> PartialOrd for Terminal<Pk, Ctx>where
Pk::Hash: PartialOrd,
Source§impl<Pk: MiniscriptKey, Q: MiniscriptKey, Ctx: ScriptContext> TranslatePk<Pk, Q> for Terminal<Pk, Ctx>
impl<Pk: MiniscriptKey, Q: MiniscriptKey, Ctx: ScriptContext> TranslatePk<Pk, Q> for Terminal<Pk, Ctx>
Source§fn translate_pk<FPk, FPkh, FuncError>(
&self,
translatefpk: FPk,
translatefpkh: FPkh,
) -> Result<Self::Output, FuncError>
fn translate_pk<FPk, FPkh, FuncError>( &self, translatefpk: FPk, translatefpkh: FPkh, ) -> Result<Self::Output, FuncError>
Convert an AST element with one public key type to one of another public key type .This will panic while converting to Segwit Miniscript using uncompressed public keys