From 355f7f71b495ac28efea490f62ad5114530d6cda Mon Sep 17 00:00:00 2001 From: Bortlesboat Date: Mon, 6 Apr 2026 13:50:14 -0400 Subject: [PATCH 1/2] script: add OP_TRUE and OP_FALSE aliases to OPCODES_BY_NAME These aliases are already defined as module-level constants (OP_FALSE = OP_0, OP_TRUE = OP_1) but were missing from the OPCODES_BY_NAME lookup dict, making it impossible to parse script strings containing these common aliases. Fixes #225 --- bitcoin/core/script.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bitcoin/core/script.py b/bitcoin/core/script.py index c0058a41..7823e9d0 100644 --- a/bitcoin/core/script.py +++ b/bitcoin/core/script.py @@ -365,12 +365,14 @@ def __new__(cls, n): OPCODES_BY_NAME = { 'OP_0': OP_0, + 'OP_FALSE': OP_0, 'OP_PUSHDATA1': OP_PUSHDATA1, 'OP_PUSHDATA2': OP_PUSHDATA2, 'OP_PUSHDATA4': OP_PUSHDATA4, 'OP_1NEGATE': OP_1NEGATE, 'OP_RESERVED': OP_RESERVED, 'OP_1': OP_1, + 'OP_TRUE': OP_1, 'OP_2': OP_2, 'OP_3': OP_3, 'OP_4': OP_4, From e3c7c8b76eb307beb268b69504109ce6b451f35a Mon Sep 17 00:00:00 2001 From: Andrew Barnes Date: Sun, 12 Jul 2026 19:02:46 -0400 Subject: [PATCH 2/2] test: cover boolean opcode name aliases --- bitcoin/tests/test_script.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bitcoin/tests/test_script.py b/bitcoin/tests/test_script.py index 1ca62eb0..35209f60 100644 --- a/bitcoin/tests/test_script.py +++ b/bitcoin/tests/test_script.py @@ -44,6 +44,10 @@ def test_is_singleton(self): for i in range(0x0, 0x100): self.assertTrue(CScriptOp(i) is CScriptOp(i)) + def test_boolean_aliases_are_available_by_name(self): + self.assertIs(OPCODES_BY_NAME['OP_FALSE'], OP_0) + self.assertIs(OPCODES_BY_NAME['OP_TRUE'], OP_1) + def test_encode_decode_op_n(self): def t(n, op): actual = CScriptOp.encode_op_n(n)