38 wire::WsdbGetTreeInfo&& cmd,
39 Responder<wire::WsdbGetTreeInfoResponse> respond)
43 !cmd.revision.includeUncommitted,
45 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetTreeInfoResponse {
46 auto info = ctx.world_state.get_tree_info(revision_from_wire(cmd.revision),
47 tree_id_from_wire(cmd.treeId));
48 return wire::WsdbGetTreeInfoResponse{
50 .root = fr_to_wire(info.meta.root),
51 .size = info.meta.size,
52 .depth = info.meta.depth,
58 wire::WsdbGetStateReference&& cmd,
59 Responder<wire::WsdbGetStateReferenceResponse> respond)
63 !cmd.revision.includeUncommitted,
65 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetStateReferenceResponse {
66 auto state = ctx.world_state.get_state_reference(revision_from_wire(cmd.revision));
67 return wire::WsdbGetStateReferenceResponse{ .state = state_reference_to_wire(state) };
72 wire::WsdbGetInitialStateReference&& ,
73 Responder<wire::WsdbGetInitialStateReferenceResponse> respond)
88 wire::WsdbGetLeafValue&& cmd,
89 Responder<wire::WsdbGetLeafValueResponse> respond)
93 !cmd.revision.includeUncommitted,
95 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetLeafValueResponse {
96 auto revision = revision_from_wire(cmd.revision);
97 auto tree_id = tree_id_from_wire(cmd.treeId);
98 auto leaf_index = static_cast<index_t>(cmd.leafIndex);
101 case world_state::MerkleTreeId::NOTE_HASH_TREE:
102 case world_state::MerkleTreeId::L1_TO_L2_MESSAGE_TREE:
103 case world_state::MerkleTreeId::ARCHIVE: {
104 auto leaf = ctx.world_state.get_leaf<bb::fr>(revision, tree_id, leaf_index);
105 return wire::WsdbGetLeafValueResponse{ .value = leaf.has_value()
106 ? std::optional<Fr>(fr_to_wire(*leaf))
110 throw std::runtime_error(
"Unsupported tree type for get_leaf_value");
116 wire::WsdbGetPublicDataLeafValue&& cmd,
117 Responder<wire::WsdbGetPublicDataLeafValueResponse> respond)
122 !cmd.revision.includeUncommitted,
124 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetPublicDataLeafValueResponse {
125 auto leaf = ctx.world_state.get_leaf<PublicDataLeafValue>(revision_from_wire(cmd.revision),
126 world_state::MerkleTreeId::PUBLIC_DATA_TREE,
127 static_cast<index_t>(cmd.leafIndex));
128 return wire::WsdbGetPublicDataLeafValueResponse{
129 .value = leaf.has_value() ? std::optional<wire::PublicDataLeafValue>(public_data_leaf_to_wire(*leaf))
136 wire::WsdbGetNullifierLeafValue&& cmd,
137 Responder<wire::WsdbGetNullifierLeafValueResponse> respond)
142 !cmd.revision.includeUncommitted,
144 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetNullifierLeafValueResponse {
145 auto leaf = ctx.world_state.get_leaf<NullifierLeafValue>(revision_from_wire(cmd.revision),
146 world_state::MerkleTreeId::NULLIFIER_TREE,
147 static_cast<index_t>(cmd.leafIndex));
148 return wire::WsdbGetNullifierLeafValueResponse{
149 .value = leaf.has_value() ? std::optional<wire::NullifierLeafValue>(nullifier_leaf_to_wire(*leaf))
156 wire::WsdbGetPublicDataLeafPreimage&& cmd,
157 Responder<wire::WsdbGetPublicDataLeafPreimageResponse> respond)
161 !cmd.revision.includeUncommitted,
163 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetPublicDataLeafPreimageResponse {
164 auto leaf = ctx.world_state.get_indexed_leaf<PublicDataLeafValue>(
165 revision_from_wire(cmd.revision),
166 world_state::MerkleTreeId::PUBLIC_DATA_TREE,
167 static_cast<index_t>(cmd.leafIndex));
168 return wire::WsdbGetPublicDataLeafPreimageResponse{
169 .preimage = leaf.has_value() ? std::optional<wire::IndexedPublicDataLeafValue>(
170 indexed_public_data_leaf_to_wire(*leaf))
177 wire::WsdbGetNullifierLeafPreimage&& cmd,
178 Responder<wire::WsdbGetNullifierLeafPreimageResponse> respond)
183 !cmd.revision.includeUncommitted,
185 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetNullifierLeafPreimageResponse {
186 auto leaf = ctx.world_state.get_indexed_leaf<NullifierLeafValue>(revision_from_wire(cmd.revision),
187 world_state::MerkleTreeId::NULLIFIER_TREE,
188 static_cast<index_t>(cmd.leafIndex));
189 return wire::WsdbGetNullifierLeafPreimageResponse{
190 .preimage = leaf.has_value()
191 ? std::optional<wire::IndexedNullifierLeafValue>(indexed_nullifier_leaf_to_wire(*leaf))
198 wire::WsdbGetSiblingPath&& cmd,
199 Responder<wire::WsdbGetSiblingPathResponse> respond)
203 !cmd.revision.includeUncommitted,
205 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetSiblingPathResponse {
206 fr_sibling_path path = ctx.world_state.get_sibling_path(revision_from_wire(cmd.revision),
207 tree_id_from_wire(cmd.treeId),
208 static_cast<index_t>(cmd.leafIndex));
209 return wire::WsdbGetSiblingPathResponse{ .path = fr_vec_to_wire(path) };
214 wire::WsdbGetBlockNumbersForLeafIndices&& cmd,
215 Responder<wire::WsdbGetBlockNumbersForLeafIndicesResponse> respond)
219 !cmd.revision.includeUncommitted,
221 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbGetBlockNumbersForLeafIndicesResponse {
222 std::vector<index_t> leaf_indices;
223 leaf_indices.reserve(cmd.leafIndices.size());
224 for (auto i : cmd.leafIndices) {
225 leaf_indices.push_back(static_cast<index_t>(i));
231 wire_block_numbers.reserve(block_numbers.size());
232 for (
const auto& bn : block_numbers) {
233 wire_block_numbers.push_back(bn);
235 return wire::WsdbGetBlockNumbersForLeafIndicesResponse{ .blockNumbers =
245 wire::WsdbFindLeafIndices&& cmd,
246 Responder<wire::WsdbFindLeafIndicesResponse> respond)
250 !cmd.revision.includeUncommitted,
252 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindLeafIndicesResponse {
253 auto revision = revision_from_wire(cmd.revision);
254 auto tree_id = tree_id_from_wire(cmd.treeId);
255 auto start_index = static_cast<index_t>(cmd.startIndex);
257 std::vector<std::optional<index_t>> indices;
259 case world_state::MerkleTreeId::NOTE_HASH_TREE:
260 case world_state::MerkleTreeId::L1_TO_L2_MESSAGE_TREE:
261 case world_state::MerkleTreeId::ARCHIVE: {
262 auto typed_leaves = fr_vec_from_wire(cmd.leaves);
263 ctx.world_state.find_leaf_indices<bb::fr>(
264 revision, tree_id, typed_leaves, indices, start_index);
268 throw std::runtime_error(
"Unsupported tree type for find_leaf_indices");
271 wire_indices.reserve(indices.size());
272 for (
const auto& i : indices) {
276 return wire::WsdbFindLeafIndicesResponse{ .indices =
std::move(wire_indices) };
281 wire::WsdbFindPublicDataLeafIndices&& cmd,
282 Responder<wire::WsdbFindPublicDataLeafIndicesResponse> respond)
286 !cmd.revision.includeUncommitted,
288 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindPublicDataLeafIndicesResponse {
289 std::vector<std::optional<index_t>> indices;
290 ctx.world_state.find_leaf_indices<PublicDataLeafValue>(
291 revision_from_wire(cmd.revision),
292 world_state::MerkleTreeId::PUBLIC_DATA_TREE,
293 public_data_leaf_vec_from_wire(cmd.leaves),
295 static_cast<index_t>(cmd.startIndex));
296 std::vector<std::optional<uint64_t>> wire_indices;
297 wire_indices.reserve(indices.size());
298 for (const auto& i : indices) {
299 wire_indices.push_back(i.has_value() ? std::optional<uint64_t>(static_cast<uint64_t>(*i))
302 return wire::WsdbFindPublicDataLeafIndicesResponse{ .indices = std::move(wire_indices) };
307 wire::WsdbFindNullifierLeafIndices&& cmd,
308 Responder<wire::WsdbFindNullifierLeafIndicesResponse> respond)
312 !cmd.revision.includeUncommitted,
314 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindNullifierLeafIndicesResponse {
315 std::vector<std::optional<index_t>> indices;
316 ctx.world_state.find_leaf_indices<NullifierLeafValue>(revision_from_wire(cmd.revision),
317 world_state::MerkleTreeId::NULLIFIER_TREE,
318 nullifier_leaf_vec_from_wire(cmd.leaves),
320 static_cast<index_t>(cmd.startIndex));
321 std::vector<std::optional<uint64_t>> wire_indices;
322 wire_indices.reserve(indices.size());
323 for (const auto& i : indices) {
324 wire_indices.push_back(i.has_value() ? std::optional<uint64_t>(static_cast<uint64_t>(*i))
327 return wire::WsdbFindNullifierLeafIndicesResponse{ .indices = std::move(wire_indices) };
332 wire::WsdbFindLowLeaf&& cmd,
333 Responder<wire::WsdbFindLowLeafResponse> respond)
337 !cmd.revision.includeUncommitted,
339 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindLowLeafResponse {
340 auto low_leaf_info = ctx.world_state.find_low_leaf_index(
341 revision_from_wire(cmd.revision), tree_id_from_wire(cmd.treeId), fr_from_wire(cmd.key));
342 return wire::WsdbFindLowLeafResponse{
343 .alreadyPresent = low_leaf_info.is_already_present,
344 .index = static_cast<uint64_t>(low_leaf_info.index),
350 wire::WsdbFindSiblingPaths&& cmd,
351 Responder<wire::WsdbFindSiblingPathsResponse> respond)
355 !cmd.revision.includeUncommitted,
357 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindSiblingPathsResponse {
358 auto revision = revision_from_wire(cmd.revision);
359 auto tree_id = tree_id_from_wire(cmd.treeId);
360 std::vector<std::optional<SiblingPathAndIndex>> paths;
362 case world_state::MerkleTreeId::NOTE_HASH_TREE:
363 case world_state::MerkleTreeId::L1_TO_L2_MESSAGE_TREE:
364 case world_state::MerkleTreeId::ARCHIVE: {
365 auto typed_leaves = fr_vec_from_wire(cmd.leaves);
366 ctx.world_state.find_sibling_paths<bb::fr>(revision, tree_id, typed_leaves, paths);
370 throw std::runtime_error(
"Unsupported tree type for find_sibling_paths");
373 wire_paths.reserve(paths.size());
374 for (
const auto& p : paths) {
375 if (!p.has_value()) {
379 wire_paths.push_back(wire::SiblingPathAndIndex{
380 .index =
static_cast<uint64_t
>(p->index),
384 return wire::WsdbFindSiblingPathsResponse{ .paths =
std::move(wire_paths) };
389 wire::WsdbFindPublicDataSiblingPaths&& cmd,
390 Responder<wire::WsdbFindPublicDataSiblingPathsResponse> respond)
395 !cmd.revision.includeUncommitted,
397 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindPublicDataSiblingPathsResponse {
398 std::vector<std::optional<SiblingPathAndIndex>> paths;
399 ctx.world_state.find_sibling_paths<PublicDataLeafValue>(revision_from_wire(cmd.revision),
400 world_state::MerkleTreeId::PUBLIC_DATA_TREE,
401 public_data_leaf_vec_from_wire(cmd.leaves),
403 std::vector<std::optional<wire::SiblingPathAndIndex>> wire_paths;
404 wire_paths.reserve(paths.size());
405 for (const auto& p : paths) {
406 wire_paths.push_back(
407 p.has_value() ? std::optional<wire::SiblingPathAndIndex>(wire::SiblingPathAndIndex{
408 .index = static_cast<uint64_t>(p->index), .path = fr_vec_to_wire(p->path) })
411 return wire::WsdbFindPublicDataSiblingPathsResponse{ .paths = std::move(wire_paths) };
416 wire::WsdbFindNullifierSiblingPaths&& cmd,
417 Responder<wire::WsdbFindNullifierSiblingPathsResponse> respond)
421 !cmd.revision.includeUncommitted,
423 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbFindNullifierSiblingPathsResponse {
424 std::vector<std::optional<SiblingPathAndIndex>> paths;
425 ctx.world_state.find_sibling_paths<NullifierLeafValue>(revision_from_wire(cmd.revision),
426 world_state::MerkleTreeId::NULLIFIER_TREE,
427 nullifier_leaf_vec_from_wire(cmd.leaves),
429 std::vector<std::optional<wire::SiblingPathAndIndex>> wire_paths;
430 wire_paths.reserve(paths.size());
431 for (const auto& p : paths) {
432 wire_paths.push_back(
434 ? std::optional<wire::SiblingPathAndIndex>(wire::SiblingPathAndIndex{
435 .index = static_cast<uint64_t>(p->index), .path = fr_vec_to_wire(p->path) })
438 return wire::WsdbFindNullifierSiblingPathsResponse{ .paths = std::move(wire_paths) };
447 wire::WsdbAppendLeaves&& cmd,
448 Responder<wire::WsdbAppendLeavesResponse> respond)
451 ctx, cmd.forkId,
std::move(respond), [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbAppendLeavesResponse {
452 auto tree_id = tree_id_from_wire(cmd.treeId);
454 case world_state::MerkleTreeId::NOTE_HASH_TREE:
455 case world_state::MerkleTreeId::L1_TO_L2_MESSAGE_TREE:
456 case world_state::MerkleTreeId::ARCHIVE: {
457 ctx.world_state.append_leaves<bb::fr>(tree_id, fr_vec_from_wire(cmd.leaves), cmd.forkId);
461 throw std::runtime_error(
"Unsupported tree type for append_leaves");
463 return wire::WsdbAppendLeavesResponse{};
468 wire::WsdbAppendPublicDataLeaves&& cmd,
469 Responder<wire::WsdbAppendPublicDataLeavesResponse> respond)
474 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbAppendPublicDataLeavesResponse {
475 ctx.world_state.append_leaves<PublicDataLeafValue>(world_state::MerkleTreeId::PUBLIC_DATA_TREE,
476 public_data_leaf_vec_from_wire(cmd.leaves),
478 return wire::WsdbAppendPublicDataLeavesResponse{};
483 wire::WsdbAppendNullifierLeaves&& cmd,
484 Responder<wire::WsdbAppendNullifierLeavesResponse> respond)
489 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbAppendNullifierLeavesResponse {
490 ctx.world_state.append_leaves<NullifierLeafValue>(world_state::MerkleTreeId::NULLIFIER_TREE,
491 nullifier_leaf_vec_from_wire(cmd.leaves),
493 return wire::WsdbAppendNullifierLeavesResponse{};
498 wire::WsdbBatchInsertPublicData&& cmd,
499 Responder<wire::WsdbBatchInsertPublicDataResponse> respond)
504 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbBatchInsertPublicDataResponse {
505 auto result = ctx.world_state.batch_insert_indexed_leaves<PublicDataLeafValue>(
506 world_state::MerkleTreeId::PUBLIC_DATA_TREE,
507 public_data_leaf_vec_from_wire(cmd.leaves),
510 return wire::WsdbBatchInsertPublicDataResponse{ .result = batch_public_data_to_wire(result) };
515 wire::WsdbBatchInsertNullifier&& cmd,
516 Responder<wire::WsdbBatchInsertNullifierResponse> respond)
521 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbBatchInsertNullifierResponse {
522 auto result = ctx.world_state.batch_insert_indexed_leaves<NullifierLeafValue>(
523 world_state::MerkleTreeId::NULLIFIER_TREE,
524 nullifier_leaf_vec_from_wire(cmd.leaves),
527 return wire::WsdbBatchInsertNullifierResponse{ .result = batch_nullifier_to_wire(result) };
532 wire::WsdbSequentialInsertPublicData&& cmd,
533 Responder<wire::WsdbSequentialInsertPublicDataResponse> respond)
539 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbSequentialInsertPublicDataResponse {
540 auto result = ctx.world_state.insert_indexed_leaves<PublicDataLeafValue>(
541 world_state::MerkleTreeId::PUBLIC_DATA_TREE, public_data_leaf_vec_from_wire(cmd.leaves), cmd.forkId);
542 return wire::WsdbSequentialInsertPublicDataResponse{ .result = sequential_public_data_to_wire(result) };
547 wire::WsdbSequentialInsertNullifier&& cmd,
548 Responder<wire::WsdbSequentialInsertNullifierResponse> respond)
554 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbSequentialInsertNullifierResponse {
555 auto result = ctx.world_state.insert_indexed_leaves<NullifierLeafValue>(
556 world_state::MerkleTreeId::NULLIFIER_TREE, nullifier_leaf_vec_from_wire(cmd.leaves), cmd.forkId);
557 return wire::WsdbSequentialInsertNullifierResponse{ .result = sequential_nullifier_to_wire(result) };
562 wire::WsdbUpdateArchive&& cmd,
563 Responder<wire::WsdbUpdateArchiveResponse> respond)
566 ctx, cmd.forkId,
std::move(respond), [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbUpdateArchiveResponse {
567 ctx.world_state.update_archive(state_reference_from_wire(cmd.blockStateRef),
568 block_header_hash_from_wire(cmd.blockHeaderHash),
570 return wire::WsdbUpdateArchiveResponse{};
591 return wire::WsdbRollbackResponse{};
608 padded_nullifiers.reserve(cmd.paddedNullifiers.size());
609 for (
const auto& w : cmd.paddedNullifiers) {
614 public_data_writes.reserve(cmd.publicDataWrites.size());
615 for (
const auto& w : cmd.publicDataWrites) {
622 padded_l1_to_l2_messages,
640 return wire::WsdbCreateForkResponse{ .forkId =
id };
647 ctx, cmd.forkId,
std::move(respond), [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbDeleteForkResponse {
648 ctx.world_state.delete_fork(cmd.forkId);
649 return wire::WsdbDeleteForkResponse{};
658 wire::WsdbFinalizeBlocks&& cmd,
659 Responder<wire::WsdbFinalizeBlocksResponse> respond)
662 ctx, 0,
std::move(respond), [&ctx, cmd =
std::move(cmd)]()
mutable -> wire::WsdbFinalizeBlocksResponse {
669 wire::WsdbUnwindBlocks&& cmd,
670 Responder<wire::WsdbUnwindBlocksResponse> respond)
673 ctx, 0,
std::move(respond), [&ctx, cmd =
std::move(cmd)]()
mutable -> wire::WsdbUnwindBlocksResponse {
680 wire::WsdbRemoveHistoricalBlocks&& cmd,
681 Responder<wire::WsdbRemoveHistoricalBlocksResponse> respond)
684 ctx, 0,
std::move(respond), [&ctx, cmd =
std::move(cmd)]()
mutable -> wire::WsdbRemoveHistoricalBlocksResponse {
708 wire::WsdbCreateCheckpoint&& cmd,
709 Responder<wire::WsdbCreateCheckpointResponse> respond)
714 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbCreateCheckpointResponse {
715 ctx.world_state.checkpoint(cmd.forkId);
716 return wire::WsdbCreateCheckpointResponse{};
721 wire::WsdbCommitCheckpoint&& cmd,
722 Responder<wire::WsdbCommitCheckpointResponse> respond)
727 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbCommitCheckpointResponse {
728 ctx.world_state.commit_checkpoint(cmd.forkId);
729 return wire::WsdbCommitCheckpointResponse{};
734 wire::WsdbRevertCheckpoint&& cmd,
735 Responder<wire::WsdbRevertCheckpointResponse> respond)
740 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbRevertCheckpointResponse {
741 ctx.world_state.revert_checkpoint(cmd.forkId);
742 return wire::WsdbRevertCheckpointResponse{};
747 wire::WsdbCommitAllCheckpoints&& cmd,
748 Responder<wire::WsdbCommitAllCheckpointsResponse> respond)
753 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbCommitAllCheckpointsResponse {
754 ctx.world_state.commit_all_checkpoints_to(cmd.forkId, 0);
755 return wire::WsdbCommitAllCheckpointsResponse{};
760 wire::WsdbRevertAllCheckpoints&& cmd,
761 Responder<wire::WsdbRevertAllCheckpointsResponse> respond)
766 [&ctx, cmd =
std::move(cmd)]() mutable -> wire::WsdbRevertAllCheckpointsResponse {
767 ctx.world_state.revert_all_checkpoints_to(cmd.forkId, 0);
768 return wire::WsdbRevertAllCheckpointsResponse{};
780 return wire::WsdbCopyStoresResponse{};
WorldStateStatusFull remove_historical_blocks(const block_number_t &toBlockNumber)
StateReference get_initial_state_reference() const
Gets the initial state reference for all the trees in the world state.
std::pair< bool, std::string > commit(WorldStateStatusFull &status)
Commits the current state of the world state.
void get_block_numbers_for_leaf_indices(const WorldStateRevision &revision, MerkleTreeId tree_id, const std::vector< index_t > &leafIndices, std::vector< std::optional< block_number_t > > &blockNumbers) const
WorldStateStatusFull unwind_blocks(const block_number_t &toBlockNumber)
void get_status_summary(WorldStateStatusSummary &status) const
void rollback()
Rolls back any uncommitted changes made to the world state.
WorldStateStatusFull sync_block(const StateReference &block_state_ref, const bb::fr &block_header_hash, const std::vector< bb::fr > ¬es, const std::vector< bb::fr > &l1_to_l2_messages, const std::vector< crypto::merkle_tree::NullifierLeafValue > &nullifiers, const std::vector< crypto::merkle_tree::PublicDataLeafValue > &public_writes)
WorldStateStatusSummary set_finalized_blocks(const block_number_t &toBlockNumber)
uint64_t create_fork(const std::optional< block_number_t > &blockNumber)
void copy_stores(const std::string &dstPath, bool compact) const
Copies all underlying LMDB stores to the target directory while acquiring a write lock.
void handle_delete_fork(WsdbRequest &ctx, wire::WsdbDeleteFork &&cmd, Responder< wire::WsdbDeleteForkResponse > respond)
world_state::StateReference state_reference_from_wire(const std::vector< wire::TreeStateReference > &w)
std::vector< bb::fr > fr_vec_from_wire(const std::vector< Fr > &w)
void handle_append_leaves(WsdbRequest &ctx, wire::WsdbAppendLeaves &&cmd, Responder< wire::WsdbAppendLeavesResponse > respond)
void handle_find_sibling_paths(WsdbRequest &ctx, wire::WsdbFindSiblingPaths &&cmd, Responder< wire::WsdbFindSiblingPathsResponse > respond)
void handle_revert_all_checkpoints(WsdbRequest &ctx, wire::WsdbRevertAllCheckpoints &&cmd, Responder< wire::WsdbRevertAllCheckpointsResponse > respond)
std::vector< Fr > fr_vec_to_wire(const std::vector< bb::fr > &d)
void handle_get_nullifier_leaf_preimage(WsdbRequest &ctx, wire::WsdbGetNullifierLeafPreimage &&cmd, Responder< wire::WsdbGetNullifierLeafPreimageResponse > respond)
void handle_get_leaf_value(WsdbRequest &ctx, wire::WsdbGetLeafValue &&cmd, Responder< wire::WsdbGetLeafValueResponse > respond)
void handle_get_public_data_leaf_value(WsdbRequest &ctx, wire::WsdbGetPublicDataLeafValue &&cmd, Responder< wire::WsdbGetPublicDataLeafValueResponse > respond)
void handle_batch_insert_public_data(WsdbRequest &ctx, wire::WsdbBatchInsertPublicData &&cmd, Responder< wire::WsdbBatchInsertPublicDataResponse > respond)
void handle_update_archive(WsdbRequest &ctx, wire::WsdbUpdateArchive &&cmd, Responder< wire::WsdbUpdateArchiveResponse > respond)
void schedule_read(WsdbRequest &ctx, uint64_t fork, bool committed, Responder< Resp > respond, Fn &&logic)
Run a read on fork and respond. committed true => independent snapshot, never ordered; false => waits...
void handle_get_nullifier_leaf_value(WsdbRequest &ctx, wire::WsdbGetNullifierLeafValue &&cmd, Responder< wire::WsdbGetNullifierLeafValueResponse > respond)
world_state::WorldStateRevision revision_from_wire(const wire::WorldStateRevision &w)
bb::fr public_data_slot_from_wire(const PublicDataSlot &w)
void handle_get_state_reference(WsdbRequest &ctx, wire::WsdbGetStateReference &&cmd, Responder< wire::WsdbGetStateReferenceResponse > respond)
world_state::MerkleTreeId tree_id_from_wire(MerkleTreeId w)
void handle_get_initial_state_reference(WsdbRequest &ctx, wire::WsdbGetInitialStateReference &&, Responder< wire::WsdbGetInitialStateReferenceResponse > respond)
void handle_find_public_data_leaf_indices(WsdbRequest &ctx, wire::WsdbFindPublicDataLeafIndices &&cmd, Responder< wire::WsdbFindPublicDataLeafIndicesResponse > respond)
void handle_commit_all_checkpoints(WsdbRequest &ctx, wire::WsdbCommitAllCheckpoints &&cmd, Responder< wire::WsdbCommitAllCheckpointsResponse > respond)
void handle_create_fork(WsdbRequest &ctx, wire::WsdbCreateFork &&cmd, Responder< wire::WsdbCreateForkResponse > respond)
void handle_finalize_blocks(WsdbRequest &ctx, wire::WsdbFinalizeBlocks &&cmd, Responder< wire::WsdbFinalizeBlocksResponse > respond)
void handle_get_status(WsdbRequest &ctx, wire::WsdbGetStatus &&, Responder< wire::WsdbGetStatusResponse > respond)
void handle_unwind_blocks(WsdbRequest &ctx, wire::WsdbUnwindBlocks &&cmd, Responder< wire::WsdbUnwindBlocksResponse > respond)
void handle_append_public_data_leaves(WsdbRequest &ctx, wire::WsdbAppendPublicDataLeaves &&cmd, Responder< wire::WsdbAppendPublicDataLeavesResponse > respond)
void handle_find_leaf_indices(WsdbRequest &ctx, wire::WsdbFindLeafIndices &&cmd, Responder< wire::WsdbFindLeafIndicesResponse > respond)
void handle_find_nullifier_sibling_paths(WsdbRequest &ctx, wire::WsdbFindNullifierSiblingPaths &&cmd, Responder< wire::WsdbFindNullifierSiblingPathsResponse > respond)
void handle_create_checkpoint(WsdbRequest &ctx, wire::WsdbCreateCheckpoint &&cmd, Responder< wire::WsdbCreateCheckpointResponse > respond)
void handle_revert_checkpoint(WsdbRequest &ctx, wire::WsdbRevertCheckpoint &&cmd, Responder< wire::WsdbRevertCheckpointResponse > respond)
wire::WorldStateStatusFull world_state_status_full_to_wire(const bb::world_state::WorldStateStatusFull &d)
void handle_rollback(WsdbRequest &ctx, wire::WsdbRollback &&, Responder< wire::WsdbRollbackResponse > respond)
void handle_sequential_insert_public_data(WsdbRequest &ctx, wire::WsdbSequentialInsertPublicData &&cmd, Responder< wire::WsdbSequentialInsertPublicDataResponse > respond)
void handle_append_nullifier_leaves(WsdbRequest &ctx, wire::WsdbAppendNullifierLeaves &&cmd, Responder< wire::WsdbAppendNullifierLeavesResponse > respond)
bb::fr public_data_value_from_wire(const PublicDataValue &w)
bb::fr nullifier_from_wire(const Nullifier &w)
void handle_get_tree_info(WsdbRequest &ctx, wire::WsdbGetTreeInfo &&cmd, Responder< wire::WsdbGetTreeInfoResponse > respond)
void handle_commit_checkpoint(WsdbRequest &ctx, wire::WsdbCommitCheckpoint &&cmd, Responder< wire::WsdbCommitCheckpointResponse > respond)
bb::fr block_header_hash_from_wire(const BlockHeaderHash &w)
void handle_commit(WsdbRequest &ctx, wire::WsdbCommit &&, Responder< wire::WsdbCommitResponse > respond)
void handle_find_public_data_sibling_paths(WsdbRequest &ctx, wire::WsdbFindPublicDataSiblingPaths &&cmd, Responder< wire::WsdbFindPublicDataSiblingPathsResponse > respond)
void handle_get_sibling_path(WsdbRequest &ctx, wire::WsdbGetSiblingPath &&cmd, Responder< wire::WsdbGetSiblingPathResponse > respond)
void handle_get_block_numbers_for_leaf_indices(WsdbRequest &ctx, wire::WsdbGetBlockNumbersForLeafIndices &&cmd, Responder< wire::WsdbGetBlockNumbersForLeafIndicesResponse > respond)
void handle_sequential_insert_nullifier(WsdbRequest &ctx, wire::WsdbSequentialInsertNullifier &&cmd, Responder< wire::WsdbSequentialInsertNullifierResponse > respond)
void handle_sync_block(WsdbRequest &ctx, wire::WsdbSyncBlock &&cmd, Responder< wire::WsdbSyncBlockResponse > respond)
void handle_get_public_data_leaf_preimage(WsdbRequest &ctx, wire::WsdbGetPublicDataLeafPreimage &&cmd, Responder< wire::WsdbGetPublicDataLeafPreimageResponse > respond)
void handle_copy_stores(WsdbRequest &ctx, wire::WsdbCopyStores &&cmd, Responder< wire::WsdbCopyStoresResponse > respond)
wire::WorldStateStatusSummary world_state_status_summary_to_wire(const bb::world_state::WorldStateStatusSummary &d)
void handle_find_low_leaf(WsdbRequest &ctx, wire::WsdbFindLowLeaf &&cmd, Responder< wire::WsdbFindLowLeafResponse > respond)
void handle_batch_insert_nullifier(WsdbRequest &ctx, wire::WsdbBatchInsertNullifier &&cmd, Responder< wire::WsdbBatchInsertNullifierResponse > respond)
std::vector< wire::TreeStateReference > state_reference_to_wire(const world_state::StateReference &d)
void schedule_write(WsdbRequest &ctx, uint64_t fork, Responder< Resp > respond, Fn &&logic)
Run a write on fork (exclusive on that fork) and respond.
void handle_find_nullifier_leaf_indices(WsdbRequest &ctx, wire::WsdbFindNullifierLeafIndices &&cmd, Responder< wire::WsdbFindNullifierLeafIndicesResponse > respond)
void handle_remove_historical_blocks(WsdbRequest &ctx, wire::WsdbRemoveHistoricalBlocks &&cmd, Responder< wire::WsdbRemoveHistoricalBlocksResponse > respond)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
world_state::WorldState & world_state
Non-template handler declarations for the wsdb service.
Helpers that wrap a handler's work in the per-fork scheduler.
Wire <-> domain conversion helpers for the aztec-wsdb service.