dusk-plonk椭圆曲线Gadget详解:JubJub点运算与固定基标量乘的完整指南
dusk-plonk椭圆曲线Gadget详解JubJub点运算与固定基标量乘的完整指南【免费下载链接】plonkPure Rust implementation of the PLONK ZKProof System done by the Dusk team项目地址: https://gitcode.com/gh_mirrors/plo/plonkdusk-plonk 是 Dusk 团队用纯 Rust 实现的 PLONK 零知识证明系统基于 BLS12-381 曲线。对要在电路内证明我对椭圆曲线做过某种运算的场景来说理解它的椭圆曲线 Gadget 是关键一步。本文带你从零搞懂两件事JubJub 曲线的点加法门以及固定基标量乘component_mul_generator背后的 wNAF 符号位实现原理 。一、为什么零知识电路需要椭圆曲线 Gadget在 PLONK 这类证明系统中电路里所有计算都必须拆解为多项式约束。普通整数加减只需一两个门但椭圆曲线点运算涉及除法——而除法不能直接写成低次多项式。dusk-plonk 的做法是预计算在电路编译阶段用原生电路外的曲线运算算出中间值写入 witness约束验证用专门的选择器如group_add_variable_base、group_add_fixed_base约束 witness 确实对应一次正确的点运算。这套算一遍、证一遍的模式贯穿所有 Gadget核心源码集中在src/composer/point.rs与src/composer/fixed_base.rs。二、WitnessPoint 与 TorsionFree 边界规则曲线上的点进入电路后表示为两个 witness 坐标(x, y)即WitnessPoint定义于src/composer/constraint_system/ecc.rs。但 JubJub 曲线存在 8 阶挠cofactor 8直接加一个曲线外或不在素数阶子群的点会导致证明失效。因此 dusk-plonk 设计了严格的边界规则——每个进入电路的点必须先建立子群成员资格点来源建立方式成本私有/证明者控制点assert_torsion_free_point电路内约束12 个门常量点append_constant_point编译期原生校验0 门公开点验证者协议电路外校验或用new_unchecked包装0 门assert_torsion_free_point的技巧很优雅约束一个辅助点Q满足曲线方程-u² v² 1 d·u²·v²再通过 3 次受约束的点自加证明point [8]·Q——乘以 8 的像恰好就是素数阶子群。一旦成员资格建立TorsionFreeWitnessPoint类型保证后续加法、取负、标量乘永远不会逃出子群群的封闭性因此算术门无需重复检查类型系统直接承担了安全性责任 。三、点加法2 个门完成扭曲 Edwards 曲线加法component_add_pointsrc/composer/point.rs只需2 个门就能约束一次完整的点加。关键设计降次。扭曲 Edwards 加法公式x₃ (x₁y₂ y₁x₂) / (1 d·x₁y₂·y₁x₂)直接展开会使多项式次数爆炸。dusk-plonk 引入一个辅助 witnessx1_y2 x₁·y₂把四次项压平使每个门的次数不超过 4PLONK 支持的上限。验证端对应的约束见src/proof_system/widget/ecc/curve_addition/proverkey.rs分三步一致性x₁·y₂ x1_y2x₃ 检查(x1_y2 y₁x₂) - x₃·(1 d·x1_y2·y₁x₂)y₃ 检查(y₁y₂ x₁x₂) - y₃·(1 - d·x1_y2·y₁x₂)。各项乘以分离挑战值kappa及其平方后求和再乘以选择器q_variable_group_add保证不同门之间不会互相串通伪造。变量基标量乘component_mul_point则更朴素把标量分解为 252 位逐位执行双倍 条件加每轮复用上面的加法门——简单但门数随位数线性增长约需 1000 门以上。这正是需要固定基优化的原因 ⚡。四、固定基标量乘wNAF 符号位与 256 行 Horner 循环component_mul_generatorsrc/composer/fixed_base.rs计算jubjub · G其中基点G是编译期常量。它比变量基方案快得多原理是预计算表 符号数字wNAFwNAF 分解把 252 位标量写成宽度 2 的 wNAF每个位取值为-1 / 0 / 1稀疏度更高实际点加次数减半原生预计算编译阶段算出[2ⁱ]·Gi 0…255整张表作为常量写进电路运行时只做查表Horner 累加从最高位向低位逐行执行acc 2·acc digitᵢ·Pᵢ共 256 行移位线shifted wire相邻两行共享 accumulator 坐标——下一行的a_w/b_w/d_w就是当前行的a/b/d用一行门的成本把双倍隐式完成。每行的约束见src/proof_system/widget/ecc/scalar_mul/fixed_base/proverkey.rs包括bit 一致性累加器差分必须是{-1, 0, 1}xy 一致性xy_alpha与当前 digit 匹配x/y accumulator 一致性x_alpha digit·x_beta、y_alpha digit²·(y_beta - 1) 1再套 Edwards 加法公式校验累加。安全性亮点防取模回绕伪造这是固定基 Gadget 最精妙的部分 ️。如果只做标量累加器 输入标量mod q检查恶意证明者可以在 256 个符号位里编码一个 BLS 模数q标量累加器在模 q 意义下闭合为 0而点累加器却停在非零的[q]·G。dusk-plonk 用双重范围限制封死这条路assert_canonical_jubjub_scalar两次range_check把输入限制在规范区间[0, r)先证scalar 2²⁵²再证(r-1) - scalar 2²⁵²利用模大数域下溢原理3 行前导零256 行中最高 3 行的 digit 强制为 0有效位宽只剩 253——任何由这些符号位构成的整数绝对值小于2²⁵⁴ q闭合等式从模等式变成整数等式伪造直接编译不过。代码中甚至用const _: () assert!(...)在编译期断言宽度永不越界。每次调用固定基 Gadget 增加70 个门比变量基方案节省大量资源。五、上手与延伸阅读完整示例电路examples/circuit.rs展示了append_point、assert_equal_point等 API 的真实用法集成测试tests/ecc.rs、tests/select_point.rs覆盖点运算的端到端证明深度测试含恶意 witness 注入的可靠性验证src/composer/tests/soundness/fixed_base.rs与src/composer/tests/soundness/point.rs官方规范文档PDFdocs/dusk-plonk-specs.pdf包含每个门的完整数学定义门定义与选择器src/composer/constraint_system/constraint.rs可查group_add_fixed_base/group_add_variable_base的选择器设置。六、小结Gadget门数适用场景点加法component_add_point2 门/次所有点运算的基础构件子群检查assert_torsion_free_point12 门私有点入电路的入口变量基标量乘component_mul_point~1000 门基点是秘密 witness 时固定基标量乘component_mul_generator~70 门基点为常量时提交、签名验证dusk-plonk 的椭圆曲线 Gadget 展示了 PLONK 工程的精髓用类型系统管理安全性边界、用辅助 witness 压低多项式次数、用移位线摊薄门成本、用位宽分析杜绝取模伪造。理解了这套思路你就能读懂绝大多数 PLONK 变体中的 ECC 约束设计 ✅。【免费下载链接】plonkPure Rust implementation of the PLONK ZKProof System done by the Dusk team项目地址: https://gitcode.com/gh_mirrors/plo/plonk创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Vue 3与TypeScript工程化面试要点与实战技巧

