本文详细介绍了以太坊网络上交易的基本概念,包括交易的组成部分、账户类型、交易的生命周期以及如何通过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。
交易生命周期
交易生命周期可以简化为:
现在让我们将所学的内容付诸实践。我们将轻松设置一个 QuickNode 的以太坊端点,并用它通过哈希值获取交易。如果你已经有一个账户,请导航到端点页面并启动一个以太坊主网端点。否则,请在我们的 注册页面 创建一个账户。
首先打开你的终端窗口并运行命令 curl(检查你是否有正确的依赖项)。如果你收到响应 curl: try 'curl --help' or 'curl --manual' for more information
,很好,你拥有所需的依赖项并可以运行下面的 curl 代码。
复制下面的代码,将 URL 占位符替换为你的 QuickNode 端点。将修改后的代码粘贴到终端中并按回车。
输出应包含与以下相同的值:
返回的数据大多是十六进制格式,但如果你想轻松解码,可以使用诸如 Etherscan 或编程库如 Ethers 或 Web3.py 等资源。
要查看其他 QuickNode RPC 端点,请导航到我们的 QuickNode 文档。
至此,本指南结束!在本指南中,我们解释了以太坊交易的核心概念。请记住,以太坊遵循账户-余额模型,并可以根据不同的用例利用不同类型的交易。我们希望你继续推进学习并与他人分享。
订阅我们的 通讯,获取更多关于以太坊的文章和指南。如果你有任何反馈,请随时通过 Twitter 联系我们。你也可以在我们的 Discord 社区服务器与我们聊天,里面有一些你见过的最酷的开发者 :)
- 原文链接: quicknode.com/guides/eth...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!