最近有伙伴询问如何使用Fabric2.2 如何集成零知识证明算法,这个解决思路比较简单:首先寻找零知识证明库,这个国外有好多niubility的公司,其中ConsenSys公司的gnark是个不错的选择,其次查看合约容器版本是否匹配零知识证明库的版本,版本不符合,重新编译ccenv。
**
零知识证明库
**
什么是零知识证明算法,网上的介绍非常多,原理上我们不进行过多介绍,gnark官方说明https://docs.gnark.consensys.net/en/latest/HowTo/write/standard_library/。
本次我们模拟Hash证明,即 我们不出示M,却可以证明我们拥有M,使得Hash(M) 等于设定的Hash值。其中字段PreImage
是我们要隐藏的原文字段,字段Hash
是我们公开的证明信息,在验证时使用。具体代码如下,其中VerifyProof
我们需要放在智能合约里调用。
如果各位小伙伴下面的工程一片飘红,请使用go mod 进行包管理,下载依赖,Go版本尽量在go1.17版本及以上,笔者用的是go1.17.8
go.mod 中依赖版本gnark、gnark-crypto 版本号。
github.