EIP-1271 详解

  • CowSwap
  • 发布于 4小时前
  • 阅读 54

EIP-1271(又名ERC-1271)是以太坊的一项改进,使智能合约能够验证签名,允许它们像传统的EOA钱包一样签署交易。EIP-1271 为智能合约解锁了大量功能,包括基于意图的交易、高级订单类型以及需要钱包签名的各种区块链交互,还介绍了EIP-1271 的原理和使用场景。

EIP-1271 详解

EIP-1271(也称为 ERC-1271)是以太坊的一项改进,它使智能合约能够验证签名,从而允许它们像传统的 EOA 钱包一样签署交易。

虽然 EIP-1271 最初看起来像是小众的技术实现细节,但该标准为智能合约开启了一个全新的功能世界,包括基于意图的交易、高级订单类型以及每一种需要钱包签名的区块链交互。

什么是 EIP-1271

EIP-1271 作为“合约的标准签名验证方法”,它允许智能合约验证代表给定合约的签名是否有效 —— 外部所有账户(EOA)已经内置了此功能。

在 EIP-1271 之前,智能合约可以发送交易,但它们无法像传统钱包那样签署消息。 EOA 有私钥,它们使用私钥进行签名,以验证消息来自该特定钱包。另一方面,智能合约没有私钥;因此,引入 EIP-1271 作为智能合约验证签名的标准方法,使它们也能够签署消息。

EIP-1271 与 ERC-1271

“EIP-1271”和“ERC-1271”有时可以互换使用,作为指代同一概念的术语。以太坊通过提案流程接受对以太坊网络进行更改的想法,因此得名“以太坊改进提案”(EIP)。另一方面,“ERC”代表“以太坊征求意见稿”,并被分配给添加到以太坊网络中,但不会更改底层协议本身的条目。

这意味着“EIP-1271”更准确地称为“ERC-1271”,因为此添加不会更改协议功能。然而,如前所述,这些术语经常互换使用。

为什么 EIP-1271 如此有用?

在过去的几年里,以太坊见证了利用 ERC-1271 签署消息的专用智能合约的蓬勃发展。签名消息对于各种事情是必要的,包括使用链下订单簿在去中心化交易所上下订单、验证给定的钱包是否属于用户等等。

然而,启用 ERC-1271 的智能合约开启了一整套新的用例。这是因为 ERC-1271 的“isValidSignature”方法可以接受任何任意的订单逻辑,将智能合约钱包变成可以根据链上条件自动签署消息的自主代理

EIP-1271 的用例

让我们来看看 ERC-1271 使智能合约成为可能的各种用例。

链下订单簿

ERC-1271 最常见的用途之一涉及去中心化交易所(DEX)的订单。一些交易所,如 CoW Protocol 和 Matcha,使用链下订单簿来收集签名消息,然后再将它们变成订单,从而实现额外的优化。为了使智能合约能够使用这些系统进行交易,它们需要 ERC-1271 来验证签名。

特别是限价单是 DEX 订单的一种常见类型,它依赖于链下订单簿,因此智能合约需要 ERC-1271 才能下限价单。

签名即验证

身份验证是 web3 中的必需品。

许多 web3 应用程序要求用户签署一条消息,以证明他们控制着连接的钱包,以便使用该应用程序。与此同时,OpenSea 和 Rarible 等 NFT 市场要求用户签署消息才能出价、更新个人资料图片以及执行其他无需 Gas 费的交易。

在这两种情况下,智能合约钱包都利用 ERC-1271 来签署验证消息。

智能合约的意图

许多 DeFi 解决方案已经开始依赖意图来为用户提供更好的价格、MEV 保护、高级订单类型以及许多其他好处。

CoW Protocol 是一种meta DEX聚合器,它率先推出了许多意图用例,所有这些用例都依赖于签名消息。常规 EOA 订单会提前签名,但由于 ERC-1271,智能合约订单可以将订单签名推迟到结算时间,并检查神谕价格、当前余额、区块时间等条件是否满足,然后再进行交易。这开启了许多独特的交易策略,这些策略只能通过智能合约钱包使用。

用于安全交易的 Milkman

Yearn.fi 团队与 CoW Grants 计划合作,推出了 Milkman,以简化 DAO 交易并保护它们免受 MEV 的侵害。DAO 治理流程意味着在提出交易和实际执行交易之间会经过很长的时间。在此期间,市场可能会发生变化,使交易失效,或者更糟糕的是 —— MEV 搜索者可能会等待确切的交易时间并操纵价格来利用交易。

Milkman 提供了一种解决方案,允许 DAO 指定一个价格源,智能合约会在执行时检查该价格源,并根据资产的最新价格进行交易。

这意味着 DAO 不再需要提前提交执行价格,而是可以利用智能合约和 EIP-1271 来创建有条件订单,其价格在执行时确定。

高级订单类型

