Trait Liftable

Source
pub trait Liftable<Pk: MiniscriptKey> {
    // Required method
    fn lift(&self) -> Result<Semantic<Pk>, Error>;
}
Expand description

Trait describing script representations which can be lifted into an abstract policy, by discarding information. After Lifting all policies are converted into KeyHash(Pk::HasH) to maintain the following invariant(modulo resource limits): Lift(Concrete) == Concrete -> Miniscript -> Script -> Miniscript -> Semantic Lifting from Miniscript, Descriptor can fail if the miniscript contains a timelock combination or if it contains a branch that exceeds resource limits. Lifting from Concrete policies can fail if it contains a timelock combination. It is possible that concrete policy has some branches that exceed resource limits for any compilation, but cannot detect such policies while lifting. Note that our compiler would not succeed for any such policies.

Required Methods§

Source

fn lift(&self) -> Result<Semantic<Pk>, Error>

Convert the object into an abstract policy

Implementations on Foreign Types§

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Policy<Pk>

Source§

fn lift(&self) -> Result<Semantic<Pk>, Error>

Implementors§

Source§

impl<Pk, Ctx, Ext> Liftable<Pk> for Terminal<Pk, Ctx, Ext>
where Pk: MiniscriptKey, Ctx: ScriptContext, Ext: Extension,

Source§

impl<Pk: MiniscriptKey> Liftable<LegacyPeginKey> for LegacyPegin<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for NoExt

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Concrete<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Semantic<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Pegin<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Bare<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Pkh<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Sh<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Wpkh<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for Wsh<Pk>

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for LegacyOutputsPref

Source§

impl<Pk: MiniscriptKey> Liftable<Pk> for LegacyVerEq

Source§

impl<Pk: MiniscriptKey, Ctx: ScriptContext> Liftable<Pk> for SortedMultiVec<Pk, Ctx>

Source§

impl<Pk: MiniscriptKey, Ctx: ScriptContext, Ext: Extension> Liftable<Pk> for Miniscript<Pk, Ctx, Ext>

Source§

impl<Pk: MiniscriptKey, Ext: Extension> Liftable<Pk> for TapTree<Pk, Ext>

Source§

impl<Pk: MiniscriptKey, Ext: Extension> Liftable<Pk> for Tr<Pk, Ext>

Source§

impl<Pk: MiniscriptKey, T: Extension> Liftable<Pk> for Descriptor<Pk, T>