在 Ethereum Casper 101[1] 中,Jon Choi 对 Casper 做了一个很棒很清晰的综述,并解释了为什么显式最终确定性(explicit finality)对于可扩展性(scalability)大有裨益。本文旨在给出一个以太坊分片的设计概览,并阐释显式最终确定性如何有助于区块链分片。
为了完全理解以太坊分片机制提案的技术规范,我强烈推荐深入研究 Vitalik 写的 sharding doc[2].
区块链可扩展性问题
1、不断增长的交易。
2、目前的块生成过程导致可扩展性受限。区块的gas limit 束缚了区块的计算容量。无论是提高区块的 gas 上限,还是大大降低区块时间,都会导致高陈腐率(high stale rate),并削弱网络对抗攻击的能力。
3、并行不足。首先,现有的 EVM 按先后顺序依次处理交易。其次,出于安全和去中心化的考虑,每个全节点会执行每一笔交易,并存储整个(或修剪后)的状态树。
进阶阅读:并行执行交易 EIP 648 — Easy parallelizability
为了解决可扩展性问题,分片(sharding)引入了链上状态分区(on-chain state partition)来获得更高的吞吐量。
术语
首先,让我们来看一下在主链(你可以理解为现在的 Mainnet chain)和分片链(shard chain)上不同层次的对象区别:
可以简单地这么认为,交易都会被装入 “collation”。与区块类似,一个 collation 也会指向它在链(指的是分片链)上的 parent collation。 成为一个 “collator”,就意味着你有资格在 POS 分片链上提名一个新的 collation。