Skip to main content

drive_proof_verifier/
lib.rs

1//! Proof verification library for Dash Drive
2#![warn(missing_docs)]
3#![allow(clippy::result_large_err)]
4
5/// Errors that can occur during proof verification
6pub mod error;
7/// Implementation of proof verification
8mod proof;
9pub mod types;
10mod verify;
11pub use error::Error;
12pub use proof::document_count::{
13    verify_aggregate_count_proof, verify_carrier_aggregate_count_proof,
14    verify_distinct_count_proof, verify_point_lookup_count_proof,
15    verify_primary_key_count_tree_proof, DocumentCount,
16};
17pub use proof::document_split_count::DocumentSplitCounts;
18// Re-export `SplitCountEntry` from rs-drive at the proof-verifier
19// crate root so SDK consumers don't have to depend on rs-drive
20// directly just to name the entry type returned by
21// `verify_distinct_count_proof` and `DocumentSplitCounts::from_verified`.
22pub use drive::query::SplitCountEntry;
23/// Verified average result types. Average-side analog of `DocumentSum`
24/// / `DocumentSplitSums`; carry the `(count, sum)` pair the verifier
25/// recovers from grovedb PR 670's `AggregateCountAndSumOnRange`
26/// primitive. Client computes `avg = sum / count`.
27pub use proof::document_average::{
28    verify_aggregate_count_and_sum_proof, verify_carrier_aggregate_count_and_sum_proof,
29    verify_distinct_count_and_sum_proof, verify_point_lookup_count_and_sum_proof,
30    verify_primary_key_count_sum_tree_proof, DocumentAverage,
31};
32pub use proof::document_split_average::{DocumentSplitAverages, SplitAverageEntry};
33/// Verified sum result types. Sum-side analogs of `DocumentCount` /
34/// `DocumentSplitCounts`; see their respective module docs for the
35/// grovedb PR 670 dependency status.
36pub use proof::document_split_sum::{DocumentSplitSums, SplitSumEntry};
37pub use proof::document_sum::{
38    verify_aggregate_sum_proof, verify_carrier_aggregate_sum_proof, verify_distinct_sum_proof,
39    verify_point_lookup_sum_proof, verify_primary_key_sum_tree_proof, DocumentSum,
40};
41// Re-export the rs-drive `SumEntry` + `AverageEntry` at the
42// proof-verifier crate root, paralleling `SplitCountEntry` above —
43// the per-shape verifier helpers above all return these types.
44pub use drive::query::drive_document_average_query::AverageEntry;
45pub use drive::query::SumEntry;
46pub use proof::{FromProof, Length};
47
48// Re-export context provider types from dash-context-provider
49#[cfg(feature = "mocks")]
50pub use dash_context_provider::MockContextProvider;
51pub use dash_context_provider::{ContextProvider, ContextProviderError, DataContractProvider};
52
53/// From Request
54pub mod from_request;
55/// Implementation of unproved verification
56pub mod unproved;
57
58// Needed for #[derive(PlatformSerialize, PlatformDeserialize)]
59#[cfg(feature = "mocks")]
60use dpp::serialization;