such that
- 数学或逻辑表达中:表示约束条件
“Find all x such that x² = 4.” → “找出所有满足 x² = 4 的 x。”
这里的 “such that” 就是 “满足以下条件” 的意思。 完整结构是: [对象] such that [条件] 等价于中文数学常用的表达:“使得/满足”。
such that
“Find all x such that x² = 4.” → “找出所有满足 x² = 4 的 x。”
这里的 “such that” 就是 “满足以下条件” 的意思。 完整结构是: [对象] such that [条件] 等价于中文数学常用的表达:“使得/满足”。
a list of boundary conditions
在某个特定的时间点 t,某个寄存器 i,必须等于某个域元素 v
points
trace polynomials 总计有 w 个 所以当前状态 + 下一个状态,总计 2w 个点
There is a minor issue the above description does not capture: how does the verifier query a committed polynomial f(X) in a point z that does not belong to the domain? In principle, there is an obvious and straightforward solution: the verifier sends z to the prover, and the prover responds by sending y=f(z). The polynomial f(X)−y has a zero in X=z and so must be divisible by X−z. So both prover and verifier have access to a new low degree polynomial, f(X)−yX−z. If the prover was lying about f(z)=y, then he is incapable of proving the low degree of f(X)−yX−z, and so his fraud will be exposed in the course of the FRI protocol. This is in fact the exact mechanism that enforces the boundary constraints; a slightly more involved but similar construction enforces the transition constraints. The new polynomials are the result of dividing out known factors, so they will be called quotients and denoted qi(X).
根据 Verifier 的挑战值 生成的新的多项式在 Prover 是诚实的情况下一定是能通过 LDT 的否则 这个新多项式无法通过,但是上面说的 one less 是什么意思
In other words, the interpolation step reduces the satisfiability of an arithmetic constraint system to a claim about the low degree of certain polynomials
电路满足性是我们的目标 然后 STARK 中 我们把 SAC 转化到了 LDT
Interpolation in the usual sense means finding a polynomial that passes through a set of data points.
所以在第一节的内容主要还是如何采集数据点 专注于数据点之间的关系
At any point in time, the state of the computation is contained in a tuple of w registers that take values from the finite field F. The machine defines a state transition function f:Fw→Fw that updates the state every cycle. The algebraic execution trace (AET) is the list of all state tuples in chronological order.
这也是 Stark 和 ZKVM 契合的点 以及算数电路和 state machine 是等价的模型 这个点需要挖掘一下
In this procedure, the sequence of elementary logical and arithmetical operations on strings of bits is transformed into a sequence of native finite field operations on finite field elements, such that the two represent the same computation.
一个是未来要做的事 一个是验证过去是否做过这件事
Especially in the context of zero-knowledge proof systems, the computational integrity claim may need a subtle amendment. In some contexts it is not enough to prove the correctness of a claim, but the prover must additionally prove that he knows the secret additional input, and could as well have outputted the secret directly instead of producing the proof.3 Proof systems that achieve this stronger notion of soundness called knowledge-soundness are called proofs (or arguments) of knowledge.
Do it later
When the verifier has no access to secret information that is available to the prover, and when the proof system protects the confidentiality of this secret, the proof system satisfies zero-knowledge.
这里有一个问题 ZK 保护的是 电路中的哪一部分 是 witness 吗?还是说不能这么问?并且如果是 witness 的话, 那么怎么去把原来公开出去的信息给包进 witness 里面
nverse is the correct inverse of the memory value
Confuse
For the extension columns, InstructionPermutation and MemoryPermutation both start with a random initial value selected by the prover, but since this value needs to remain secret it is enforced instead through a difference constraint across tables.
TODO
我觉得这里是不是我给你的内容有笔误? 还是你一开始解释的有问题 For the extension columns, InstructionPermutation and MemoryPermutation both start with a random initial value selected by the prover, but since this value needs to remain secret it is enforced instead through a difference constraint across tables.这个值到底是对谁保密 实际上是不是通过一个 oracle 来生成? 以及这个值的保密是如何被跨表约束实现的?
4 extension columns
Why
That observation is entirely correct.
假设我没有用 input table 而是直接公开我的输入 那么 verifier 其实也可以直接用 processor 和 input 直接来算evaluation terminals
The verifier, who has cleartext access to the program, evaluates this terminal locally
在我们当前文章的上下文中 我们假设了 verifier 拥有 program 即 p 是 public input 所以我们暂时不需要对 program 做一个表,但是在 SP1 这种机器中又是如何呢?
On the other hand, an evaluation argument (for a sublist relation) establishes that all rows of this Instruction Table correspond to an instruction and its successor at the given location in the program.
[Program Table] Program顺序
|
(Evaluation Argument)
↓
[Instruction Table] 已验证顺序,静态
|
(Permutation Argument)
↓
[Processor Trace] 动态跳跃访问
clk
别的也有用 row index、timestamp、trace step 的
to make a permutation argument work for establishing correct memory accesses, it is necessary to keep track of jumps in a cycle counter in the table where the rows are sorted for memory address. To this end, introduce a register clk whose only purpose is to count the number of cycles have passed.
1 Permutation check 一定是检查两个相同 size 的 table 如果我们只是单纯的记录内存的值的话 那么就没办法构造同长度的表 2 我们需要记录内存随着时间的演化 因为我们会发生写入同一个地址这种事
To this end, introduce mv (memory value) and ci (current instruction). If the current instruction is a potential jump, then we also need to know where to jump to. This address is contained in the next instruction, and so a register is needed for that purpose: ni. Also, a potential jump requires some constraints be enforced if mv is nonzero and other constraints be enforced if mv is zero. The only way to enforce constraints conditioned on the zero-ness of some variable, is with an expression that evaluates to the inverse of this variable if it exists and 0 otherwise. Let inv be this register, and so in particular we have that mv * inv is always 0 or 1.
这里就是说 在我们实现 if 的电路时,我们需要把两边的东西都实现 所以我们也要把可能需要跳转进去的指令也要编写到电路里面
Using two registers ip and mp for instruction pointer and memory pointer like the VM defines makes sense. However, this selection is too limited on its own. The constraints need to depend not just on the index contained in ip and mp, but also on the values these registers point to.
所以说只要有 ip 和 mp 就可以满足 bf 的需求了
when one table’s list of rows appears in order as a sublist of another table’s list of rows.
这里就是说在我们利用 transaction constant 去约束 input 顺序
检查一个表格的子序列是否是另一个表格的有序子表
常用于证明"你顺序读取了输入"
The relation that is proved by a permutation argument is actually multiset equality rather than set equality – multiplicity matters.
What is the difference between multiset and set in the context
how does the verifier verify that these tables pertain to the same execution trace? A permutation argument is what establishes that the sets of rows of the two tables are identical
The reason of why we need permutation check, 当我们为了约束不同的事件时,我们需要使用 transition constraints 这样我们就需要对表重新进行排列。 那对于 Verifier 来说 我怎么知道你这两张表其实是来自于同一个信息呢? 这背后的思考就是 Prover 做的一切动作都需要被检查
When the memory pointer register mp is reset to a previous value, the memory value register mv changes. Its new value now must be consistent with the value it had the last time the memory pointer pointed to it. This constraint pertains to two rows, but the problem is that these two rows are generally not consecutive and not even spaced apart by a static amount. Transition constraints can only apply to consecutive pairs of rows
The memory with we assessed must be same as when we leave. But the difficult is the row is not continue
in w
What is the w