一文看懂以太坊2.0所有设计和实现线路图
据Trustnodes 5月22日报道,以太坊联合创始人Vitalik Buterin表示,开发人员已经解决了以太坊2.0所需的所有研究突破,现在只剩下实现了。他说道:
“实际上,我们已经取得了全面实施以太坊2.0所需要的所有研究突破。这种情况已经持续了大约一年。”
图片来源: visualhunt
这一大胆的声明是在以太坊2.0阶段0三个测试网出现时提出的,下一阶段将是一个跨客户端的测试网,预计从今年夏天开始。阶段0只是staking,也就是一个虚拟的主网,介于测试网和功能齐全的区块链之间。
一些诸如存储分片等的功能将在明年的阶段1添加。阶段2是实际和全面的启动,预计将在两年内实现。
完整的设计是一个有点复杂的系统,我们认为它通过个体运行感兴趣的分片节点来连接不同的节点组。
分片(Shard)基本上构成当前的以太坊网络,但是假设有1000个节点,然后我们有网络B或分片B,它有自己的1000个节点,所有节点都运行在相同的基本代码上,因此属于同一区块链。分片数量达数百个。
由于这两个体系本质上是不同的,让它们整合在一起已是一项超越了分片技术的突,它将私有和公共区块链、侧链和其他所有领域连接了起来。
以太坊2.0设计
它的工作方式可以先由Buterin作一个技术层面的解释,然后我们将给出一个更简单的解读。Buterin是这样说的:
“跨分片交易的一般流程(我们以传输5ETH为例)是这样的:换句话说,基本上你在分片A上把Eth锁在一个智能合约里,在分片B显示你这样做的证据,然后在分片B上获得Eth。在分片A上销毁5eth,创建一个收据(如提交到该区块状态根的一个Merkle分支),其中包含:(1)目标分片,(2)目标地址,(3)值(5eth),(4)唯一ID。
在这个过程中,一旦分片 B在检测到分片 A的状态根时,则将一个证明该收据的Merkle分支提交到分片B中。如果Merkle分支验证了收据尚未被使用,则生成5 ETH并将其转给接收者。
为了防止双花,我们需要在存储中跟踪哪些收据已经被认领。为了提高效率,需要为收据分配顺序ID。具体来说,在每个目标分片中,我们为每个目的地分片存储下一个序列号,当源分片A和目标分片B创建新的收据时,其序列号是分片A中分片B的下一个序列号(下一个序列号递增,所以不会被重复使用)。这意味着在每个目标分片中,我们只需要跟踪每个源分片的SHARD_COUNT位字段,以防止双花,这意味着每笔跨分片交易只需要一个存储位。”
为了防止双花,开发人员基本上使用了一个听起来像nounce的东西,也就是给它一个数字,然后无限地增加数字。
这是在协议级别上的,所以你知道没有人作弊,因为你同时运行了分片A和分片B的节点。节点验证规则,查看区块头(Block header)或Buterin所称的收据,如果有任何错误,节点会告诉你。
这里我们使用多数节点,但对你来说,两个节点可能运行在一个客户端上,尽管这是处于阶段2的非常早期的实现细节。
正如你所能想象的那样,在这里很难让分片A上的智能合约与另一个分片B上的智能合约“交互”, 而比方说分片B上有Cryptokitties的DNA。
我们不知道你如何将DNA传输到分片A,并让Cryptokitties在分片A上运行,而它们是在分片B上产生的。
一种方法是通过一个中央协调器,但这也会有它自己的问题。如上文所述,当移动Eth时,它是点对点的。
突破还是极限提升?
尽管有些人说编码是最困难的部分,但实施这个阶段可能才是最困难的部分。
此外,如果你同时运行不同分片的节点,那么这就相当于增加了区块大小。
这里的区别在于,你不必同时运行不同的分片,或者你可以为一个分片设置一个全节点,为另一个分片设置一个较轻的节点。
然而,在这点上,你可能会与Bitcoiner陷入无休止的争论,他们可能会说,一个全节点是一个运行所有分片的节点,很少有人能负担得起这样去做。
以太坊1.0就是在这里出现的,它本身就是一个复杂的设计,其前提是通过删除过时的智能合约和彻底的删减来删除数据。
第一个可能比第二个更容易,Bitcoiner们不太了解以太坊智能合约,所以我们不知道他们会怎么说。
对于删剪,你可能需要设置检查点,这有点像一个新的创世区块。对于以太坊,你的节点不必从2015年就开始启动,而可以从2017年开始。然后其他数据被丢弃,可能上传到某个地方作为存档。
这里的难点是谁设置检查点。如果是一个人或一个团体人,可能会有很多问题,但有了staking,就有可能以去中心化的方式去做这件事。
扩容竞赛
一位比特币开发人员曾评论说,以太坊正在追求Bitcoin Core中被拒绝的所有理念。
这是好事还是坏事,取决于你的看法,也取决于它实际上是如何实现的,因为Bitcoin Core并没有完全遵循这些理念来得出正确的结论。
此外,比特币在其当前状态下无法在足够长的时间内继续运行,因为尽管每10分钟1MB并不多,但如果我们把它拿出来,十年后,它的总量累积起来就很多了。
这个过程非常缓慢,从某些方面来说,现在一切都很好。例如,当前的区块链大小是220 GB。十年后,它将增加到520GB。考虑到比特币的运行略高于1MB,到时它的区块链大小应该是1TB。1TB可能也没问题,但它不会减少,只会增加。所以最终它会变成10TB,或者100TB。
显然,你可能会说最终我们都会死,但如果你解决了这个问题,你就解决了扩容性问题。
闪电网络可能会争取一些时间,以太坊拥有Plasma、状态通道以及其他所有特征,但它们并不能完全解决不断增长的历史性根本问题。
对于比特币,目前开发人员正试图尽可能地压缩数据。你知道,从某种程度上讲,时间是有的,但时间对竞争对手来说是有利的,因为拥有更大的容量,同时保持去中心化显然是一件非常有用的事情。
以太坊是否能解决扩容问题还有待观察。现在计划已经制定好了,并且很显然,所有的问题都已找出。基础框架将在今年晚些时候就绪,接下来在明年准备砖瓦和所有其它材料,然后在2021年装上窗户和屋顶,最后就是优雅的装修了。这样,一座由大约100个协议开发人员建造的漂亮的以太坊房子就建成了。