Skip to content

Commit b359ee9

Browse files
committed
Require taproot tree depth argument always to be u8
1 parent 2f7fc0e commit b359ee9

File tree

2 files changed

+13
-13
lines changed

2 files changed

+13
-13
lines changed

src/util/psbt/serialize.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ impl Deserialize for TapTree {
352352

353353
let leaf_version = LeafVersion::from_consensus(*version)
354354
.map_err(|_| encode::Error::ParseFailed("Leaf Version Error"))?;
355-
builder = builder.add_leaf_with_ver(usize::from(*depth), script, leaf_version)
355+
builder = builder.add_leaf_with_ver(*depth, script, leaf_version)
356356
.map_err(|_| encode::Error::ParseFailed("Tree not in DFS order"))?;
357357
}
358358
if builder.is_complete() {

src/util/taproot.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ impl TaprootBuilder {
423423
/// are not provided in DFS walk order. The depth of the root node is 0.
424424
pub fn add_leaf_with_ver(
425425
self,
426-
depth: usize,
426+
depth: u8,
427427
script: Script,
428428
ver: LeafVersion,
429429
) -> Result<Self, TaprootBuilderError> {
@@ -435,13 +435,13 @@ impl TaprootBuilder {
435435
/// leaves are not provided in DFS walk order. The depth of the root node is 0.
436436
///
437437
/// See [`TaprootBuilder::add_leaf_with_ver`] for adding a leaf with specific version.
438-
pub fn add_leaf(self, depth: usize, script: Script) -> Result<Self, TaprootBuilderError> {
438+
pub fn add_leaf(self, depth: u8, script: Script) -> Result<Self, TaprootBuilderError> {
439439
self.add_leaf_with_ver(depth, script, LeafVersion::TapScript)
440440
}
441441

442442
/// Adds a hidden/omitted node at `depth` to the builder. Errors if the leaves are not provided
443443
/// in DFS walk order. The depth of the root node is 0.
444-
pub fn add_hidden(self, depth: usize, hash: sha256::Hash) -> Result<Self, TaprootBuilderError> {
444+
pub fn add_hidden(self, depth: u8, hash: sha256::Hash) -> Result<Self, TaprootBuilderError> {
445445
let node = NodeInfo::new_hidden(hash);
446446
self.insert(node, depth)
447447
}
@@ -473,20 +473,20 @@ impl TaprootBuilder {
473473
}
474474

475475
/// Inserts a leaf at `depth`.
476-
fn insert(mut self, mut node: NodeInfo, mut depth: usize) -> Result<Self, TaprootBuilderError> {
476+
fn insert(mut self, mut node: NodeInfo, mut depth: u8) -> Result<Self, TaprootBuilderError> {
477477
// early error on invalid depth. Though this will be checked later
478478
// while constructing TaprootMerkelBranch
479-
if depth > TAPROOT_CONTROL_MAX_NODE_COUNT {
480-
return Err(TaprootBuilderError::InvalidMerkleTreeDepth(depth));
479+
if depth as usize > TAPROOT_CONTROL_MAX_NODE_COUNT {
480+
return Err(TaprootBuilderError::InvalidMerkleTreeDepth(depth as usize));
481481
}
482482
// We cannot insert a leaf at a lower depth while a deeper branch is unfinished. Doing
483483
// so would mean the add_leaf/add_hidden invocations do not correspond to a DFS traversal of a
484484
// binary tree.
485-
if depth + 1 < self.branch.len() {
485+
if depth as usize + 1 < self.branch.len() {
486486
return Err(TaprootBuilderError::NodeNotInDfsOrder);
487487
}
488488

489-
while self.branch.len() == depth + 1 {
489+
while self.branch.len() == depth as usize + 1 {
490490
let child = match self.branch.pop() {
491491
None => unreachable!("Len of branch checked to be >= 1"),
492492
Some(Some(child)) => child,
@@ -507,14 +507,14 @@ impl TaprootBuilder {
507507
depth -= 1;
508508
}
509509

510-
if self.branch.len() < depth + 1 {
510+
if self.branch.len() < depth as usize + 1 {
511511
// add enough nodes so that we can insert node at depth `depth`
512-
let num_extra_nodes = depth + 1 - self.branch.len();
512+
let num_extra_nodes = depth as usize + 1 - self.branch.len();
513513
self.branch
514514
.extend((0..num_extra_nodes).into_iter().map(|_| None));
515515
}
516516
// Push the last node to the branch
517-
self.branch[depth] = Some(node);
517+
self.branch[depth as usize] = Some(node);
518518
Ok(self)
519519
}
520520
}
@@ -1270,7 +1270,7 @@ mod test {
12701270
v: &serde_json::Value,
12711271
mut builder: TaprootBuilder,
12721272
leaves: &mut Vec<(Script, LeafVersion)>,
1273-
depth: usize,
1273+
depth: u8,
12741274
) -> TaprootBuilder {
12751275
if v.is_null() {
12761276
// nothing to push

0 commit comments

Comments
 (0)