文章目录

  • 什么是交易?
  • 交易类型
  • 交易生命周期
  • 关键概念:Gas 与交易费用
  • 交易状态与失败原因
  • 总结


什么是交易?

“交易(Transaction)” 是从一个账户向另一个账户发送的经过数字签名的指令 。例如,如果 Bob 发送 Alice 1 ETH,则 Bob 的帐户必须减少 1 ETH,而 Alice 的帐户必须增加 1 ETH。 交易会造成状态的改变(如转移以太币、调用智能合约、部署合约等)。

改变 EVM 状态的交易需要广播到整个网络。 任何节点都可以广播在以太坊虚拟机上执行交易的请求;此后,验证者将执行交易并将由此产生的状态变化传播到网络的其他部分。

交易需要付费并且必须包含在一个有效区块中。

所提交的交易包括下列信息:

字段作用
from发起账户地址(EOA,必须有私钥签名,合约账户无法主动发起交易)。
to接收账户地址:
若为 EOA 地址(如0x…),则为普通转账;
若为合约账户地址,则为调用该合约;
若为空(null),则为部署新智能合约(此时data字段为合约字节码)。
value转移的以太币数量(以 wei 为单位,1 ETH = 10¹⁸ wei),仅在转账或向合约支付 ETH 时有效。
gasLimit交易允许消耗的最大 Gas 量(防止交易因逻辑错误无限消耗资源),若实际消耗 Gas ≤ gasLimit,剩余 Gas 退还;若超过,则交易失败,已消耗 Gas 不退还。
maxFeePerGas(EIP-1559 后)用户愿意支付的最高 Gas 单价(以 gwei 为单位,1 gwei = 10⁹ wei),包含基础费(base fee)和优先级费(priority fee)。
maxPriorityFeePerGas(EIP-1559 后)用户额外支付给验证者的 “小费”,激励验证者优先打包交易。
nonce发起账户的交易计数器(从 0 开始),确保每笔交易唯一,防止 “重放攻击”(同一笔交易被重复提交)。
data附加数据(可选):
调用合约时,为函数名 + 参数的编码(如调用transfer(address,uint256)的编码);
部署合约时,为合约的字节码;普通转账时可留空。
signature发起账户的数字签名(由私钥生成),用于验证交易的合法性(确实由from地址的所有者发起)。

燃料是指验证者处理交易所需的计算。 用户必须为此计算支付费用。 gasLimit 和 maxPriorityFeePerGas 决定支付给验证者的最高交易费。

下面是一个模拟交易信息

{from: "0xEA674fdDe714fd979de3EdF0F56AA9716B898ec8",to: "0xac03bb73b6a9e108530aff4df5077c2b3d481e5a",gasLimit: "21000",maxFeePerGas: "300"maxPriorityFeePerGas: "10"nonce: "0",value: "10000000000",
}

交易类型

以太坊有几种不同类型的交易:

  • 常规交易:从一个帐户到另一个帐户的交易。
  • 合约部署交易:没有“to”地址的交易,数据字段用于合约代码。
  • 执行合约:与已部署的智能合约进行交互的交易。 在这种情况下,“to”地址是智能合约地址。

交易生命周期

交易提交后,就会发生以下情况:

  1. 用户发起与签名
    用户通过钱包(如 MetaMask)输入交易参数(to、value、gas等),钱包用用户私钥对交易进行签名(生成signature),确保交易不可篡改且确实由用户发起。
  2. 广播至网络
    签名后的交易被发送到以太坊 P2P 网络,由节点(全节点或轻节点)接收并转发,快速扩散至全网。
  3. 节点验证
    全节点收到交易后,验证其合法性:
    • 签名是否有效(from地址是否为私钥持有者);
    • nonce是否正确(与from账户的当前nonce一致);
    • from账户余额是否足够支付value + 预估Gas费;
    • 若调用合约,验证data字段的函数编码是否符合合约接口。
  4. 进入交易池(mempool)
    验证通过的交易被放入节点的 “交易池”,等待验证者(PoS)或矿工(PoW 时期)打包。交易池中的交易按 “Gas 价格” 排序,高 Gas 费的交易通常被优先处理。
  5. 打包进区块
    验证者从交易池中选择交易(优先高 Gas 费),打包进新生成的区块,并广播区块至全网。此时交易状态从 “pending(待处理)” 变为 “included(已打包)”。
  6. 全网确认
    其他节点验证区块合法性后,将其添加到区块链末尾。随着后续区块的生成(通常认为 6 个区块后),交易被 “最终确认”(不可篡改的概率极高),全局状态按交易指令更新(如余额变更、合约存储更新)。