Vue 3与TypeScript工程化面试要点与实战技巧

1. Vue 3与TypeScript工程化面试核心要点解析作为前端技术栈的黄金组合,Vue 3 TypeScript的工程化实践已成为大厂面试的高频考点。去年在重构公司级组件库时,我深刻体会到类型系统与工程规范对项目可维护性的提升。本文将拆解20真实面试中出现率最高的工…

2026/8/25 17:57:08 阅读更多 →
前端人必看:如何用claude-code-subagents的React、Next.js专家加速Web开发

前端人必看:如何用claude-code-subagents的React、Next.js专家加速Web开发

前端人必看:如何用claude-code-subagents的React、Next.js专家加速Web开发 【免费下载链接】claude-code-subagents A comprehensive collection of 100 production-ready development subagents for Claude Code 项目地址: https://gitcode.com/gh_mirrors/cl/cl…

2026/8/25 17:56:08 阅读更多 →
MoneyManagerEx 数据库(.mmb)深度解析:SQLite 结构、QIF 导入导出与 GnuCash 迁移完全指南

MoneyManagerEx 数据库(.mmb)深度解析:SQLite 结构、QIF 导入导出与 GnuCash 迁移完全指南

MoneyManagerEx 数据库(.mmb)深度解析:SQLite 结构、QIF 导入导出与 GnuCash 迁移完全指南 【免费下载链接】android-money-manager-ex Local-first personal finance app. Encrypted, self-hosted, sync across devices. 项目地址: https://gitcode.com/gh_mirro…

