什么是以太坊交易?

  • QuickNode
  • 发布于 2024-12-19 11:45
  • 阅读 21

本文详细介绍了以太坊网络上交易的基本概念,包括交易的组成部分、账户类型、交易的生命周期以及如何通过QuickNode设置以太坊端点来查看交易数据。文章内容结构清晰,涵盖了交易的基础知识、架构及不同状态,适合希望深入理解以太坊交易机制的读者。

概述

以太坊中的交易是加密签名的数据消息,包含一组指令。这些指令可以解释为将以太币从一个以太坊账户发送到另一个账户,或与在区块链上部署的智能合约进行互动。交易是一个简单但强大的概念,使全球用户能够在去中心化网络中进行交互。本指南将涵盖在以太坊网络背景下交易的概念。

我们将涵盖的内容

  • 交易基础

  • 交易架构

  • 以编程方式查看交易数据

你将需要的工具

  • 终端窗口

交易基础

交易通常由以下参数组成:[nonce, gasPrice, gasLimit, to, value, data, v, r, s]。然而,以太坊已经发展出允许其他交易标准,如 EIP-1559。EIP-1559 交易标准源于改进提案,旨在允许更可预测的 gas 费和更高效的交易市场。在讨论交易之前,让我们快速回顾一下交易的起源。

账户

账户分为两种类型,智能合约账户和外部拥有账户 (EOA):

  • 外部拥有账户 (EOA) 指由人管理的账户,比如个人的 Metamask 或 Coinbase 钱包。该账户通过公钥(也称为账户地址)进行标识,并由私钥控制。公钥是通过加密算法从私钥派生出来的。值得注意的是,这些账户不能存储除账户余额和 nonce 之外的信息。

  • 智能合约账户(也称为合约账户)也包含地址与余额的映射,但与 EOA 不同的是,它们还可以包含 EVM 代码和存储。合约账户通过存储在账户中的 EVM 代码的逻辑控制自己。

以太坊使用椭圆曲线数字签名算法 (ECDSA) 来证明身份验证(即,证明我们拥有公共地址的私钥)并验证我们的交易确实来自于签署交易的账户,而不是欺诈。

交易类型

让我们将刚刚学到的关于账户的信息与 不同类型的交易 联系起来:

  • 消息调用 交易:消息调用来自于希望与另一个 EOA 或合约账户进行交互的外部拥有账户。消息调用的例子包括将以太从一个账户发送到另一个账户,或与智能合约进行互动(例如,在 Uniswap 上交易代币)。

  • 合约创建 交易:合约创建来自于 EOA,用于创建智能合约账户(通常用于存储代码和存储)。此类交易的一个例子是部署一个存储智能合约以存储数据。

交易状态

  • 待处理:已广播到网络的交易,正在等待被挖掘。如果交易所花费的时间超过预期,可能是因为你的 gas 费不足以满足当前的执行需求。

  • 排队:由于队列中有另一个待处理交易或者 nonce 序列出错,无法被挖掘的交易。

  • 已取消:无法被挖掘。被具有更高 gas 费、相同 nonce 值以及数据和/或值字段为空的交易所替换。

  • 已替换:无法被挖掘。用于替换当前待处理订单,以更快的执行速度或修改值和数据。这也包括使用与你想要取消的交易相同的 nonce 和更高的 gas 费。

  • 失败:因为还原错误、错误指令、不合逻辑的代码或没有足够的 gas 来运行函数调用的剩余部分而导致的错误交易。

有关待处理和排队交易的深入了解,请访问我们的 QuickNode 指南 这里

交易架构

以太坊的交易格式最初有一个标准,但随着时间的推移已经发展出允许其他交易格式。一笔交易对象中的指令集如下所示:

  • from - 发送地址。

  • to – 接收地址(如果是 EOA,交易将转移价值。如果是合约账户,交易将使用合约代码)。

  • value – 从发送地址发送的以太数量(单位为 Wei)

  • data – 可以包含发送给接收者的代码或消息。

  • gasLimit – 可使用的最大 gas 单位数量。

  • nonce - 用于跟踪交易顺序并防止重放攻击的数字。

  • maxPriorityFeePerGas - 作为小费包含在矿工那里支付的最大 gas 数量。

  • maxFeePerGas - 愿意为交易支付的最大 gas 数量(包括 baseFeePerGas 和 maxPriorityFeePerGas)。

  • signature – 由发送账户的私钥派生,当发送者签署交易时生成,形成交易的签名。

从上面的字段可以看出,“gas”这个术语多次提到。它是交易的重要组成部分。交易使用 gas 作为执行的Gas,并被挖掘到区块链上,更重要的是,gas 费用有助于维护以太坊网络的安全。Gas 用 Ether(以太坊的原生币)支付,但以其他单位(如 Wei 和 Gwei)表示,以更易于测量的方式处理。在描述较小价值交易时使用 Wei,而在处理 gas 费用时通常使用 Gwei。

交易生命周期

交易生命周期可以简化为:

  1. 外部账户创建交易对象。
  2. 发送交易的账户通过签署交易来验证它,从而生成交易哈希。
  3. 这笔交易通过以太坊节点广播到网络。
  4. 交易执行处于闲置状态,直到交易被挖矿并加入区块或被替换/取消。

设置你的 QuickNode 以太坊端点

现在让我们将所学的内容付诸实践。我们将轻松设置一个 QuickNode 的以太坊端点,并用它通过哈希值获取交易。如果你已经有一个账户,请导航到端点页面并启动一个以太坊主网端点。否则,请在我们的 注册页面 创建一个账户。

Quicknode 以太坊端点的截屏

以编程方式查看交易数据

首先打开你的终端窗口并运行命令 curl(检查你是否有正确的依赖项)。如果你收到响应 curl: try 'curl --help' or 'curl --manual' for more information,很好,你拥有所需的依赖项并可以运行下面的 curl 代码。

复制下面的代码,将 URL 占位符替换为你的 QuickNode 端点。将修改后的代码粘贴到终端中并按回车。

输出应包含与以下相同的值:

包含 eth_getTransactionByHash 方法的 curl 命令的终端图

返回的数据大多是十六进制格式,但如果你想轻松解码,可以使用诸如 Etherscan 或编程库如 EthersWeb3.py 等资源。

要查看其他 QuickNode RPC 端点,请导航到我们的 QuickNode 文档

结论

至此,本指南结束!在本指南中,我们解释了以太坊交易的核心概念。请记住,以太坊遵循账户-余额模型,并可以根据不同的用例利用不同类型的交易。我们希望你继续推进学习并与他人分享。

订阅我们的 通讯,获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 联系我们。你也可以在我们的 Discord 社区服务器与我们聊天,里面有一些你见过的最酷的开发者 :)

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

0 条评论

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