Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions bip-0379.md
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,10 @@ its type properties in function of those of their subexpressions.
| `j:X` | X is Bn | B | o=o<sub>X</sub>; n; d; u=u<sub>X</sub>
| `n:X` | X is B | B | z=z<sub>X</sub>; o=o<sub>X</sub>; n=n<sub>X</sub>; d=d<sub>X</sub>; u

The properties of a fragment assume that the conditions in its "Requires" column are met. They exist
only to reason about correctness, so they say nothing about an expression that does not meet them:
such an expression is not valid Miniscript.

#### Timelock Type Mixing

There is one additional correctness property that Miniscript expressions must satisfy:
Expand Down Expand Up @@ -207,6 +211,14 @@ The following table lists the malleability properties and requirement of each fr
| `j:X` | | s=s<sub>X</sub>; e=f<sub>X
| `n:X` | | s=s<sub>X</sub>; f=f<sub>X</sub>; e=e<sub>X</sub>

As in the correctness table, the properties of a fragment assume that the conditions in its
"Requires" column are met. They exist only to reason about malleability, so they say nothing about
an expression that does not meet them: such an expression is malleable, and so is every expression
containing it.

Implementors of APIs which unconditionally return values for these properties should always return
false for malleable expressions.

### Satisfaction

The following table shows all valid satisfactions and dissatisfactions for every Miniscript, using
Expand Down