CoW Protocol 上的智能合约签名允许许多高级订单类型。一个值得注意的例子是 CoW Protocol 的 TWAP 订单,它使用 ERC-1271 智能合约签名以均匀的时间间隔自动下订单。

程序化订单框架

CoW Protocol 的程序化订单框架充分利用了 ERC-1271,允许任何人为任何类型的订单编写自定义订单逻辑。

程序化订单会根据链上条件无限期地执行到未来。这些条件可以包括任何任意逻辑,包括检查链上价格、智能合约钱包余额、区块时间、交易量等等。

已经有许多已部署的启用 ERC-1271 的程序化订单的用例,包括:

  • 自动化 DAO 运营,包括工资单、资金库多元化和费用收取
  • 基于智能合约钱包中资产状态的投资组合再平衡
  • 特殊订单类型,包括止损、定时生效和止盈

任何需要签名的应用程序

我们已经介绍了许多需要签名消息的用例,但 ERC-1271 可能会实现数量不受限制的用途…… 任何时候智能合约想要使用需要钱包签名的应用程序时,它们都需要 ERC-1271。

以下是一些需要签名的最终示例:

  • 无 Gas 交易:一些利用意图的去中心化交易所已经开始提供“无 Gas 交易”,该功能允许用户进行交易而无需支付 ETH 中的 Gas 费。例如,在 CoW Protocol 上,所有交易都以出售代币支付 Gas 费,并利用签名消息来指定订单详细信息。

  • 原生代币流:在 CoW Protocol 上,用户可以使用 ETH 原生代币进行交易,而无需使用 ERC-20“WETH”封装版本。签名消息启用了此功能,该消息指定了订单详细信息,而有担保的第三方(求解器)负责执行。

  • Web3 登录:Dynamic.xyz 等服务构建了帐户抽象功能,允许用户仅使用传统的 web2 电子邮件地址即可使用去中心化应用程序。这些服务在使用智能合约钱包提供完整的签名功能时,严重依赖 ERC-1271。

EIP-1271 的工作原理

随着 ERC-1271 的引入,智能合约现在可以定义一个“isValidSignature”方法,该方法确定智能合约验证签名和执行交易所需的条件。

此实现使智能合约在签署交易时比 EOA 更具优势。这是因为“isValidSignature”方法可以包括任何任意逻辑,允许每个智能合约定义其自己的参数来生成有效的签名。

返回有效“isValidSignature”的一些示例标准包括:

  • 来自一组硬编码 EOA 地址的签名(在 Safe 的多重签名模型中使用)
  • 链上条件,例如订单之间的时间间隔或达到给定的预言机价格

如果智能合约的所有者想要将订单放置委托给其他人,他们可以在“isValidSignature”中编写验证签名所需的条件。每当有人调用智能合约时,它将检查这些条件,并且仅在满足这些条件时才执行。

![1-eip-1271-explained.webp](data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 1 1' preserveAspectRatio='none'><rect width='1' height='1' fill='%23f0f0f0' /></svg>)

ERC-1271 的“isValidSignature”方法

该方法接受一个“bytes32 hash”,它代表一个订单哈希,以及一个任意的字节数组,签名条件就放在这里。该数组可以是任何东西 —— 来自智能合约所有者或委托人的 EOA 签名、智能合约检查预言机或链上状态以确定是否应执行订单,或任何其他任意逻辑。

最后,“isValidSignature”方法返回一个响应,该响应确定是否应执行订单。

从本质上讲,整个签名验证过程如下所示:

![2-eip-1271-explained.webp](data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 1 1' preserveAspectRatio='none'><rect width='1' height='1' fill='%23f0f0f0' /></svg>)

ERC-1271 的签名验证过程

我们创建一个需要签名的订单

![3-eip-1271-explained.webp](data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 1 1' preserveAspectRatio='none'><rect width='1' height='1' fill='%23f0f0f0' /></svg>)

该订单生成一个订单哈希

![4-eip-1271-explained.webp](data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 1 1' preserveAspectRatio='none'><rect width='1' height='1' fill='%23f0f0f0' /></svg>)

调用智能合约的“isValidSignature”方法,并将哈希和签名作为参数传入

EIP-1271:助力智能合约交易的未来

随着以太坊的采用率不断提高,交易者的需求变得越来越复杂,这使得传统 EOA 的内置功能黯然失色。ERC-1271 为使用智能合约进行交易开辟了一套新的原语,这些合约可以创建自主的、有条件的订单,从而为用户提供更大的交易能力。

CoW Protocol 处于依赖 ERC-1271 的创新前沿,你现在就可以通过在 CoW Swap 上进行交换或通过程序化订单框架(也称为 ComposableCoW)开发自定义解决方案来利用新的订单类型。

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

0 条评论

请先 登录 后评论
CowSwap
CowSwap
江湖只有他的大名,没有他的介绍。