了解零知识区块链

如何在不显示您所知道的内容的情况下显示您所知道的东西

上周五看到了 ZCash,新的公共区块链和相关的加密货币吸引了很多关注。 到现在为止 数百种加密货币,因此,任何年轻的进入者都需要一个认真的区分者才能脱颖而出。 对于Zcash,这很容易– Zcash用户可以绝对保密地互相汇款。 对于基于区块链的加密货币,这是一项了不起的技术成就。 (尽管应注意,其他链 MoneroDash 达世币 使用更简单但效果较差的方法实现同一目标)。

就像我一样 之前写过一般说来,区块链(无论是公共的还是私有的)代表了一种权衡,其中以保密为代价获得了去中介化。 区块链为参与者提供了一种聪明的新方法,即使参与者彼此不信任,他们也可以安全地共享数据库,而无需中央中介。 但是,这种点对点的去中心化需要付出代价–链中每个参与者的“节点”必须亲自验证每笔交易,这反过来意味着它可以看到其他人在做什么。

两种链接方式

在公共区块链和加密货币的情况下,共享数据库主要充当谁控制(并因此有效拥有)多少加密货币的记录,并在上面选择性地撒上“元数据”(比特币)或合约逻辑(以太坊)。 相比之下,在私有区块链中,我们倾向于看到两类主要的用例:(a)链上代币表示的外部资产的所有权和转让,以及(b)与数据存储和检索有关的更一般的应用。 例如,在我们自己的产品中 多链,这两类用例分别使用本机资产和数据流实现。

在常规数据存储方面,区块链提供了多种服务:证明数据的来源,加盖时间戳,进行公证以防止少数区块链参与者进行修改。 但是,区块链无需对数据本身说什么,每个应用程序都可以决定数据的含义以及它是否有效。 可以在应用程序级别简单地忽略不良数据,而不会对整个区块链的状态造成损害。

相比之下,如果区块链直接转移令牌化资产,则它们必须应用有关这些转移有效性的内部规则。 简而言之,只有“爱丽丝付给鲍勃一欧元”之类的事件,只有爱丽丝至少有一个欧元的名字时,链环才会批准。 虽然不同类型的区块链以不同的方式表达此规则(比特币交易约束与以太坊智能合约),但它们都具有链中每个节点都必须知道爱丽丝财务状况的特性。 这使他们可以评估她的付款是否有效,知道鲍勃的结余,并评估从鲍勃到查理和其他人的未来付款。

在这一点上,熟悉区块链的读者会指出,爱丽丝和鲍勃并没有直接通过链上的名字来识别。 相反,每个交易都是在一个或多个“地址”下进行的,这些地址是乱码的长字母数字字符串,与它们的现实世界身份无关。 尽管这是事实,但实际上并没有太大帮助,因为可以通过多种方式推断用户及其地址之间的联系。

首先也是最简单的一点,为了与区块链上的某人进行交易,我需要至少知道他们的一个地址。 因此,如果我寄给他们一些钱,我可以看到这笔钱的去向,如果他们付钱给我,我也可以看到钱从何而来。 其次,如果我碰巧从现实世界中了解某个参与者的信息(例如,他们在一天中的什么时间交易什么类型的资产),我可以在链的活动中搜索相应的模式,然后以较高的级别推断他们的地址。置信度。 最后,一旦我知道了参与者的一个地址,我便可以通过监视链上的全部资金来确定他们拥有和使用的其他地址。 尽管这并非易事,但如以下公司所证明的那样,只要有足够的动力,就有可能实现 Chainalysis斯凯利 为这种比特币提供“网络分析”的人。

通过加密保存吗?

资产和数据之间的对比直接关系到加密问题。 在将数据存储在区块链上的情况下,我们可以对存储的信息进行加密,同时仍然可以获得数据出处,时间戳和不变性的好处。 这些功能都不需要深入了解数据本身。 因此,两个参与者使用区块链存储只有他们才能读取的信息是完全有效的,同时仍然获得其他参与者致力于该数据的起源及其在某个时间点的存在的好处。

相反,代表令牌化资产转移的交易不能使用这种加密。 如果爱丽丝(Alice)和鲍勃(Bob)要加密他们的交易,那么链中的任何其他参与者都无法安全使用有问题的资产,因为没有其他人会知道资产的实际位置。 资产将在链上不再具有任何集体意义,这将破坏整个观点。

