本文探讨了全同态加密(FHE)在区块链中的应用,特别是作为协处理器以解决隐私问题。文章分析了将FHE原生集成到虚拟机以及使用FHE协处理器的两种方案,并讨论了FHE在支持私有共享状态方面的优势,以及FHE技术栈中引入的可信第三方的风险。最后,文章列举了FHE潜在的应用场景,并介绍了OpenZeppelin在推动保密代币标准方面的工作。
让全世界了解区块链一直是最终目标。多年来,无数标语承诺将下一个十亿用户带入这个领域。但要真正实现这一目标,我们必须构建一个包含全球范围内所需所有基本功能的系统。其中最重要的是隐私——这个问题在 2025 年再次成为焦点。
在过去几年里,零知识证明 (ZKP) 一直是最突出的隐私增强技术。然而,ZKP 有一定的局限性,一种观点是通过使用 FHE(特别是作为协处理器)来弥补其中的一些局限性。在这篇博文中,我们将探讨全同态加密 (FHE) 及其在区块链中的潜在应用。越来越明显的是,隐私方面没有万能的解决方案,FHE 也不例外。我们将研究将 FHE 协处理器集成到区块链基础设施中的好处和权衡。
全同态加密 (FHE) 允许直接对加密数据执行计算。具体来说,它支持加法和乘法运算,同时数据保持加密状态。由于理论上所有的计算都可以简化为这两种运算的组合,FHE 使得在不解密底层数据的情况下执行任意计算成为可能。
典型的 FHE 工作流程如下:用户有一些想要保密的敏感数据,但仍然需要对其进行计算。他们加密数据并将其发送到强大的服务器或计算资源。该机器对加密数据执行所需的计算,并返回加密结果。最后,用户解密结果以获得输出,而无需泄露其原始数据。
到目前为止,我们所描述的都可以在没有区块链的情况下发生。然而,区块链技术通过去中心化和安全性带来了独特的价值。那么问题就变成了:我们如何将 FHE 原语集成到区块链系统中,以利用隐私和无需信任的计算?
将 FHE 原语集成到区块链的最初想法是在虚拟机 (VM) 中原生执行计算。例如,我们大多数人都熟悉以太坊虚拟机 (EVM)。我们可以想象引入新的操作码或预编译来支持 FHE 操作。用户可以加密他们的数据,将其发送到交易中,然后区块链节点将对交易中的加密数据执行 FHE。
虽然这篇博文避免深入 FHE 的加密细节,但重要的是要理解这些加法和乘法运算远比简单的整数算术复杂得多。我们可以根据节点所需的计算量为这些 FHE 操作或预编译分配 gas 成本。然而,由于它们的复杂性,这些操作在 gas 方面将非常昂贵。在以太坊 Layer 1 区块链上,成本可能会高得令人望而却步,使得这种功能在现实世界中不切实际。
此外,对像以太坊这样的系统进行更改是一个漫长而严格的过程,通常需要数年时间才能审查和实施。因此,为了在短期内启用基于 FHE 的计算,可能需要一个单独的区块链,或者至少是一个专用的 Layer 2 (L2) 解决方案。
这样做的好处是拥有一个同步系统,作为一个整体的分布式状态机运行,就像我们今天所知道的那样。可以运行交易并以我们已经习惯的以太坊共识的相同终局性进行结算。然而,截至今天,缺点大于优点,这种方法并未被广泛采用。
那么,如果执行节点不执行 FHE 计算,我们该如何执行呢?这个想法是使用一组单独的专用超级节点,这些节点具有专用的 FHE 硬件来执行任务。这就是协处理器的含义——执行不是由执行节点本身完成的,而是由“助手”完成的,稍后助手会将结果放回链上。Zama 和 Inco Atlas 等项目正在使用这种协处理架构。
具体来说,它的工作方式如下:用户将加密他们的数据并将其放入交易中,希望对这个加密数据进行 FHE 计算。被调用的智能合约将包含一个特殊的库,其中包含发出事件的函数。例如,该库包含一个 FHE 加法和一个 FHE 乘法函数,当被调用时,它们将发出一个名为“FheAdd”或“FheMul”的事件。这就是这些函数所做的全部。在链下,超级节点(FHE 协处理器)将监听这些事件并执行实际的 FHE 计算(并存储该计算的输出)。FHE 协处理器方法的主要优点之一是,它可以“添加到”任何现有的 EVM 区块链,而无需对节点本身进行任何更改。
当用户想要获取链下输出时,他们可以自己向协处理器请求加密输出,或者如果他们想要将输出解密后发布在链上,他们可以提交一个包含解密输出的交易并将其发布在链上(或让中继者为他们这样做)。
使用上述架构,这就引出了一个问题:我们如何确保协处理器执行的是正确的计算?在执行节点执行操作的方案中,安全性由共识保证。然而,在这种模型中,我们只是“信任”协处理器实际上执行了事件所指示的操作。
有几种选择可以解决这个信任问题。第一种选择是使用 ZKP。我们可以强制协处理器执行 FHE 计算,然后证明确实执行了该操作(例如在 zkVM 或 zkEVM 中)。然而,由于超出本博文范围的原因,这种方法在计算上非常密集且缓慢。你可以想象,鉴于 ZK 证明者通常比运行语句本身花费的时间更长,因此在 ZK 中证明的已经很慢的 FHE 计算将非常慢!虽然基于格的 SNARK 和递归证明系统的最新进展正在提高可行性,但对于日常区块链应用程序的实际部署仍然具有挑战性,并且可能需要在未来几年进行进一步的优化。
另一种选择是使用质押/削减机制,例如 Eigenlayer 的 AVS 或 Cosmos 链。本质上,这将迫使协处理器充当执行节点,但在与原生系统不同的系统上。使用共识方法,可以激励协处理器执行正确的输出以避免丢失代币。然而,终局性仍然是一个问题,因为节点需要很长时间才能计算。此外,让许多节点执行此计算会产生大量开销。类似的方法是使用欺诈证明。在这种方法中,如果协处理器行为不端,也可以对其进行削减。然而,只需要一个协处理器执行计算,并且任何人都可以提出异议。但是,这种方法的缺点是,直到终局性的时间窗口必须足够长,才能允许各方能够对索赔提出异议。
现在,假设我们有一个如上文第二种选择中探讨的可靠的协处理器,那么 FHE 优于 ZK 系统的一个关键优势是能够支持私有共享状态。这与依赖于存储变量的智能合约尤其相关。
在私有 ZK 系统中,私有存储变量通常由单个实体拥有和控制。这是因为该变量以加密形式存储在链上,并且修改它(至少执行乘法)需要使用明文值作为见证生成零知识证明。因此,只有所有者(知道明文)才能更新变量。
一些方案试图使用线性同态加密来克服此限制,该加密允许非所有者对加密数据执行加法运算。然而,当涉及到启用其他人进行乘法更新时,这些方法仍然不足。FHE 通过允许私有变量的所有者允许第三方执行加法和乘法更新,而无需泄露底层明文来解决此限制。这使得 FHE 特别适合需要对私有状态进行协作计算的场景。
用户可以指定允许谁更新给定的变量。因此,这些系统通常包括访问控制列表,这些列表是智能合约,用于维护每个变量与授权更新它们的用户集之间的映射。此外,访问控制列表存储有关允许谁解密和查看变量的信息。为了整合此功能,并且同时不强制用户在链下共享解密密钥,FHE 协处理器的典型架构看起来与上述描述的略有不同。
除了 FHE 协处理器之外,该系统通常还包括一个链下的特权实体(或一组实体),用于生成公钥/私钥对。系统中的所有用户都使用此公钥加密值,并通过交易将其提交到链上。访问控制列表 (ACL) 维护一个映射,该映射指示哪些地址有权修改和/或解密这些加密值。
默认情况下,提交初始交易的地址被授予修改和解密权限。然后,该地址还可以通过更新 ACL 将这些权限授予其他地址。
当用户尝试修改变量时,他们必须提交一个交易,该交易只有在 ACL 授权该操作时才会成功;否则,该交易将恢复。同样,当尝试在链上解密变量时,用户必须提交一个交易,并且只有当他们的地址具有必要的解密权限(根据 ACL 验证)时,该交易才会成功。流程是用户提交解密请求,发出事件,受信任的实体在链下解密该值,然后提交另一个交易以将结果发布在链上。如果用户想要在链下执行解密(以便只有他们知道该值),他们可以向受信任的实体提供不同的公钥/私钥对,该实体首先解密该值,然后使用用户的公钥重新加密该值,以便只有用户自己以后才能解密该值以获得明文。假设受信任的实体在重新加密后删除解密的值,并且不泄露它。
当然,拥有一个可以解密的受信任实体并不理想。因此,在大多数系统中,受信任的实体可以是一组实体,每个实体都包含私钥的一部分。他们可以一起解密这些值,但没有人可以单独解密。这是使用 MPC(多方计算)协议执行的。
可以将此 MPC 的阈值设置为所需的任何 m
和 n
值(例如,13 个中的 5 个一起工作可以解密)。如果用户想要链下解密(即如上所述的重新加密),则 MPC 在同一协议中解密该值并重新加密该值,以便没有 MPC 节点清除地查看生成的明文。这些实体仅查看重新加密的输出,该输出将发送给用户。因此,正如我们所看到的,在这些 FHE 系统中,通常存在 MPC 信任假设以及 FHE 协处理器的信任假设,因为如果这些实体中有足够多的共谋,那么他们可以自行执行解密并查看私人数据,即使在用户没有允许他们这样做的情况下。
现在,我们已经探索了在区块链中使用 FHE 的一些优势和局限性,我们可以转向它所支持的应用程序类型。如前所述,FHE 解锁的最强大的功能之一是私有共享状态,这大大拓宽了隐私保护智能合约和去中心化应用程序 (DApp) 的设计空间。
例如,可以实现一个机密的 ERC-20 代币,其中代币余额和转移金额都是完全加密的。这确保了任何外部观察者都无法看到任何参与者发送或持有多少。另一个应用是密封投标拍卖,其中仅显示中标,从而保护所有其他参与者的隐私。同样,可以创建一个私有去中心化交易所 (DEX),其中交易活动和流动性头寸保持机密。这些只是现在可能实现的应用程序的一些示例。
然而,与任何技术一样,重要的是要仔细考虑这种方法的潜在缺点和风险。如前所述,操作 FHE 协处理器以及 MPC 解密节点的特权实体引入了信任和安全方面的考虑因素,必须对其进行彻底评估。
此外,协处理器中 FHE 操作的计算开销可能很大,可能会影响性能和可扩展性。如果私有应用程序不需要私有共享状态,或者如果可以使用线性同态加密(只需要在加密值上进行加法)来实现其功能,那么使用更简单、更有效的技术(例如标准零知识证明 (ZKP))可能更实用。
OpenZeppelin 认识到隐私在更广泛的区块链生态系统中的重要性,并致力于通过安全智能合约和开放标准来推进它。因此,我们与领先的隐私提供商 Zama 和 Inco 合作创建了 机密代币协会。顾名思义,该倡议的重点是创建统一的机密代币标准并促进其广泛采用。该标准定义了一个公共接口以及所需的功能声明,同时允许开发人员灵活地按照他们认为合适的方式来实现它。
OpenZeppelin 开发了一个 机密代币的参考实现,该实现与 Zama 和 Inco Atlas 兼容。这些平台利用了本文中概述的 FHE 协处理器架构,该架构允许私有共享状态。然而,鉴于不同的隐私增强技术 (PET) 提供不同的权衡,因此该标准旨在实现技术无关性,并包含不同的隐私方法。
展望未来,OpenZeppelin 正在积极探索机密代币以外的应用程序,包括机密身份、机密现实世界资产 (RWA) 等等,这些对于金融机构和政府实体采用至关重要。
- 原文链接: blog.openzeppelin.com/ho...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!