当前位置: 首页 > article >正文

Polygon Miden VM中的哈希函数对比

1. 引言

在Polygon Miden VM中,使用了多个不同的哈希函数:

  • 1)“传统”哈希函数,如BLAKE3:对STARK之外的性能进行了优化。
  • 2)algebraic哈希函数,如Rescue Prime:对STARK内部优化,具有更好的性能。

Polygon Miden团队对多个哈希函数进行了benchmark,并对比了其在其它证明系统中所采用的构建。具体benchmark内容为:

  • 1)BLAKE3:见 BLAKE3规范,基于https://github.com/BLAKE3-team/BLAKE3 crate所暴露的wrapper来bench。
  • 2)SHA3:见 SHA3规范,基于https://github.com/facebook/winterfell/blob/46dce1adf0/crypto/src/hash/sha/mod.rs 代码来bench。
  • 3)Poseidon:见 2019年Poseidon论文,基于https://github.com/0xPolygonZero/plonky2/blob/806b88d7d6e69a30dc0b4775f7ba275c45e8b63b/plonky2/src/hash/poseidon_goldilocks.rs 纯rust代码来bench,而无vectorized instructions。
  • 4)Rescue Prime(RP):见 2020年Rescue-Prime: a Standard Specification (SoK) 论文,基于https://github.com/facebook/winterfell/blob/46dce1adf0/crypto/src/hash/rescue/rp64_256/mod.rs 代码来bench。
  • 5)Rescue Prime Optimized(RPO):见 2022年Rescue-Prime Optimized论文,基于https://github.com/0xPolygonMiden/crypto/blob/next/src/hash/rescue/rpo/mod.rs 代码来bench。
  • 6)Rescue Prime Extended(RPX):见 2023年XHash8 and XHash12: Efficient STARK-friendly Hash Functions论文,为xHash哈希函数的变种,基于https://github.com/0xPolygonMiden/crypto/blob/next/src/hash/rescue/rpx/mod.rs 代码来bench。

实际,对RPO和BLAKE3的bench流程为:

git clone https://github.com/0xPolygonMiden/crypto
cd crypto
cargo bench hash

对Rescue Prime、Poseidon和SHA3的bench流程为:

git clone https://github.com/Dominik1999/winterfell
cd winterfell
git checkout hash-functions-benches
cargo bench hash

实际在对以上哈希函数做bench时,分了2种场景:【注意,在Amazon Graviton 3服务器上,运行RPO256和RPX256时,均启用了SVE加速。】

  • 1)场景一:2-to-1 ( a , b ) ↦ h ( a , b ) (a,b)\mapsto h(a,b) (a,b)h(a,b)哈希,其中 a , b , h ( a , b ) a,b,h(a,b) a,b,h(a,b)均为每个哈希函数的digest。
    在这里插入图片描述

  • 2)场景二:序列哈希,对100个域元素所组成的序列做哈希,以生成单个digest:

    • 对Poseidon、Rescue Prime和RPO来说,该digest为素数域 2 64 − 2 32 + 1 2^{64}-2^{32}+1 264232+1内的4个域元素(即,32个字节)。
    • 对SHA3和BLAKE3来说,该digest为数组[u8; 32]
      在这里插入图片描述

参考资料

[1] Miden VM Hash Functions

Miden系列博客

  • zk、zkVM、zkEVM及其未来
  • Polygon L2扩容方案揭秘
  • 混合Rollup:探秘 Metis、Fraxchain、Aztec、Miden和Ola
  • Polygon Miden:扩展以太坊功能集的ZK-optimized rollup
  • Polygon Miden zkRollup中的UTXO+账户混合状态模型
  • Polygon Miden交易模型:Actor模式 + ZKP => 并行 + 隐私
  • Polygon Miden状态模型:解决状态膨胀,而不牺牲隐私和去中心化
  • Polygon Miden中的nullifier sets设计

http://www.kler.cn/a/134534.html

相关文章:

  • 基于Qt/C++全局键盘和鼠标事件监控工具
  • [HarmonyOS]简单说一下鸿蒙架构
  • git初始化和更新项目中的子模块
  • 羊城杯2020Easyphp
  • sql server启用远程连接与修改默认端口
  • 009_SSH_Mysql图书管理系统(学生注册 借书 还书 绵阳)——lwplus87(免费送)
  • 2311rust,到35版本更新
  • 【论文阅读】SPARK:针对视觉跟踪的空间感知在线增量攻击
  • 基于支持向量机SVM的时间序列数据训练测试和预测未来数据,LIBSVM工具箱详解
  • OPPO Watch纯手机开启远程ADB调试
  • CMS与FullGC
  • 3D应用开发引擎HOOPS如何促进AEC数字化架构革新?
  • mybatisPlus的简单使用
  • window拖拽操作的实现
  • python连接hive报错:TypeError: can‘t concat str to bytes
  • 【面试经典150 | 数学】Pow(x, n)
  • 论文阅读:YOLOV: Making Still Image Object Detectors Great at Video Object Detection
  • Linux系统上导出和导入MongoDB数据库
  • Vue 3 和 Spring Boot 3 的操作流程和执行步骤详解
  • 视频修复软件 Aiseesoft Video Repair mac中文版功能
  • Spring Boot中使用Redis进行大数据缓存
  • 连接服务器上mysql数据库
  • 【交易误区】MT4外汇交易必读:新手常犯的交易错误有哪些?
  • 小程序开通电子发票
  • 中小企业怎么实现数字化转型?有什么实用的工单管理系统?
  • Notepad++ 和正则表达式 只保留自己想要的内容