首页 > 热点新闻 > IPFS&Filecoin-如何使用零知识证明Zk-SNARK的
星际云存  

IPFS&Filecoin-如何使用零知识证明Zk-SNARK的

摘要:Zk-SNARK是加密领域使用的零知识证明协议,是协议首字母缩写词,表示零知识简洁明了的非交互式知识论证。该证明最早是在1980年代末期开发和引入的,现在被广泛应用于区块链系统中。

星际云存CTO梅森

Zk-SNARK是加密领域使用的零知识证明协议,是协议首字母缩写词,表示零知识简洁明了的非交互式知识论证。该证明最早是在1980年代末期开发和引入的,现在被广泛应用于区块链系统中。

Zk-SNARK在区块链领域主要用途有两个:

1. 对全链做可信性验证

区块链网络随着时间的推移慢慢变得越来越大,如比特币很快达到1T容量,每加入一个节点都要同步很大的区块数据,占用带宽且浪费存储空间,制约了区块链的更广泛的应用。

Zk-SNARK很好的解决了这个问题,通俗的讲:不用把一头大象搬到你的面前,仅需要一张黑白的大象照片即可做到可信性验证。比如即将发布的Dfinity(ICP)和Mina区块链网络,就使用Zk-SNARK协议证明,使他们的可信性验证节点保持固定44k和20k的验证区块数据,作为非挖矿节点不必同步全链数据。

2.对区块链账户的隐私和安全性

在2010年代初期,比特币用户以为他们的交易是匿名的,因为他们的离线私钥与用户的公共密钥无关。但是到了本世纪末,数据科学家,黑客和执法人员的共同努力,不仅相对容易识别跟踪交易而且可以将多个匿名交易的数据定位到一个人。

Zk-SNARK可以很好的解决隐私和安全性,Zcash系统就是使用此技术为用户做虚拟资产交易提供了隐私和安全支持。

Zk-SNARK证明协议数学模型很复杂,这里仅做个简单介绍:

(1) 生成受信任的设置

(2) 计算证人

(3) 产生证明

(4) 验证证明

Filecoin网络中的又是怎么使用Zk-SNARK证明协议的呢?

 

Filecoin项目包含三个部分:

1. Blockchain部分-实现与区块链相关的逻辑(共识算法,P2P,块管理,VM虚拟机等)。与区块链相关的数据存储在IPFS上。该部分由Go语言实现实现。

2. RUST-FIL-PROOF部分-实施扇区存储和验证。那就是FPS(文件币证明子系统)。该部分由Rust语言实现来实现。

3. Bellman部件-零知识证明(Zk-SNARK)证明系统,主要基于BLS12_381椭圆曲线,实现了Groth16的零知识证明系统。该部分由Rust语言实现实现。Zcash也在使用。

Zk-SNARK在Filecoin主要应用在扇区封装和扇区证明上。

扇区(Sector)概念比较简单,任何了解硬盘结构的人都知道,硬盘的最小存储单元称为“扇区”。但在Filecoin网络系统中扇区为32G或64G,它使用一种Stacked DRG (Depth Robust Graph,深度鲁棒图)数据处理算法是用于系统扇区,对存储数据进行一定程度的处理,以证明存储服务器确实确实存储了一些数据,而不是伪造(攻击)。

扇区封装到提交到网络上经历了三个过程:

1. 扇区生成---计算证人:为原始数据构造默克尔树(Merkel Tree),标签和编码计算。

核心代码在rust-fil-proofs/storage-proofs-porep中。

2. 扇区证明--产生证明:扇区生成后需要“证明”已处理的数据。毕竟,不会把大象提交到区块链上。使用Stacked DRG数据处理算法进行分区。通过Bellman的零知识证明库,并使用Groth16算法进行数据处理证明。

Stacked DRG中要进行大量的sha256计算,时间很长,可以通过一些方法优化,如使用asm汇编优化的版本。

3. 扇区证明验证(Proof on-chain verification)---验证证明:提交给链的数据包括默克尔树根的哈希计算结果和证明数据-----即复制证明(PoRep),链上的验证矿工将验证提交的证明是否正确。

验证过程是RUST-FIL-PROOF模块调用Bellman库以验证零知识证明是否正确。验证过程相对较快,大约需要几毫秒。

具体代码在filecoin-ffi/proofs.go文件中的VerifySeal函数。

Filecoin通过扇区封装进行挖矿,主网扇区有32G和64G两种扇区大小可以选择,每封装完毕一个扇区向主网提交一次哈希计算结果和证明数据(即消息),会产生一次Gas费,同样封装256T选择64G扇区比32G扇区可以减少一半的Gas费用,但要根据自身硬件经过测试选择合理的扇区大小。

Filecoin网络对Zk-SNARK根据场景做了技术调整升级,严格来讲应该叫Zk-STARK。Filecoin通过此协议完美开创了区块链在存储市场的应用。很明显,Zk-SNARK协议具有巨大的潜力,可能成为一种被广泛使用的开创性途径。

备注1:Zk-STARK和Zk-SNARK的区别

Zk-STARK是作为Zk-SNARK协议的替代版本而创建的,被认为是该技术的更快和更便捷的实现方式。但更重要的是,Zk-STARK不需要进行初始化可信设置(因此,字母“T”代表了透明性)。

从技术上讲,Zk-STARKs不需要初始化可信设置,因为它们依赖于通过哈希函数碰撞进行更精简的对称加密方式。这种方式还消除了Zk-SNARK的数论假设,这些假设在计算上成本很高,并且理论上容易受到量子计算机的攻击。

Zk-STARK能够提供更便捷和更快速实现的主要原因之一是因为证明者和验证者之间的通信量相对于计算的任何增量是保持不变的。相反,在Zk-SNARK中,所需的计算越多,各方须来回发送消息的次数就越多。因此,Zk-SNARK的整体数据量大小远大于Zk-STARK证明中的数据量。

来源: 星际云存


免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。