如何在以太坊上发送私有交易

  • Alchemy
  • 发布于 2022-09-08 19:59
  • 阅读 9

本文介绍了 Flashbots API 如何通过私有交易来解决 MEV 中的 frontrunning 问题。MEV 指的是通过添加、审查或重新排列区块链交易来提取的利润,而 Flashbots API 允许开发者和交易者确保交易不在公共 mempool 中暴露,从而避免被抢先交易。文章还详细说明了如何使用 Alchemy 的 Flashbots API 发送和取消以太坊私有交易。

Alchemy 撰写

Brady Werkheiser 头像

Brady Werkheiser 审核

发布于 2022 年 9 月 7 日,阅读需 5 分钟


Flashbots API 克服了最大可提取价值 (MEV) 问题,例如抢先交易,使其成为私有交易的有用解决方案。MEV 指的是通过添加、审查或重新排序区块链交易而提取的利润。MEV 可能导致对交易者的抢先交易攻击,其中交易被抢先者复制并放置在 mempool 中原始交易之前。

Flashbots API 为构建者和交易者提供了机制,以确保交易无法在公共 mempool 中访问(即,在以太坊节点之间传播的待处理交易的公共池,矿工和区块构建者从中选择要挖掘的交易)。由于私有交易未发送到公共 mempool,因此它们受到抢先交易的保护。

在本文中,我们将详细介绍 MEV 背景下的抢先交易问题,演示 Flashbots API 如何防止抢先交易,并解释如何在以太坊上发送和取消私有交易。

什么是最大可提取价值 (MEV)?

最大可提取价值 (MEV) 指的是区块链网络中区块生产者基于其在区块中包含、审查或重新排列交易的能力而获得的潜在利润。

由于区块链不对区块的顺序或交易内容强制执行规则,因此区块生产者负责构建区块并将其添加到链中。这意味着区块生产者可以根据发送者愿意支付的费用来包含、排除和重新排序交易。

区块生产者在 MEV 下获得的利润包括来自交易和区块费用的“传统”利润以及“非传统”利润,例如:

  1. 交易重新排序 - 搜索者在其交易之前(抢先交易)、之后(后运行)或之前和之后(三明治攻击)插入其交易,以从套利机会中提取价值。

  2. 交易审查 - 审查攻击使搜索者能够通过发送首先被挖掘的竞争交易来拒绝确认交易。

这些机会主义技术已导致 MEV 成为一个价值数百万美元的行业。

矿工可提取价值 是最初表示这个概念的术语,但是,由于以太坊切换到权益证明模型,其中验证者而不是矿工质押 ETH 并生成区块,因此矿工可提取价值已被最大可提取价值所取代。

什么是抢先交易?

抢先交易,也称为优先级 Gas 拍卖 (PGA),是指观察 mempool 的实体识别出它想要复制的交易机会,并发送具有更高 gas 费用的竞争交易,以确保其交易包含在原始交易之前。

通过向区块生产者提交具有更高 gas 费用的交易,抢先交易者可以捕获另一个实体为自己识别的价值。区块生产者也可以选择省略原始交易,以便为自己捕获此交易机会。

抢先交易可能导致“滑点”,即预期收到的代币数量与实际收到的代币数量之间存在差异。当交易者抢先交易初始交易时,价格变动会在初始交易执行之前触发。这会导致初始交易失败,或者初始交易收到的代币数量较少。

抢先交易是 MEV 产生的主要问题之一,可能导致各种问题,包括降低区块链的安全性、使网络过载以及增加交易费用。

什么是 Flashbots?

Flashbots 是一个旨在减少因 MEV 产生的生存风险和负外部性的研发组织。 Flashbots 旨在通过以下三种方式减少 MEV 对用户的影响:

  1. 提高信息的透明度

  2. 实现 MEV 提取的民主化

  3. 将利润分配给系统参与者

Flashbots 组织分为三个核心工作:

  • Flashbots Auction,矿工和搜索者之间用于透明和高效的 MEV 提取的私有通信渠道。

  • Flashbots Data,一套用于减少信息不对称和提高 MEV 透明度的工具

  • Flashbots Research,一项协作和开放的研究工作,旨在解决 MEV 的各个方面。

Flashbots 是如何工作的?

虽然最初的 Flashbots 产品是 mev-geth,它是 go-Ethereum (geth) 客户端软件的一个分支版本,由挖矿节点用于构建区块,但 mev-boost 是 Flashbots 用来减少 MEV 负面影响的当前迭代。

MEV-Geth 提供了一种密封投标区块空间拍卖机制,用于传达交易订单偏好。它的设计确保了交易是无需许可的,没有任何中介机构可以审查交易。MEV-geth 还确保 MEV 提取是在没有不必要的链拥塞的情况下进行的。此外,MEV-geth 确保交易前隐私,其中交易仅在包含在区块中后才公开,并且交易失败隐私,其中失败的出价永远不会被包括在内。

Mev-geth 允许矿工将寻找 MEV 机会和构建最赚钱区块的工作外包给其他方,称为搜索者中继者

