ProverServer

Trait ProverServer 

Source
pub trait ProverServer: Sealed {
Show 22 methods // Required methods fn prove_with_ctx( &self, env: ExecutorEnv<'_>, ctx: &VerifierContext, elf: &[u8], ) -> Result<ProveInfo>; fn prove_session( &self, ctx: &VerifierContext, session: &Session, ) -> Result<ProveInfo>; fn segment_preflight(&self, segment: &Segment) -> Result<PreflightResults>; fn prove_segment_core( &self, ctx: &VerifierContext, preflight_results: PreflightResults, ) -> Result<SegmentReceipt>; fn prove_keccak( &self, request: &ProveKeccakRequest, ) -> Result<SuccinctReceipt<Unknown>>; fn lift( &self, receipt: &SegmentReceipt, ) -> Result<SuccinctReceipt<ReceiptClaim>>; fn join( &self, a: &SuccinctReceipt<ReceiptClaim>, b: &SuccinctReceipt<ReceiptClaim>, ) -> Result<SuccinctReceipt<ReceiptClaim>>; fn union( &self, a: &SuccinctReceipt<Unknown>, b: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<UnionClaim>>; fn resolve( &self, conditional: &SuccinctReceipt<ReceiptClaim>, assumption: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<ReceiptClaim>>; fn lift_povw( &self, receipt: &SegmentReceipt, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>; fn join_povw( &self, a: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, b: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>; fn join_unwrap_povw( &self, a: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, b: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, ) -> Result<SuccinctReceipt<ReceiptClaim>>; fn resolve_povw( &self, conditional: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, assumption: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>; fn resolve_unwrap_povw( &self, conditional: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, assumption: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<ReceiptClaim>>; fn unwrap_povw( &self, a: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, ) -> Result<SuccinctReceipt<ReceiptClaim>>; fn identity_p254( &self, a: &SuccinctReceipt<ReceiptClaim>, ) -> Result<SuccinctReceipt<ReceiptClaim>>; // Provided methods fn prove(&self, env: ExecutorEnv<'_>, elf: &[u8]) -> Result<ProveInfo> { ... } fn prove_segment( &self, ctx: &VerifierContext, segment: &Segment, ) -> Result<SegmentReceipt> { ... } fn composite_to_succinct( &self, receipt: &CompositeReceipt, ) -> Result<SuccinctReceipt<ReceiptClaim>> { ... } fn composite_to_succinct_povw( &self, receipt: &CompositeReceipt, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>> { ... } fn succinct_to_groth16( &self, receipt: &SuccinctReceipt<ReceiptClaim>, ) -> Result<Groth16Receipt<ReceiptClaim>> { ... } fn compress(&self, opts: &ProverOpts, receipt: &Receipt) -> Result<Receipt> { ... }
}
Available on crate feature prove and non-target_os="zkvm" only.
Expand description

A ProverServer can execute a given ELF binary and produce a ProveInfo which contains a Receipt that can be used to verify correct computation.

Required Methods§

Source

fn prove_with_ctx( &self, env: ExecutorEnv<'_>, ctx: &VerifierContext, elf: &[u8], ) -> Result<ProveInfo>

Prove the specified ELF binary using the specified VerifierContext.

Source

fn prove_session( &self, ctx: &VerifierContext, session: &Session, ) -> Result<ProveInfo>

Prove the specified Session.

Source

fn segment_preflight(&self, segment: &Segment) -> Result<PreflightResults>

Run preflight on the specified Segment.

Source

fn prove_segment_core( &self, ctx: &VerifierContext, preflight_results: PreflightResults, ) -> Result<SegmentReceipt>

Prove the specified Segment which has had preflight run on it.

Source

fn prove_keccak( &self, request: &ProveKeccakRequest, ) -> Result<SuccinctReceipt<Unknown>>

Prove the specified keccak request

Source

fn lift( &self, receipt: &SegmentReceipt, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Source

fn join( &self, a: &SuccinctReceipt<ReceiptClaim>, b: &SuccinctReceipt<ReceiptClaim>, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Source

fn union( &self, a: &SuccinctReceipt<Unknown>, b: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<UnionClaim>>

Source

fn resolve( &self, conditional: &SuccinctReceipt<ReceiptClaim>, assumption: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Resolve an assumption from a conditional SuccinctReceipt by providing a SuccinctReceipt proving the validity of the assumption.

Source

fn lift_povw( &self, receipt: &SegmentReceipt, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>

Lift a SegmentReceipt into a SuccinctReceipt with a proof of verifiable work (PoVW) claim.

Source

fn join_povw( &self, a: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, b: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>

Join two SuccinctReceipt with proof of verifiable work (PoVW) claims into a SuccinctReceipt a PoVW claim.

Source

fn join_unwrap_povw( &self, a: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, b: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Join two SuccinctReceipt with proof of verifiable work (PoVW) claims into a SuccinctReceipt, and unwrap the result (see ProverServer::unwrap_povw).

Source

fn resolve_povw( &self, conditional: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, assumption: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>

Resolve an assumption from a conditional SuccinctReceipt with a proof of verifiable work (PoVW) claim by providing a SuccinctReceipt proving the validity of the assumption.

Source

fn resolve_unwrap_povw( &self, conditional: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, assumption: &SuccinctReceipt<Unknown>, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Resolve an assumption from a conditional SuccinctReceipt with a proof of verifiable work (PoVW) claim by providing a SuccinctReceipt proving the validity of the assumption, and unwrap the result (see ProverServer::unwrap_povw).

Source

fn unwrap_povw( &self, a: &SuccinctReceipt<WorkClaim<ReceiptClaim>>, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Remove the proof of verifiable work (PoVW) information from a SuccinctReceipt to produce a SuccinctReceipt over the underlying claim.

Source

fn identity_p254( &self, a: &SuccinctReceipt<ReceiptClaim>, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Convert a SuccinctReceipt with a Poseidon hash function that uses a 254-bit field

Provided Methods§

Source

fn prove(&self, env: ExecutorEnv<'_>, elf: &[u8]) -> Result<ProveInfo>

Prove the specified ELF binary.

Source

fn prove_segment( &self, ctx: &VerifierContext, segment: &Segment, ) -> Result<SegmentReceipt>

Prove the specified Segment.

Source

fn composite_to_succinct( &self, receipt: &CompositeReceipt, ) -> Result<SuccinctReceipt<ReceiptClaim>>

Compress a CompositeReceipt into a single SuccinctReceipt.

A CompositeReceipt may contain an arbitrary number of receipts assembled into segments and assumptions. Together, these receipts collectively prove a top-level ReceiptClaim. This function compresses all of the constituent receipts of a CompositeReceipt into a single SuccinctReceipt that proves the same top-level claim. It accomplishes this by iterative application of the recursion programs including lift, join, and resolve.

Source

fn composite_to_succinct_povw( &self, receipt: &CompositeReceipt, ) -> Result<SuccinctReceipt<WorkClaim<ReceiptClaim>>>

Convert a composite receipt to a succinct work claim receipt.

Source

fn succinct_to_groth16( &self, receipt: &SuccinctReceipt<ReceiptClaim>, ) -> Result<Groth16Receipt<ReceiptClaim>>

Compress a SuccinctReceipt into a Groth16Receipt.

Source

fn compress(&self, opts: &ProverOpts, receipt: &Receipt) -> Result<Receipt>

Compress a receipt into one with a smaller representation.

The requested target representation is determined by the ReceiptKind specified on the provided ProverOpts. If the receipt is already at least as compressed as the requested kind, this is a no-op.

Implementors§