值得信赖的区块链资讯!
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算法验证的最后一步(配对函数)并没有在电路中验证,而是依赖智能合约进行验证。
比推快讯
更多 >>- 美股三大股指收涨,苹果涨 4%
- 道琼斯指数收盘上涨 515.19 点,标普 500 和纳斯达克均上涨
- 美元指数上涨 0.67%,收于 97.635
- 数据:2.31 万枚 SOL 从 Bullish.com 转出,价值约 240 万美元
- 数据:过去 24 小时全网爆仓 7.56 亿美元,多单爆仓 4.78 亿美元,空单爆仓 2.77 亿美元
- 博斯蒂克:稳定的劳动力市场为美联储提供等待空间
- 博斯蒂克:现在说通胀工作已完成还为时过早
- 博斯蒂克:当前政策并非高度限制性,预计 2026 年不会降息
- 数据:1000 枚 BTC 从匿名地址转出,价值约 774 万美元
- 博斯蒂克:尚未摆脱因关税引发的通货膨胀问题
- 博斯蒂克:通胀居高不下,令人担忧
- 博斯蒂克:2026 年经济前景将持续强劲
- 法国 3 男子涉嫌绑 74 岁老人以勒索其儿子的加密资产,折磨近 16 小时发现抓错人后释放人质
- 受美国政府部分停摆影响,1 月就业数据不会按时公布
- 特朗普释放关税利好消息,美国对印度关税降至 18%
- 美国股指涨幅扩大,道指涨幅达 1%
- Circle 在 Solana 网络上增发 7.5 亿枚 USDC
- Tom Lee:加密目前可能正在筑底,抛售潮正逐渐失去动力
- 阿根廷加密诈骗嫌疑人在委内瑞拉被捕,此前他“携价值 5600 万美元的比特币潜逃”
- Sky Protocol 一月回购 1.3 亿枚 SKY,回购总金额已超 1.06 亿美元
- 数据:持有超一千枚 BTC 的巨鲸为当前唯一坚持买入的群体,持仓小于 10 枚的散户群体已持续抛售一个月
- 印度拟探索跨境使用数字卢比,以降低支付成本、提高贸易结算效率
- 高盛:以太坊基本面强劲,1 月日均新增地址数量远超DeFi Summer时期
- 摩根士丹利:沃什治下美联储变化将通过缩表显现
- 数据:BTC 突破 79000 美元
- 数据:29.5 枚 WBTC 从 Wintermute 转入 Binance,价值约 230 万美元
- 一个新创建地址在过去 3 小时内花费 5521 万美元买入 704.76 枚 BTC
- 数据:黄立成多单规模加仓至 1200 枚 ETH,约合 284 万美元
- Uniswap 网页版应用上的拍卖功能现已上线
- 某新建地址向 HyperLiquid 存入 318 万 U 以 20 倍做多 ETH
- 麻吉大哥再次向 Hyperliquid 存入 25 万 USDC,并开启 ETH 的及 HYPE 多单
- 麻吉屡败屡战再次 25 倍开多 ETH
- 美元指数 DXY 短线走高约 10 点,现报 97.5
- Santimen:散户悲观情绪进入极端区间,市场或将迎来技术性反弹
- 美国检察官指责稳定币法案纵容加密公司从欺诈中获利
- 数据:DWF Labs 向匿名地址转移 280 万 USDT,价值 280 万美元
- 芝加哥期权交易所拟重启二元期权,以进军预测市场
- Tom Lee:目前 Bitmine 没有负债,近期市场回调“极具吸引力”
- 美股开盘加密板块普跌,SharpLink (SBET) 下跌 7.55%
- Solana dApp 1 月份共产生超 1.46 亿美元收入,在所有 L1 和 L2 链中排名首位
- 2025 年对加密货币持有者的扳手攻击造成 4090 万美元损失,事件数量同比增长 75%
- HyperCore 提案 HIP-4:为链上预测市场构建原生结果交易基础设施
- Base 生态代币 KellyClaude 日内涨超 200%,市值短时突破 800 万美元
- Arcium 在 Solana 上启动其主网 Alpha 版本,Umbra 同步推出屏蔽金融层
- 观点:提名 Kevin Warsh 为美联储主席对比特币喜忧参半
- Strategy 的 BTC 持仓浮盈 13.32 亿美元,BitMine 的 ETH 持仓浮亏 65 亿美元
- Binance:至少拥有 241 分的用户可申领 50 枚 ELON 空投
- Bitmine 上周买入 41788 枚 ETH,目前持有 99 亿美元 ETH
- BitMine 上周增持 41,788 枚 ETH,Tom Lee 称市场低迷因仍受 1011 暴跌余波影响
- 上周全球上市公司净买入 BTC 1.23 亿美元, Strategy 投入 7,530 万美元购买 855 枚比特币
比推专栏
更多 >>- Challenge,risk And chances|0130 Asian
- Meta 豪赌 AI:砸钱 1350 亿美元,2026 的扎克伯格,值得相信么?
- Variables: Terrible snowstorm|0128 Asian
- 英特尔「生死线」时刻:在 ICU 门前,陈立武如何清算遗产并开启自救?
- 從1月13號到今天,提前到5100|0126Asian
- You Should work HARDER in 2026|0120 Asian
- 硅谷最聪明那群人的「终极推演」:2026,我们应该「All-In」什么?
- Notice us dollar index|0116 in us
- 我们用大模型,给 2026 年的代币化/Web3「算了一卦」
- 十年新低 金銀比將帶我們走向何方|0113
观点
比推热门文章
- 美元指数上涨 0.67%,收于 97.635
- 数据:2.31 万枚 SOL 从 Bullish.com 转出,价值约 240 万美元
- 数据:过去 24 小时全网爆仓 7.56 亿美元,多单爆仓 4.78 亿美元,空单爆仓 2.77 亿美元
- Hyperliquid 要做预测市场了,剑指 Polymarket 腹地?
- 博斯蒂克:稳定的劳动力市场为美联储提供等待空间
- 博斯蒂克:现在说通胀工作已完成还为时过早
- 博斯蒂克:当前政策并非高度限制性,预计 2026 年不会降息
- 数据:1000 枚 BTC 从匿名地址转出,价值约 774 万美元
- 博斯蒂克:尚未摆脱因关税引发的通货膨胀问题
- 博斯蒂克:通胀居高不下,令人担忧
比推 APP



