Trait miniscript::policy::Liftable
source · [−]pub trait Liftable<Pk: MiniscriptKey> {
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.