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 264−232+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设计
 


![[解决] 问题:ImportError: cannot import name ‘Callable‘ from ‘collections‘](https://img-blog.csdnimg.cn/e99c7a67d02f40159dd7a09ee577ce38.png)
















