值得你期待的 ETH 2.0
落日余晖97
发表于 2022-12-5 18:10:56
177
0
0
——摘自VitalikButerin的《去中心化的含义》
另外,以太坊在运作方式上是去中心化的(区块链的运行不依靠某个实体)。
$ T7 P! B/ v1 l- v, n" P
既然以太坊不受个体控制,那么以太坊2.0是如何搭建的?/ r! R. z- r# z$ Q1 T$ p
6 t) h" O- p0 q/ V) C/ Z4 Q" \
这是以太坊的一大亮点。它的有机性有望推动人类组织在扩大规模的同时保持包容性。7 [7 `7 }* O0 q8 Z& g/ z
5 O9 q7 Y1 g ^! ^1 {. a
以太坊协议规定了构建以太坊区块链所必需的交互。作为一个巨大的开源项目,以太坊有一个庞大的社区,聚集了很多研究者和实施者,他们一起提出观点,讨论,改进并执行以太坊协议。以太坊基金会在其中具有很大的影响力,拥有广受尊敬的研究者和实施者,不过最终决策需要整个社区达成共识。
用来运行以太坊的软件叫做客户端或节点。已经出现了很多以太坊客户端应用,都是不同的软件开发团体编写的(都是开源的)。7 a0 j ?6 u7 x1 d
除了客户端应用,还有一整个开源软件项目生态系统用于完善以太坊的方方面面。& `" w J6 A# @8 `1 t1 J. B! ^
$ S- {* ?) o; E! n" J v+ p
其中包括:
智能合约语言(Solidity、Vyper)- [- N* ~8 P: f& ^' b
) R7 {: x+ }) r% ~
RPC库(web3js、ethers、Nethereum)) K$ I: w0 I9 y7 r& c
7 V: U2 j, k" P1 S) u% H9 i5 x" q
开发工具(truffle、ganache、solc、solium、embark)
回顾部分结束,接下来进入正题。# Z. z( \0 c# s. w# i* `" _
研究
3 y$ L; _$ ^' ~0 H
许多正在进行的研究主题需要结合起来才能实现以太坊2.0。这些主题都是有公开文档记录的,在以太坊研究网站上也有讨论。研究人员和软件开发者可以查询并评论这些提议。# e* ?) H% h6 s" b) N1 V
研究主题包括:4 n( X8 a8 q/ P' ]
( O) v# Y9 S+ D: I) Z/ x! v
签名聚合
随机数生成
分叉选择 D3 N2 x0 }$ Y' F$ F. d0 j* G
% f9 n0 M! v$ D7 k& L
数据可用性( ^) W! i4 m, O2 _
轻客户端支持
8 V% Q% v# e$ N, B, C( b, |( }) p
点对点通信9 v5 L# K/ i" R% \# S: A7 R& S# f
7 M+ n$ n; [$ s& Q9 s3 N5 p. w
跨分片通信和状态/执行分离9 q. A+ W1 i. `/ h) i6 \
许多研究主题已经可以实现了,不过仍有许多处于早期阶段,需要更多时间去突破。
执行参考" r( q: R- i* W v2 f
随着这些研究主题日趋成熟,在此基础上已经形成了一份规范,作为执行团队开发以太坊2.0客户端的参照。
% N5 w9 l( j' S& J* h, f6 i7 Q7 ^; g( @
为助力以太坊2.0的开发,以太坊基金会正通过Python语言开发参考实现客户端。基金会还向执行团队提供了宝贵的社区支持,而且还定期举行两周一次的以太坊2.0实现者视频会议,追踪进度、解答疑问并且就常见问题达成共识。
信标链/分片客户端4 q3 r( p8 V# u% K' s/ i$ ?
4 @* Z$ T) i" |! R+ ]$ L& ^
下列团队都在研究或开发信标链/分片客户端:
P-rysm—由PrysmaticLabs开发,用Go语言编写。该团队每两周就会发布一次很棒的进程更新。1 Q- |1 N0 W, [
6 f. N9 w- c; {9 d/ g W
Lighthouse — 由SigmaPrime开发,用Rust语言编写。- J$ M1 z0 {# D
Nimbus — 由Status开发,用Nim语言编写。2 ^0 W6 {/ f6 Y# W7 s- M- r8 y( z
Lodestar — 由ChainSafeSystems开发,用JavaScript语言编写。
Harmony — 由EtherCamp开发,用Java语言编写。' D* ]! M; g# t/ f1 ]" A: b
) s6 O' B& A9 m9 W. ]! |
Pantheon — 由ConsenSys的协议工程团队PegaSys开发,用Java语言编写。该团队专注于解决以太坊面临的关键挑战,包括公链和私链的可扩展性和隐私性问题。
Trinity — 由(PiperMerriam领导的)Trinityteam开发,用Python语言编写。
2 i: Y/ s; } a2 P% r0 ~( }# E# K
在执行以太坊2.0规范方面,这些团队的进展各不相同。在眼下阶段,所有团队都在努力搭建信标链客户端,这是以太坊2.0的核心愿景。
目前,信标链的搭建已经完成以下工作:
信标链状态数据结构和持续性# A8 l9 A8 C) G( V7 E+ ^3 Z
! |. B0 D9 G% z4 U, X
每个区块的状态转换
分叉选择规则的实现
验证者改组! j$ S0 h% l( d1 A- b2 |
0 T) g+ v; \$ a2 o2 o9 ^& X+ K
区块提议者的角色定位6 q- U6 Y$ c. v/ [6 M+ W0 U
, \) u5 I2 M: B1 K' a8 ^( A1 K
数据结构序列化
+ Z- ^$ S, ?5 G; [
点对点协议
9 w% F1 u# T& @9 F0 x
目前正在讨论的一项关键流程是需要一种通用测试语言来编写测试案例——能让研究者定义一组测试及其预期结果,每个团队都能基于预期成果来验证执行情况是否符合规范,从而确保不同团队之间的一致性。
eWASM
eWASM不是针对以太坊2.0构建的。eWASM团队已经开发了一段时间,专注于解决eWASM与当前以太坊虚拟机的兼容性问题。eWASM团队正在评估以太坊2.0的影响,不过这项研究还是有点为时过早,毕竟以太坊2.0的实际执行情况尚且未知。# A5 |; c" K! Z! v. r
特别要指出的是,新的以太坊2.0分片系统将采用一种延时执行模式。就目前而言,一旦交易得到处理,以太坊虚拟机区块链就会立即执行智能合约代码。8 _" @+ }+ ^5 a/ p% L; ?; W* g
/ U! l4 e' U. ^4 v3 j
在新的以太坊2.0分片系统中:
2 u0 y$ z- T% l2 E
分片只负责交易排序和数据存储2 P) k6 ?- T! d& z h
执行过程是重叠的,可以读取多个交易、执行代码并返回结果
执行重叠可能是建立在区块链之上的二层方案,而非融合进区块链的底层构架。
成为第一个吐槽的人