解决存储大小问题的唯一方法是无状态(Statelessness)和状态到期(State expiry)。 无状态允许一类节点在不维护永久性存储的情况下验证区块链。 状态到期会释放出最近未访问的状态,需要用户手动提供继续维护这些状态的证据。 这两种路径都已经使用了很长的时间,并且关于无状态的概念验证实现也已经开始。 这两项改进相结合,可以极大地缓解这些担忧,并为大幅提高gas限制打开空间。 但是,即使在实施了无状态和状态到期之后,gas限制可能也只能安全地增加大约3倍,然后其他局限性再次开始主导。 分片之后会发生什么? 分片(Sharding)从根本上克服了上述限制,因为它使区块链中包含的数据与单个节点需要处理和存储的数据脱钩,而不是节点通过亲自下载和执行来验证区块,而是使用先进的数学和密码技术来间接验证区块。 结果就是,采用分片的区块链可以安全地拥有非分片区块链无法做到的非常高的交易吞吐量。 这确实需要很多密码学上的聪明才智来创建能成功地拒绝无效区块的完全验证的有效替代品,但是可以做到这一点:该理论已经建立并且基于规范草案的概念验证已经在研究之中。 以太坊正计划使用二次分片,其总体可扩展性受到以下事实的限制:节点必须能够处理单个分片和信标链,而信标链必须对每个分片执行一定的管理工作。 如果分片太大,则节点将无法再处理单个分片;如果分片太多,则节点将无法再处理信标链。 这两个约束的乘积就形成了一种上限。 可以想象,可以通过三次分片甚至指数分片来走得更远。 在这种设计中,数据可用性采样肯定会变得更加复杂,但可以做到。 但是以太坊不会采用比二次分片更高的分片了。 原因是,从交易的分片的分片实际上无法实现额外的扩展性增益,除非其他风险开始变得不可接受地高。 那么这些风险是什么? 最小用户数可以想象,即使只有一个用户愿意参与其中,非分片的的区块链也可以运行。而分片区块链不是这样的:没有单个节点可以处理整条链,因此您需要足够的节点,以便它们至少可以一起处理区块链。如果每个节点可以处理50 TPS,而整条链可以处理10000 TPS,则该链至少需要200个节点才能生存。如果该链在某个时候少于200个节点,则要么节点无法再跟上链,要么节点停止检测无效块,否则可能会发生其他不良情况,具体取决于节点软件如何设置的。 实际上,由于需要冗余(包括用于数据可用性采样),因此安全的最小节点数量比单纯的“链TPS除以节点TPS”高出几倍;对于上面的示例,我们说是1000个节点。 (责任编辑:admin) |