fhEVM 协处理器介绍:在以太坊、Base 和其他 EVM 链上运行 FHE 智能合约

  • ZamaFHE
  • 发布于 2024-12-07 10:39
  • 阅读 12

Zama发布了fhEVM Coprocessor,这是一种允许开发者在任何EVM链上构建保密智能合约的工具,无需更改底层协议。它通过符号执行和阈值解密技术,实现了在加密数据上运行智能合约,同时保证了高性能和可扩展性,并提供了使用Solidity进行开发的简易性。

博客

/

公告

fhEVM

fhEVM 协处理器介绍:在 Ethereum、Base 和其他 EVM 链上运行 FHE 智能合约

2024 年 12 月 6 日

 -

Rand Hindi


验证,而非信任。 这一直是区块链开发十多年来的核心理念,也是围绕共识、ZK、乐观 Rollup 等所做一切工作的基础。但要求状态更新具有公共可验证性的一个主要问题是,所有链上数据都需要公开可用,这造成了一个看似不可能的两难境地:要么使用公共区块链而没有保密性,要么使用私有区块链而没有可验证性。虽然一些基于 ZK 的协议提供了一定程度的保密性,但它们缺乏使区块链独一无二的最基本特征:可组合性。

为了解决这些问题,Zama 创建了 fhEVM:一种利用 FHE 的新型协议,可在 EVM 链上实现保密的智能合约:

  • 数据(交易输入和链上状态)是加密的:任何人都无法看到它,甚至包括验证者。
  • 加密状态是完全可组合的:智能合约可以在加密数据上运行,就像在明文数据上运行一样,这要归功于 FHE。
  • 隐私是可编程的:智能合约定义了谁可以解密数据,从而可以在链上管理访问控制。网络的解密密钥使用阈值 MPC 协议进行去中心化,避免了信任中心化机构的需要。

我们的第一个实现,在一年前发布,可以处理大约每秒两笔交易,并且需要验证者运行支持 FHE 操作的 EVM 修改版本。虽然这种集成对于新的链或rollup来说很容易,但它阻止了现有的链,如 Ethereum、Base 或 Solana,在没有重大升级和减速的情况下从 FHE 中受益。直到现在。

fhEVM 协处理器

今天,我们宣布 Zama 迄今为止最令人兴奋的产品:fhEVM 协处理器。它允许开发人员在任何 EVM 链上构建保密的智能合约,包括那些本身不支持 FHE 的链,而无需更改底层协议。

作为开发人员,你已经可以使用我们的 Sepolia 协处理器测试网开始构建,Ethereum 和许多其他生态系统也将很快跟进。

我们还进行了重大的性能改进,现在可以处理接近每秒 20 笔交易,比一年前增加了十倍,超过了过去 10 年 Ethereum 的平均吞吐量。换句话说,我们可以端到端加密运行 Ethereum。事实上,我们的新架构具有很强的可扩展性,我们有信心在不久的将来能够实现每秒数百甚至数千笔 FHE 交易,只需添加更多硬件即可。

为了实现这一点,我们必须从头开始彻底改造 fhEVM 堆栈,基于两个核心思想:符号执行和阈值解密。

符号执行

符号执行背后的思想是,每当合约在 L1 上调用 Zama 的 TFHE 库来执行 FHE 操作时,L1 本身不会进行任何实际的 FHE 计算,而是生成一个指向结果的指针,然后由监控 L1 的链下服务器计算该结果。这类似于编程语言中惰性求值的工作方式,并允许将计算推迟到稍后的时间点(在本例中为区块最终确定时)。

这有很多优点:

  • L1 不需要运行昂贵的 FHE 操作或使用特定的硬件
  • L1 不会因 FHE 而减慢速度,因此非 FHE 交易可以像往常一样快速执行
  • FHE 操作可以并行执行,而不是按顺序执行,从而显著提高吞吐量。

由于 L1 上的所有密文都只是指针(实际数据存储在 DA 中),因此可以像常规操作一样链接 FHE 操作,而无需等待之前的操作完成。我们唯一需要等待计算密文的时间是必须解密密文时。