在金融领域,隐私和流动性之间的冲突是使用区块链转移资产的核心困难,这打破了该领域许多初创企业的希望。 而 技术 无数试点项目已经证明了在区块链上移动资产的可行性,在实践中,这导致同行之间的活动过多。 信息泄漏在最佳时机是不利的,但是当链的参与者处于激烈的竞争中或在法规禁止的情况下,信息泄漏是最重要的。

结果,许多著名的“分布式分类帐”初创公司已经摆脱了链上结算的想法,转而采用更为传统的双边交易,这些交易在“通用数据存储”范式下在区块链上进行了加密和公证。 这样可以避免纠纷和双花,但和解本身仍在链条外部。 尽管区块链仍在提供一些价值,但其变革性远不如最初希望的那样。 毫无疑问,初创企业与其投资者之间举行了多次面面俱到的会议。

然而,在所有的失望之后,救赎也许终于到了。 输入零知识区块链。

零知识介绍

在讨论这种新型区块链之前,了解零知识本身的原理会有所帮助。 在一般意义上,零知识证明是一种证明某个陈述的真实性的证明,而不会透露其试图证明的内容以外的任何其他信息。

举个例子,假设我有一个色盲朋友,他拥有两支笔,除了一支是绿色而一支是蓝色之外,它们是相同的。 我的朋友无法区分他们,我想说服她他们确实有所不同。 当然,我不能仅仅通过告诉她颜色来做到这一点,因为她无法评估我是否在撒谎。

那我该怎么办? (为什么不花一分钟的时间自己解决这个问题……)好吧,我可以请她拿一张纸,在另一间房间里画两行。 在执行此操作时,她可以自由决定是在两行中使用同一支笔,还是每根使用一支笔。 从她的角度来看,两种方法的结果都相同。 然后她拿回纸,我告诉她是用过一支还是两支笔。 当然,如果笔是相同的颜色,我将无从得知。 因此,我做对的事实证明它们是不同的。

好吧,不完全是。 这种逻辑存在问题。 即使钢笔是相同的,我仍然有50%的机会给出正确的答案,因为只有两种可能(她只用了一两支钢笔)。 因此,一个幸运的猜测一点也没有证明。 为了加强我的观点,游戏必须进行多轮比赛。 在每一轮之后,我一贯正确的机会下降了一半。 因此,经过5轮,我成功伪造的几率为1分之一。 每32个回合,便是10个中的1个;在1024个回合中,则是20中的1个,换句话说,就是百万分之一。 根据我朋友的无聊和怀疑的相对水平,尽管从来没有绝对的确定性,但她可以达到她想要的任何概率的证据水平。

带上蛇

区块链中的零知识证明也采用了类似的原理,尽管它们当然与笔的颜色无关。 相反,他们的目的是证明陈述“这种资产转移是有效的”,而没有透露有关转移本身的任何重要信息。 Zcash对零知识证明使用了一种相对较新的技术,称为zk-SNARKs,即 关于哪个的完整说明 (温和地说)超出了本文的范围。 但是基本思想是这样的:任何计算条件都可以由算术电路表示,该算术电路将一些数据作为输入,并给出响应“真”或“假”。 zk-SNARK使用此电路的模型来让我以任何所需的确定性程度证明我拥有一个给出真实响应的输入,而没有透露输入本身。 至少从哲学上讲,这就像证明两支笔是不同的颜色,而没有揭示那些颜色是什么。

zk-SNARK使用巧妙的小技巧来避免交互,这是零知识证明所特有的,在这种交互中,持怀疑态度的一方反复向提出要求的一方提出挑战。 就我们的笔而言,这个挑战是我朋友在每轮使用一到两支笔之间做出的选择。 这种类型的交互在区块链上不可行,因为没有可信任的中央政府来设定挑战。 取而代之的是,zk-SNARK使用“随机预言”的近似值,其中,挑战是由某些代码确定性地创建的,但就所有意图和目的而言,行为都是随机的。 并非偶然,这种确定性和不可预测性的组合使用了可保护区块链本身的相同类型的哈希函数。

