1
0

lnutil: rm duplication of htlc witness script templates

This commit is contained in:
SomberNight
2025-03-12 17:17:14 +00:00
parent 77c180f793
commit 57452d6cd5
3 changed files with 37 additions and 73 deletions

View File

@@ -23,7 +23,7 @@
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
from typing import Tuple, TYPE_CHECKING, Optional, Union, Sequence
from typing import Tuple, TYPE_CHECKING, Optional, Union, Sequence, Mapping, Any
import enum
from enum import IntEnum, Enum
@@ -37,6 +37,7 @@ from .crypto import sha256d, sha256, hash_160
if TYPE_CHECKING:
from .network import Network
from .transaction import OPPushDataGeneric
################################## transactions
@@ -295,12 +296,18 @@ def construct_witness(items: Sequence[Union[str, int, bytes]]) -> bytes:
return bytes(witness)
def construct_script(items: Sequence[Union[str, int, bytes, opcodes]], values=None) -> bytes:
def construct_script(
items: Sequence[Union[str, int, bytes, opcodes, 'OPPushDataGeneric']],
*,
values: Optional[Mapping[int, Any]] = None, # can be used to substitute into OPPushDataGeneric
) -> bytes:
"""Constructs bitcoin script from given items."""
from .transaction import OPPushDataGeneric
script = bytearray()
values = values or {}
for i, item in enumerate(items):
if i in values:
assert OPPushDataGeneric.is_instance(item), f"tried to substitute into {item=!r}"
item = values[i]
if isinstance(item, opcodes):
script += bytes([item])
@@ -312,7 +319,7 @@ def construct_script(items: Sequence[Union[str, int, bytes, opcodes]], values=No
assert is_hex_str(item)
script += push_script(bfh(item))
else:
raise Exception(f'unexpected item for script: {item!r}')
raise Exception(f'unexpected item for script: {item!r} at idx={i}')
return bytes(script)