搜索者是专门的实体,他们寻找有利可图的 MEV 机会并将其传递给中继者。中继者接收捆绑包并在将其传递给矿工以包含在区块中之前验证交易。一旦矿工收到捆绑包,它就会包含在 Flashbots 私有交易池中以包含在区块中,而不是通过公共 mempool。

与 mev-geth 一样,mev-boost 允许无需许可的 MEV 提取。两者都允许 区块提议者 外包区块生产。但是,mev-boost 设计增加了 Builder API、区块构建者、托管和验证器的优势。

Builder API 是一件 mev-boost 中间件,可促进验证器和区块构建器之间的交互。Builder API 允许区块构建器将“执行负载标头”(区块总价值的加密承诺)发送给验证器进行签名。“执行负载标头”可防止验证器窃取区块内容并复制它以捕获 MEV。

区块构建器 是一个投资于资源密集型区块生产所需的专用硬件的实体。区块构建器从搜索者那里接收交易,并确保区块的利润尽可能高。

然后,托管从重播者那里接收区块内容,从而确保验证器的 数据可用性

最后,验证器 是质押的参与者,他们为某些Slot提出区块。一旦将区块添加到链中,验证器将收到交易费用和 MEV 提示。

什么是私有交易?

私有交易是直接发送给验证器或区块提议者而不是公共 mempool 的交易,是交易者避免将其交易暴露于抢先交易攻击的一种方式。 mempool 是一个共享的待处理交易池,以太坊对等网络上的所有节点都知道。池化的交易被选择由验证器包含在下一个区块中。

私有交易在公共 mempool 中不可见,而是直接发送给验证器,并且 交易在添加到链之前不会广播 到公共 mempool。因此,私有交易增强了交易者活动和策略的隐私性。

私有交易如何防止抢先交易?

由于私有交易未包含在公共 mempool 中,并且其交易详细信息(例如 gas、交易的代币和数量)对 MEV 机器人隐藏,因此抢先交易者无法抢先交易。

在不知道交易价值或抢先交易所需的 gas 的情况下,MEV 机器人没有经济动机来定位未知大小的私有交易,因为风险可能高于回报。

私有交易如何在以太坊上工作?

私有交易作为单个交易直接通过 Flashbots 发送到验证器,以绕过公共 mempool。 Flashbots 尝试将交易发送到验证器 25 个区块,用户无需监听下一个区块并自己重新发送交易。

如何发送私有以太坊交易

借助 Alchemy 的 Flashbots API,交易者能够通过 Alchemy 的 RPC 节点使用 eth_sendPrivateTransaction 端点发送私有以太坊交易。

在使用 Alchemy 的 RPC 节点发送私有以太坊交易之前,你将需要 创建一个 Alchemy 帐户 和 以太坊应用程序,以获取你的私有 API 密钥。

这是一个使用 eth_sendPrivateTransaction 方法的私有以太坊交易的示例:

curl --request POST \
     --url https://eth-mainnet.g.alchemy.com/v2/docs-demo \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
      "id": 1,
      "jsonrpc": "2.0",
      "method": "eth_sendPrivateTransaction",
      "params": [\
             {\
                   "tx": "<signed-tx>"\
             }\
      ]
}
'

如何取消私有以太坊交易?

如果取消请求通过与最初发送 eth_sendPrivateTransaction 调用相同的 Alchemy 应用程序/API 密钥发送,则可以使用 eth_cancelPrivateTransaction 方法 取消私有交易。

一旦交易从重播发送到矿工,Flashbots 就无法召回它。但是,Flashbots 可以取消提交未来区块的交易。

这是一个使用 eth_sendPrivateTransaction 方法的私有以太坊交易的示例:

curl --request POST \
     --url https://eth-mainnet.alchemyapi.io/v2/demo \
     --header 'Accept: application/json' \
     --header 'Content-Type: application/json' \
     --data '
{
      "id": 1,
      "jsonrpc": "2.0",
      "method": "eth_cancelPrivateTransaction"
}
'

结论

本文解释了抢先交易的问题以及 Alchemy 的 Flashbots API 如何帮助缓解它。我们演示了 Flashbots 的工作原理,以及如何使用 Alchemy 发送和取消私有以太坊交易。

Supercharged | Alchemy | Substack

获取免费的以太坊 RPC 和开发者工具 获取你的 API 密钥

📚 目录


  • 什么是最大可提取价值 (MEV)?
  • 什么是 Flashbots?
  • 什么是私有交易?
  • 如何发送私有以太坊交易
  • 如何取消私有以太坊交易?
  • 结论

分享:

概述卡片背景图

相关概述

精选内容卡片叠加层\ \ 以太坊\ \ 以太坊分片:区块链分片简介\ \ 什么是区块链分片,它与以太坊有何关系? 精选内容卡片叠加层\ \ 以太坊\ \ 什么是增强交易?\ \ 探索一种新的交易类型,保证交易被挖掘并针对 Gas 进行优化 精选内容卡片叠加层\ \ 以太坊\ \ 什么是以太坊承诺级别?\ \ 了解安全(已证明)、已完成和最新承诺级别

桌面部分背景图片

构建区块链魔法

Alchemy 将最强大的 web3 开发者产品和工具与资源、社区和传奇支持相结合。

获取你的 API 密钥

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

0 条评论

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