零知识证明已经存在了一段时间,但是zk-SNARKs引入了许多创新使其可以在区块链中使用。 最重要的是,zk-SNARK减少了证明的大小以及验证它们所需的计算量。 Zerocoin以前是在区块链中使用零知识证明的尝试,它需要45 kb的交易,每笔交易需要半秒钟的时间来检查(取自 白皮书 Zcash所基于的)。 这比比特币要糟糕得多,比特币的交易量通常为0.3 kb,可以在一毫秒内完成验证。 相比之下,Zcash交易的重量为1kb,可以在6毫秒内检查到。 这使Zcash与比特币处于同一个可扩展性联盟中-一项了不起的成就。 如果我们对比特币的创建者表示敬意,则应该为此脱下袜子和鞋子。

小心建议

在将所有比特币转换为Zcash之前,需要牢记一些注意事项。 首先,Zcash的加密技术依赖于受信任的设置过程,在该过程中,两个长的公共密钥来自一个随机生成的私有密钥。 销毁此私钥绝对至关重要,因为拥有它的任何人都可以伪造系统所依赖的证据。 就Zcash而言,私钥是在精心设计的仪式中创建的,详细描述了 相关信息。 颁奖典礼涉及来自加密货币世界的几个著名人物,每个人(被告知)只有一部分私钥。 反过来,这意味着只有在仪式的所有参与者恶意串通的情况下,Zcash才会受到损害。 由读者决定他们对此有多自信。

其次,即使它相对较快 确认 匿名的Zcash交易, 创建 这些事务中的每一个都承担着严重的计算负担。 根据 Zcash 速度中心,目前在高端服务器上需要48秒,并且需要3 GB以上的内存。 这使得从移动设备以及较旧的台式机和笔记本电脑进行匿名交易变得不切实际。 Zcash通过支持常规的可见加密货币(具有快速交易)和匿名“票据”(具有慢速交易),并通过一种在两者之间进行转换的内置方法,可以部分解决此限制。

第三,即使我们假设基础加密是正确的,Zcash代码中也可能存在一些错误,这些错误允许凭空想出匿名笔记。 这将使Zcash货币基础无限膨胀,最终使加密货币一文不值。 与透明的加密货币(如比特币)不同,此灾难性事件无法检测到,因为Zcash的整个要点都是隐藏交易。 尽管如此,据Zcash首席执行官Zooko Wilcox称,寻找解决方案的工作已经在进行中,因此我们很期待看到它。

最后,与任何基于工作量证明的加密货币一样,仍有51%攻击的可能性。 这意味着一组拥有超过网络计算能力一半的“矿工”可以串通以逆转其他人认为已经完成的交易(不良矿工仍然无法伪造窃取他人资金的交易)。 Zcash巧妙地依靠 Equihash,它是不同于比特币SHA-256的哈希算法,这意味着无法将大量现有比特币挖掘能力用于对抗Zcash。 Equihash的设计还可以抵抗“ ASIC”(专用微处理器),后者已将比特币的开采变成了寡头垄断,但只有时间才能证明硬件工程师能否找到解决方法,以及付出了多少代价。

零知识私有区块链

到目前为止,我们已经将讨论重点放在了公共Zcash区块链和加密货币上。 但是,外部资产在私有或许可的区块链和共享分类账上转移又如何呢? 可以使用相同的零知识技术吗?

在技​​术层面上,答案无疑是肯定的。 与Zcash的理论和技术力量相比,将协议扩展以支持链上发行的资产是微不足道的。 所需要做的只是扩展zk-SNARK证明的条件以强制保留多个资产,而不是单个加密货币。 更简单地说,是在单个区块链上创建多个不同的匿名子系统,每个子系统代表不同类型的资产,并像今天的Zcash一样在每个子系统内进行交易。 第二种方法根本不需要了解zk-SNARK。

在此模型中资产的生命周期将如何变化? 首先,受信实体通过发送可见的证明这些令牌价值的区块链交易来发行代表资产的令牌。 然后,同一实体将执行第二笔交易,将可见的令牌转换为匿名的Zcash样式的“便笺”,从而将资产有效地转移到地下。 然后可以将这些票据从发行人秘密转移到其他人,然后在链的参与者之间转移。 与Zcash一样,所有区块链参与者都可以在不透露其内容的情况下验证转移交易的有效性。 最后,当持有人希望赎回票据时,他们会使用另一种Zcash风格的交易将其转换回可见的代币,并将这些代币发送给原始发行人,并获得相应的真实资产作为回报。 我们还可能允许匿名直接赎回票据,在这种情况下,区块链参与者将不知道还有多少资产仍在流通中。

