参与以太坊生态,交易是最核心的基础动作。无论你是小白想了解如何转 ETH,还是开发者想深入智能合约交互,这篇教程都把「交易」拆成可组装的乐高积木,帮你随时搭建链上操作。
交易到底是什么?
简单一句话:以太坊交易是经密码学签名、由外部账户发起的指令,用来改变网络全局状态。
最经典场景是把 1 枚 ETH 从 Bob 的钱包打到 Alice 的地址。
发起交易的核心字段:
from– 真实发币人,一定是外部账户(EOA)。to– 收款地址,可以是普通钱包,也可以是合约。signature– 私钥签名,证明交易真实可靠。nonce– 从 0 开始自增,防止重放攻击。value– 本次转账的 ETH 数量,以wei为单位(1 ETH = 1e18 wei)。input data– 额外的交易数据,用于合约交互或复杂业务。gasLimit、maxPriorityFeePerGas、maxFeePerGas– 控制交易费用。
小技巧:只要加密签名成功,这笔交易对象就已经“最终版”,任何人都可以把签名发到链上,钱就会按约定流出。
一笔交易的“成分表”长什么样?
下面是一段原生 JSON 数据,开发者常拿它跟节点交互:
{
"from": "0xEA674...",
"to": "0xac03b...",
"gasLimit": "21000",
"maxFeePerGas": "300",
"maxPriorityFeePerGas": "10",
"nonce": "0",
"value": "10000000000"
}raw 字段是经 RLP 编码的签名交易,而 v/r/s 是签名的三个组件。节点拿到这些就会验证签名并打包区块。
读懂「交易数据」:如何和智能合约聊天?
当你交易的目标地址是智能合约,input data 就变得至关重要。
- 前 4 字节是函数选择器:Solidity 把函数名与参数 hash 后取前 4 字节,精确定位合约里要执行哪个函数。
- 剩下的 Calldata是参数部分,按 ABI 规范编码成 32 字节对齐的数据流。
示例解码:
函数 selector: 0xa9059cbb → transfer(address,uint256)
目标地址: 0x4f6742badb0...
转账数额: 990,206,452 wei当你在etherscan点击「Click to see More」时,就能看到一模一样的拆解。
交易类型大盘点
以太坊经历多轮升级,现在支持 三类交易:
| 小贴士:虽然他国 wiki 常用表格,这里我们用清楚的分层列表让移动端读者更舒服。
Legacy 0 型交易
- 最古老的格式,没有区分 base fee。
- 直接设置
gasPrice,容易被拥堵行情“割韭菜”。
EIP-2930 1 型交易
- 引入
accessList,提前声明会访问的存储槽。 - 能节省 10-15% gas;仍沿用 gasPrice 定价模型。
- 引入
EIP-1559 2 型交易
- 新费用市场:
maxFeePerGas = baseFee + priorityFee。 - 交易更可预测、费用更透明,当前钱包默认格式。
- 新费用市场:
Gas 费用怎么算?
标准 ETH 转账固定消耗 21,000 gas。
假设 baseFee 190 gwei + priorityFee 10 gwei:
Total Fee = (190 + 10) × 21,000 = 4,200,000 gwei ≈ 0.0042 ETH- Bob 余额扣除:-1.0042 ETH(含 1 枚转账)。
- 0.00399 ETH 被网络燃烧(EIP-1559)。
- 验证者收到 0.00021 ETH 优先费。
👉 想用更少 Gas 完成复杂 DeFi 操作?看看这些实战策略
完整交易生命周期
- 签名 & 广播
客户端把私钥签名好的raw交易提交到节点 → 节点校验并推送到交易池 mempool。 - 验证者拣选
验证者优先打包高优先费的 2 型交易;低费用交易可能待 mempool 几分钟甚至几小时。 - 打包上链
区块生成后,状态变更立即生效。交易可获得 30 秒首次确认、12 分钟最终确定性。 - 最终敲定
经过 64 个 slot(约 13 分钟)后,区块从「justified」升级为「finalized」——除非全网共识被摧毁,不可回滚。
常见问题 FAQ
Q1:我第一次转 ETH 会看到 nonce = 0,第二个地址用相同私钥发交易能不能也用 nonce 0?
A:不行。外部账户标准从 0 开始,每成功发一次加 1,必须顺序使用,保证无乱序与重放攻击。
Q2:为什么我填的 gasLimit 看起来与实际消耗不一样?
A:gasLimit 只是“预算”。实际消耗由 EVM 精确计算,未用完的 gas 会 全额 退回发件人地址。
Q3:钱包显示 35,000 gas 却收了我 0.0041 ETH,合理吗?
A:合理。maxFeePerGas 只是封顶价,真正扣费依 baseFee + priorityFee 每秒浮动;最终结算只支付实际消耗。
Q4:合约的 view/pure 函数我为什么还能 free 调用?
A:因为它们不改动链上状态,本地节点在 eth_call 里直接返回结果,不广播交易,所以不需付费。
Q5:听说升级后手续费变低,为啥我还是被收费 0.005 ETH?
A:拥堵时段(空投、爆款 NFT)会显著提升 baseFee,EIP-1559 的作用是“可预测”,不是一刀销毁高价。
Q6:我能否修改已广播但未确认的交易?
A:可以通过替换法:使用相同 nonce、更高maxFeePerGas发新交易,原笔会被替代。
结语
掌握「交易」数据结构与费用机制,你就拿到了进入以太坊世界的钥匙。无论冲白名单、埋伏 DeFi 新收益,还是写脚本批量 NFT 领取,核心都是懂得如何为你的操作付费、加速、监控状态。
想让下一条交易更快、更省?现在就巩固本文的字段含义,把一切牢牢攥在手里。