fanquake
a63d4cb26a
refactor: use <cstdlib> over stdlib.h
...
We currently use both. Consolidate on the former.
2022-09-23 10:48:47 +01:00
Pieter Wuille
648f6950cd
Correct sanity-checking script_size calculation
2022-09-21 09:17:45 -04:00
Pieter Wuille
e8cc2e4afc
Make miniscript string parsing account for exact script size as bound
...
Co-Authored-by: Antoine Poinsot <darosior@protonmail.com >
2022-09-17 15:12:48 +02:00
Pieter Wuille
4cb8f9a92c
Permit delaying duplicate key check in miniscript::Node construction
2022-09-17 10:47:05 +02:00
Antoine Poinsot
d25d58bf5f
miniscript: add a helper to find the first insane sub with no child
...
This is helpful for finer grained descriptor parsing error: when there
are multiple errors to report in a Miniscript descriptor start with the
"smallest" fragments: the ones closer to be a leaf.
Co-Authored-By: Pieter Wuille <pieter@wuille.net >
2022-07-14 12:03:49 +02:00
Antoine Poinsot
c38c7c5817
miniscript: don't check for top level validity at parsing time
...
Letting the caller perform the checks allows for finer-grained error
reporting.
2022-07-14 12:03:49 +02:00
Antoine Poinsot
f3a50c9dfe
miniscript: rename IsSane and IsSaneSubexpression to prevent misuse
2022-05-30 15:16:46 +02:00
Antoine Poinsot
c5fe5163dc
miniscript: nit: don't return after assert(false)
2022-05-30 15:16:45 +02:00
Antoine Poinsot
8323e4249d
miniscript: add an OpCode typedef for readability
...
Suggested-by: Vincenzo Palazzo
2022-05-30 15:16:44 +02:00
Antoine Poinsot
7a549c6c59
miniscript: mark nodes with duplicate keys as insane
...
As stated on the website, duplicate keys make it hard to reason about
malleability as a single signature may unlock multiple paths.
We use a custom KeyCompare function instead of operator< to be explicit
about the requirement.
2022-05-30 15:16:43 +02:00
Antoine Poinsot
7eb70f0ac0
miniscript: tiny doc fixups
...
Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com >
2022-04-28 16:44:42 +02:00
Antoine Poinsot
5cea85f12c
miniscript: split ValidSatisfactions from IsSane
...
This makes IsSane clearer. It is useful to differentiate between 'potential non-malleable satisfactions are valid' and 'such satisfactions exist' for testing.
Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com >
2022-04-28 16:44:41 +02:00
Antoine Poinsot
a0f064dc14
miniscript: introduce a CheckTimeLocksMix helper
...
This helps to have finer-grained descriptor parsing errors.
2022-04-28 16:44:41 +02:00
Antoine Poinsot
ed45ee3882
miniscript: use optional instead of bool/outarg
...
Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com >
2022-04-28 16:44:40 +02:00
Antoine Poinsot
1ab8d89fd1
miniscript: make equality operator non-recursive
...
Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com >
2022-04-28 16:44:40 +02:00
Antoine Poinsot
5922c662c0
scripted-diff: miniscript: rename 'nodetype' variables to 'fragment'
...
The 'Fragment' type was previously named 'Nodetype'. For clarity, name
the variables the same.
-BEGIN VERIFY SCRIPT-
sed -i 's/nodetype/fragment/g' src/script/miniscript.*
-END VERIFY SCRIPT-
Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com >
2022-04-28 16:44:39 +02:00
MarcoFalke
ffffb7a25a
doc: Convert remaining comments to clang-tidy format
2022-04-06 15:37:07 +02:00
Pieter Wuille
f8369996e7
Miniscript: ops limit and stack size computation
...
Co-Authored-By: Antoine Poinsot <darosior@protonmail.com >
2022-03-17 14:09:08 +01:00
Pieter Wuille
2e55e88f86
Miniscript: conversion from script
...
Co-Authored-By: Antoine Poinsot <darosior@protonmail.com >
Co-Authored-By: Samuel Dobson <dobsonsa68@gmail.com >
2022-03-17 14:09:08 +01:00
Pieter Wuille
1ddaa66eae
Miniscript: type system, script creation, text notation, tests
...
More information about Miniscript can be found at https://bitcoin.sipa.be/miniscript/ (the
website source is hosted at https://github.com/sipa/miniscript/ ).
This commit defines all fragments, their composition, parsing from
string representation and conversion to Script.
Co-Authored-By: Antoine Poinsot <darosior@protonmail.com >
Co-Authored-By: Sanket Kanjalkar <sanket1729@gmail.com >
Co-Authored-By: Samuel Dobson <dobsonsa68@gmail.com >
2022-03-17 14:09:07 +01:00