值得信赖的区块链资讯!
L2 – zkSync证明聚合
PLONK算法虽然只需要一次初始设置,但是证明的计算复杂度相对Groth16算法更高。PLONK算法的好处,远不止初始设置这么简单,因为任何电路都可以共用初始设置,PLONK算法本身的验证逻辑也可以使用初始设置。也就是说,基于PLONK算法可以构建算法验证的电路,从而基于PLONK算法可以证明PLONK算法的证明。
Matter-Labs开源了PLONK算法的验证电路,能证明多个PLONK证明,相关代码链接如下:
https://github.com/matter-labs/recursive_aggregation_circuit
代码量相对比较小,一切从RecursiveAggregationCircuit的synthesize函数开始。
synthesize函数
synthesize的逻辑相对清晰。整个电路实现了如下的功能:
1/ 电路“验证”所有需要证明的proof是否正确
2/ 验证“验证”proof对应的vk是否是指定的那些vk(存储在智能合约)
3/ 打包(packing)所有的公开输入信息(使用sha256算法)
整个逻辑如下图所示,图中的1/2/3就是对应的功能。

步骤2/3比较简单易懂。核心在步骤1。aggregrate_proof函数实现电路验证某个proof是否正确。
let mut pairs_for_generator = vec![];
let mut pairs_for_x = vec![];
for proof_idx in 0..self.num_proofs_to_check {
let proof = &proof_witnesses[proof_idx];
let vk = &vk_witnesses[proof_idx];
let [pair_with_generator, pair_with_x] = aggregate_proof::<_, _, T, CS::Params, P, _, _>(
cs,
self.transcript_params,
&proof.input_values,
&vk,
&proof,
&self.aux_data,
self.rns_params,
)?;
pairs_for_generator.push(pair_with_generator);
pairs_for_x.push(pair_with_x);
}
验证后输出两个结果:pair_with_generator 和 pair_with_x。
查看PlonK算法的验证逻辑的最后可以发现,验证的最后一步是验证两个配对函数:

左边的配对函数的g2部分是x,右边的配对函数的g2部分是1(generator)。查看aggregate_proof的函数发现,该“验证”电路,并不验证配对函数的结果是否相等。所以,“验证”电路并没有完整的验证。
aggregate_proof证明了pair_with_generator 和 pair_with_x计算正确。感兴趣的小伙伴可以自行查看该函数。在获得了所有证明的pair_with_generator 和 pair_with_x后,“聚合”在一起。
为了防止攻击,“聚合”采用随机因子:
let mut sponge = StatefulRescueGadget::<E>::new(self.rescue_params);
for w in fs_witnesses.into_iter() {
sponge.absorb_single_value(cs, w, self.rescue_params)?;
}
sponge.pad_if_necessary(self.rescue_params)?;
let aggregation_challenge = sponge
.squeeze_out_single(cs, self.rescue_params)?
.into_allocated_num(cs)?;
绑定proof信息生成随机信息。aggregation_challenge就是随机因子,记作c。
let mut scalars = vec![];
scalars.push(aggregation_challenge.clone());
let mut current = aggregation_challenge.clone();
for _ in 1..self.num_proofs_to_check {
let new = current.mul(cs, &aggregation_challenge)?;
scalars.push(new.clone());
current = new;
}
每个pair_with_generator/x前面的系数是c^n。在获得相应点对应的系数后,最后做一次multiexp,将多个点“聚合”在一起。
let pair_with_generator = WP::multiexp(
cs,
&scalars,
&pairs_for_generator,
None,
self.rns_params,
&self.aux_data,
)?;
let pair_with_x = WP::multiexp(
cs,
&scalars,
&pairs_for_x,
None,
self.rns_params,
&self.aux_data,
)?;
整个过程示意如下:

