Skip to main content

molpha_verifier/
lib.rs

1//! Molpha attestation aggregate-Schnorr verification.
2//!
3//! A framework-agnostic library (no Anchor / Pinocchio dependency): the downstream program owns the
4//! registry account types and reads them, then passes plain data in. Verify a Molpha
5//! [`Attestation`] either from already-resolved signer pubkeys ([`verify_attestation`]) or from
6//! parsed registry entries plus a [`RegistryView`] ([`verify_attestation_resolved`]).
7//!
8//! # Usage
9//! ```ignore
10//! use molpha_verifier::{verify_attestation, Attestation};
11//!
12//! // `ordered_signers` are the signing nodes' (x, y) pubkeys in ascending signers_bitmap bit order.
13//! verify_attestation(&attestation, node_count, redundancy_buffer, &ordered_signers)?;
14//! ```
15
16#[doc(hidden)]
17#[cfg(any(test, feature = "fixtures"))]
18#[path = "../tests/fixtures/mod.rs"]
19pub mod fixtures;
20
21pub mod bitmap;
22pub mod coalition;
23pub mod error;
24pub mod message;
25pub mod onchain;
26pub mod payload;
27pub mod scalar;
28pub mod selection;
29pub mod state;
30pub mod verify;
31
32pub use error::AttestationError;
33pub use onchain::*;
34pub use payload::Attestation;
35pub use payload::AttestationPayload;
36pub use payload::SchnorrSignature;
37pub use state::*;
38
39// High-level verification API.
40pub use verify::{
41    reconstruct_coalition_key, reconstruct_coalition_key_compressed, verify_aggregate_over_hash,
42    verify_attestation, verify_attestation_compressed, SignerXy,
43};
44
45// Primitives commonly composed by on-chain callers.
46pub use bitmap::{
47    bitmap_is_subset_u256, bitmap_load, derive_group_bitmap, effective_selection_size,
48    for_each_set_bit_u256,
49};
50pub use coalition::CoalitionAccumulator;
51pub use message::{compute_message_hash, MESSAGE_PREFIX};
52pub use scalar::{
53    eth_address_from_uncompressed_pubkey, evm_schnorr_ecdsa_inputs,
54    secp256k1_scalar_is_valid_nonzero,
55};
56pub use selection::{derive_selection_bitmap, SELECTION_SEED_PREFIX};