从安全的角度来看,协处理器所做的一切都是公开可验证的,任何人都可以重新计算密文以验证结果。最初,Zama 将运行协处理器,但从长远来看,目标是使任何人都可以竞争执行 FHE 操作,利用 ZK-FHE 来证明正确性。

阈值解密

为了保持链上的可组合性,所有密文都需要在同一公钥下加密。这意味着必须以防止非法解密密文的方式保护私有解密密钥。fhEVM 通过使用专用的阈值 MPC 协议(称为 KMS,即密钥管理服务)在多个参与方之间拆分私钥来解决此问题。

为了使用户或合约解密值,他们首先需要获得 L1 上生成该值的合约的明确允许。要从 KMS 请求解密,他们需要提供一个 Merkle 证明,证明他们被允许在 L1 上执行此操作。

在幕后,Zama 的 KMS 实际上是一个区块链 L1,顶部有一个方便的 Web API。每当应用程序通过 Zama 的 API 请求解密时,就会向 Zama 的 KMS 链进行交易,该链验证证明并运行阈值解密协议。我们将很快分享更多相关信息。

你只需要 Solidity

达到这一点很困难。fhEVM 可能是迄今为止被推向生产的最先进、最复杂的加密协议(我们甚至还没有谈到 KMS 的细节!)。但这正是将隐私和保密性带给链上每个人的必要条件,而又不损害安全性和用户体验。

说到用户体验,任何尝试构建保密 dapps 的人都知道这种体验有多么糟糕:你需要学习一种新语言,思考“电路”,然后在缓慢的笔记本电脑上进行繁重的计算,等等。使用 fhEVM,所有这些都不是必需的。你只需要知道 Solidity,就可以立即开始。例如,考虑一个具有加密余额的 ERC20 代币:

// SPDX-License-Identifier: BSD-3-Clause-Clear
pragma solidity ^0.8.4;

import "fhevm/lib/TFHE.sol";
import { IEncryptedERC20 } from "./IEncryptedERC20.sol";

abstract contract EncryptedERC20 is IEncryptedERC20 {

    uint64 internal _totalSupply;
    string internal _name;
    string internal _symbol;

    // Balances are encrypted
    mapping(address account => euint64 balance) internal _balances;

    /// @notice A mapping of the form mapping(account => mapping(address spender => allowance)).
    mapping(address account => mapping(address spender => euint64 allowance)) internal _allowances;

    // Transfer an encrypted amount
    function transfer(address to, einput encryptedAmount, bytes calldata inputProof) public virtual returns (bool) {
        // Verify the input is correct
        euint64 amount = TFHE.asEuint64(encryptedAmount, inputProof);

        // Check if the user can enough balance, otherwise set the transfer amount to zero
        ebool transferValue = TFHE.select(TFHE.le(amount, _balances[msg.sender]), amount, TFHE.asEuint64(0));

        // Make the transfer
        _balances[to] = TFHE.add(_balances[to], transferValue);
        _balances[from] = TFHE.sub(_balances[from], transferValue);

        // Allow users to see their balances, and the contract to update it
        TFHE.allow(_balances[to], to);
        TFHE.allow(_balances[from], from);
        TFHE.allowThis(_balances[to]);
        TFHE.allowThis(_balances[from]);

        return true;
    }
}

这仅涉及 3 个步骤:

  1. 使用 fhEVM javascript SDK 加密用户的传输金额,然后像往常一样提交交易。
  2. 通过将“uint”类型替换为它们的“euint”FHE 等效类型,将你的 ERC20 合约转换为 FHE 等效合约,然后授予用户解密其余额的权限。
  3. 使用 javascript SDK 解密用户的余额并显示它。

就是这样。它真的就是这么简单。你可以查看文档以获取更多示例。

FHE 是区块链的端到端加密