因此,零知识交易有望解开高迪氏结,这阻碍了区块链在金融领域的结算。 回顾一下,在常规的区块链交易中,当资产从一家银行发送到另一家银行时,该交易的详细信息对于链上的其他所有银行都是可见的。 相比之下,在零知识交易中,其他人仅知道已进行了有效交易,而与发件人,收件人,资产类别(如果我们很聪明)和数量无关。 参与者定期创建虚假交易(他们在其中向自己发送资产),甚至可以混淆交易量。

在隐私方面,这就像在一个公文包中将金条从一家银行运到另一家银行一样好,但没有实际移动黄金的成本和时间。 它比使用托管银行等受信任的中介机构更好,因为甚至没有哪一方可以看到一切。 零知识区块链首次允许以完美的保密性在对等基础上以数字方式执行资产转移。

不要扔掉那个数据库(还)

假设Zcash的技术基础是健全的,我完全希望它在开发人员的兴趣和市值方面达到加密货币的顶级水平。 但是,零知识交易在未来是否有同样光明的未来呢? 私立 区块链? 他们会从实验室过渡到生产质量系统,从而在世界范围内转移真金白银吗?

当然,现在说还为时过早。 但是,在获得许可的区块链倡导者可以指出零知识交易并胜利宣布胜利之前,需要回答许多问题。

首先,最重要的是,这安全吗? 我们真的可以相信基础加密及其编码实现足够强大,可以防止恶意方凭空生成资产吗? 如前所述,与透明的区块链不同,尚无法检测零知识区块链的货币基础是否受到损害。 尽管如此,没有比将它作为开放的公共区块链发布供所有人查看和攻击更可靠的测试了,这正是Zcash所做的。 在看到Zcash平稳运行了几年之后,机构可能会确信零知识区块链可以真正保护其资产。 与所有重要的区块链一样,需要耐心。

一个相关的问题是零知识密码学本身的新颖性。 确实,常规的区块链依赖于高级加密技术,即非对称加密(公钥/私钥)和加密哈希函数(数字指纹)。 确实,绝大多数区块链程序员和应用程序开发人员都不了解这些技术背后的数学原理。 但是,更广泛的意义是:如果将这些方法当作黑匣子,那么几十年来,这些方法已经被大量的开发人员和用户(听说过https?)广泛采用,并且每个人都认为它们可以工作。 相比之下,直到最近,零知识证明只为一小群学者所知,并且在Internet或其他地方没有广泛的应用。 我们可以预计,这种模糊性至少在未来五年内会降低银行的CIO或风险官将其核心流程转移到零知识区块链的意愿。 而且,我们甚至不要开始想象监管机构要花多长时间才能适应以这种方式移动的资产。

谈论监管带来了另一个零知识区块链的实际问题。 区块链中的匿名交易包含有关资产转让和所有权的声明,但这些声明仅对选定的方(即直接参与的方)可见。 即使我们向监管机构提供了对零知识区块链及其参与者身份的完全可见性,也无法知道内部真正发生的事情。 当然,监管者可以要求所有参与者识别并披露他们的交易,并且他们可以使用Zcash样式的“查看键”有效地做到这一点。 但是,如果任何特定交易的当事人都希望对其保密,则监管机构将陷入困境,并且不知道应该对谁处以罚款。 没有托管银行可以从中获得全部信息,唯一的执行选择是关闭整个链。

那么底线是什么? 至少就目前而言,我建议仅关注公共Zcash区块链的进展,以了解其发展和增长。 如果 以太坊的历史 如此反复,就会有潜伏在地下的惊喜和漏洞,等待被贪婪的机会主义者利用。 尽管如此,从长远来看,不要误会:零知识交易是区块链改变游戏规则的突破。 如果基本的加密原理被证明是合理的,则期望它们能够大大拓宽可应用区块链的用例范围。

请发表任何评论 在LinkedIn.

时间戳记:

更多来自 Multichain