Substitute Deserialize* nodes with deserialized subtrees We can estimate cost of the tree evaluation only after this step.
Substitute Deserialize* nodes with deserialized subtrees We can estimate cost of the tree evaluation only after this step.
Verifier Step 4: For every leaf node, compute the commitment a from the challenge e and response $z$, per the verifier algorithm of the leaf's Sigma-protocol.
Verifier Step 4: For every leaf node, compute the commitment a from the challenge e and response $z$, per the verifier algorithm of the leaf's Sigma-protocol. If the verifier algorithm of the Sigma-protocol for any of the leaves rejects, then reject the entire proof.
Deserializes given script bytes using ValueSerializer (i.e.
Deserializes given script bytes using ValueSerializer (i.e. assuming expression tree format).
It also measures tree complexity adding to the total estimated cost of script execution.
The new returned context contains increased initCost
and should be used for further processing.
The method SHOULD be called only inside trySoftForkable scope, to make deserialization soft-forkable.
NOTE: While ErgoTree is always of type SigmaProp, ValueSerializer can serialize expression of any type. So it cannot be replaced with ErgoTreeSerializer here.
Prover Step 1: This step will mark as "real" every node for which the prover can produce a real proof.
Prover Step 1: This step will mark as "real" every node for which the prover can produce a real proof. This step may mark as "real" more nodes than necessary if the prover has more than the minimal necessary number of witnesses (for example, more than one child of an OR). This will be corrected in the next step. In a bottom-up traversal of the tree, do the following for each node:
Prover Step 3: This step will change some "real" nodes to "simulated" to make sure each node has the right number of simulated children.
Prover Step 3: This step will change some "real" nodes to "simulated" to make sure each node has the right number of simulated children. In a top-down traversal of the tree, do the following for each node:
Extracts proposition for ErgoTree handing soft-fork condition.
Extracts proposition for ErgoTree handing soft-fork condition.
soft-fork handler
The comments in this section are taken from the algorithm for the Sigma-protocol prover as described in the white paper
The comments in this section are taken from the algorithm for the Sigma-protocol prover as described in the white paper
Prover Step 9: Perform a top-down traversal of only the portion of the tree marked "real" in order to compute the challenge e for every node marked "real" below the root and, additionally, the response z for every leaf marked "real"
This method is used in both prover and verifier to compute SigmaProp value.
This method is used in both prover and verifier to compute SigmaProp value.
As the first step the cost of computing the exp
expression in the given context is estimated.
If cost is above limit
then exception is returned and exp
is not executed
else exp
is computed in the given context and the resulting SigmaBoolean returned.
the context in which exp
should be executed
environment of system variables used by the interpreter internally
expression to be executed in the given context
result of script reduction
ReductionResult
Prover Step 4: In a top-down traversal of the tree, compute the challenges e for simulated children of every node Prover Step 5: For every leaf marked "simulated", use the simulator of the Sigma-protocol for that leaf to compute the commitment $a$ and the response z, given the challenge e that is already stored in the leaf.
Prover Step 4: In a top-down traversal of the tree, compute the challenges e for simulated children of every node Prover Step 5: For every leaf marked "simulated", use the simulator of the Sigma-protocol for that leaf to compute the commitment $a$ and the response z, given the challenge e that is already stored in the leaf. Prover Step 6: For every leaf marked "real", use the first prover step of the Sigma-protocol for that leaf to compute the commitment a.
call back to setup new context (with updated cost limit) to be passed next time
Executes the script in a given context.
Executes the script in a given context.
Step 1: Deserialize context variables
Step 2: Evaluate expression and produce SigmaProp value, which is zero-knowledge statement (see also SigmaBoolean
).
Step 3: Verify that the proof is presented to satisfy SigmaProp conditions.
environment of system variables used by the interpreter internally
ErgoTree to execute in the given context and verify its result
the context in which exp
should be executed
The proof of knowledge of the secrets which is expected by the resulting SigmaProp
message bytes, which are used in verification of the proof
verification result or Exception.
If if the estimated cost of execution of the tree
exceeds the limit (given in context
),
then exception if thrown and packed in Try.
If left component is false, then:
1) script executed to false or
2) the given proof faild to validate resulting SigmaProp conditions.
reduceToCrypto
Interpreter with enhanced functionality to prove statements.