第二讲:以太坊基础——账户、Gas与交易本质
好,我们正式开始第二讲。
上一讲我们聊了Web3的宏观图景。今天,咱们把镜头拉近,聚焦到以太坊本身。说白了,以太坊就是一台“世界计算机”。但跟普通电脑不一样,它没有CPU、没有内存条,它靠的是成千上万个节点共同维护一个状态机。
我个人习惯把以太坊理解成一个“公开的、不可篡改的数据库+计算平台”。你往里面存数据、跑程序,都得按规矩来。这个规矩,就是接下来要讲的账户体系和Gas机制。
一、以太坊是什么?
以太坊是一个去中心化的区块链平台。它支持智能合约——也就是一段一旦部署就无法篡改的代码。
跟比特币不同,以太坊不只是转账。你可以用它来发行代币、创建DAO、跑DeFi协议,甚至搞NFT。我当年第一次在以太坊上部署合约时,心里还挺忐忑的——毕竟代码一旦上链,就再也改不了了。嗯,这种“不可逆”的感觉,你得习惯。
核心要点:以太坊 = 区块链 + 智能合约 + 去中心化应用(DApp)
二、账户体系:EOA vs 合约账户
以太坊有两种账户。很多人一开始会搞混,我简单给你拆开讲。
1. 外部账户(EOA)
EOA,全称 Externally Owned Account。说白了,就是由私钥控制的账户。你用的MetaMask钱包,生成的就是EOA。
- 特点:有私钥,能主动发起交易
- 状态:只有余额(nonce和balance)
- 典型用途:转账、调用合约
我在项目中遇到过不少新手,把私钥直接写在代码里。嗯,这很危险。私钥一旦泄露,账户就没了。我建议用硬件钱包或者环境变量来管理。
2. 合约账户
合约账户,也叫智能合约账户。它没有私钥,由代码控制。
- 特点:没有私钥,不能主动发起交易
- 状态:有余额,还有存储(storage)
- 典型用途:执行逻辑、存储数据
你想想看,合约账户就像一个自动售货机。你投币(发起交易),它执行代码(出货)。它自己不会主动跑去找你。
小技巧:判断一个地址是EOA还是合约,可以用 extcodesize(address) 这个操作码。如果返回0,就是EOA;否则是合约。
3. 两者对比
| 特性 | EOA | 合约账户 |
|---|---|---|
| 私钥 | 有 | 无 |
| 主动发起交易 | 能 | 不能 |
| 存储代码 | 无 | 有 |
| 存储数据 | 仅余额 | 余额+存储 |
| 创建方式 | 生成密钥对 | 部署合约 |
三、Gas机制详解
Gas,中文叫“燃料”。你开车要加油,在以太坊上跑交易也要“加油”。
为什么会这样?因为每个节点都要执行你的交易。如果没成本,有人就能恶意塞满区块,让网络瘫痪。Gas就是防止滥用的一种经济手段。
1. Gas怎么算?
Gas费用 = Gas用量 × Gas价格
- Gas用量:由交易复杂度决定。比如转账大概21000 Gas,部署合约可能要几十万甚至上百万。
- Gas价格:你愿意为每单位Gas支付多少Gwei(1 ETH = 10^9 Gwei)。
我记得有一次,我部署一个合约时Gas价格设得太低,结果等了整整两个小时才被打包。嗯,后来我学乖了,用 eth_gasPrice 接口先查一下当前行情。
2. Gas Limit 是什么?
Gas Limit 是你愿意为这笔交易支付的最大Gas量。如果实际消耗超过Limit,交易会回滚,但Gas不会退。
避坑指南:我曾经因为Gas Limit设得太低,导致一笔复杂的DeFi交互失败。Gas费花了,交易却没成功。所以,复杂交易一定要留足余量。
3. EIP-1559 之后的变化
2021年伦敦升级后,以太坊引入了EIP-1559。Gas机制变了:
- 基础费(Base Fee):由网络自动调整,会被销毁
- 小费(Priority Fee / Tip):给矿工,激励他们优先打包
现在你发交易时,需要设置 maxFeePerGas 和 maxPriorityFeePerGas。基础费会自动计算,你只需要关心小费给多少。
说白了,EIP-1559让Gas费用更可预测。以前那种“Gas价格忽高忽低”的情况,改善了不少。
4. 实际交易示例
我们来看一个简单的转账交易结构:
{
"from": "0xAbc...",
"to": "0xDef...",
"value": "0x1" // 1 Wei
"gas": "0x5208", // 21000
"maxFeePerGas": "0x3B9ACA00", // 1 Gwei
"maxPriorityFeePerGas": "0x3B9ACA00",
"nonce": "0x0"
}
这个交易会消耗21000 Gas。如果Gas价格是1 Gwei,总费用就是21000 Gwei,约0.000021 ETH。
个人建议:在测试网上多试几次。用 ethers.js 的 estimateGas 方法,能帮你预估Gas用量。别一上来就上主网,学费太贵。
四、总结
这一讲我们聊了:
- 以太坊是什么——一台去中心化的世界计算机
- 账户体系——EOA有私钥,合约账户有代码
- Gas机制——用量×价格,EIP-1559让费用更透明
下一讲,我们会深入智能合约的交互实战。你会亲手写一个合约,然后用前端调用它。嗯,那才是真正好玩的地方。
记住:理解账户和Gas,是Web3开发的地基。地基不稳,后面全是坑。我当年踩过的坑,希望你能绕过去。