众所周知,以太坊的成功已经超越了它最初的模式,尤其是它的扩展性以及它使用工作证明作为信任的识别。互联网的一个梦想是建立一个分布在世界各地的,能够进行处理和服务的基础设施,但我们最终采用的是中心化的方法,数据集中在中心化的服务器中。在以太坊的世界观中,数据分布在世界各地,存储在许多地方,这些地方对互联网的当前状态没有中心化的控制。在一个完美的互联网中,我们需要有区块链的本地版本并与之通信,我们知道这与地球另一端的其他人正在使用的状态相同。
我们现在看到分片被推广到以太坊基础设施中,这将显著增加在给定时间可以处理的交易数量。通过分片,以太坊节点只需要存储分布式注册表的一部分,并将该信息转发给网络中的其他节点。
让我们详细了解一下分片的工作原理。
我们正在解决的主要问题是,为了创建一个共识,每个节点必须执行所有的计算并验证每个交易。当交易数量增加时,就会降低网络速度,以太坊就在此遇到了瓶颈。
对于以太坊网络的所有交易,我们都有一个确定的状态——全球状态。每个人都应该能够检查此状态并查看所有交易。但现在我们可以用Merkle树来拆分状态,根定义全局状态,并把状态分解为分片节点。下面,我们有三个分片,它们组成了全局根,每个分片收集它们负责的交易:
因此,我们将基础设施的整体状态拆分为多个分片,每个唯一帐户都在一个分片中,这些帐户只能与这个分片中的其他帐户进行交易。Vitalik Buterin认为可以想成将区块链分成数千个岛屿,每个岛屿可以做自己的事情。在每个岛屿上,岛上的人们彼此之间进行贸易和交易,而不要求其他岛屿的人参与进来。只要我们在岛上有一个可靠的代理在记录交易,就可以将其输入到全球交易分类账中。如果岛上的人联系其他岛屿,我们可以设置一个机制来支持这一点,并将交易链接起来。
分片系统的工作方式是创建一个交易组,该交易组有一个交易组头和一个交易组主体(并存储与该分片相关的所有交易)。在下面的例子中,我们以Shard ID 22为例,在交易组头中我们有:
分片ID:这被标识为与交易相关的分片。
Pre-state根:它定义了新交易之前的状态Shard 22根。
Post state根:它定义了新交易之后的状态Shard 22根。
收据根:这是用于交易的Shard 22的收据。
我们还可以在交易组头中看到签名。这些节点被选中来验证分片中的交易,并且这是随机选择的。因此,每个分片都用ID标识自己,然后用自己的交易维护自己的状态,并映射回以前的状态。这类似于为一个分片运行一个独立的区块链,其中分片内的交易不与分片外的其他交易交互。
但是,当一个分片中的帐户希望与另一个分片进行交易时,会发生什么呢?我们记录一笔交易并向分片 B 发送收据证明。然后该分片将收据的消费发回。
分片的主要挑战是我们是否能够确保分片在可信节点上工作,以及分片之间相互信任的地方在哪。
在实现完全分片的基础设施的过程中,我们需要将现有的方法迁移到完全分片的基础设施中,其中一个正在实现的方法是Danksharding(以以太坊开发者Dankrad Feist命名)。Danksharding的目标是提高速度、降低gas费用和大容量的数据存储。它基本上是迈向以太坊完全分片基础设施的一部分。在这方面,我们告别了矿工,现在有了申请人、建设者和验证者。
总的来说,我们通过可信任的区块建设者来选择进入slot的数据和交易,然后向申请人发出请求。建设者向申请人提出交易费用,然后申请人选择出价最高的人。如果建设者被选为区块中的一个给定slot,那么他们负责将数据和交易添加到这个slot中。然后验证者将验证该slot是否被正确构建。它的核心优势是建设者提出了一个从交易中无合并的方案,因此交易的gas费用会大幅降低,因为每笔交易都没有相关的gas费用。只要没有太多的投标人,填补空位的总成本可能会相当低。
我们现有的以太坊基础设施中的矿工基本上只是区块申请人,但一旦新的基础设施实现,他们将成为验证者,而被称为区块建造者的新软件代理将在收集和提出数据和slot的交易中发挥关键作用。如果一个slot被验证为无效,可以提出一个擦除代码,那么那里的数据最终可以从slot删除标记。
任何新基础设施的推出都需要小心谨慎,因为一个漏洞就可能导致大规模的妥协。因此,EIP-4844被提议作为danksharding的原型规范:
该提案的全名与二进制大对象(Binary Large Objects,简称blobs)有关。虽然数据blob存在于许多其他应用领域,但新提案的主要区别在于它们可以与智能合约相关联。对于blob,提案者建议应该存在一个与交易相关的数据包。它们可以有一个头和一个数据主体,并由申请人进行数字签名。这个数据blob的最大大小建议为1MB。这将允许交易访问共享数据。
如果说比特币是福特T,那么以太坊就是特斯拉。在这个过程中,福特T进行了升级,而且没有进行彻底的升级。所以让我们看看有史以来最大的计算引擎之一将如何应对这一新升级。