目录
- 引言
- [一、 设置 Remix](#一、 设置 Remix)
-
- [步骤 1: 连接到 Remix 中的 Zama 插件](#步骤 1: 连接到 Remix 中的 Zama 插件)
- [步骤 2:安装 Zama 插件](#步骤 2:安装 Zama 插件)
- [二、将您的钱包连接到 Remix](#二、将您的钱包连接到 Remix)
-
- [步骤 1:设置 Sepolia 测试网](#步骤 1:设置 Sepolia 测试网)
- [步骤 2:连接到 Zama 插件](#步骤 2:连接到 Zama 插件)
- [步骤 3:将钱包连接到 Remix](#步骤 3:将钱包连接到 Remix)
- [三、部署 ConfidentialERC20](#三、部署 ConfidentialERC20)
-
- [步骤 1:设置合约](#步骤 1:设置合约)
- [步骤 2:编写合约](#步骤 2:编写合约)
-
- [2.1 基本合约结构](#2.1 基本合约结构)
- [2.2 增强功能](#2.2 增强功能)
- [步骤 3:编译合约](#步骤 3:编译合约)
- [步骤 4:部署合约](#步骤 4:部署合约)
- 四、与合约交互
-
- [步骤 1:连接已部署的合约](#步骤 1:连接已部署的合约)
- [步骤 2:将代币铸造到自己的账户](#步骤 2:将代币铸造到自己的账户)
- [步骤 3:验证总供应量](#步骤 3:验证总供应量)
- [步骤 4:查看您的余额](#步骤 4:查看您的余额)
- [步骤 5:转移代币](#步骤 5:转移代币)
- [步骤 6:验证更新的余额](#步骤 6:验证更新的余额)
- 总结
引言
随着区块链应用越来越普及,数据完全公开和可见性成为隐私保护的一大挑战。而 Zama 的 fhEVM(Fully Homomorphic Encryption EVM) 解决了这一难题:它允许开发者使用熟悉的 Solidity 写智能合约,同时通过 全同态加密(FHE) 确保所有敏感数据(如余额、交易金额)都始终以加密形式存在,即使链上的验证者也无法读取。fhEVM 不仅保证隐私性,而且保持合约间的可组合性,并支持端对端的加密计算。它目前已在 Sepolia 测试网 上部署了协处理器,未来还将扩展至 Ethereum 主网、Base 等多个 EVM 兼容链,使开发者能够打造私密化 DApp、加密代币、隐私拍卖和更多创新场景。
ZAMA 官网:https://docs.zama.ai/fhevm/0.6/getting-started/overview-1/remix/interact
ZAMA Github仓库:https://github.com/zama-ai/fhevm-hardhat-template
一、 设置 Remix
本指南可帮助您在官方 Remix IDE 中设置 Zama 插件 ,从而使用 fhEVM 实现智能合约的无缝开发和管理。
先决条件
在开始之前,请确保您拥有以下内容:
- Web 浏览器 (例如 Chrome、Firefox)。
- 基本熟悉 Ethereum 智能合约 。
- 加密钱包 (在本教程中,我们建议使用 MetaMask)。
步骤 1: 连接到 Remix 中的 Zama 插件
Zama 插件允许您直接在 Remix 中与机密合同进行交互。要进行设置,请执行以下作:
导航到 Remix IDE 以打开 传送🚪
在左侧边栏中,单击 Plugin Manager。
在 Plugin Manager 中,选择 Connect to a Local Plugin。
步骤 2:安装 Zama 插件
使用以下配置:
插件名称 (必填) : 输入 Zama。
URL(必填):输入 https://remix.zama.ai/。
连接类型 (必选):选择 iframe
在 remix 中的位置 (必需):选择 Side Panel
单击 OK。
二、将您的钱包连接到 Remix
在本指南中,您将学习如何在 Remix IDE 中连接您的钱包和 Zama 插件 ,以便与 fhEVM 智能合约进行交互。
先决条件
在开始之前,请确保您具备以下条件:
-
已安装 MetaMask 或其他兼容以太坊的钱包。
-
在 Remix IDE 中安装的 Zama 插件 ( 请参阅设置 Remix)
请注意,当使用 Remix 连接钱包时,如果安装了多个钱包扩展(例如 MetaMask、Phantom),则可能会出现问题。这是 Remix的一个已知问题,可能会影响钱包连接功能。
如果您遇到错误,请考虑仅将 MetaMask 保留为活动钱包扩展,删除其他钱包扩展,并刷新 Remix cookie 并尝试重新连接。
步骤 1:设置 Sepolia 测试网
如果您使用的是 Metamask,则应预先配置 Sepolia 测试网。请按照以下步骤进行设置:
①打开 MetaMask。
单击左上角的 network 下拉菜单 ,然后选择 Sepolia Test Network。
确保有可用的 Sepolia ETH。如果没有足够的 ETH,请使用 Sepolia 水龙头申请免费的 SepoliaETH 进行测试:
Alchemy Faucet 传送🚪
QuickNode Faucet 传送🚪
如果 Sepolia 不可见: 转到设置 > 高级 。
将 Show test networks (显示测试网络 ) 切换为 ON。
如果您的钱包中没有预先配置 Sepolia,请手动添加它: 打开钱包的网络设置 。单击 Add network (添加网络 ) 或 Add network manually (手动添加网络 )。
输入以下详细信息: 网络名称 :Sepolia RPC
URL:(由您的节点提供商提供,例如 Alchemy 或 Infura)
链 ID:11155111
货币符号 :SepoliaETH
区块浏览器 URL:https://sepolia.etherscan.io
步骤 2:连接到 Zama 插件
Zama 插件提供 Zama 协处理器 - Sepolia 配置 ,确保 Remix 和钱包正确设置以与 fhEVM 智能合约交互。
要完成配置,请执行以下步骤:
① 从侧面板打开 Remix 中的 Zama 插件 。
② 单击 Connect your wallet(连接您的钱包)。
③ 在 MetaMask 中确认连接。
④ 在 Zama 插件中,选择 Zama 协处理器 - Sepolia。
⑤ 单击 Use this configuration 以完成设置。
成功后,应该会在终端中看到绿色文本,指示配置已准备就绪。
注意一定要连接 Zama 插件。
步骤 3:将钱包连接到 Remix
按照以下步骤将您的钱包连接到 Remix:
① 打开 Remix 并导航至 Deploy & run transactions。
② 在 Environment (环境 ) 下,选择 Injected Provider - MetaMask (注入的提供程序 - MetaMask)。
③ MetaMask 将提示连接请求。单击 Connect 以继续。
④ 在 Account 中选择您的钱包地址 。
三、部署 ConfidentialERC20
在本教程中,您将学习如何使用 Zama 的 fhEVM 部署机密代币合约。我们将创建 MyConfidentialERC20.sol 来演示基本功能。
先决条件
在部署智能合同之前,请确保满足以下条件:
-
安装的 Zama 插件安装在 Remix IDE 中(请参阅步骤 1)。
-
您的钱包已连接到 Sepolia 测试网 (请参阅第 2 步 )。
步骤 1:设置合约
首先,让我们为我们的机密 ERC20 合约创建一个文件:
① 打开 文件资源管理器 从侧面菜单。
② 导航到 contracts 文件夹。
③ 单击 Create new file 图标。
④ 将文件命名为 MyConfidentialERC20.sol,然后按 Enter。
步骤 2:编写合约
2.1 基本合约结构
基础结构包括导入 Zama 的库和连接到 Sepolia 的 fhEVM 配置。
将以下代码复制到您刚刚创建的 MyConfidentialERC20.sol 中:
cpp
// SPDX-License-Identifier: BSD-3-Clause-Clear
pragma solidity ^0.8.24;
import "fhevm/lib/TFHE.sol";
import "fhevm/config/ZamaFHEVMConfig.sol";
contract MyConfidentialERC20 is SepoliaZamaFHEVMConfig {}

Remix 会在您键入时自动保存任何更改。保存后,它会导入以下库:
TFHE.sol
:Zama 的 fhEVM 的核心 Solidity 库。它支持像 euint64 这样的加密数据类型,保护加密作,例如加法和比较,并允许访问控制。
SepoliaZamaFHEVMConfig
:一个配置合约,可自动为 Sepolia 测试网上的实时加密作设置所需的配置。
2.2 增强功能
接下来,我们将通过导入 fhevm-contracts 库来增强我们的 Contract。
fhevm-contracts 是一个 Solidity 库,专为开发人员使用 fhEVM 轻松开发机密智能合约而设计。它提供:
即用型机密合约 :具有 FHE 功能的通用代币标准的预构建实现
基础合同 :用于创建自定义机密智能合约的基础构建块
扩展 :可以添加到基本合同的其他功能和实用程序
测试实用程序 :帮助测试支持 FHE 的智能合约的工具
fhevm-contracts 库包括 ConfidentialERC20Mintable 合约,它是 ConfidentialERC20 的扩展,具有铸造功能,提供:
-
私人令牌传输和加密余额
-
授权地址的铸造功能
-
完全兼容 ERC20
它继承了所有基本的 ConfidentialERC20 功能,同时增加了安全的令牌创建和分发功能。
要使用 ConfidentialERC20Mintable 合约,只需使用以下代码更新您的 MyConfidentialERC20.sol 即可:
cpp
// SPDX-License-Identifier: BSD-3-Clause-Clear
pragma solidity ^0.8.24;
import "fhevm/lib/TFHE.sol";
import "fhevm/config/ZamaFHEVMConfig.sol";
import "fhevm-contracts/contracts/token/ERC20/extensions/ConfidentialERC20Mintable.sol";
contract MyConfidentialERC20 is SepoliaZamaFHEVMConfig, ConfidentialERC20Mintable {
constructor(string memory name_, string memory symbol_) ConfidentialERC20Mintable(name_, symbol_, msg.sender) {}
}
步骤 3:编译合约
现在合约已经准备好了,下一步就是编译它了:
① 选择 MyConfidentialERC20.sol。
② 转到 Remix 中的 Solidity 编译器 。
③ 单击 Compile。
如果成功,您将在 Solidity 编译器上看到一个绿色的对号,指示"编译成功"

步骤 4:部署合约
现在,合约已准备好部署:
① 确保环境设置正确
-
环境: 注入的 Provider - Metamask
-
帐户: 您的钱包地址
② 展开 Deploy 部分。
③ 填写构造函数参数:
-
Name:您的令牌名称(例如,"My Private Token")。
-
Symbol:代币符号(例如,"MPT")。
④ 单击 Transact 并在 MetaMask 中确认交易。
成功部署后,您的合同将显示在 Deployed contracts (已部署的合同 ) 下。您还可以通过点击合约地址在 Etherscan 上查看您的合约。
四、与合约交互
使用 Remix 部署您的第一个 fhEVM 合约后,本指南将向您展示如何使用 Zama 插件在 Remix 中直接与它进行交互。
先决条件
-
在与已部署的合约交互之前,请确保满足以下条件:
-
部署已完成 :您已成功部署 MyConfidentialERC20 合约(请参阅第 3 步 )。
-
MetaMask 钱包 :您的 MetaMask 钱包已连接到 Sepolia 测试网(请参阅第 2 步 )。你可能想准备一个额外的钱包作为接收者来模拟转账功能。
-
Remix 中的 Zama 插件 :Zama 插件已安装并在 Remix 中访问(请参阅步骤 1)。
步骤 1:连接已部署的合约
要直接在 Remix 中执行交易,合约需要连接到 Zama 插件 :
① 从侧边栏打开部署并运行事务
② 在 "Deployed Contract(已部署的合约 )"中,复制刚刚部署的 MYCONFIDENTIALERC20 合约的地址。
③ 从侧边菜单打开 Zama 插件 。
④ 将合约地址粘贴到 Deploy 部分下的 "At address" 字段中。
⑥ 单击 At address。
如果地址输入正确,MyConfidentialERC20.sol 合约将显示在 Zama 插件内的" 已部署合约 "中。
单击以展开合约,您将看到与合约的所有功能交互的界面。 机密 ERC20Mintable 支持所有标准 ERC-20 函数,但适用于加密值,包括:
-
transfer:安全地传输加密的 Token。
-
approve:批准用于支出的加密金额。
-
transferFrom:代表另一个地址转移代币。
-
balanceOf:返回账户的加密余额。
-
totalSupply:返回代币总供应量。
步骤 2:将代币铸造到自己的账户
在这里,你可以向您的账户铸造机密的 ERC20 代币:
① 从 MetaMask 复制您的钱包地址。
② 在 Zama Plugin 中, 点击展开您的合约的 mint 功能。
③ 输入您的钱包地址和要铸造的代币数量(例如,1000)。
④ 单击 Submit。
⑤ 在 MetaMask 中确认交易。
一旦 sccussful,您应该会在终端中看到该消息。
注意!这里是在ZAMA的插件中!!!
步骤 3:验证总供应量
成功铸造交易后,单击 totalSupply 以反映铸造的代币(例如,1000)
步骤 4:查看您的余额
要验证您的账户余额:
① 单击以展开 balanceOf 函数。
② 输入您的钱包地址。
③ 单击 Submit (提交 ) 以验证您的账户余额。
您的余额使用 FHE 存储为加密数据。除您之外,其他人无法查看 。
如果要以明文形式查看余额:
-
单击重新加密选项
-
在 Metamask 中确认交易
您可以看到密文已解密,您的余额是您刚刚铸造的金额。
步骤 5:转移代币
要将机密的 ERC20 代币转移到另一个账户:
① 复制接收者钱包的地址。
② 点击 transfer 展开功能,设置以下参数:
-
To:输入 reveiver 的钱包地址。
-
encryptedAmount:指定要转账的金额(例如 1000)。选择 euint64。
-
inputProof:选中输入框。
③ 单击 Submit 继续。
④ 在 MetaMask 中确认交易。
如果成功,您应该会在终端中看到该消息。
转移代币记得一定要点击 input
!!!
步骤 6:验证更新的余额
转账后,可以验证更新后的账户余额:
再次使用 balanceOf 函数查看原始账户的更新余额(请参阅第 5 步:检查您的余额 )。
执行重新加密以确认更改,会在您的账户中看到剩余的令牌。(例如,剩余 900 个令牌)。
总结
通过 Zama 的 fhEVM 在 Remix 中连接 Sepolia 测试网,使用 Zama 插件部署一份 MyConfidentialERC20 隐私代币合约,该合约基于 ConfidentialERC20Mintable 扩展,继承了加密余额、私密转账和 mint 功能。部署后,你可以通过插件界面执行 mint、transfer、balanceOf 与 totalSupply 等加密操作,还能用 fhevmjs 客户端脚本进行加密交易和重新加密查询。