在区块链应用程序中构建保密性的能力不仅仅是个人隐私的问题。这是实现以前不可能实现的一整套用例的问题。以下是一些示例:

  • 保密的稳定币和代币。 你是否愿意与所有人分享你的银行对账单?可能不会。然而,这正是目前代币发生的情况。但是,使用 FHE,你可以保持余额、传输金额甚至资产的私密性,确保除了你之外,没有人知道你拥有多少。
  • 保密的交换。 DeFi 一直是区块链最成功的用例之一,但它存在两个主要问题:人们不喜欢分享他们拥有的所有内容,而 MEV 使最终用户在链上交换资产的成本很高。FHE 可以通过启用端到端加密交换来解决这两个问题,在这种交换中,金额和可能的资产始终保持私密。
  • 链上信用。 借钱需要收集敏感信息,例如信用评分、身份和财务报表。借助 FHE,这可以在链上实现,因为智能合约可以保密地使用所有数据来确定某人是否具有信用。
  • 保密的治理。 自区块链存在以来,人们一直在探索链上投票的想法,无论是对于 DAO 还是政府。但是,在链上公开投出选票可能会导致偏见、敲诈勒索或贿赂。使用 FHE,选票(和质押的代币数量)可以保持私密,确保只显示最终结果,而不显示个人选票。
  • 链上公司。 如果没有保密承诺,在链上管理公司是不可能的。实际上,诸如资本表、财务报表、董事会投票、客户和员工注册表之类的信息不应公开披露。借助 FHE,所有这些信息都可以保存在链上,从而允许智能合约自动化许多日常公司运营。
  • 用于代币销售的密封投标拍卖。 运行公开代币销售作为密封投标拍卖,以获得更好的价格发现。每个参与者都提交一个加密的投标,其中包含代币数量和他们愿意支付的每个代币的价格。当拍卖结束时,从最高到最低运行投标,直到所有代币都被“购买”。购买最后一个代币的价格是结算价格,无论他们的初始出价如何,所有出价较高的人最终都会实际支付该价格。
  • 可组合的链上身份。 在链下,我们一直都在使用我们的身份,从在线购买产品到预订机票。但是,在链上这样做会泄露敏感信息,例如你的姓名、地址、社会安全号码等。但是,使用 FHE,你可以在链上拥有一个完整的 DID+VC 系统,其中你的身份是加密的,同时与去中心化应用程序完全可组合。就像你可以拥有帐户抽象一样,你现在可以拥有身份抽象。

但是,如果我们超越这些呢?如果 FHE 是在链上运行一切的关键呢?从金钱、金融和身份到公司、选举和游戏,从人工智能、社交媒体和云服务,一直到整个国家及其政府——所有这些都可以在公共区块链上运行,同时进行端到端加密。我们将此愿景称为 HTTPZ:就像 HTTPS 将隐私带到线上一样,HTTPZ 将把隐私带到链上。

HTTPZ 的基础设施已经就绪。我们现在需要的是应用程序,因此,如果你是一名构建者,并且希望实现这一未来,如果你想成为 FHE 的先驱,请与我们联系!

附加链接

阅读更多相关文章

呼吁建设者:通过保密贷款将 DeFi 的下一个万亿级 Onboard \ DeFi 快速、开放且高效 - 但对于机构而言过于透明。如果它提供瑞士银行级别的隐私呢? 2025 年 2 月 20 日\ \ Jason Delabays

fhEVM

公告

Zama Bounty Program 第 7 季 \ 宣布 Zama Bounty Program 第 7 季,以及第 6 季的获奖提交。 2024 年 12 月 18 日\ \ Zama 团队

公告

Concrete Concrete ML FHEVM TFHE-rs

产品与服务

保护隐私的机器学习 保密的区块链 阈值密钥管理系统

开发者

博客 文档 GITHUB FHE 资源 研究论文 Bounty Program FHE STATE OS

公司

关于 FHE 简介 活动 媒体 职业 法律

联系方式

与专家交谈 联系我们 X Discord Telegram 所有社区频道