关键概念:Gas 与交易费用

以太坊交易必须支付 “交易费用”(以 ETH 计价),费用高低由 Gas 决定,这是防止网络滥用的核心机制:

  • Gas:衡量交易计算复杂度的单位(如简单转账需 21,000 Gas,复杂合约调用可能需数百万 Gas)。
  • 实际费用:EIP-1559 后,费用 = 基础费(base fee) + 优先级费(priority fee),其中基础费会被销毁(减少 ETH 流通量),优先级费归验证者。
  • 费用计算:总费用 = Gas 消耗 ×(基础费 + 优先级费),若用户设置的maxFeePerGas ≥ 实际费用,则交易有效。

交易状态与失败原因

  • 常见状态:
    • pending:已广播但未被打包;
    • success:已打包并确认,状态更新成功;
    • failed:已打包但执行失败(如合约逻辑错误、Gas 不足)。
  • 失败原因:
    • Gas 不足(实际消耗 Gas > gasLimit);
    • 合约执行出错(如转账给不接收 ETH 的合约、条件判断不满足);
    • 签名无效或nonce错误。

注意:失败的交易仍会消耗 Gas(因验证者已执行计算),费用不会退还。

总结

以太坊交易是连接用户与网络的核心接口,不仅支持简单的价值转移,更通过data字段实现了与智能合约的复杂交互,支撑了 DeFi、NFT、DAO 等丰富生态。理解其结构、类型和生命周期,是使用以太坊和开发 DApp 的基础 —— 它既是 “数字现金” 的转移工具,也是 “去中心化应用” 的操作指令,体现了以太坊 “世界计算机” 的核心价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93211.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93211.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93211.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小兔鲜儿-小程序uni-app(二)

小兔鲜儿-小程序uni-app7.小兔鲜儿 - 用户模块会员中心页(我的)静态结构参考代码会员设置页分包预下载静态结构退出登录会员信息页静态结构获取会员信息渲染会员信息更新会员头像更新表单信息8.小兔鲜儿 - 地址模块准备工作静态结构地址管理页地址表单页动态设置标题新建地址页…

BLE 广播信道与数据信道:冲突避免、信道映射与自适应跳频实现

低功耗蓝牙(BLE)技术凭借低功耗、短距离、低成本的特性,已广泛应用于智能家居、可穿戴设备、工业物联网等领域。在 BLE 协议中,信道管理是保障通信可靠性的核心机制,其中广播信道与数据信道的设计、冲突避免策略、跳频技术更是面试中的高频考点。本文将从基础原理到实战真…

nodejs03-常用模块

nodejs 常用的核心模块 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境, 它允许 JavaScript 运行在服务器端。Node.js 拥有丰富的标准库,也就是核心模块, 这些模块提供了各种功能, 使得开发服务器端应用程序变得简单高…

多路混音声音播放芯片型号推荐

以下是唯创知音旗下主流的多路声音播放芯片深度解析,结合精准参数、丰富场景及技术特性,满足智能设备多样化音频需求:一、WTV380/890 系列:高集成多模态交互芯片核心参数通道能力:支持8 路独立语音输出,可同…

【C++】自研基 2 Cooley–Tukey

“自研基 2 Cooley–Tukey:倒位序 逐级蝶形,入口 fft(int N, complex f[])”拆成三件事它在讲什么 “基 2 Cooley–Tukey” 指的是最常见的 FFT 算法:长度 N 必须是 2 的整数次幂,把离散傅里叶变换分解成一层一层的“2 点蝶形”运…

小白挑战一周上架元服务——ArkUI04

文章目录前言一、ArkUI是何方神圣?二、声明式UI三、组件1.基础组件2.布局容器组件3.导航组件4.自定义组件5.组件生命周期四、状态管理1.State装饰器: 状态变量2.Prop装饰器:父子单向同步3.Link装饰器:父子双向同步4.Provide/Consume装饰器&am…

剧本杀小程序系统开发:构建剧本杀社交新生态

在社交需求日益多样化的今天,剧本杀凭借其独特的社交属性,成为了人们热衷的社交娱乐方式之一。而剧本杀小程序系统开发,则进一步拓展了剧本杀的社交边界,构建起一个全新的剧本杀社交新生态,让玩家在推理与角色扮演中&a…

AI提高投放效率的核心策略

内容概要人工智能技术正深刻改变着广告投放领域,其核心价值在于显著提升投放效率。通过融合智能算法优化、实时数据分析与自动化投放流程,AI系统能够以前所未有的速度和精度处理海量信息,驱动更精准的营销决策。这不仅大幅缩短了传统人工操作…

