首页 > 其他分享 >MiMC hash

MiMC hash

时间:2023-10-27 17:36:48浏览次数:45  
标签:function operations hash MiMC circuit ZKP

https://blog.csdn.net/mutourend/article/details/118157053

 

 

MiMC is a “ZK-friendly” hash function, for which efficient Zero Knowledge Proofs (ZKP) can be generated.

Previously, we discussed ZKP can be applied to any mathematical function using zk-SNARK. Internally, the function needs to be converted to a circuit, where only addition and multiplication operations are allowed. While all functions can be converted in theory, in practice some function’s circuit is smaller and their ZKP is less costly than those of others. For instance, SHA256 requires lots of bit operations and is thus among the most expensive in terms of circuit size.

The MiMC hash function is specifically designed to minimize circuit size and thus ZKP cost by using only additions and multiplications. It does not while making it extremely costly to reverse-engineer the pre-image of the hash.

Hash function can be found in many applications such as commitment scheme, signature, and Merkle trees. MiMC is a good candidate hash function when efficient ZKP is needed.

Algorithm

To hash a single number x, we calculate the following function:

equation

r is the number of rounds, Fᵢ is the round function for round i and k is the key. ∘ is function composition.

Fᵢ is defined as:

Equation 2

cᵢ are the round constants and c₀=0.

Equation 3

r rounds of MiMC: Eₖ(x)

Implementation

 The following is an implementation of MiMC:

MiMC Contract

hash() at Line 1 computes E(x)multiHash() hashes an arbitrarily long input xs, where the intermediate result ret is fed into the next iteration at Line 17. All operations are defined in modular P.

A test can also be found here.

 

标签:function,operations,hash,MiMC,circuit,ZKP
From: https://www.cnblogs.com/Janly/p/17792816.html

相关文章

  • 字符串中的BKDRHash哈希函数
    字符串中的BKDRHash哈希函数在计算机科学中,哈希函数是一种将任意长度的输入(也称为“消息”)通过散列算法转换成固定长度的输出,该输出就是哈希值。哈希函数的一个重要特性是,对于相同的输入,无论何时执行哈希函数,它都应该产生相同的输出。然而,对于不同的输入,即使它们只有微小的差别,哈......
  • ConcurrentHashMap的非线程安全使用
    问题业务场景:应用会创建一个<name,id>的Map并缓存,其中key,value会被其他业务模块调用,最终数据落盘到HDFS上。问题:发现一个奇怪的bug:id在Map中的值和业务表中的值有时候对不上,比如在业务表中查到一个id=100,但是在Map中找不到这个值。经过分析定位,发现问题代码在这里:(大概逻辑为,......
  • murmurhash64B c# 实现 c++ 实现
    c#实现:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespacegjh.utility{publicclassMurmurHash64B{publicstaticulongMakeHashValue(byte[]key,uintseed=0xee6b27eb){......
  • [ABC256E] Takahashi's Anguish
     题目 https://www.luogu.com.cn/problem/AT_abc256_e 图论题,是个环套树发现环上的边要取掉一条(min),其他的不用取https://www.luogu.com.cn/record/131488937......
  • HashCode
    2023.10.241.开放定址法:基本思想是:当关键字key的哈希地址p=H(key)出现冲突时,以p为基础,产生另一个哈希地址p1,如果p1仍然冲突,再以p为基础,产生另一个哈希地址p2,…,直到找出一个不冲突的哈希地址pi,将相应元素存入其中。比如ThreadLocal再哈希法:这种方法是同时构造多个不同的哈希函数:H......
  • Java HashMap类
    HashMap是我们使用非常多的Collection,它是基于哈希表的Map接口的实现,以key-value的形式存在。HashMap实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该......
  • 【大揭秘】美团面试题:ConcurrentHashMap和Hashtable有什么区别?一文解析!
    正文亲爱的小伙伴们,大家好!我是小米,一个热爱技术分享的程序员,今天我为大家带来了一篇有关美团面试题的热门话题:ConcurrentHashMap和Hashtable有什么区别。这个问题在Java面试中常常被拿来考察对多线程编程的理解,所以务必认真学习,不仅仅是为了通过面试,更是为了提高自己在多线程编......
  • HashMap底层原理
    HashMap主要用来存放键值对,它基于哈希表的Map接口实现,是常用的java集合之一,是非线程安全的。 HashMap可以存储null的key和value,但null作为键只能存在一个,作为值则可有多个。 jdk1.7底层使用数组+链表的方式实现,每次插入使用的是头插法。数组是HashMap的主体,链表则是......
  • ArthasHotSwap插件使用
    ArthasHotSwap插件使用1、安装插件2、指定服务器上需要热部署的java进程因为服务器上可能不止一个java进程,如果不指定进程,热更会新默认更新第一个3、反编译字节码运行arthasjava-jararthas-boot.jar选择java进程查看正在使用的类jadcom.ruoyi.race.service.impl......
  • redis普通连接和连接池, redis字符串类型,redis hash类型, redis列表类型
    1redis普通连接和连接池......