在电子时代,隐私对于一个开放的社会是必需的。隐私不是秘密。私事是不想让全世界知道的事情,但秘密是不想让任何人知道的事情。隐私是选择性地向世界展示自己的力量。如果双方有某种交易,那么双方都会记住他们的互动。每一方都可以谈论他们自己对这件事的记忆;谁能阻止它呢?人们可以制定法律来反对它,但言论自由,甚至比隐私更重要,对于一个开放的社会至关重要;我们不寻求限制任何言论。如果许多当事人在同一个论坛上交谈,每个人都可以与所有其他人交谈,并将关于个人和其他当事人的知识汇总在一起。电子通信的力量使这种群体言论成为可能,而且它不会仅仅因为我们可能希望它消失而消失。既然我们渴望隐私,我们就必须确保交易的每一方只知道该交易直接需要的知识。由于任何信息都可以被谈论,我们必须确保我们尽可能少地透露信息。在大多数情况下,个人身份并不重要。当我在商店购买杂志并将现金交给店员时,没有必要知道我是谁。当我要求我的电子邮件提供商发送和接收消息时,我的提供商不需要知道我在与谁交谈或我说什么或其他人对我说什么;我的提供商只需要知道如何将消息发送到那里以及我欠他们多少费用。当我的身份被交易的底层机制泄露时,我就没有隐私。我无法在这里选择性地展示自己;我必须始终展示自己。因此,开放社会中的隐私需要匿名交易系统。到目前为止,现金一直是主要的此类系统。匿名交易系统不是秘密交易系统。匿名系统使个人能够在需要时以及仅在需要时透露自己的身份;这是隐私的本质。开放社会中的隐私也需要密码学。如果我说了一些话,我希望只有我打算让其听到的人才能听到。如果我的言论内容对全世界都可见,我就没有隐私。加密是指示对隐私的渴望,而使用弱密码进行加密是指示对隐私的渴望并不强烈。此外,当默认设置为匿名时,为了有把握地揭示一个人的身份,需要用到密码签名。我们不能期望政府、公司或其他大型的、没有面孔的组织出于其善意而给予我们隐私。说起我们对他们是有利的,我们应该预料到他们会说。试图阻止他们的言论就是与信息的现实作斗争。信息不仅仅是想自由,它渴望自由。信息会扩展以填满可用的存储空间。信息是谣言的年轻、更强大的堂兄;信息比谣言更轻快,拥有更多的眼睛,知道更多,并且理解得更少。如果我们希望拥有任何隐私,就必须捍卫我们自己的隐私。我们必须团结起来,创建允许匿名交易发生的系统。几个世纪以来,人们一直用耳语、黑暗、信封、关着的门、秘密握手和信使来捍卫自己的隐私。过去的技术不允许强大的隐私,但电子技术可以。我们这些密码朋克致力于构建匿名系统。我们正在使用密码学、匿名邮件转发系统、数字签名和电子货币来捍卫我们的隐私。密码朋克编写代码。我们知道必须有人编写软件来捍卫隐私,而且由于除非我们都这样做,否则我们无法获得隐私,因此我们将编写它。我们发布我们的代码,以便我们的密码朋克同伴可以练习和使用它。我们的代码可供全世界所有人免费使用。我们不太关心你是否不批准我们编写的软件。我们知道软件无法被销毁,并且无法关闭广泛分散的系统。密码朋克谴责对密码学的规章,因为加密从根本上来说是一种私人的行为。事实上,加密行为将信息从公共领域中移除。甚至反对密码学的法律也只能达到一个国家的边界及其暴力的手臂。密码学将不可避免地遍布全球,随之而来的是它使之成为可能的匿名交易系统。为了使隐私得到广泛传播,它必须成为社会契约的一部分。人们必须走到一起,为了共同利益而部署这些系统。隐私的范围只延伸到社会上同伴的合作程度。我们这些密码朋克会认真对待你们的问题和顾虑,并希望我们能够与你们互动,以免我们自欺欺人。但是,我们不会因为某些人可能不同意我们的目标而改变我们的路线。密码朋克正在积极地使网络对于隐私更加安全。让我们齐头并进。前进。埃里克·休斯著。1993 年 3 月 9 日。

  • 原文链接: zama.ai/post/fhevm-copro...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
ZamaFHE
ZamaFHE
Zama是一家开源密码学公司,专注于为区块链和人工智能构建最先进的完全同态加密(FHE)解决方案。