0xTodd🟥🟨🟦
@0x_Todd
Long Bitcoin, Love the World 热衷研究 忠诚囤币 在 @researchnothing 琢磨策略 在 @ebunker_eth 打包区块 常驻 #Binance# 交易 https://t.co/42whA3ioyb #OKX# 钱包资深用户 https://t.co/8Aes1jx1Xn
Joined September 2016
2.7K Following    60.8K Followers
ETH 的 EOF 这个升级,从上海升级开始聊,一路马上就要 Pectra 升级了,可惜这次依然不会实装,还要仰仗后续的升级。 EOF 这一块大补丁的诞生,本质上是为了还 ETH 过去的“技术债”。 毕竟是 15 年的协议,EVM 其实不够完美: 比如说 @cyodyssey 提到的这个代码长度的限制太小了,导致要一直组合; 再比如说,很影响开发的,目前 EVM 它的字节码结构不太清晰,导致很多开发工具都没法用,进而让形式化验证和静态分析都很难做。 一个示意图如下: 你能看出,显然后者(EOF)清晰多了。 用个不恰当的比喻,上线 EOF 相当一个新的 EVM。 所以,这是个重大工程。 区块链和传统的软件不一样,区块链对于向前兼容这件事执念要深得多得多。 总不能说,你 ETH 更新一下,我们老的 DeFi NFT 全部停摆重新开发对吧? 所以 EOF 如果实装,那些基于老的 EVM 的那些合约,依然要能够正常使用。 当然,用户层面感知不到这一切,因为负重前行的是广大的 ETH 节点们 😂 以后节点的执行层客户端的工作量要翻倍,要做到: 既能处理 EVM 老版合约 又能处理 EOF 新版合约 社区反对 EOF 的人很多,但是长痛不如短痛吧,最不济以后还允许大家开发老的 EVM 合约,但是鼓励开发新的 EOF,让市场来自由选择和淘汰。 反正阿拉节点都是同时跑两套,也没什么差别😂。
Show more
最近关于EOF的讨论还蛮多的。Recall一下EOF是啥,以及背景。 理解EOF的之前,思考一个问题:合约是怎么执行呢? 一个常见的误解是以太坊执行层执行的是Solidity合约,其实并不是。严格的说,合约执行的是由Solidity编写的,但编译成EVM Opcode组成的Bytecode代码段。 在执行Bytecode 时候,EVM会顺序的执行每一条指令,遇到Jump的时候就跳转到下一个指令(目前在执行层代码里是这么做的:https://t.co/txyAYzjaHs) 这有什么问题呢?计算机或者VM本身是分不清什么是指令,什么是数据的(表现形式都是值的样子)。 like:0x60 0xFF 0x60 0xAA 0x5B 所以在跳转的时候,需要明确的告诉执行单元这两部的区别。 目前的Bytecode本身没有明确的结构,代码和数据混在一起,跳转目标随便写,只靠运行时简单校验(JUMPDEST分析:https://t.co/sIg3niwIme)。 这其实是相当落后于现代编译器技术的设计,很多优化(如静态跳转表、多字节指令集、代码分段执行)都没法在这样简单的架构下引入。 EOF(https://t.co/nsUwEhEOSP)的目标就是实现EVM Bytecode现代化,引入数据段代码段分离,Version控制等等等,提高一下EVM上运行更灵活的,更大型的程序的潜力(是的,现在以太坊主网上的单个合约程序的大小限制是:MaxCodeSize = 24576;24KB,相比于现代程序是在是太小了。当然你可以通过多个合约组合让实际的Dapp功能更复杂) 理想非常好,但,正如知名哲学家地狱咆哮说过的那样:代价是什么呢? 代价就是,上述的改动,都是EVM中最核心最核心的修改。升级EOF对执行层来说就像做大脑神经手术和心脏手术一样,不仅要考虑EOF格式下合约的执行,还要考虑旧合约兼容性、分支执行路径、客户端维护复杂度等。 对投资项目有什么insight么?暂时想不到,这是ETH很底层的内部升级。 但对于其他EVM兼容链,包括各家L2来说,是否跟进EOF、是否提前适配,可能将成为一个值得思考的技术战略决策点。
Show more
0
1
1
0