Store Sprout trees with cached roots (#8741)

Zebra's database expects all stored trees to have their roots cached in
them.
This commit is contained in:
Marek 2024-08-04 00:29:09 +02:00 committed by GitHub
parent 7ee9e2b25c
commit 16168d7623
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 5 deletions

View File

@ -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