From 8a5dbe28793d2e2ad85242f2191a6e1956b980dc Mon Sep 17 00:00:00 2001 From: Sebastian Falbesoner Date: Sun, 4 Dec 2022 03:04:39 +0100 Subject: [PATCH] test: add `CScript` method for checking for witness program This is needed in the next commit to calculate the dust threshold for a given output script and min feerate for defining dust. --- test/functional/test_framework/script.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/functional/test_framework/script.py b/test/functional/test_framework/script.py index f531ccc0301..897ebd694dd 100644 --- a/test/functional/test_framework/script.py +++ b/test/functional/test_framework/script.py @@ -597,6 +597,13 @@ class CScript(bytes): lastOpcode = opcode return n + def IsWitnessProgram(self): + """A witness program is any valid CScript that consists of a 1-byte + push opcode followed by a data push between 2 and 40 bytes.""" + return ((4 <= len(self) <= 42) and + (self[0] == OP_0 or (OP_1 <= self[0] <= OP_16)) and + (self[1] + 2 == len(self))) + SIGHASH_DEFAULT = 0 # Taproot-only default, semantics same as SIGHASH_ALL SIGHASH_ALL = 1