Mfibonacci Example
Consider a proof-verification scheme, using an arbitrary Polynomial Commitment Scheme. In this scheme, users must prove knowledge of the $Nth$ member of a multi
Consider a proof-verification scheme, using an arbitrary Polynomial Commitment Scheme. In this scheme, users must prove knowledge of the member of a multiplicative Fibonacci series for specific initial conditions.
What is a multiplicative Fibonacci series?
The multiplicative Fibonacci series (or simply mFibonacci series), denoted by
has the property that the product of every two consecutive members and gives the value of the next member . That is, .
Also, the initial values are specified as and .
Here are the first ten terms of the mFibonacci series,
As a trivial example, the challenge may be: Prove knowledge of the initial values that produced , the eleventh member of the mFibonacci series, without revealing the initial values.
The task therefore, is to first build a state machine that would enable anyone to prove knowledge of the initial values and that yields a specific N-th member of the mFibonacci series.
Constructing mFibonacci state machine
Consider a state machine with two registries and where
such that the i-th state is the pair .
Such a state machine is an mFibonacci state machine if indeed the registry values conform to the format of the mFibonnacci series. See Figure 4 below, for an mFibonacci state machine with the initial conditions, and .

The state transitions from to conform to the following constraints;
The aim here is to; express the evolution of the execution trace in terms of polynomials, build corresponding polynomial identities, and ultimately construct a ZK proof/verification scheme for our mFibonacci state machine.
Building polynomial identities
The polynomials that represent the two registries are taken from the set of polynomials , where the coefficients are elements of a prime field and .
The polynomials are evaluated over the subgroup
of order .
Define two polynomials and such that:
Since every in is of the form for some , we have
The previously stated constraints, imposed on the state transitions of the mFibonacci state machine, translate into the following polynomial identities;
If these polynomial identities should accurately express the two registries, then every state transition of the mFibonacci SM must satisfy them.
Non-cyclicity of the mFibonacci state machine
Note that the definition of does not restrict the values of to be less than .
Even if we set , the element is in because
However, the unrestricted value of , which implies there is no bound on the number of state changes (i.e., on the clock), presents problems with the above polynomial identities.
Let us test if the polynomial identities hold true for all permissible values of . So let and refer to the registry values given in Figure 4.
- For the first identity we get,
- Similarly, for the second identity, we get,
Clearly, the polynomial identities are not aligned with the registry values of the mFibonacci SM. The reason for this disparity is that, whereas is cyclic, the polynomial identities are not.
Introducing cyclicity
In order to inject some cyclicity into the mFibonacci SM, we add a third registry and set the registry values to .
Hence the mFibonacci SM is as depicted in Figure 5 below.

The corresponding polynomial is defined as follows;
That is;
The polynomial is incorporated into the previous polynomial identities as follows;
Note that, for all the states where the new registry , these new identities coincide with the previous ones (where only registries and were used).
These polynomial identities can be rewritten as;
Let's check if these identities are cyclic. Again, let and use the registry values given in the figure.
- For the first identity, we observe that,
- Similarly, for the second identity, we observe that,
These polynomial identities enforce correct state transitioning, and are therefore referred to as transition constraints. They apply to every pair of consecutive states. That is, every pair of consecutive rows in the execution trace of the SM.
Verifying computations
In addition to transition constraints, are boundary constraints. A boundary constraint is a constraint that enforces that a polynomial has a certain value at a particular root of unity.
Varied initial conditions
Note that instead of being restricted to the given initial conditions the mFibonacci state machine together with its polynomial identities can be adjusted to any initial conditions .
For example, for and , the constraints should be;
In the context of our mFibonacci SM, the verifier can set the initial conditions to values of his or her own choice, and generate the state machine while keeping and secret. The prover's task is therefore, to prove knowledge of and that led to a given N-th term of the mFibonacci series.
Boundary constraints
Boundary constraints apply to particular registry values, and are used to enforce that the correct initial state was applied.
The idea here is to set up a specific boundary constraint, which the verifier can use to check that correct initial conditions were applied, when the prover was computing a particular term of the mFibonacci series. Yet, the verifier must not disclose any information about the secret values and .
Therefore, the first thing to do, is removing terms in the identities bearing the initial values and . This means modifying our polynomial identities to the ones below;
Secondly, knowing that and yield the -th term , the verifier adds the boundary constraint;
In other words, the prover has to provide three polynomials , , and together with the correct -th term. The verifier then tests if these polynomials conform to the above constraints. If all three constraints are satisfied, then the prover knows the correct initial values and .
This logic is valid simply because the computations carried out by the state machine are deterministic by nature.
Proof elements and verification
All computations are carried out in a field , where , a Goldilocks-like prime number.
Suppose the verifier knows that an mFibonacci series starting with initial values, and , yields as the value of the -th term. The verifier can challenge anyone to prove knowledge of the initial condition of the mFibonacci SM to provide three polynomials and the correct -th term. That is, the verifier uses the following constraints to verify the prover's submissions:
Anyone who knows the three polynomials and the correct initial conditions, say and , can simply run the mFibonacci SM code to compute . See below figure for the JS code.

Last updated on
Commitment Scheme
The framework for the proof-verification system of our mFibonacci state machine is that of a _polynomial commitment scheme_. The mechanism for proving correctne
Mfibonacci
## Introduction This document gives a short summary of the multiplicative Fibonacci state machine, presented as a simple model for the zkProver state machines.