OpenBMC 中命令模式的深度解析:从原理到实现

引言 在 OpenBMC 的设计中,命令模式(Command Pattern)被广泛应用于各种场景,特别是 IPMI 命令处理、异步操作封装和用户请求管理等。本文将深入分析 OpenBMC 中命令模式的实现原理、架构设计以及完整的执行流程,并通过…

从0开始跟小甲鱼C语言视频使用linux一步步学习C语言(持续更新)8.15

第十七天 第五十七,五十八,五十九和六十集 第五十六集 删除链表结点 没什么好说的关键部分代码如图 链表的插入操作 依旧没有啥可以说的代码部分大家看视频就能看懂,大家应该是没有什么问题的吧? 第五十七集 共用体形式结构与结构…

云服务器网站无法访问的系统化故障排查指南及多维度解决方案

当云服务器上的网站突然无法访问时,这种突发状况往往让人措手不及。别担心,我们可以通过系统化的排查流程快速定位问题根源。以下是经过实战验证的故障排除指南,帮您分步解决网站访问异常问题。一、基础状态确认 服务器的生命体征就像人体的脉…

strings命令和findstr命令验证iso文件中ntkrnlmp.exe系统版本

strings命令和findstr命令验证iso文件中ntkrnlmp.exe系统版本D:\chsads3647\i386>expand.exe Microsoft (R) File Expansion Utility Version 5.2.3647.0 版本所有 (c) Microsoft Corporation. 保留所有权利。未指定文件。D:\chsads3647\i386>strings.exe ntkrnlmp.exe …

C语言:指针(5)

1. sizeof与strlen的对比1.1 sizeofsizeof属于是操作符,用于计算变量所占的空间大小,单位为字节。如果操作数是类型的话,计算的是使用类型创建的变量所占内存空间的大小。sizeof只计算数据在内存中所占的空间大小,而不在乎内存中存…

rent8 安装部署教程之 Windows

1. Apache 安装与配置 1.1. 获取并解压 Apache 在 Apache Lounge 网址下载编译版的 Apache。下载完成后,将压缩包解压到 d:\web\Apache24 作为 Apache 的安装目录。 1.2. 配置 Apache 打开配置文件 conf\httpd.conf,找到第 37 行配置。 ​ Define SRVROO…

边缘智能实战手册:攻克IoT应用三大挑战的AI战术

前言:在当前的AIoT(人工智能物联网)赛道上,将AI能力下沉至边缘设备已不再是“要不要做”的选择题,而是“如何做好”的必答题。然而,在实际项目中,工程师们常常会遇到性能、功耗和隐私这“三座大…

【React】use-immer vs 原生 Hook:谁更胜一筹?

1.概述 use-immer 不属于官方 Hook,是社区维护的第三方库!use-immer 通过封装 Immer 的不可变更新机制,为 React 开发者提供了一种更直观、高效的状态管理方式。它尤其适合处理复杂嵌套状态或需要频繁更新的场景,同时保持了与 Re…

【案例】Vue3 实现高性能级横向循环滚动生产线效果:基于 requestAnimationFrame 的流畅动画方案

动画效果在工业监控系统、生产看板等场景中,经常需要模拟生产线的动态运行效果。本文将基于 Vue3 和 requestAnimationFrame 实现一个高性能的横向循环滚动效果,完美模拟生产线传输带的视觉体验。我们将从代码实现到原理分析,全面讲解如何打造…

万字长文解码如何玩转Prompt(附实践应用)

在AI技术迅猛发展的今天,如何与大型语言模型高效“对话”已成为释放其潜力的关键。本文深入探讨了提示词工程(Prompt Engineering)这一新兴领域,系统解析了从基础概念到高级技巧的完整知识体系,并结合“淘宝XX业务数科…

easyExcel嵌套子集合导出Excel

我想要的Excel效果说明: 1.创建两个自定义注解:ExcelMerge(表示主对象内的单个属性,后续会根据子集合的大小合并下面的单元格),ExcelNestedList(表示嵌套的子集合) 2.NestedDataConverter.java 会把查询到的数据转换为一行一行的,相当于主表 left join 子表 ON 主.id子.主id的形…

基于 C# WinForm 字体编辑器开发记录:从基础到进阶

目录 基础版本实现 进阶版本改进 字体设置窗体增强 主窗体改进 功能对比 项目在本文章的绑定资源中免费的,0积分就可以下载哦~ 在 Windows Forms 应用开发中,字体编辑功能是许多文本处理软件的基础功能。本文将分享一个简易字体编辑器的开发过程&a…