9 v' e2 S+ N, k0 a8 L% V( ? 橙色和HS区域的复杂性是封装复杂性,理解协议的人可跳过这些部分,以太坊实现可忽略它们,这些区域的错误不会引发共识风险。因此,橙色和HS区 Z" S# e8 u0 }- d8 W3 y X5 a" O" W9 i( k( U# h k9 p
域的代码复杂性远比绿色区域的复杂性危害小。- j5 U) V! {1 e% S' e" s
1 j! Y- d ]- |/ M
将代码从绿色区域移至HS区域的思路,类似于苹果通过 Rosetta 翻译层确保长期向后兼容的策略。% W/ m { a2 f7 i+ q2 G
" @; |; H4 N# q) w/ ` 1. 要求新预编译提供链上 RISC-V 实现:让生态系统逐步适应 RISC-V 虚拟机。 + j4 u' U3 A7 u' L* b4 i / ^( Y: r8 c' x 2. 引入 RISC-V 作为开发者选项:协议同时支持 RISC-V 和 EVM,两种虚拟机的合约可自由交互。 . N: u5 s/ ~& z1 Z1 a8 U. J! P& Z- C: R) j9 K
3. 替换大部分预编译:除椭圆曲线操作和 KECCAK(因需极致速度)外,用 RISC-V 实现替换其他预编译。通过硬分叉移除预编译,同时将该地址的代码: R; [1 R2 W% |* Y- i
2 V% m+ `" _8 _4 ^' [9 ?/ s
(类似 DAO 分叉)从空更改为 RISC-V 实现。RISC-V 虚拟机极其简单,即使在此止步也净简化协议。 6 n& W$ K8 ^: P3 x# K# H % c/ }$ n9 [+ x1 \9 A6 x 4. 在 RISC-V 中实现 EVM 解释器:作为智能合约上链(因 ZK 证明器需要已进行)。在初始发布数年后,现有 EVM 合约通过该解释器运行。 9 a2 q' o9 o5 [9 c {) \ & R9 ^ U$ S% w1 ]+ q 7 K l8 v6 _- K7 P8 \6 ], p 完成第 4 步后,许多 “EVM 实现” 仍将用于优化区块构建、开发者工具和链分析,但不再是关键共识规范的一部分。以太坊共识将 “原生地” 仅理解 RISC-V。 % x& |$ ?% o# j V3 n# r+ @: l ! p" r) S& ~$ x+ U, t) F 通过共享协议组件简化1 Z' Q& n0 h/ ~, T" x7 l8 I
, `) L$ w8 G4 Q5 q) P' D: K
降低协议总复杂度的第三种方式(也最易被低估)是尽可能在协议栈的不同部分共享统一标准。不同协议在不同场景下做相同的事情通常毫无益处,但这种 ; r1 ?" K( R% Q3 e% i8 p * }8 Z( L! A2 v0 B: N9 Y! x( ]模式仍常出现,主要是因为协议路线图的不同部分缺乏沟通。以下是几个通过共享组件简化以太坊的具体示例。 " N, _$ S' O) O7 i4 l: T6 V: W j: w; x6 l8 P+ P8 [
统一纠删码2 |! q' \; S% Q/ I7 }( L$ b) r, y, C1 J8 J
1 g% G; f e( F* ^6 E w1 X1 d1 E( _. M 我们在三个场景中需要纠删码: . g' U+ _6 S: @: ~7 u3 ` ! n1 a O8 ^! T/ n' D 1. 数据可用性采样:客户端验证区块已发布。; {7 M$ g, e# Q. a4 Q
& d9 u; p0 c7 H' {, R( R
2. 更快的 P2P 广播:节点接收 n/2 个片段后即可接受区块,在延迟与冗余间取得平衡。 ( e) X% B4 a. j2 L( F# Z& D0 L q, J& z* F7 Q* F5 _, K2 v' v3 Q
3. 分布式历史存储:以太坊历史数据分片存储,每组 n/2 个片段可恢复其余片段,降低单一片段丢失风险。 7 K$ R! b7 b# e5 y* a' C. n ' g6 G0 G' Q+ P$ E, t6 P 若在三种场景中使用同一纠删码(无论是 Reed-Solomon、随机线性码等),将获得以下优势: 0 ]8 I8 n6 n' {' ?5 G4 m1 \! I7 z4 Q# e% y3 q: D9 B0 i
1. 最小化代码量:减少总代码行数。; z9 A9 z$ S g8 x' T% x
: U, j( V d* l4 c1 L# c) C- _0 N 2. 提高效率:若节点为某场景下载部分片段,这些数据可用于其他场景。2 S2 p1 L. r! E
9 e' N+ l6 V* p- B- e 3. 确保可验证性:所有场景的片段均可根据根验证。 + |$ s* S$ F7 b. o) x, W1 b5 V , {5 v5 y9 }% `/ M& |) j 若使用不同纠删码,至少应确保兼容性,例如数据可用性采样的水平 Reed-Solomon 码与垂直随机线性码在同一域操作。# a( p' t! n' B/ t. t) S' n
' p0 v$ y+ @- F
统一序列化格式8 r- D! Q; }% t; N
- ?* m- X* @4 j: r. \! n# C; n; m8 w; D" d F
以太坊的序列化格式目前仅部分固化,因数据可按任意格式重新序列化和广播。例外是交易签名哈希,需规范格式进行哈希。未来,序列化格式的固化程 + j: Q, A" k( A; Q5 h% ` % L" L& g( E" z Q" U度将因以下原因进一步提高:; U$ ^+ @( G: |( F! ~
( \! D* \* ?% K* r) ?; o y- ^& s! l 1. 完全账户抽象(EIP-7701):交易完整内容对虚拟机可见。 , L- @5 X% L# P* Q9 q" P+ x2 r; L, P) d. u. B) D0 w$ O( `: _
2. 更高的 Gas 限制:执行层数据需放入数据块(blobs)。 ' y- L8 v! i8 A2 O2 ?2 { ]/ D- I # z9 H* `, R _. {5 e) ^# i8 y5 E 届时,我们有机会统一以太坊三个层级的序列化格式:执行层、共识层、智能合约调用 ABI。6 }' L+ F8 b, j: [# N- _( {' a5 v6 H. @2 E
0 W1 h# u7 `" S/ y 我提议使用 SSZ,因为 SSZ: 6 s0 | x! m! q+ w" H% Y2 c% f1 }4 e% z. n& L- @6 V6 [
1. 易于解码:包括在智能合约内(因其基于 4 字节的设计和较少的边缘情况)。 ( i# j# }/ Z+ Q. l% m q0 r 3 |2 }( |9 X- d& D. b1 x! b& H 2. 已在共识层广泛使用。 ' R# c7 W' O! A. {8 |; n( B 6 Y" A2 N% S8 C; O4 X# ] 3. 与现有 ABI 高度相似:工具适配相对简单。& X2 s2 Y: x2 f- l
}( b* R% \4 G" F" n. @* B
已有向 SSZ 全面迁移的努力,我们应在规划未来升级时考虑并延续这些努力。+ P2 p; M0 p' \# V* f
+ _# G) f* v5 J7 S9 p8 o' ^ 统一树结构9 k9 P1 g4 f: T4 t {7 `
8 ]5 p4 K5 {: r1 n7 `/ }% p 9 a; X0 V) k% N/ N- H7 \: v 若从 EVM 迁移到 RISC-V(或其他可选的最小虚拟机),十六进制 Merkle Patricia 树将成为证明区块执行的最大瓶颈,即使在平均情况下也是如此。迁移 ' M7 @1 ?/ @5 [0 L" {4 M0 p2 p) J5 v 7 R; |7 G3 r" E8 _到基于更优哈希函数的二叉树将显著提升证明器效率,同时降低轻客户端等场景的数据成本。, c [4 y* p1 `0 ^
* @5 {2 p: y& s8 }
迁移时,应确保共识层使用相同的树结构。这将使以太坊的共识层与执行层可通过相同代码访问和解析。 # l/ H! @1 K6 T 2 }$ u6 F! T) g k6 T 从现在到未来 - h S0 W1 Q6 V j) ~+ h6 w5 ~ N6 A# y
简单性在许多方面类似于去中心化,二者均为韧性目标的上游。明确重视简单性需要一定的文化转变。其收益往往难以量化,而额外努力和放弃某些耀眼功# O' u7 z. ` ^: A- k. u/ \
' @& c6 W" u- c2 I/ e5 v' C
能的成本却立竿见影。然而,随着时间推移,收益将愈发显著 — — 比特币本身就是绝佳例证。 f5 b4 b% O3 f