Skip to content

Commit

Permalink
Store Sprout trees with cached roots (#8741)
Browse files Browse the repository at this point in the history
Zebra's database expects all stored trees to have their roots cached in
them.
  • Loading branch information
upbqdn authored Aug 3, 2024
1 parent 7ee9e2b commit 16168d7
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions zebra-state/src/service/finalized_state/zebra_db/arbitrary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,14 +49,15 @@ impl ZebraDb {
let sapling_anchors = self.db().cf_handle("sapling_anchors").unwrap();
let orchard_anchors = self.db().cf_handle("orchard_anchors").unwrap();

let sprout_tree = sprout::tree::NoteCommitmentTree::default();
// Calculate the root so we pass the tree with a cached root to the database. We need to do
// that because the database checks if the tree has a cached root.
sprout_tree.root();

for transaction in block.transactions.iter() {
// Sprout
for joinsplit in transaction.sprout_groth16_joinsplits() {
batch.zs_insert(
&sprout_anchors,
joinsplit.anchor,
sprout::tree::NoteCommitmentTree::default(),
);
batch.zs_insert(&sprout_anchors, joinsplit.anchor, sprout_tree.clone());
}

// Sapling
Expand Down

0 comments on commit 16168d7

Please sign in to comment.