找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 6|回复: 0

一直对EVM状态机的概念理解的不够深刻,结果突然意识到,这玩意不就是类似git的版本控制吗。一个commit 就是一个b

[复制链接]
发表于 2026-7-7 13:00:39 | 显示全部楼层 |阅读模式
一直对EVM状态机的概念理解的不够深刻,结果突然意识到,这玩意不就是类似git的版本控制吗。一个commit 就是一个block。
于是问了下 GPT 两者的区别,答案如下:
Git 的 Commit 是代码仓库的某一时刻的完整目录快照。
EVM 的 Block 是状态转换记录,他执行交易后得到的新状态根(State Root),而不是直接将新的完整的状态写进区块。
进一步理解
Git Commit 记录的是一个目录指针,没有被改变的指向旧文件,更改了的指向新文件,所以只要提供提交版本号,可以当场复原所有数据。即 Git 的 Commit 本身就是版本。
EVM 的 Block 不是状态,而是生成状态的输入即变化。这是理解区块非常重要的点,块代表的是状态变化,而不是状态。上一个状态+当前Block = 当前状态。
他们之间的类比:
Commit ≈ Block
Commit checkout 工作目录 ≈ Block 的 World State
Git Repository ≈ Archive Node
这又引申出节点的两种类型,普通节点和 Archive 节点。
普通节点只保存历史Block+当前状态,如果你想查询历史状态需要从头计算。
Archive 节点会保留所有历史状态,所以体积超大,但是历史数据一查便知。
奇奇怪怪的知识 ~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|币巴宝

GMT+8, 2026-7-30 21:38 , Processed in 0.034773 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表