81 uint64_t low_leaf_index,
87 if (siloing_params.has_value()) {
91 .parameters = siloing_params.value(),
103 .
value = source_value,
104 .prev_snapshot = snapshot,
105 .next_snapshot = snapshot,
106 .tree_height = sibling_path.size(),
108 .low_leaf_data = low_leaf_preimage,
109 .low_leaf_hash = low_leaf_hash,
110 .low_leaf_index = low_leaf_index,
111 .siloing_data = siloing_data,
143 uint64_t low_leaf_index,
150 if (siloing_params.has_value()) {
154 bool exists = !insertion_sibling_path.has_value();
176 updated_low_leaf_hash,
178 low_leaf_sibling_path,
194 insertion_sibling_path.value(),
203 .new_leaf_hash = new_leaf_hash,
204 .intermediate_root = intermediate_root,
209 .prev_snapshot = prev_snapshot,
210 .next_snapshot = next_snapshot,
211 .tree_height = low_leaf_sibling_path.size(),
213 .low_leaf_data = low_leaf_preimage,
214 .low_leaf_hash = low_leaf_hash,
215 .low_leaf_index = low_leaf_index,
217 .siloing_data = siloing_data,
218 .public_inputs_index = public_inputs_index,
219 .append_data = append_data });
221 return next_snapshot;
void assert_read(const FF &value, std::optional< IndexedTreeSiloingParameters > siloing_params, bool exists, const IndexedTreeLeafData &low_leaf_preimage, uint64_t low_leaf_index, std::span< const FF > sibling_path, const AppendOnlyTreeSnapshot &snapshot) override
Performs a membership/non-membership read check on an indexed tree.
AppendOnlyTreeSnapshot write(const FF &value, std::optional< IndexedTreeSiloingParameters > siloing_params, std::optional< uint64_t > public_inputs_index, const IndexedTreeLeafData &low_leaf_preimage, uint64_t low_leaf_index, std::span< const FF > low_leaf_sibling_path, const AppendOnlyTreeSnapshot &prev_snapshot, std::optional< std::span< const FF > > insertion_sibling_path) override
Writes a value into an indexed tree, or validates it already exists.