pub fn verify_two_adic_pcs<C: Config>(
builder: &mut Builder<C>,
config: &FriConfigVariable<C>,
rounds: Array<C, TwoAdicPcsRoundVariable<C>>,
proof: FriProofVariable<C>,
log_max_height: RVar<C::N>,
challenger: &mut impl ChallengerVariable<C>,
)
Expand description
Notes:
- FieldMerkleTreeMMCS sorts traces by height in descending order when committing data.
- Required that
C::F
has two-adicity <= MAX_TWO_ADICITY. In particular this implies that all LDE matrices havelog2(lde_height) <= MAX_TWO_ADICITY
. - Required that the maximum trace height is
2^log_max_height - 1
.
Reference:
https://github.com/Plonky3/Plonky3/blob/27b3127dab047e07145c38143379edec2960b3e1/merkle-tree/src/merkle_tree.rs#L53
So traces are sorted in opening_proof
.
- FieldMerkleTreeMMCS::poseidon2 keeps the raw values in the original order. So traces are not sorted in
opened_values
.
Reference: https://github.com/Plonky3/Plonky3/blob/27b3127dab047e07145c38143379edec2960b3e1/merkle-tree/src/mmcs.rs#L87 https://github.com/Plonky3/Plonky3/blob/27b3127dab047e07145c38143379edec2960b3e1/merkle-tree/src/merkle_tree.rs#L100 https://github.com/Plonky3/Plonky3/blob/784b7dd1fa87c1202e63350cc8182d7c5327a7af/fri/src/verifier.rs#L22