最近,我们在 sCrypt 中实现了 zk-SNARKs,并在 BSV 上运行它。更具体地说,我们实现了 Groth16 算法的验证器,它允许直接在链上验证零知识证明。本文深入探讨了一些细节,阐明了如何在 BSV 上有效地实施其他高级加密技术。

椭圆曲线上的双线性对

Groth16 证明尺寸极小,并且可以快速验证。我们选择了最佳的 Ate 配对,因为它的效率已在实践中得到证明。

我们在配对友好的椭圆曲线 BN256(也称为 ALT_BN128 和 BN254)上实现它。我们使用 BN256 是因为

  1. 有流行的 ZKP 工具(如 ZoKrates 和 Circom)支持;
  2. 与以太坊等其他区块链兼容。

米勒算法用于有效计算最优 Ate 配对。在高层次上,它由两部分组成:

  1. 米勒循环:递归计算两个输入点 f(P, Q) 的中间函数
  2. 最终取幂:将 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. 零基础,史上最通俗视频编码技术入门

    本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动. 1.引言 如 ...

  2. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  3. 即时通讯音视频开发(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  4. 目前高产的稻麦品种的光能利用效率仅为()左右_枣树高产优质高效栽培关键技术...

    枣树高产优质高效栽培关键技术 李 军 辽东地区是枣树发展的新区,仅宽甸满族自治县就发展枣树面积340hm 2 ,枣树已成为辽东地区经济林发展的主要树种之一.然而许多枣园平均产量仅为975~1125kg ...

  5. 一网打尽Mac上的高效工具 - 效率工作篇(附演示视频)

    写在前面:博主是一只经过实战开发历练后投身培训事业的"小山猪",昵称取自动画片<狮子王>中的"彭彭",总是以乐观.积极的心态对待周边的事物.本人的技 ...

  6. caj文件打不开显示内存不足_面向大数据的高效存储容量缩减技术研究

    面向大数据的高效存储容量缩减技术研究 [摘要]:随着信息化的发展,全球数据量呈指数式增长,数据中心存储规模快速迈向了PB级甚至是EB级,其中包含了大量的冗余数据.这些冗余数据占用了大量的存储资源,导致 ...

  7. 作为一名程序员,如何高效的学习技术

    今天收到官方推送的标题,说是作为一名程序员,如何高效的学习技术,通过我的切身工作经验,我总结了一些程序员高效的学习技术的一些经验,分享给大家 制定学习计划:在学习新技术之前,制定一个合理的学习计划,包 ...

  8. 成功案例:日本夏普携手RemoteCall打造高效手机远程技术支持服务

    日本夏普在企业级移动设备管理服务"LINC Biz emm"上应用RemoteCall远程技术支持解决方案,为企业员工的工作用手机提供远程支持功能. 引入RemoteCall远程支 ...

  9. 如何高效学习编程技术?

    通过这段时间的看书学习和对编程的思考,结合自己的亲身的学习经历,今天想和大家聊一聊如何高效学习编程技术. 我们可以把学习编程技术的人分为下面四种情况. 第一种是既懂方法又努力的,学的又快又好,但大家会 ...

最新文章

  1. 赠书 | 一文了解预训练语言模型
  2. 不属于JAVA类中的变量_在Java中,不属于整数类型变量的是( )。_学小易找答案...
  3. html无效标签但是仍然能用,html 标签失效怎么办
  4. MyEclipse 中Access restriction 出现问题的解决
  5. python3.7.3 离线安装paramiko_centos7 python3 安装paramiko模块
  6. android eng 模式,android 4.0 编译模式 eng - user 时遇到的有关问题
  7. 直击“上云”痛点的 MSP 新生意
  8. derby mysql 同步_[Derby]数据库操作说明
  9. [转]程序员应打破牢笼,展望更高层次的世界
  10. 蓝牙小电池图标_TWS同时兼有一圈二动铁配置?国产蓝牙耳机这是要玩哪样!
  11. js更新mysql数据库_更新javascript方法
  12. 计算机与网络时间同步,电脑时间同步,教您怎么让电脑时间和网络时间同步
  13. 经典回忆Adobe Photoshop CS 2安装教程永久注册使用
  14. Just Like Heaven
  15. kafka zookeeper docker容器互联
  16. Genymotion Booting 安卓虚拟机 一直加载问题
  17. 洛谷 P2440 木材加工(二分,含边界处理的笔记)
  18. 互联网思维——迭代思维
  19. bin文件夹是个什么东西?
  20. for 循环的流程图等价形式

热门文章

  1. 实现Vibrator测试功能,短震动,长震动,频率震动,取消震动
  2. Android Vibrator(震动服务)
  3. Java核心技术卷一 -第五章:装箱和拆箱
  4. 最大似然函数、交叉熵和经验分布的关系
  5. mysql mmm 扩展_Mysql - 高可用方案之MMM(一)
  6. Excel 统计起止时间
  7. 品牌舆情总结及品牌修复,品牌舆情监测监控怎么做?
  8. Qt的基本控件——列表控件
  9. 1602实现计算机实验报告,LCD1602液晶显示实验报告
  10. 在一个Activity里有多次调转网页,自定义返回上一级