通过这种方法,原本每个proof都需要进行配对函数的验证计算,变成了一次配对函数的验证计算。特别注意的是,配对函数的验证并不是在电路中验证的,这部分的验证在“智能合约”中检查。查看contract/PlonkCore.sol文件的verify_recursive函数:
function verify_recursive(
Proof memory proof,
VerificationKey memory vk,
uint256 recursive_vks_root,
uint8 max_valid_index,
uint8[] memory recursive_vks_indexes,
uint256[] memory individual_vks_inputs,
uint256[16] memory subproofs_limbs
) internal view returns (bool) {
(uint256 recursive_input, PairingsBn254.G1Point[2] memory aggregated_g1s) = reconstruct_recursive_public_input(
recursive_vks_root, max_valid_index, recursive_vks_indexes,
individual_vks_inputs, subproofs_limbs
);
assert(recursive_input == proof.input_values[0]);
(bool valid, PairingsBn254.G1Point[2] memory recursive_proof_part) = aggregate_for_verification(proof, vk);
if (valid == false) {
return false;
}
// aggregated_g1s = inner
// recursive_proof_part = outer
PairingsBn254.G1Point[2] memory combined = combine_inner_and_outer(aggregated_g1s, recursive_proof_part);
valid = PairingsBn254.pairingProd2(combined[0], PairingsBn254.P2(), combined[1], vk.g2_x);
return valid;
}
该函数通过aggregate_for_verification函数检查提交的聚合proof本身是否正确。在聚合正确的基础上,调用PairingsBn254.pairingProd2检查“聚合”过的pair_with_x/generator是否正确。
到此,可以看出,这是一种”聚合“证明验证电路,能”部分“验证多个基于PlonK算法的证明。看懂了synthesize函数,再看证明的接口函数就比较容易理解:create_recursive_circuit_vk_and_setup和proof_recursive_aggregate_for_zksync。感兴趣的小伙伴可以自行查看。
电路的核心是电路的验证,PlonK算法的验证都是基于“点”的运算。该电路是如何证明一个椭圆曲线上的点的运算是核心中的核心。
点运算证明
点运算的电路实现在franklin-crypto库的src/plonk/circuit/curve/sw_affine.rs文件中:
pub fn multiexp<CS: ConstraintSystem<E>>(
cs: &mut CS,
scalars: &[Num::<E>],
points: &[Self],
bit_limit: Option<usize>
) -> Result<Self, SynthesisError> {
电路证明multiexp采用的是NAF查表法。scalar从高到低的每个bit上点算出来后,double-add。MultiexpTable就是NAF建立的映射表。
有趣的是,在Fq上的点(AffinePoint)的表示:
pub struct AffinePoint<'a, E: Engine, G: CurveAffine> where <G as CurveAffine>::Base: PrimeField {
pub x: FieldElement<'a, E, G::Base>,
pub y: FieldElement<'a, E, G::Base>,
pub value: Option<G>,
}
pub struct FieldElement<'a, E: Engine, F: PrimeField>{
// this is kind-of normal UintX limbs
pub binary_limbs: Vec<Limb<E>>,
// we can not multiply by power of modulus of our base field E,
// so we keep only one single limb
pub base_field_limb: Term<E>,
pub representation_params: &'a RnsParameters<E, F>,
pub value: Option<F>,
}
pub struct Limb<E: Engine> {
pub term: Term<E>,
pub max_value: BigUint,
}
为了在Fr上能模拟Fq上的点,Fq上的点分成多个Limb。每个Limb都有单独的变量(Variable)。具体的点的运算以及Multiexp的电路证明,感兴趣的小伙伴可以查看相关代码。
总结:
Matter-Labs开源了PLONK算法的验证电路,能实现多个PLONK证明的聚合证明。聚合电路证明某个证明可验证,并且验证使用的VK是正确的。注意的是,PLONK算法验证的最后一步(配对函数)并没有在电路中验证,而是依赖智能合约进行验证。
比推快讯
更多 >>- 空军总司令新开 1500 万规模 SOL 空单并滚仓多币种,总持仓规模回升至 3 亿美元
- Vitalik:优先采用去中心化社交媒体,同时探索本地 LLM 的部署方案
- BODL Ventures 创始合伙人:传奇量化基金 QRT 加码香港市场并启动加密岗位招聘
- 数据:Hyperliquid 平台鲸鱼当前持仓 64.41 亿美元,多空持仓比为 0.91
- Meme 币memes市值回涨至 1000 万美元,现报价约 0.0104 美元
- 贝佐斯辟谣 Polymarket 官推内容:不知道为什么你们要编造此事
- A 股黄金概念持续拉升,中国黄金、豫光金铅涨停
- 现货白银突破 99 美元关口,新年首月涨超 38%
- Polymarket 官推频发假新闻引争议,Jeff Bezos 亲自辟谣
- 在特朗普任命的 SEC 主席领导下,2025 年加密货币执法行动减少 60%
- RIVER 短线一度逼近 70 USDT,24H 涨幅近 30%
- 比特币充币情绪延续,过去 24 小时 CEX 净流入 5,024.49 枚 BTC
- Morningstar Ventures:并非 Space 的领投方,该项目已承诺退还至少 50%的公募资金
- 特朗普称已锁定下一任美联储主席人选,贝莱德高管成黑马
- 数据:900 枚 BTC 从 Fidelity Custody 转出,经中转后转至另一匿名地址
- 数据:某巨鲸 4 天前高位卖 1 万 ETH 后 OTC 抄底回补
- 重仓做多贵金属巨鲸浮盈突破 47 万美元,代币化黄金合约持仓规模逼近 500 万美元
- 比特币挖矿难度下调 3.28% 至 141.67 T
- 现货白银站上 97 美元,再创历史新高
- 代币化黄金板块总市值升至 51.2 亿美元,XAUT、PAXG 跻身加密货币排行榜前六十
- 美股收盘加密板块跌多涨少,VIX 收跌 7.46%,ETHZ 收涨 4.15%
- 数据:“麻吉大哥”再次加仓以太坊多单,目前仓位价值约 1211 万美元
- TikTok官宣美国方案,两公司共同运营,字节保留算法知识产权
- 某 Pendle 投资人地址将 180 万枚代币转入 CEX,持仓 3 年价值约 383 万美元
- Capital One 斥资 51.5 亿美元收购金融科技初创公司 Brex
- BitGo 纽交所上市首日上涨约 20%,盘中估值最高达 26 亿美元
- SEC 与 CFTC 将于下周举办关于加密货币监管协调的联合活动
- World Liberty Financial 与加密卫星公司 Spacecoin 达成合作并互换代币
- Cap 第二季积分活动 Homestead 将于 1 月 29 日开始,7 月 23 日结束
- 若比特币跌破 8.8 万美元,主流 CEX 累计多单清算强度将达 6.38 亿
- Farcaster 创始人澄清:协议当前运行正常,购房资金来自 Coinbase IPO 收益
- 加密恐慌指数回升至 24,市场仍处于极度恐慌区间
- 特朗普称获格陵兰全面准入,北约推动加强北极安全但协议细节存疑
- 美众议院未通过旨在限制特朗普对委再动武的决议
- 某巨鲸再次增持超 2 万枚 ETH,总持仓量升至 80,115 枚
- 特朗普:将对所有与伊朗进行贸易往来国家加征 25%关税
- SENT 24 小时涨超 170%,市值升至 2.25 亿美元
- 特朗普:到处都是创纪录的数字,我应该争取第四个任期吗?
- 现货黄金上破4950美元
- 美国堪萨斯州提出比特币战略储备法案
- 普华永道:机构级加密采用已越过不可逆转点
- 美国参议院农业委员会公布加密市场结构法案版本,立法进程仍存分歧
- BitGo 登陆纽交所首日大幅震荡,股价上涨 36%后回落
- 美联储 1 月维持利率不变概率达 95%,降息概率仅 5%
- 英特尔盘后股价下跌超 4%
- 美元指数 DXY 日内跌超 0.5%,现报 98.3
- 花旗警告:以太坊活跃度激增或是“地址投毒”诈骗引发的虚假繁荣
- 数据:500 万枚 TON 从 Telegram 转出,价值约 770 万美元
- 数据:若 BTC 突破 93,951 美元,主流 CEX 累计空单清算强度将达 19.57 亿美元
- 现货黄金上涨突破 4910 美元/盎司创历史新高
比推专栏
更多 >>观点
比推热门文章
- Vitalik:优先采用去中心化社交媒体,同时探索本地 LLM 的部署方案
- BODL Ventures 创始合伙人:传奇量化基金 QRT 加码香港市场并启动加密岗位招聘
- 数据:Hyperliquid 平台鲸鱼当前持仓 64.41 亿美元,多空持仓比为 0.91
- Meme 币memes市值回涨至 1000 万美元,现报价约 0.0104 美元
- 贝佐斯辟谣 Polymarket 官推内容:不知道为什么你们要编造此事
- A 股黄金概念持续拉升,中国黄金、豫光金铅涨停
- 现货白银突破 99 美元关口,新年首月涨超 38%
- Polymarket 官推频发假新闻引争议,Jeff Bezos 亲自辟谣
- 在特朗普任命的 SEC 主席领导下,2025 年加密货币执法行动减少 60%
- RIVER 短线一度逼近 70 USDT,24H 涨幅近 30%
比推 APP



