其中,「eth 1.x statelessness(无状态性)」可说是对于 eth1 ? eth2合并最至关重要的一个条件,本文将以「无状态性」为主轴做相关的介绍。 状态爆炸对以太坊网络的影响 由于以太坊区块链的本质是一台依靠矿工维护的去中心化大型「状态机」,随着区块数量的增加更迭状态,不断向前移动。以太坊的完整「状态」包含所有个人帐户和余额的当前状态,以及在 EVM 中部署和运行的所有智能合约的整体记忆体。 以太坊网络在每个区块高度都只有唯一一个获得全网所有节点共识的「状态」,这个「状态」在每一个新区块会产生变动并随着区块接至区块链上。 矿工在执行交易运算时,必须依据交易内容至节点内以「Merkle-Patricia Trie 」资料结构组成的状态树中更改相关的状态值,再重新计算出每个树状节点的 hash 值,算出新的「Merkle Root」,生成新的状态树。 - 图片来源:https://blog.ethereum.org/ - 截至 2020/06,当前的以太坊网络中约有 5 亿个状态值,总状态大小约为 10 GB,状态会随着网络上的帐户与智能合约数量增加而按比例增长。因此,如果以太坊继续获得主流采纳,状态可能会在未来数年持续爆发性增长。不断扩大的状态主要会对节点造成两大影响: 节点读取状态耗时增加,交易处理速度变慢 目前每个新区块矿工大约需要添加或修改 3000~6000 个状态值。由于矿工处理每一笔交易时都必须要读取节点资料库中状态的相关资讯,当状态数量持续增长,在状态树中查询到指定状态值的耗费时间就越长。 建构新的状态树耗时更长,区块验证速度减慢 当矿工将交易处理完时,必须建构一个由新的状态组成的 Trie 结构状态树,当中涉及大量的 hash 值运算。计算完 Root Hash 方能建构出新的 Block Header,打包出新区块。 小结 综合来说,持续增大的「状态」与「节点大小」将导致新的全节点启动成本大幅提升:对于「储存空间」的需求与「同步时间」的增加可能会进一步导致网络中全节点数量的减少。 (责任编辑:admin) |