以太坊有多难用

💡 原文中文,约10700字,阅读约需26分钟。
📝

内容提要

以太坊将Nonce、Gas、Allowance、MEV等协议细节直接暴露给用户,ETH需包装为WETH才能符合ERC-20,取消交易实为同Nonce竞价替换,失败仍收Gas,授权、签名、跨链余额均需用户自行理解。4337、7702、Paymaster等方案只是层层叠加掩盖底层缺陷,最终把复杂度外包给用户,所谓“Crypto原生用户”实为被训练成的兼职协议工程师。

🔎

延伸解读

原生货币的尴尬:ETH 为何需要包装

ETH 是以太坊的原生资产,却不符合其最重要的 ERC-20 代币标准。这导致用户若想将 ETH 用于大多数 DeFi 应用,必须先将其包装成 WETH。更麻烦的是,包装后若没有预留原生 ETH,仍可能因缺乏 Gas 而无法交易。这种设计并非偶然,而是历史遗留问题,却让用户承担了额外的操作与认知负担。

取消与加速:一场 nonce 竞速游戏

在以太坊上,取消一笔待处理交易并非真正撤销,而是发送一笔相同 nonce、更高 Gas 的空交易来竞争。加速交易同理,是用更高费用替换原交易。这源于 EOA 账户的 nonce 严格递增机制,导致一笔卡住的交易会阻塞后续所有交易。用户不得不理解 nonce 管理,甚至手动处理 pending 队列,这原本是协议内部细节。

失败仍收费:Gas 机制的代价转移

智能合约执行失败并回滚状态时,已消耗的 Gas 不会退还。这意味着用户需为失败的计算付费,即使交易因合约 bug 或状态变化而 revert。虽然从工程角度看,节点已执行计算,收费合理,但这将应用执行路径预测失败的成本转移给了用户,与 Web2 中公司承担服务器费用的模式截然不同。

抽象叠加:复杂度的层层外包

面对底层缺陷,以太坊生态不断叠加新方案:ERC-4337 引入 UserOperation、Bundler、Paymaster 等,EIP-7702 增强 EOA,钱包则通过模拟、警告来隐藏复杂度。这些创新并未消除底层问题,而是将复杂度外包给钱包、应用开发者,最终仍由用户承担。用户看到的简化界面背后,是层层叠加的基础设施。

❓

Q&A

以太坊的ETH为什么需要包装成WETH?

因为ETH早于ERC-20标准诞生,不符合ERC-20接口,而DeFi应用大多基于ERC-20。为了让ETH能进入DeFi生态,需要将ETH存入合约并铸造对应的ERC-20代币WETH。

在以太坊上取消交易实际上是怎么操作的?

以太坊没有真正的取消操作。所谓取消是再发一笔相同nonce但Gas更高的交易,与原交易竞争,让新交易先被打包,从而消耗掉该nonce,使原交易失效。

为什么以太坊交易失败后仍然要收取Gas费?

因为即使交易执行失败(如REVERT),节点已经执行了计算并消耗了资源,所以已消耗的Gas不会退还。状态修改会回滚,但计算成本仍需用户承担。

以太坊的nonce机制会导致什么用户体验问题?

nonce严格递增,如果一笔交易卡住,后续所有交易都会阻塞,用户必须按顺序处理pending交易,甚至需要手动管理nonce,就像维护数据库序列号一样。

ERC-4337试图解决什么问题?它真的简化了用户体验吗?

ERC-4337旨在通过UserOperation、Bundler、Paymaster等实现Gas赞助、批量交易、智能账户等功能,让用户无需理解Gas。但它是在底层之上重新实现了一套交易系统,增加了多层基础设施,复杂度并未消除,只是被隐藏。

以太坊的MEV和滑点设置给用户带来了哪些风险?

用户交易公开广播后可能被抢跑或三明治攻击,导致更差的成交价格。用户还需手动设置滑点容忍度,设太低交易失败,设太高易被榨取价值,这迫使普通用户理解MEV、Private RPC等概念。

为什么说以太坊的“Crypto原生用户”实际上是被训练成协议工程师?

因为要安全使用以太坊,用户必须理解Nonce、Gas、Allowance、WETH、跨链余额、MEV防护、交易模拟等本应由协议处理的概念,久而久之被训练成兼职的协议工程师。

🏷️

标签

➡️

继续阅读