mirror of
https://github.com/bitcoin/bips.git
synced 2026-07-27 18:13:38 +00:00
bip360: move collect_leaf_hashes() to the test code section
This commit is contained in:
@@ -88,23 +88,6 @@ def tapbranch_hash(left: str, right: str) -> bytes:
|
|||||||
return tagged_hash("TapBranch", b"".join(sorted((h2b(right) + h2b(left)))))
|
return tagged_hash("TapBranch", b"".join(sorted((h2b(right) + h2b(left)))))
|
||||||
|
|
||||||
|
|
||||||
def collect_leaf_hashes(tree: ScriptTree) -> List[str]:
|
|
||||||
"""Recursively collect leaf hashes in order (for verification)"""
|
|
||||||
if isinstance(tree, dict): # Leaf
|
|
||||||
version = f"{tree['leafVersion']:x}"
|
|
||||||
script = tree["script"]
|
|
||||||
return [tapleaf_hash(script=script, tapleaf_ver=version)]
|
|
||||||
|
|
||||||
elif isinstance(tree, list): # Branch: recurse on children
|
|
||||||
hashes: List[str] = []
|
|
||||||
for sub in tree:
|
|
||||||
hashes.extend(collect_leaf_hashes(sub))
|
|
||||||
return hashes
|
|
||||||
|
|
||||||
else:
|
|
||||||
raise ValueError("Invalid tree node")
|
|
||||||
|
|
||||||
|
|
||||||
def compute_merkle_root(tree: ScriptTree) -> str:
|
def compute_merkle_root(tree: ScriptTree) -> str:
|
||||||
"""Recursively compute script tree merkle root"""
|
"""Recursively compute script tree merkle root"""
|
||||||
if isinstance(tree, dict): # Leaf
|
if isinstance(tree, dict): # Leaf
|
||||||
@@ -280,6 +263,23 @@ def encode(hrp, witver, witprog):
|
|||||||
#
|
#
|
||||||
# BIP-360 Test Code
|
# BIP-360 Test Code
|
||||||
#
|
#
|
||||||
|
def collect_leaf_hashes(tree: ScriptTree) -> List[str]:
|
||||||
|
"""Recursively collect leaf hashes in order (for verification)"""
|
||||||
|
if isinstance(tree, dict): # Leaf
|
||||||
|
version = f"{tree['leafVersion']:x}"
|
||||||
|
script = tree["script"]
|
||||||
|
return [tapleaf_hash(script=script, tapleaf_ver=version)]
|
||||||
|
|
||||||
|
elif isinstance(tree, list): # Branch: recurse on children
|
||||||
|
hashes: List[str] = []
|
||||||
|
for sub in tree:
|
||||||
|
hashes.extend(collect_leaf_hashes(sub))
|
||||||
|
return hashes
|
||||||
|
|
||||||
|
else:
|
||||||
|
raise ValueError("Invalid tree node")
|
||||||
|
|
||||||
|
|
||||||
def walk_script_tree_paths(
|
def walk_script_tree_paths(
|
||||||
script_tree: ScriptTree, path: int = 0, depth: int = 0
|
script_tree: ScriptTree, path: int = 0, depth: int = 0
|
||||||
) -> List[int]:
|
) -> List[int]:
|
||||||
|
|||||||
Reference in New Issue
Block a user