Plonky3-fri 作业 #58
Replies: 2 comments 5 replies
-
代码改动: 乘以一个随机数之后再相加prover diff --git a/fri/src/prover.rs b/fri/src/prover.rs
index 2113a90..a50769c 100644
--- a/fri/src/prover.rs
+++ b/fri/src/prover.rs
@@ -94,7 +94,7 @@ where
let beta: Challenge = challenger.sample_ext_element();
// We passed ownership of `current` to the MMCS, so get a reference to it
let leaves = config.mmcs.get_matrices(&prover_data).pop().unwrap();
- folded = g.fold_matrix(beta, leaves.as_view());
+ folded = g.fold_matrix(beta, leaves.as_view()).into_iter().map(|x| beta * x).collect_vec();
commits.push(commit);
data.push(prover_data); verifier diff --git a/fri/src/verifier.rs b/fri/src/verifier.rs
index 6553c29..a262434 100644
--- a/fri/src/verifier.rs
+++ b/fri/src/verifier.rs
@@ -133,7 +133,7 @@ where
index = index_pair;
- folded_eval = g.fold_row(index, log_folded_height, beta, evals.into_iter());
+ folded_eval = g.fold_row(index, log_folded_height, beta, evals.into_iter()) * beta;
} FRI 和 Plonky3 FRIFRI 迭代式地将 Plonky3 FRI 可以批量证明多个多项式,它在迭代过程中将折叠后的多项式跟输入中的小阶多项式组合到一起证明: 上述代码改动后,折叠后的多项式先乘以 引入
|
Beta Was this translation helpful? Give feedback.
-
针对问题2,我认为这是合理的,是可以一定程度的减少资源的浪费。因为对于每个open点来说,通常只有部分矩阵达到较高的高度,全局最大高度可能远超过多数open点的需求。减少这些冗余计算可以降低存储和计算开销。 |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
以下问题三选一回答即可,这也是我对代码的疑问,有可能我的想法是有问题的,抛给小伙伴们帮我check
1.two_adic_pcs的open函数里预先计算alpha powers是否会更高效?即,open函数里,在遍历每一round的矩阵前,预先计算alpha powers到max length,然后在遍历到每一个矩阵的某一个open的点,计算reduced_ys以及reduced_row时按需取用预先计算的alpha powers。这样做是否会更高效?理由是?如果你觉得更高效,对代码做相应的优化并po出优化前后的效率对比。
2.two_adic_pcs的open函数里调用的计算inv_denoms的函数compute_inverse_denominators中,对应每一个open点z,都计算到了全局最大的高度max_log_height,我认为这是没有必要的,若是对应每一个open点z,都只计算到在该点处open的所有矩阵的最大高度即可。你赞同我的看法吗?理由是?
3.在“竖着卷”的过程中,两个多项式是直接相加的,这样是否足够安全?是否有必要乘以一个随机数之后再相加?如果要乘以一个随机数之后再相加应该如何修改代码?po出具体的修改
Beta Was this translation helpful? Give feedback.
All reactions