原文标题:ZKPs, FHE, MPC: Managing Private State in Blockchains
原文作者:Mohamed Fouda
原文来源:Medium
编译:Lynn,火星财经
大约 14 年前推出的比特币通过消除中介机构彻底改变了金融交易。以太坊和智能合约的出现进一步加速了这一趋势,消除了交易、借贷和期权等复杂金融产品的中介机构。然而,消除中介的代价往往是牺牲隐私。我们的链上身份和交易很容易被中心化交易所、上下坡道、链上分析公司和许多其他实体跟踪。这种链上透明度限制了 Web 3 向许多用例的扩展,例如企业支付、专有链上交易和许多其他应用程序。
这个问题并不新鲜,许多项目(例如 zCash)自 2016 年以来一直试图通过引入零知识证明(ZKP)等技术来解决该问题。从那时起,ZK 技术就以疯狂的速度发展。此外,许多其他技术,例如完全同态加密(FHE)和安全多方计算(MPC)正在兴起,以解决使用链上私有数据(又称私有状态)的更复杂的场景。
在 Alliance,我们相信链上隐私将实现以前不可能的用例,因此将成为未来几年 Web 3 的核心主题。如果您是构建隐私基础设施或需要私有状态的应用程序的创始人,我们愿意为您提供支持。您可以联系联盟并申请。
在链上使用私有数据自然意味着该数据是加密的。该数据的隐私取决于加密/解密密钥的所有权。该密钥(即隐私密钥)通常不同于常规的私钥(即签署交易的密钥)。第一个仅控制数据的隐私,后者控制更改此数据。
隐私密钥的所有权性质导致了不同类型的私有状态。私有状态类型显着影响该状态在链上的表示方式以及处理该状态的最佳方法。一般来说私有状态可以分为个人私有状态(PPS)和共享私有状态(SPS)
这意味着数据/状态由单个实体拥有,并且只有该实体可以查看或更改它。该实体还可以决定允许其他人查看该数据,例如通过共享该数据的全部或部分的查看密钥。这种私有状态的例子包括:
共享私有状态 (SPS) 是多人可以在不破坏隐私的情况下更改/使用进行计算的私有数据。 SPS 可以是任何人都可以访问的状态,因此任何用户都可以更改。这可以是暗池 AMM 的状态、民间借贷池的状态等。SPS 也可以仅限于能够访问或更改数据的一小部分参与者。后者的示例包括链上多人游戏的状态,其中您只允许活跃玩家更改状态。它还可以包括链上人工智能模型的私有输入,其中只有少数实体(例如模型操作员)可以对私有数据运行计算。
SPS 比个人私有状态更难管理。推断可以在 SPS 上执行的计算类型以及该计算是否会泄漏有关它的信息总是比较困难。例如,针对暗池 AMM 执行交易可能会泄露一些有关池内流动性的信息。
有不同的可能方法来处理链上私有状态。每种方法都适合特定类型的私有状态,因此适合一组特定的应用程序。在许多情况下,创建有用的应用程序需要将这些方法结合在一起。
第一种处理链上隐私的方法是利用 ZKP。这种方式特别适合个人私有数据。在这种方法中,数据的所有者可以简单地使用他们的隐私密钥在本地解密数据,进行任何所需的更改,使用他们的密钥加密结果,最后生成一个 ZKP 来向网络证明他们对私有状态的更改是有效的。
这使得 ZK 特别适合支付网络,例如 zCash、Iron Fish 等。在这些架构中,当用户使用私有资产进行交易时,他们在本地进行所有计算,即花费 UTXO 并为接收者创建新的 UTXO,并修改其私有代币余额。由于计算和 ZKP 生成在用户设备本地进行,因此余额和交易历史记录的隐私受到保护。网络矿工只能看到生成的 ZKP 和新的加密 UTXO。
尽管执行支付所需的计算很简单,但由于 ZKP 生成时间较长,私人支付的用户体验很困难。然而,随着 zk 证明系统的显着改进,消费类硬件上简单支付的证明生成时间降至 1 秒以下。这也允许将通用可编程性引入基于 zk 的系统。Aztec和Aleo是两个伟大的网络,它们为基于 zk 的链带来了通用可编程性。 Aztec 和 Aleo 有一些差异,但两者很大程度上都是基于ZEXE 模型。在此模型中,每个应用程序都必须实现为 zk 电路。这就需要网络为应用程序开发人员和用户抽象 zk 复杂性。这需要创建高级编程语言,例如 Noir (Aztec) 和 Leo (Aleo),它们可以有效地将高级代码转换为 zk 电路。
例如,Aztec 使用 Noir 及其相关的智能合约开发框架Aztec.nr将每个智能合约分解为一组函数。每个功能都作为 zk 电路实现。用户可以通过下载必要的函数并在设备本地执行计算来对其私有数据进行通用计算。本线程讨论了 Aztec 智能合约如何执行的详细信息。
像 Aztec 这样的实现通过引入通用可编程性显着提高了 zk 系统的可用性。然而,此类系统仍然面临一些挑战:
zk强大的隐私保障使其适用于相当多的用例
匿名社交媒体
一些知名人物无法分享他们的真实想法和经历,担心社会阻力和取消。这鼓励了一种新型的社交媒体,参与者可以私下证明自己的某些特征,例如链上财富或拥有特定的 NFT,并使用此证明匿名发布而不透露其真实身份。例子包括我的同事David的鲸鱼之歌原型,
私人链上凭证
一个相关的例子是允许具有一定资格的人匿名参与 DAO 或对需要特定专业知识的主题进行匿名投票。HeyAnoun就是一个 Web 3 示例。更大的应用领域是利用 IRL 凭证(例如 IRL 财富、学位)来匿名参与链上协议。在链上加入私人 IRL 凭证可以实现多种用例,例如无抵押 DeFi 贷款、链上 KYC 或地理门控。 ZK 适合这些用例,因为它允许存在可用于特定情况(例如贷款违约)的私有状态部分的专用查看密钥。
将 IRL 凭证添加到链上的主要挑战是如何保证 IRL 凭证/数据的真实性。zkEmail和TLSNotary等一些方法通过验证特定 Web 域的 Web 流量以及该域包含所需数据来解决此问题。
企业发票/付款
私人支付的一个重要子集是企业支付。公司通常不想透露其业务合作伙伴/供应商或其协议的合同条款。链上支付的透明度限制了企业采用稳定币支付。有了适当的链上隐私,与现有银行轨道相比,企业可以通过提高效率和成本效益来加速采用链上支付。
完全同态加密允许对加密数据进行计算并生成正确的加密结果,而无需在计算过程中解密数据。这使得 FHE 特别适合处理共享私有状态。借助 FHE,可以创建具有私有状态的链上应用程序,例如私有 AMM 池或私有投票箱。私有状态以加密格式存在于链上,允许任何用户对此数据执行计算。将 FHE 纳入链上可以实现并简化许多以前不可能的用例,例如私人投票和信息不完整的游戏,例如扑克。
FHE 的一个显着优势是在多个方面提高了可组合性。
另一个优点是改善了用户体验。在 FHE 中,私有状态的计算由网络验证器执行,他们可以部署专用硬件来更快地执行这些计算。
FHE 的第三个优势是改善了开发人员体验。尽管开发人员仍然需要更新他们的思维模型以正确处理私有状态,但障碍比 zk 系统要低得多。首先,FHE 系统可以使用与智能合约链相同的账户模型来运行。其次,FHE 操作可以添加到现有 VM 实现之上,允许用户使用他们习惯的相同开发框架、工具、钱包和基础设施。Zama的fhEVM实现就是这种情况,它只是添加了加密变量和 FHE 操作作为预编译。与直觉相反,这种优势对于链上私有应用程序的增长至关重要,开发者是创建吸引用户的有趣应用程序的关键。无缝的开发者体验可以吸引更多开发者进入 FHE 领域。
隐私信任假设
FHE 链需要所有私有状态的全局加密/解密密钥。这对于实现可组合性至关重要。通常,这些密钥由验证器组维护,以便能够解密私有状态上的 FHE 操作的结果。这意味着验证者组也被信任不会破坏现有私有状态的隐私。
潜在的隐私泄露
对加密数据执行多次计算可能会破坏隐私。例如,在暗 AMM 池上执行的交易可以揭示有关该池当前流动性结构的一些信息。
FHE 计算的计算复杂度
即使采用先进的实现方式,FHE 操作的计算成本也通常比常规计算高 1000 倍到 1,000,000 倍。这种复杂性限制了链上 FHE 应用程序的可能吞吐量。 Inco Network 目前的估计表明 FHE 操作的吞吐量在 1-5 TPS 之间。通过 GPU 和 FPGA 加速,吞吐量可提高 10-50 倍。
资料来源:
https://eprint.iacr.org/2021/1402.pdf
FHE 系统特别适合需要高度可组合性的应用
信息不完全博弈。这里的示例包括纸牌游戏,例如扑克,其中牌组的状态是可访问的并且可以由多个玩家修改。
私人投票,FHE简化了秘密投票的实施,投票可以在不知道之前投票结果的情况下改变计票结果
私有 AMM,私有 AMM 或私有 DeFi 池的实现通常通过将池状态表示为加密变量来简化。
多方计算 (MPC) 在加密行业中因资产托管的特定用例而闻名并流行。该领域一些最大的公司(例如Fireblocks)已经围绕使用安全 MPC 进行并发托管建立了成功的业务。此外,许多钱包即服务提供商(例如 Coinbase、0xPass)利用 MPC 来提高钱包安全性和用户体验。
然而,MPC 的用途不仅仅是保护私钥。一般来说,MPC 解决了对私有输入(即数据)执行计算的问题,并且仅公开计算的输出而不破坏输入的隐私。在资产托管的具体场景中,私有输入就是私钥的分片。这些分片的所有者协作对这些私人输入执行“计算”。这里的计算就是生成交易签名。这里的多方共同生成并解密签名,而其中任何一方都无法访问私有输入,即私钥。
同样,MPC 允许对私有数据进行任何类型的计算,而无需泄露它。这允许 MPC 处理区块链上下文中的私有状态。其中一个例子是通过私有数据集进行去中心化人工智能训练。不同的数据所有者和计算提供商可以协作对私有数据集执行基于 MPC 的 AI 训练,以计算模型权重。计算的输出(即权重)在训练阶段后由 MPC 组解密,以创建完整的 AI 模型。
许多MPC实现对数据隐私实现了强有力的隐私保证,即诚实少数,这意味着它具有与zk系统类似的隐私保证。 MPC 看起来也与 FHE 类似,因为它允许通过 SPS 执行计算,这意味着它可以实现可组合性。但与FHE相比,MPC有一些局限性
暗池 CLOB
MPC 在 DeFi 中的第一个真正应用是暗池 CLOB 的实现。在此系统中,交易者无需事先了解订单簿的状态即可下限价或市价订单。订单匹配通过 MPC 在私有数据(即现有订单簿)上进行。Renegade Finance是构建此类系统的公司之一。
专有人工智能模型的去中心化推理
一些应用程序,例如基于 DeFi AI 的策略管理器或Web 3 信用评分,可以部署 MPC 以使用专有模型执行推理。在此架构中,AI 模型权重是私有的。权重可以在多个计算节点之间安全地共享,以便每个计算节点仅具有模型权重的子集。节点可以协作对更新的链上事件进行人工智能推理,以做出决策并提交执行 DeFi 策略的交易。
使用专有数据训练开放人工智能模型
这里的一个常见例子是使用私人健康记录训练医疗诊断模型。在这种情况下,模型创建者、公司和数据所有者(即患者)可以使用 MPC 进行协作,在私有数据上运行训练过程,而不会破坏私有数据的隐私。Bittensor和Nillion等网络可以实现此类用例。
伪无许可共享私有国家
通过精心设计,MPC可以用来处理伪无许可SPS。例如,暗 AMM 池的状态以及对该状态的计算可以构建为多个实体之间的 MPC。想要与 AMM 交互的用户必须与 MPC 组共享其交易,以代表他们执行计算。这种方法的优点是每个 SPS 可以有一组不同的隐私密钥(与 FHE 情况下的全局密钥相比)。这种方法的风险是可能受到 MPC 小组的审查。然而,通过仔细的经济设计,这种风险是可以减轻的。
乍一看,所讨论的处理链上私有状态的方法似乎具有竞争力。然而,如果我们抛开构建这些网络的不同团队的经济激励,zk、FHE 和 MPC 实际上是互补的技术。
一方面,zk 系统提供了更强的隐私保证,因为“未加密”的数据永远不会离开用户的设备。此外,未经所有者许可,任何人都不可能对这些数据进行任何计算。这种强大的隐私保证的代价是可组合性较弱。
另一方面,FHE 具有更强的可组合性,但隐私性较弱。隐私风险源于信任具有全局 FHE 解密密钥的实体或少数实体。尽管存在这种风险,并且由于可组合性是加密货币的核心要素,FHE 可以在 DeFi 等许多重要用例中实现隐私。
MPC 实施提供了 zk 和 FHE 方法之间独特的中间地带。 MPC 允许对共享私有数据进行计算。因此,它比 ZKP 提供了更多的可组合性。然而,这种私有状态的计算仅限于一小部分参与者,并且不是未经许可的(与 FHE 不同)。
鉴于 ZKP、MPC 和 FHE 在应用速度上的差异,实际应用通常需要结合这些技术。例如,Renegade Finance结合了MPC和ZKP来构建暗池CLOB,同时保证参与者有足够的资金来支付他们的隐藏订单。同样,链上扑克游戏 zkHoldem 结合了 ZKP 和 FHE。
我们期望以隐私为中心的网络能够在幕后结合这些技术,为这些生态系统的开发人员提供无缝构建应用程序所需的所有工具。例如,Aztec 可以在网络中结合某种形式的 MPC 来处理共享的私有状态。同样,Inco Network可以利用 ZKP 来允许私有地址和私有交易历史。
怀揣着以隐私为中心的未来愿景,Alliance 期待支持创始人建设这个未来。如果您在此域中进行构建,请联系Alliance并申请。