You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+6-4Lines changed: 6 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,13 +2,13 @@
2
2
3
3
This project is a JavaScript implementation of Bitcoin Miniscript, a high-level language for describing Bitcoin spending conditions.
4
4
5
-
It includes a transpilation of [Peter Wuille's C++ code](https://github.com/sipa/miniscript) for compiling spending policies into Miniscript and Bitcoin scripts, as well as a Miniscript Satisfier for generating expressive witness scripts from the input Miniscript.
5
+
It includes a transpilation of [Peter Wuille's C++ code](https://github.com/sipa/miniscript) for compiling spending policies into Miniscript and Bitcoin scripts, as well as a Miniscript Satisfier for generating explicit witness scripts that are decoupled from the tx signer.
6
6
7
7
## Features
8
8
9
9
- Compile Policies into Miniscript and Bitcoin scripts.
10
10
- A Miniscript Satisfier that discards malleable solutions.
11
-
- The Miniscript Satisfier is able to generate expressive witness scripts from Miniscripts that use variables, such as `pk(key)`.
11
+
- The Miniscript Satisfier is able to generate explicit witness scripts from Miniscripts using variables, such as `pk(key)`.
12
12
13
13
For example, Miniscript `and_v(v:pk(key),after(10))` can be satisfied with `[{ witness: '<sig(key)>', nLockTime: 10 }]`.
14
14
- The ability to generate different satisfactions depending on the presence of `unknowns`.
Where `issane` is a boolean that indicates whether the Miniscript is valid and follows the consensus and standardness rules for Bitcoin scripts. It should have non-malleable solutions, not mix different timelock units on a single branch of the script, and not contain duplicate keys. In other words, it should be a well-formed and standards-compliant script that can be safely used in transactions.
42
+
`issane` is a boolean that indicates whether the Miniscript is valid and follows the consensus and standardness rules for Bitcoin scripts. A sane Miniscript should have non-malleable solutions, not mix different timelock units on a single branch of the script, and not contain duplicate keys. In other words, it should be a well-formed and standards-compliant script that can be safely used in transactions.
44
43
45
44
### Compiling Miniscript into Bitcoin script
46
45
@@ -66,6 +65,7 @@ const miniscript =
66
65
67
66
constsatisfactions=satisfier(miniscript);
68
67
```
68
+
`satisfier` makes sure that output `satisfactions` are non-malleable and that the `miniscript` is sane.
The project was initially developed and is currently maintained by [Jose-Luis Landabaso](https://github.com/landabaso). Contributions and help from other developers are welcome.
85
85
86
+
Here are some resources to help you get started with contributing:
87
+
86
88
### Building from source
87
89
88
90
To download the source code and build the project, follow these steps:
0 commit comments