IP Library › Granted Patent US 12,519,646
Granted Patent B2
US 12,519,646 · App. 18/761,104 · Granted Jan 6, 2026

Zero knowledge prover

Inventors: Jeremy Bruestle (Seattle, WA); Brian Retford (Seattle, WA); Frank Laub (Seattle, WA)
Assignee: RISC Zero, Inc.
H04L9/3218G06F11/3636G06F21/52G06F2221/033
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,519,646
App. No.
18/761,104
Granted
Jan 6, 2026
Kind
B2
Abstract

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for implementing a zero knowledge prover are disclosed. In one aspect, a method includes the actions of executing a software program. The method further includes storing an execution trace that includes, for each address in memory, a value at each clock cycle during execution of the software program. The method further includes generating a sorted execution trace by sorting the execution trace. The method further includes determining a constraint for given values in the memory at adjacent clock cycles. The method further includes determining whether the sorted execution trace complies with the constraint and whether the sorted execution trace is a permutation of the execution trace. The method further includes providing, for output, data indicating whether the software program executed correctly while preventing outputting data included in the execution trace or the sorted execution trace.

Claims (47)

1 . A computer-implemented method, the method comprising:

executing, by one or more processors communicatively coupled to a memory, a software program;

generating, by the one or more processors, an execution trace that indicates a state of the memory during each clock cycle while the software program is executed;

sorting, by the one or more processors, the execution trace to generate a sorted execution trace;

comparing the sorted execution trace to an unsorted execution trace and determining whether the sorted and unsorted execution traces comply with one or more constraints;

based on determining whether the sorted execution trace and the unsorted execution trace comply with the one or more constraints, providing, for output by the one or more processors, data indicating whether the software program is executed correctly while preventing outputting one or more of at least a portion of the execution trace, inputs to the software program, outputs to the software program, and contents of one or more registers.

2 . The method of claim 1 , wherein determining whether the sorted execution trace complies with the one or more constraints comprises:

determining that a threshold number of values in the sorted execution trace complies with at least one constraint.

3 . The method of claim 1 , wherein the one or more constraints comprise a polynomial constraint.

4 . The method of claim 1 , further comprising determining whether the sorted execution trace is a permutation of the execution trace by confirming:

that a threshold number of values in the sorted execution trace match corresponding values of the unsorted execution trace.

5 . The method of claim 1 , wherein the one or more processors and the memory are in a von Neumann architecture.

6 . The method of claim 1 , wherein

executing the software program comprises providing an input to the software program and

maintaining the input as private data by preventing outputting the input to the software program.

7 . A system, comprising:

one or more processors; and

memory comprising a plurality of computer-executable instructions executable by the one or more processors to perform a plurality of actions comprising:

executing, by the one or more processors, a software program;

generating, by the one or more processors, an execution trace that indicates a state of the memory during each clock cycle while the software program is executed;

sorting, by the one or more processors, the execution trace to generate a sorted execution trace;

comparing the sorted execution trace to an unsorted execution trace and determining whether the sorted and unsorted execution traces comply with one or more constraints;

based on determining whether the sorted execution trace and the unsorted execution traces comply with the one or more constraints, providing, for output by the one or more processors, data indicating whether the software program is executed correctly while preventing outputting at least a portion of the execution trace, inputs and outputs to the software program, and contents of one or more registers before.

8 . The system of claim 7 , wherein determining whether the sorted execution trace complies with the one or more constraints comprise determining that a threshold number of values in the sorted execution trace complies with at least one constraint.

9 . The system of claim 7 , wherein the one or more constraints comprise a polynomial constraint.

10 . The system of claim 7 , wherein the plurality of actions further comprising determining whether the sorted execution trace is a permutation of the execution trace by confirming that a threshold number of values in the sorted execution trace match corresponding values of the unsorted execution trace.

11 . The system of claim 7 , wherein the one or more processors and the memory are in a von Neumann architecture.

12 . The system of claim 7 , wherein:

executing the software program comprises providing an input to the software program and

maintaining the input as private data by preventing outputting the input to the software program.

13 . A non-transitory computer-readable media of a computing device storing computer-executable instructions that upon execution cause one or more computers to perform acts comprising:

executing, by the one or more computers, a software program;

generating, by the one or more computers, an execution trace that indicates a state of a memory within the one or more computers during each clock cycle while the software program is executed by the one or more computers;

sorting, by the one or more computers the execution trace to generate a sorted execution trace;

comparing the sorted execution trace to an unsorted execution trace and determining whether the sorted and unsorted execution traces comply with one or more constraints;

based on determining whether the sorted execution trace and unsorted execution trace comply with the one or more constraints, providing, for output by the one or more computers, data indicating whether the software program is executed correctly while preventing outputting at least a portion of the execution trace, inputs and outputs to the software program, and contents of one or more registers.

14 . The non-transitory computer-readable media of claim 13 , wherein determining whether the sorted execution trace complies with the one or more constraints comprises

determining that a threshold number of values in the sorted execution trace complies with at least one constraint.

15 . The non-transitory computer-readable media of claim 13 , wherein the one or more constraints comprise a polynomial constraint.

16 . The non-transitory computer-readable media of claim 13 , wherein execution of the computer-executable instructions further cause the one or more computers to perform acts comprising determining whether the sorted execution trace is a permutation of the execution trace by confirming:

that a threshold number of values in the sorted execution trace match corresponding values of the unsorted execution trace.

17 . The non-transitory computer-readable media of claim 13 , wherein:

executing the software program comprises providing an input to the software program and

maintaining the input as private data by preventing outputting the input to the software program.

18 . The method of claim 4 , wherein determining whether the sorted execution trace is the permutation of the execution trace provides evidence that the execution trace is sorted correctly and that determinations made based on the sorted execution trace are trusted.

19 . The system of claim 10 , wherein determining whether the sorted execution trace is the permutation of the execution trace provides evidence that the execution trace is sorted correctly and that determinations made based on the sorted execution trace are trusted.

20 . The non-transitory computer-readable media of claim 16 , wherein determining whether the sorted execution trace is the permutation of the execution trace provides evidence that the execution trace is sorted correctly and that determinations made based on the sorted execution trace are trusted.

Continuity (3)
Continuation 17991750 · Nov 21, 2022
Provisional Application 63311809 · Feb 18, 2022
Related Publication 20240356751A1 · Oct 24, 2024
References Cited (3)
US 10747651B1 · Vanderwall · 2020 [cited by examiner]
US 12028457B2 · Bruestle · 2024 [cited by examiner]
US 20090199901A1 · Trassl · 2009 [cited by examiner]