From 2bf673e2ca37577e19d62d8008ac97fe1e431f86 Mon Sep 17 00:00:00 2001 From: derekpa Date: Wed, 14 Feb 2024 16:12:00 +0000 Subject: [PATCH 1/3] Fix for issue #156 - elements of length 75 being ignored --- buidl/script.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buidl/script.py b/buidl/script.py index 0952b1e..a6c9e48 100644 --- a/buidl/script.py +++ b/buidl/script.py @@ -131,7 +131,7 @@ def raw_serialize(self): # get the length in bytes length = len(command) # for large lengths, we have to use a pushdata op code - if length < 75: + if length <= 75: # turn the length into a single byte integer result += int_to_byte(length) elif length > 75 and length < 0x100: From d6516ef18868f6d8702acdc3a7fc32644548b7a8 Mon Sep 17 00:00:00 2001 From: derekpa Date: Fri, 16 Feb 2024 00:35:50 +0000 Subject: [PATCH 2/3] Add test for element with length 75 bytes --- buidl/test/test_script.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/buidl/test/test_script.py b/buidl/test/test_script.py index c0c8de4..81e70a3 100644 --- a/buidl/test/test_script.py +++ b/buidl/test/test_script.py @@ -38,6 +38,14 @@ def test_serialize(self): script_pubkey = BytesIO(bytes.fromhex(want)) script = Script.parse(script_pubkey) self.assertEqual(script.serialize().hex(), want) + + # Added to test scripts with length 75 bytes are being serialized + def test_serialize_elem_75(self): + want = "4d6a4b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + test_element_75_bytes = b'\x00' * 75 + test_script = Script([0x6a, test_element_75_bytes]) + print(test_script.serialize().hex()) + self.assertEqual(test_script.serialize().hex(), want) class P2PKHScriptPubKeyTest(TestCase): From 3e7ba161efa2c7fb96d20c1e5134d400d10cc21f Mon Sep 17 00:00:00 2001 From: derekpa Date: Fri, 16 Feb 2024 00:47:11 +0000 Subject: [PATCH 3/3] Deleted unnecessary print statement --- buidl/test/test_script.py | 1 - 1 file changed, 1 deletion(-) diff --git a/buidl/test/test_script.py b/buidl/test/test_script.py index 81e70a3..f08383a 100644 --- a/buidl/test/test_script.py +++ b/buidl/test/test_script.py @@ -44,7 +44,6 @@ def test_serialize_elem_75(self): want = "4d6a4b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" test_element_75_bytes = b'\x00' * 75 test_script = Script([0x6a, test_element_75_bytes]) - print(test_script.serialize().hex()) self.assertEqual(test_script.serialize().hex(), want)