Zero knowledge proof

Logup GKR – 3: Air constraint for STARK

Logup GKR 2

following previous post

Input Layer Encoding (witness encoding)

Commonly used tricks in Multilinear polynomials

Equation function

Turn a function in binary field to its multilinear extension.

let \(\mathcal{G}\) be a function in binary field, its multi-linear extension can be presented as:

$$\mathcal{G}(r_1,…,r_m)=\sum\limits_{x\in\{0,1\}^m}\mathcal{G}(x)\prod\limits^{m}_{i=1}\underbrace{(r_i\cdot x_i + (1-r_i)(1-x_i))}_{x_i=0 \rightarrow 1-r_i, x=1 …

Notes for bus in stwo

related to this PR

Test case

cargo install --path ./cli-rs

compile with the correct field

powdr-rs compile riscv/tests/riscv_data/keccak -o output --field bb
cargo run --features stwo pil  output/keccak.asm --linker-mode native  -o output --force --field m31  --prove-with stworesult.txt

This can give keccak_opt.pil file with lookup identity, it is native lookup, …

Spartan 5

following previous posts: 1,2,3,4

An \(O(n)\)-sized circuit for evaluating \(\widetilde{M}\)

talking about this circuit:

notes:

  • for witness: \(row, col, val\) are enough to describe a multilinear extension \(\widetilde{M}\)
  • \(e_{row}, e_{col}\) should be

Native logup implementation of Stwo backend Powdr -2

following the first post 1

test command

RUST_LOG=stwo=trace cargo test --package powdr-pipeline --test pil --features stwo -- witness_lookup --exact --show-outputresult.txt