BSV上的高效 zk-SNARK:技术解释
最近,我们在 sCrypt 中实现了 zk-SNARKs,并在 BSV 上运行它。更具体地说,我们实现了 Groth16 算法的验证器,它允许直接在链上验证零知识证明。本文深入探讨了一些细节,阐明了如何在 BSV 上有效地实施其他高级加密技术。
椭圆曲线上的双线性对
Groth16 证明尺寸极小,并且可以快速验证。我们选择了最佳的 Ate 配对,因为它的效率已在实践中得到证明。
我们在配对友好的椭圆曲线 BN256(也称为 ALT_BN128 和 BN254)上实现它。我们使用 BN256 是因为
- 有流行的 ZKP 工具(如 ZoKrates 和 Circom)支持;
- 与以太坊等其他区块链兼容。
米勒算法用于有效计算最优 Ate 配对。在高层次上,它由两部分组成:
- 米勒循环:递归计算两个输入点
f(P, Q)
的中间函数 - 最终取幂:将
f
提高到大幂c
等式 1
最佳 Ate 配对
减少到3个配对
验证者需要检查以下等式是否成立。
等式 2
元组 (A, B, C)
是证明,(α, β, ϒ, δ)
是验证密钥,L
来自公共输入。我们总共有 4 对 配对。我们注意到 α
和 β
在设置时是已知的,因此我们预先计算了第二对,并将 α
和 β
替换为验证密钥的一部分,从而减少了一对配对的技算。
一个单一的最终幂
等式 1 可以改写为:
它又可以写成如下,因为 e
是双线性的,我们可以将指数 (-1)
移动到括号中。
双线性
插入等式 2,我们得到:
我们不需要计算 4
次最终的幂运算,幂运算是计算密集型的,我们最终只需要执行一次。
循环展开
在 sCrypt/Script 中,所有 if
分支都包含在交易中并产生交易费用,无论它们稍后是否执行。在米勒循环中,sᵢ
在编译时是已知的。我们展开循环并避免在第 5
行和第 7
行分支。
扩展域 twist
直接计算两点的配对需要在扩展域 Fq¹²
上进行椭圆曲线算法,这非常复杂且效率低下。我们使用 twist 将其映射到 Fq²
,从而大大提高了效率。请参阅这篇文章以获得更详细的解释。
概括
经过所有这些优化,我们能够将配对的脚本大小减少 100
倍至 5MB
。我们正在探索更多优化以进一步减少它。完整版本的代码可以在 GitHub 上找到。
传统上,优化程序的目标是最小化其 CPU 和/或内存使用量。在 BSV 中,交易费用与包含脚本的交易大小成正比,目标是最小化脚本大小。如何针对这一目标进行优化是一个有趣的开放课题,值得进行新的研究。
BSV上的高效 zk-SNARK:技术解释相关推荐
- 零基础,史上最通俗视频编码技术入门
本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动. 1.引言 如 ...
- 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门
[来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...
- 即时通讯音视频开发(0):零基础,史上最通俗视频编码技术入门
[来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...
- 目前高产的稻麦品种的光能利用效率仅为()左右_枣树高产优质高效栽培关键技术...
枣树高产优质高效栽培关键技术 李 军 辽东地区是枣树发展的新区,仅宽甸满族自治县就发展枣树面积340hm 2 ,枣树已成为辽东地区经济林发展的主要树种之一.然而许多枣园平均产量仅为975~1125kg ...
- 一网打尽Mac上的高效工具 - 效率工作篇(附演示视频)
写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...
- caj文件打不开显示内存不足_面向大数据的高效存储容量缩减技术研究
面向大数据的高效存储容量缩减技术研究 [摘要]:随着信息化的发展,全球数据量呈指数式增长,数据中心存储规模快速迈向了PB级甚至是EB级,其中包含了大量的冗余数据.这些冗余数据占用了大量的存储资源,导致 ...
- 作为一名程序员,如何高效的学习技术
今天收到官方推送的标题,说是作为一名程序员,如何高效的学习技术,通过我的切身工作经验,我总结了一些程序员高效的学习技术的一些经验,分享给大家 制定学习计划:在学习新技术之前,制定一个合理的学习计划,包 ...
- 成功案例:日本夏普携手RemoteCall打造高效手机远程技术支持服务
日本夏普在企业级移动设备管理服务"LINC Biz emm"上应用RemoteCall远程技术支持解决方案,为企业员工的工作用手机提供远程支持功能. 引入RemoteCall远程支 ...
- 如何高效学习编程技术?
通过这段时间的看书学习和对编程的思考,结合自己的亲身的学习经历,今天想和大家聊一聊如何高效学习编程技术. 我们可以把学习编程技术的人分为下面四种情况. 第一种是既懂方法又努力的,学的又快又好,但大家会 ...
最新文章
- 赠书 | 一文了解预训练语言模型
- 不属于JAVA类中的变量_在Java中,不属于整数类型变量的是( )。_学小易找答案...
- html无效标签但是仍然能用,html 标签失效怎么办
- MyEclipse 中Access restriction 出现问题的解决
- python3.7.3 离线安装paramiko_centos7 python3 安装paramiko模块
- android eng 模式,android 4.0 编译模式 eng - user 时遇到的有关问题
- 直击“上云”痛点的 MSP 新生意
- derby mysql 同步_[Derby]数据库操作说明
- [转]程序员应打破牢笼,展望更高层次的世界
- 蓝牙小电池图标_TWS同时兼有一圈二动铁配置?国产蓝牙耳机这是要玩哪样!
- js更新mysql数据库_更新javascript方法
- 计算机与网络时间同步,电脑时间同步,教您怎么让电脑时间和网络时间同步
- 经典回忆Adobe Photoshop CS 2安装教程永久注册使用
- Just Like Heaven
- kafka zookeeper docker容器互联
- Genymotion Booting 安卓虚拟机 一直加载问题
- 洛谷 P2440 木材加工(二分,含边界处理的笔记)
- 互联网思维——迭代思维
- bin文件夹是个什么东西?
- for 循环的流程图等价形式
热门文章
- 实现Vibrator测试功能,短震动,长震动,频率震动,取消震动
- Android Vibrator(震动服务)
- Java核心技术卷一 -第五章:装箱和拆箱
- 最大似然函数、交叉熵和经验分布的关系
- mysql mmm 扩展_Mysql - 高可用方案之MMM(一)
- Excel 统计起止时间
- 品牌舆情总结及品牌修复,品牌舆情监测监控怎么做?
- Qt的基本控件——列表控件
- 1602实现计算机实验报告,LCD1602液晶显示实验报告
- 在一个Activity里有多次调转网页,自定义返回上一级