精通以太坊账本需要从账户模型、底层存储结构、交易执行逻辑、链上数据核验四个层面完整吃透,既要分清表面交易记录,也要看懂网络全局状态的变化规则,只有打通表层浏览和底层数据校验,才能真正看懂以太坊账本的全部内容,避免只依靠区块浏览器做片面判断。以太坊和比特币最大的区别在于采用账户式账本而非UTXO模型,整个网络不存在固定的交易链条,而是依靠实时全局状态记录所有地址的完整数据,所有节点同步的不只是历史转账,还有每一个外部账户与合约账户的实时数据,这也是以太坊账本理解难度更高的核心原因。

看懂账户体系是入门的关键,以太坊账本把地址分为外部持有账户和合约账户两类,每一个地址都会在状态树中固定存储四项内容,分别是账户余额、防重放序号nonce、合约代码哈希和合约存储树根。普通转账只会修改余额和nonce数值,每一笔交易序号必须依次递增,重复序号的交易会直接被节点拒绝,而调用智能合约的操作不会改变EOA本身余额,只会修改对应合约内部的存储数据。很多人查看链上转账时忽略nonce,很容易无法识别被拦截的交易与恶意重播交易,这也是核查地址资金流向必不可少的细节。

以太坊所有账本数据全部依托默克尔帕特里夏树完成存储,每一个区块头都会封存三组树根哈希,分别对应全局状态树、区块交易树和交易收据树,任何一笔交易执行完毕,都会更新状态树并生成全新的根哈希,修改任意一条历史数据都会让根哈希完全失效,这也是账本无法篡改的底层逻辑。状态树只记录当前最新账户数据,历史状态不会直接保留在主链,完整的过往账本记录需要依靠归档节点调取,普通轻节点只能查询当前地址资产,无法直接回溯很久以前的账户状态,这也是链上地址溯源时必须了解的限制条件。

交易执行流程决定了账本最终的变更结果,每一笔上链交易都会经过签名校验、gas消耗扣除、EVM执行、生成收据四个步骤,即便合约执行失败,燃料费用也会全额扣除并记录在收据当中,不会退回发送地址。区块内所有交易按照gas出价排序打包,验证节点会逐笔执行交易并更新全局状态,所有节点必须执行完全相同的运算,最终生成一模一样的状态根才会认可区块合法。读懂收据内部的日志内容,就可以判断代币转账、合约授权等隐性操作,这类行为不会体现在ETH余额变动里,却是账本当中最容易被忽略的交易行为。
想要做到独立核验账本数据,不能单纯依赖第三方浏览器,需要理解节点的数据验证逻辑,所有链上数据都可以通过默克尔证明完成真伪校验,不需要同步整条区块链。长期跟踪地址资金需要区分链上原生记录和二层网络资产,二层交易不会写入以太坊主账本,只有最终提币操作才会更新主网状态树,很多大额资产转移都会借助二层降低痕迹,只有对照主网账本才能确认资产最终归属。熟练掌握状态变更规则之后,不管是地址追踪、合约审计还是交易真伪判断,都可以脱离工具自主完成核验。
