区块链本身的一个关键优势就是透明性,然而在许多情况下,智能合约应用却出于各种商业或法律原因需要保障数据隐私,比如传入专有数据触发智能合约执行。现在,越来越多项目都采用零知识证明(ZKP)技术在公链上保护隐私。(注:零知识证明指一方向另一方发送加密证明,在不透露数据内容的情况下证明自己拥有某个数据)在区块链网络中,零知识证明只披露某条隐藏信息是有效且为证明者所拥有的。 本文将详细探讨零知识证明如何保障隐私,而隐私保护是零知识证明对用户的核心价值。另外文中还会列举零知识证明在区块链上的各种用例,以及如何利用 Chainlink 的 DECO 技术建立保护隐私的预言机网络,证明数据来自某一 web 服务器的同时保护数据隐私,并实现向后兼容。 零知识证明的运行机制 零知识证明最早由 MIT 的 Shafi Goldwasser 和 Silvio Micali 在 1985 年一篇名为《互动式证明系统的知识复杂性》的论文中提出。作者在论文中提到,证明者(prover)有可能在不透露具体数据的情况下让验证者(verifier)相信数据的真实性。零知识证明可以是交互式的,即证明者面对每个验证者都要证明一次数据的真实性;也可以是非交互式的,即证明者创建一份证明,任何使用这份证明的人都可以进行验证。零知识证明目前有多种实现方式,如 zk-SNARKS、zk-STARKS、PLONK 以及 Bulletproofs。每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点。 零知识证明有三个基本特征,即:
总而言之,要创建零知识证明,验证者需要让证明者执行一系列操作,而证明者只有在得知底层信息的情况下才能正确执行。如果证明者乱蒙一个结果,那么验证者极有可能在验证中发现并证明他的错误。 零知识证明概念演示,如何在不透露数据内容的情况下向对方证明拥有数据 如果要用一个概念直观地解释零知识证明如何证明用户拥有数据,可以想象一个山洞只有一个入口,洞里面有两条路(路径 A 和路径 B),这两条路由一扇门连接,要说出密码才能通过这扇门。Alice 希望向 Bob 证明她知道开门的密码,但不想将密码透露给 Bob。因此,Bob 需要站在山洞外,Alice 从其中一条路走进山洞,而 Bob 并不知道她选了哪条路。接着,Bob 指定 Alice 从其中一条路回到山洞入口(注:这是随机选择的)。如果 Alice 最初选择从路径 A 走到门口,但 Bob 让她从路径 B 回来,唯一的方法就是穿过那扇门,而穿过门必须知道密码。为了充分证明 Alice 真的知道门的密码,而不是运气好刚好选到了同一条路,这个过程可以反复重复好几次。 (责任编辑:admin) |