本文详细介绍了以太坊交易的类型和交易如何在以太坊网络中传播。文章涵盖了从待处理交易到已确认交易的各种状态,并深入探讨了以太坊的 P2P 网络如何通过 RLPx 和 Wire 协议实现节点间的安全通信和信息共享。此外,还讨论了 The Merge 后交易广播方式的变化,为开发者提供了宝贵的参考。
由 Alchemy 编写
由 Brady Werkheiser 审核
发布于 2022 年 9 月 7 日,阅读时长 6 分钟
交易是区块链上信息和价值交换的基础,对于开发者、交易员和爱好者来说,理解这一点至关重要。交易通过以太坊的去中心化点对点 (P2P) 网络使用各种网络协议(如 RLPx 和 Wire Protocol)传播,以确保区块生产者和验证者可以在 mempool 中找到待处理的交易。
本文将介绍以太坊交易类型,以及交易如何在以太坊节点网络中广播。
以太坊交易是一种合约流程,其中一个地址将 tokens 或资产发送到以太坊网络上的另一个地址。一个简单的以太坊交易示例是:一个人,Alice,将 1 ETH(以太坊上的原生 token)发送给她的朋友 Bob。
由于交易是构建区块链应用程序的基础,让我们来探讨一下以太坊交易中包含的信息。
在编程语言级别,发送者 Alice 带有全局变量 msg.sender,而接收者 Bob 带有变量 address(this),并且在双方之间发送的 tokens 数量,即 1 ETH,是 msg.value。
除了上述数据外,典型的以太坊交易通常包含以下详细信息:
签名 - 发送者初始化交易的批准印章
gasLimit - 交易可使用的最大 gas 量
Nonce - 特定交易的唯一标识符
Data - 交易描述或消息的可选部分
以太坊交易有多种类型,包括部署智能合约的交易、实体(即人类)之间的交易、智能合约之间的交易(内部交易),或者人类-智能合约交易的组合,例如使用 DeFi 协议。
在本节中,我们将重点介绍与交易在以太坊网络中的传播相关的不同类型的实体对实体交易状态。
Pooled 交易是 mempool 中尚未被挖掘的待处理交易(即单个节点的本地存储中的待处理交易)。
当两个节点建立共享连接时,每个节点的本地交易池的内容将被共享,以便每个节点都具有完整的待处理交易列表。
随着节点在以太坊 P2P 网络上建立更多的连接,发送到单个节点或多个节点的交易会更广泛地在网络中传播。
Mined 交易是从全局待处理交易池(即 mempool)中选择的已完成交易,并包含在已添加到区块链的新区块中。
由于链重组(reorgs),mined 交易可以具有多种承诺级别。在合并之前,交易区块具有一个 latest 承诺级别,该级别每区块递增(约 12 秒),而在合并之后,交易还可以被标记为 safe(也称为 justified)或 finalized,它们每 32 个区块递增(约 6 分钟)。
Safe 区块是不太可能被重组的区块,而 finalized 区块则极不可能被 reorged。
Dropped 交易是从全局 mempool 中删除的待处理交易。如果发送者的 gas 费用过低,或者交易的 nonce 出现错误,则可能发生 dropped 交易。
Replaced 交易是与 mempool 中的现有交易具有相同 nonce 的交易。当用户尝试增加其原始交易的 gas 价格以使其包含在下一个区块中时,最常使用 replaced 交易。当确认 replaced 交易时,原始交易将被丢弃。
Reinforced 交易是一种新的以太坊交易类型,它通过将交易重新传播到以太坊节点来增加交易获得验证的可能性,尤其是在高网络活动和 gas 价格波动期间。
Reinforced 交易是针对失败和 dropped 交易的解决方案。
除了 pooled、mined、dropped 和 replaced 以及 reinforced 交易之外,还有其他交易状态,包括:
Canceled Transactions - 一种取消原始交易的 replacement 交易类型
Confirmed Transactions - 已被挖掘并包含在区块链上的交易
EOA Transactions - 一个或多个外部拥有帐户 (EOA) 之间的交易,通常是人
Failed Transactions - 尝试过但未成功的交易
Internal Transactions - 两个智能合约之间的交易
Private Transactions - 直接发送给矿工的交易,绕过公共 mempool
Stuck Transactions - 无法挖掘的交易
Type 0 Transactions - 采用 EIP-1559 之前的交易
Type 2 Transactions - 遵守 EIP-1559 更新的交易
在点对点网络中,用户既是网络资源的消费者又是供应商。但是,并非所有 P2P 框架都相同,因此,共享、验证和广播信息的方式的机制对于理解整个以太坊网络至关重要。
在 P2P 网络上,信息通过节点共享和存储。截至撰写本文时,以太坊拥有超过 300,000 个完整节点。以下是关于如何添加新的完整节点、相关协议以及每个节点执行以处理、验证和确认以太坊链上新区块的特定功能的概述。
以太坊使用 bootnodes 来检测和发现网络上的新节点。一旦一个新节点愿意连接,它将向 bootnode 发送一个称为 PING 的初始化请求。然后,bootnode 使用绑定 PONG 消息进行响应。
一旦建立连接,节点会查询 bootnode 以向其提供附近的其他节点列表。由于以太坊将节点组织为二叉树中的叶子,因此距离的概念是指任何两个节点的 160 位 ID 之间的数值接近度。
一旦节点可以与可用的附近节点连接,bootnode 的功能就完成了。然后由 RPLx 协议促进同步任务。
RPLx 协议通过允许发送和接收数据包(即小块数据)来促进两个节点的同步。数据包使用 RLP 编码动态地进行成帧,以及加密和认证。
使用 RPLx,节点建立安全连接并相互验证。验证要求两个节点都发送一条认证消息,然后发送一条消息,其中包括端口、客户端和节点的 ID 以及协议和子协议。
一旦节点相互认证,它们就可以开始使用 Wire protocol 进行通信。这两个节点现在被认为是 peers,而 peers 是节点与整个以太坊网络通信的方式。
在此阶段,以太坊 P2P 网络上的一个新完整节点将与整个协议的状态保持一致,并开始交换数据。这里需要区分节点和客户端。尽管这两个术语经常可以互换使用,但客户端是允许节点读取以太坊区块链上的区块和智能合约的软件。
以太坊上的所有完整节点都使用 Wire protocol 执行三个基本任务:
同步
区块传播
待处理交易传播
同步分为链同步和状态同步。
在与链同步期间,peers 提供其可用区块的难度率和哈希值。具有最高难度率的客户端下载区块的 headers。另一方面,在状态同步期间,peers 验证数据的原创性并下载区块状态。
在区块传播期间,以太坊 P2P 网络上的区块被处理和广播。一旦有新区块,客户端将通过将其发送给它们的 peers 并批准该区块中的交易来验证它。
在客户端验证和处理区块后,节点必须将相同的内容广播到网络中的所有完整节点或 peers,从而使它们有机会质疑其有效性。
矿工有责任向链中添加新区块;因此,所有参与验证的节点都必须向矿工提供已处理的待处理交易。
为了开始这种交换,每个 peer 都必须将它所拥有的待处理交易的哈希值发送给另一个 peer。由于私有交易是直接发送给矿工或区块生产者的,因此节点将无法发现传播这些类型的交易。
当所有这些任务完成后,矿工现在可以将一个新区块添加到以太坊链中,并且 Wire protocol 再次开始。
当一个节点表示其 pooled 交易集合中存在一个新交易时,以太坊交易将在整个网络中传播,并且 peers 查询以获取这些交易。
以下是它的发生方式:
传播节点通过发布 NewPooledTransactionHashes
消息来通知网络新交易。
或者,peers 可以通过发布 GetPooledTransactions
消息来查询这些交易
自合并以来,以太坊节点有两个单独的节点客户端 - 一个执行层客户端和一个共识层客户端 - 它们具有处理交易的单独职责。总而言之,执行层客户端负责执行交易并验证状态,而共识层客户端负责接收和传播新区块。
以下是有关交易在合并后环境中如何运作的更多详细信息:
每个节点的共识层客户端负责接收、预验证、将区块传递给执行层客户端、在 EL 客户端完成其任务后将区块添加到区块链 head,以及通过网络进行广播。
当执行客户端收到来自节点共识层客户端的预验证的区块时,它负责执行交易、验证区块的状态,然后将验证的黑名单发送回共识层客户端。
除了这些更改之外,自合并以来,以太坊 P2P 网络的所有其他操作模式保持不变。
在合并后的以太坊中,将有区块生产者和区块提议者,并且当共识层客户端也是区块生产者时,合并后交易和区块的传播方式略有不同。有关此细微用例的信息,请阅读以太坊基金会的网络层文档。
以太坊的全球点对点网络要求节点找到、验证并安全地相互通信,以广播挂起的 (pooled) 交易和新挖掘的区块。通过使用一系列低级网络协议(如 RLPx 和 Wire Protocol),这种与以太坊的全球计算机对等和传播信息的过程使区块链交易成为可能。
Supercharged | Alchemy | Substack
获取免费的以太坊 RPC 和开发者工具 获取你的 API 密钥
📚 目录
分享:
\
\
Ethereum\
\
以太坊分片:区块链分片简介\
\
什么是区块链分片,它与以太坊有何关系?
\
\
Ethereum\
\
什么是增强交易?\
\
探索一种新的交易类型,它可以保证交易被挖掘并针对 Gas 进行优化
\
\
Ethereum\
\
什么是以太坊承诺级别?\
\
了解安全(有保证的)、最终的和最新的承诺级别
Alchemy 将最强大的 web3 开发者产品和工具与资源、社区和传奇的支持相结合。
- 原文链接: alchemy.com/overviews/tr...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!