fhEVM v0.5 引入了许多重大增强,以提高应用程序中处理加密数据的安全性和效率,包括打包输入机制、增强的访问控制列表 (ACL) 以及更新的解密和重新加密过程。最重要的是,从 fhEVM v0.5 开始,Solidity API 进入稳定和最终版本,该版本将与未来版本和各种链兼容。
打包输入机制
新版本引入了输入打包,允许将多个明文值打包到单个密文中。此更新对于 fhEVM 的未来发展至关重要,特别是对于预期推出的经过验证的输入。
在示例中,inputProof 用作包含所有加密数据的密文。变量 param1、param2 和 param3 用作指针。要访问加密值,你需要使用函数 TFHE.asEuintXX 传递这些指针以及实际数据。此方法检索指向的加密值,使其可以在进一步的加密操作中使用。
function myExample( address account einput param1, uint id, einput param2, einput param3, bool isAllowed, bytes calldata inputProof ) { euint64 amount = TFHE.asEuint64(param1, inputProof); }增强的访问控制列表 (ACL)
借助 v0.5,管理密文权限从未如此强大。访问控制列表 (ACL) 允许开发人员定义哪些地址有权操作密文,从而确保更明确和安全地处理权限。
为此,我们引入了两个新函数来显式授予对加密数据的访问权限:TFHE.allow(ciphertext, account) 和 TFHE.allowTransient(ciphertext, account)。这些新函数将永久或临时存储帐户计算或解密此密文的权限。
// MySecret.sol function giveMySecret(einput encryptedSecret, bytes calldata inputProof) { // 创建我的密钥 euint16 mySecret = TFHE.asEuint16(encryptedSecret, inputProof); // 允许 SecretStore 合约临时操作 `mySecret` TFHE.allowTransient(mySecret, address(SecretStore)); // 使用 `mySecret` 调用 `storeSecret` SecretStore.storeSecret(mySecret); } // SecretStore.sol function storeSecret(callerSecret euint16) { // 验证调用者是否也有权访问此密文 require(TFHE.isSenderAllowed(callerSecret), "The caller is not authorized to access this secret."); // 存储此密文 secret = callerSecret; // 使此密文和当前合约的临时授权永久有效。 TFHE.allow(callerSecret, address(this)); }以前,将加密状态变量公开是有风险的,因为其他合约可能会访问和使用你的加密数据。但是,通过新版本,可以缓解此问题。现在,虽然合约可以访问任何密文Handle,但如果没有访问控制列表 (ACL) 中指定的适当权限,它就无法操作或使用加密数据。这确保了你的加密数据保持安全,即使它可以访问。
更新的解密和重新加密过程
通过利用链下服务,重新加密的安全性和效率得到了显着提高。此调整不仅增强了安全性,还通过委托此过程优化了加密操作的性能。
在以前的版本中,我们引入了异步解密,允许开发人员批量解密相同类型的多个解密。在 fhEVM v0.5 中,API 已升级为允许解密多种类型的批次:现在可以在同一回调中接收 ebool 和 euint64 的解密。有关更多详细信息,请参阅解密指南。
最终 API
fHEVM 在过去一年中得到了显着发展,并且通过这些新功能,我们很高兴地宣布 fhEVM v0.5 代表了 Solidity API 的最终版本。在 v0.5 上开发的所有合约都设计为与未来版本和各种链兼容,包括 L1 fhEVM 区块链和未来在非 FHE 链上运行的协处理器。这确保了长期的稳定性和广泛的可用性。
其他更改和改进
fhEVM v0.5 引入了一些其他更改和改进:
- 弃用旧函数: 函数 TFHE.reencrypt 和 TFHE.decrypt 已弃用,取而代之的是我们更新的文档中讨论的新函数。
- 新的权限模型: 现在通过新函数更明确地管理权限,从而增强了数据的安全性和控制。
- 打包的加密输入:所有加密输入现在都打包到单个密文中,从而减少了交易的大小。
如果你尚未尝试 fhEVM v0.5,请查看我们的文档并开始在 FHE 中构建机密智能合约!在下一个版本中,我们将为输入和新类型添加零知识证明。敬请关注!
其他链接
- 给 fhEVM Github 仓库 加星以支持我们的工作。
- 阅读 fhEVM 文档。
- 在我们的社区频道上获得支持。
- 参与 Zama Bounty Program 以获得现金奖励!
- 原文链接: zama.ai/post/fhevm-v0-5-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~