Skip to content

Commit 8a79888

Browse files
authored
xmss: better typing (#247)
* xmss: better typing * fix tests
1 parent 634d407 commit 8a79888

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

src/lean_spec/subspecs/xmss/subtree.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ def new(
103103
cls,
104104
hasher: TweakHasher,
105105
rand: Rand,
106-
lowest_layer: int,
107-
depth: int,
106+
lowest_layer: Uint64,
107+
depth: Uint64,
108108
start_index: Uint64,
109109
parameter: Parameter,
110110
lowest_layer_nodes: list[HashDigestVector],
@@ -146,7 +146,7 @@ def new(
146146
A `HashSubTree` containing all computed layers from `lowest_layer` to root.
147147
"""
148148
# Validate: nodes must fit in available positions at this layer.
149-
max_positions = 1 << (depth - lowest_layer)
149+
max_positions = 1 << int(depth - lowest_layer)
150150
if int(start_index) + len(lowest_layer_nodes) > max_positions:
151151
raise ValueError(
152152
f"Overflow at layer {lowest_layer}: "
@@ -163,12 +163,11 @@ def new(
163163
parent_start = current.start_index // Uint64(2)
164164

165165
# Hash each pair of siblings into their parent using zip for cleaner indexing.
166-
parent_start_int = int(parent_start)
167166
node_pairs = zip(current.nodes[::2], current.nodes[1::2], strict=True)
168167
parents = [
169168
hasher.apply(
170169
parameter,
171-
TreeTweak(level=level + 1, index=Uint64(parent_start_int + i)),
170+
TreeTweak(level=level + 1, index=parent_start + Uint64(i)),
172171
[left, right],
173172
)
174173
for i, (left, right) in enumerate(node_pairs)
@@ -179,8 +178,8 @@ def new(
179178
layers.append(current)
180179

181180
return cls(
182-
depth=Uint64(depth),
183-
lowest_layer=Uint64(lowest_layer),
181+
depth=depth,
182+
lowest_layer=lowest_layer,
184183
layers=HashTreeLayers(data=layers),
185184
)
186185

@@ -233,8 +232,8 @@ def new_top_tree(
233232
return cls.new(
234233
hasher=hasher,
235234
rand=rand,
236-
lowest_layer=depth // 2,
237-
depth=depth,
235+
lowest_layer=Uint64(depth // 2),
236+
depth=Uint64(depth),
238237
start_index=start_bottom_tree_index,
239238
parameter=parameter,
240239
lowest_layer_nodes=bottom_tree_roots,
@@ -300,8 +299,8 @@ def new_bottom_tree(
300299
full_tree = cls.new(
301300
hasher=hasher,
302301
rand=rand,
303-
lowest_layer=0,
304-
depth=depth,
302+
lowest_layer=Uint64(0),
303+
depth=Uint64(depth),
305304
start_index=bottom_tree_index * Uint64(leafs_per_tree),
306305
parameter=parameter,
307306
lowest_layer_nodes=leaves,

tests/lean_spec/subspecs/xmss/test_merkle_tree.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ def _run_commit_open_verify_roundtrip(
5959
tree = HashSubTree.new(
6060
hasher=hasher,
6161
rand=rand,
62-
lowest_layer=0,
63-
depth=depth,
62+
lowest_layer=Uint64(0),
63+
depth=Uint64(depth),
6464
start_index=Uint64(start_index),
6565
parameter=parameter,
6666
lowest_layer_nodes=leaf_hashes,

0 commit comments

Comments
 (0)