29 const auto snapshot = tree.get_snapshot();
30 auto [
exists, low_leaf_index] = tree.get_low_indexed_leaf(leaf_slot);
31 auto sibling_path = tree.get_sibling_path(low_leaf_index);
32 auto low_leaf_preimage = tree.get_leaf_preimage(low_leaf_index);
39 if (low_leaf_preimage.leaf.slot != leaf_slot) {
40 throw std::runtime_error(
"Slot membership check failed");
49 .leaf_slot = leaf_slot,
52 .low_leaf_preimage = low_leaf_preimage,
53 .low_leaf_hash = low_leaf_hash,
54 .low_leaf_index = low_leaf_index,
67 auto& [low_leaf_preimage, low_leaf_index, low_leaf_sibling_path] = insertion_result.low_leaf_witness_data.at(0);
68 std::span<FF> insertion_sibling_path = insertion_result.insertion_witness_data.at(0).path;
70 bool exists = leaf_slot == low_leaf_preimage.leaf.slot;
77 merkle_check.assert_membership(low_leaf_hash, low_leaf_index, low_leaf_sibling_path, prev_snapshot.
root);
83 updated_low_leaf_preimage.
nextKey = leaf_slot;
88 low_leaf_hash, updated_low_leaf_hash, low_leaf_index, low_leaf_sibling_path, prev_snapshot.
root);
102 assert(next_snapshot == tree.get_snapshot());
105 .new_leaf_hash = new_leaf_hash,
106 .intermediate_root = intermediate_root,
113 .leaf_slot = leaf_slot,
114 .prev_snapshot = prev_snapshot,
115 .next_snapshot = next_snapshot,
116 .low_leaf_preimage = low_leaf_preimage,
117 .low_leaf_hash = low_leaf_hash,
118 .low_leaf_index = low_leaf_index,
120 .append_data = append_data,