2026/8/25 17:56:08 阅读更多 →

最新新闻

打工人如何利用AI解放双手:7步高效工作流

打工人如何利用AI解放双手:7步高效工作流

1. 先想清楚:哪些工作适合交给 AI Agent普通人想用 AI Agent 解放双手,第一步不是急着选工具,而是先盘点自己手头有哪些「重复、有固定流程、不太需要临场判断」的工作。这类工作通常具备三个特征:重复性高:每周甚至每…

2026/8/26 20:06:46 阅读更多 →
Charm-Crypto 测试与性能基准完整指南:Doctest、测试向量与 Benchmark 三步走

Charm-Crypto 测试与性能基准完整指南:Doctest、测试向量与 Benchmark 三步走

Charm-Crypto 测试与性能基准完整指南:Doctest、测试向量与 Benchmark 三步走 【免费下载链接】charm Charm: A Framework for Rapidly Prototyping Cryptosystems 项目地址: https://gitcode.com/gh_mirrors/cha/charm Charm-Crypto 是一个用于快速原型开发…

2026/8/26 20:06:46 阅读更多 →
React倒计时Hook源码深度解析:react-timer-hook的useTimer如何实现毫秒级精确倒计时?逐行精讲

React倒计时Hook源码深度解析:react-timer-hook的useTimer如何实现毫秒级精确倒计时?逐行精讲

React倒计时Hook源码深度解析:react-timer-hook的useTimer如何实现毫秒级精确倒计时?逐行精讲 【免费下载链接】react-timer-hook React timer hook 项目地址: https://gitcode.com/gh_mirrors/re/react-timer-hook react-timer-hook 是一款专为 …

2026/8/26 20:06:46 阅读更多 →
戴森球计划工厂蓝图怎么用?一份新手到进阶的完整指南

戴森球计划工厂蓝图怎么用?一份新手到进阶的完整指南

戴森球计划工厂蓝图怎么用?一份新手到进阶的完整指南 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints 是一个为《戴森球计划》玩家整理的社区…

2026/8/26 20:06:46 阅读更多 →
什么是nestjs-starter-rest-api?一文读懂这个生产级NestJS 11单体REST API启动模板的全部功能

什么是nestjs-starter-rest-api?一文读懂这个生产级NestJS 11单体REST API启动模板的全部功能

什么是nestjs-starter-rest-api?一文读懂这个生产级NestJS 11单体REST API启动模板的全部功能 【免费下载链接】nestjs-starter-rest-api NestJS Starter Kit. Monolithic Backend. REST API. 项目地址: https://gitcode.com/gh_mirrors/ne/nestjs-starter-rest-a…

2026/8/26 20:06:46 阅读更多 →
1.10 C++踩坑排雷手册——union 的类型活跃状态:读取非活跃成员为未定义行为

1.10 C++踩坑排雷手册——union 的类型活跃状态:读取非活跃成员为未定义行为

1.10 C++实战100例——union的类型活跃状态:读取非活跃成员为未定义行为 受众 中级工程师,已掌握 union 的基本语法,能区分 C 风格 union 与 C++ 的活跃成员概念。默认具备基础 Linux 操作能力和 GDB 调试能力。 场景锚定 场景:你在 C++ 代码中定义了一个 union 包含 i…

2026/8/26 20:05:46 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →