SUAVE 是由 Flashbots 开发的去中心化项目,它通过集成可信执行环境(TEE)来解决 MEV(最大化可提取价值)过程中遇到的密钥管理和多方信任等问题。除了处理 MEV 问题,SUAVE 还具备多种潜在应用场景。本篇文章将从开发者的角度,深入探讨 SUAVE 链的核心特性及其带来的新机遇。
SUAVE 代码库概览
SUAVE 项目基于以太坊扩展,天然兼容 EVM(以太坊虚拟机)。在 GitHub 上,你可以找到几个关键项目:
SUAVE-geth:在 geth 的基础上扩展,加入了加密计算环境和相关的预编译合约。特别是增加了标准 HTTPS 请求的预编译,使得开发者能够在 TEE 环境中访问其他网络。此外,还提供了用于处理加密参数和信息存储的功能。
SUAVE-std:为开发者提供了便利的工具库,包括处理 HTTP 请求的封装和 ChatGPT 接口的实现。通过 TEE 环境保证 API 密钥的安全,简化了开发过程。
SUAVE-examples:包含应用开发的示例和教程,帮助初学者快速上手 SUAVE 的应用开发。
SUAVE 开发实践
SUAVE 是在以太坊基础上扩展的,其执行环境称为 MEVM(Modified Ethereum Virtual Machine)。开发者可以使用 Solidity 进行智能合约开发,但在 SUAVE 环境中,合约能够利用 TEE 的加密计算功能。
关键的 MEVM 预编译合约
confidentialInputs:接受加密的私密信息,如私钥和 API 密钥。信息在传输过程中全程加密,确保明文仅在 TEE 环境中出现。
confidentialStore:用于存储私密信息。当信息不再需要参与计算时,可以存储起来以备后续使用。
confidentialRetrieve:在需要私密信息进行计算时,从 TEE 环境中检索明文数据。
应用场景
私密信息安全存储:允许用户上传私钥并由第三方进行签名操作,但第三方无法获取明文私钥。
跨链操作:通过工具集中的 gateway 库进行跨链信息读取,使用 HTTP 请求与其他链节点交互。
私有 bytecode 库:将 Solidity 编译后的 bytecode 作为私密参数上传并存储,在需要时进行部署和调用,形成私有的智能合约库。
SUAVE 链的独特性
SUAVE 链是实现了 MEVM 的一条链,兼容 EVM 的标准资产如 ERC20 和 ERC721。其独特之处在于能够处理链下操作并保证链上状态的一致性。例如,可以编写智能合约记录条件,并根据其他链网络节点的结果进行资产转移。
MEV 处理
SUAVE 支持 MEV 交易的 bundle 处理,能够在私密环境中灵活定义业务。Flashbots 的 relay 节点可以处理这些 bundle 交易,并提供 MEV 相关奖励。
SUAVE 开发工具与基础设施
SUAVE 链的智能合约开发与以太坊类似,可以使用 ether.js 和 web3.js 等工具。然而,涉及 confidential 环境的计算时,需要使用 SUAVE 提供的 SDK(Go 和 TypeScript)。智能合约的部署可以在 SUAVE 的测试网(Toliman)上进行,过程与以太坊相似。
Kettle 执行单元
Kettle 是 SUAVE 的 TEE 运行环境,包括 MEVM 节点和私密数据存储。Kettle 负责处理 confidential compute requests(CCR),以及私密数据的存储和检索。开发者需要注意 Kettle 地址,以确保 CCR 请求的正确性。
保护私密数据
在测试网 Toliman 上,Kettle 的 TEE 环境保障尚不完全,因此开发者需要特别注意保护私密数据。
总结
SUAVE 链通过引入 TEE 环境,为应用开发带来了强大的能力,特别是在隐私保护和跨链操作方面。尽管存在挑战,如 Kettle 的安全性和共识机制的有效性,SUAVE 链的设计为未来区块链应用提供了广阔的想象空间。开发者应持续关注 SUAVE 的进展,以便充分利用其独特的功能和潜力。