如何通过分片实现区块链的扩展
扫描二维码
随时随地手机看文章
阿姆达尔定律与分片有什么关系?
Amdahl加速定律的基本出发点是:1.对于很多科学计算,实时性要求很高,即在此类应用中时间是个关键因素,而计算负载是固定不变的。为此在一定的计算负载下,为达到实时性可利用增加处理器数来提高计算速度;2.因为固定的计算负载是可分布在多个处理器上的,这样增加了处理器就加快了执行速度,从而达到了加速的目的。在此意义下,1967年Amdahl推导出了固定负载的加速公式。
对于如何通过分片实现区块链扩展进行了大量的研究。
据我所知,目前主要概念是在不同的分片上启用多个事务并行执行,而不会影响区块链的不可变性和安全性,包括所有分片。我能够找到的大部分研究都集中在用于分片共识的算法上。 虽然所有这些研究看起来都很有希望,但我想从不同的角度来看待分片。
为了论证,我们假设存在一个用于分片的一致性算法。 此外,假设该算法在开放的无权限的区块链上运行,并且正常可以使用。我的问题是,即使有阿姆达尔定律,我们是否可以通过分片获得希望的扩展性。 如果想要了解阿姆达尔定律,可以百度一下。
这表明整个任务的执行的理论加速随着系统资源的改进而增加,并且无论如何改进的程度,理论加速总是受到限制而无法从改进中受益的任务。这基本上表明,一旦所有可并行化部分最大化,系统的吞吐量限于序列化部分的分配。
对于区块链分片,我将此解释为意味着吞吐量的潜在增加目前仅限于可以在单独的分片上同时执行的事务数量。 也就是说如果分片上的事务需要来自另一个分片的数据,则它必须同步来自另一个分片的数据传输。 根据阿姆达尔定律控制吞吐量,这是序列化的一个点并给出了大量的分片。
个人原生代币交易
两个帐户之间的交易明确限制为仅在帐户之间转移硬币余额,例如在两个帐户之间发送硬币,不需要来自任何其他帐户的数据。因此,如果两个帐户的数据在特定分片上可用,则事务可以与其他帐户上的其他事务异步执行。这会随着分片数量和帐户对之间不相交的交易数量而变化。随着账户数量的增长,人们可以预期分割此类独立交易的机会也会增加。在该限制中,吞吐量由执行单个事务所花费的时间决定,无论在任何给定时间点执行多少事务。这正是我们想要提高区块链吞吐量的情况。
智能合约分片
对于智能合约来说,情况并不那么好。智能合约在区块链上实施为单个分类账账户,其数据状态与程序代码相关联。每个事务都通过代码更改数据状态。每个更改都记录在区块链中,并使用表示状态的哈希进行验证。为了保持区块链的确定性,一致状态,每个智能合约一次只能在一个分片上执行,除非智能合约账户本身的状态可以分片。通常这会使智能合约帐户执行成为向智能合约发送交易的所有帐户的限制因素。由于智能合约用于标记化,很可能随着给定令牌的流通量增加,其智能合约成为吞吐量的瓶颈,无论存在多少分片,如阿姆达尔定律所预测的那样。
对于智能合约的当前实现模型,我只看到两种使用分片进行扩展的可能方法:
· 使用在分片上隔离的多个智能合约
· 使用确定性多线程智能合约(也称为SIMD)
多个智能合约可以利用分片优势。例如如果表示每一个代币的智能合约都分配给一条单独的分片,那么给定代币的事务不会影响其他代币上的事务。尽管每个单独代币的事务仅限于其特定分片上智能合约的吞吐量,但是随着代币数量的增加而增加,分片的数量会随着它们线性增长。但这并没有解决单个智能合约的吞吐量问题,这是对单个区块链上所有智能合约的改进而不是分片。即使采用这种方法,如果在分片之间共享的用户帐户需要任何状态(例如用于支付交易的本地代币),则会出现问题。
来自超级计算的一种称为矢量化的技术使程序能够并行地执行其代码部分。这称为单指令多数据(“SIMD”)。为SIMD编写的程序被编写为确定性的。本质上,SIMD机器(通常是通用图形处理器单元(“GPGPU”))在一系列处理器上对它们的数据进行分片。这对于某些类别的应用程序非常有效,例如图形和类似的矩阵运算。
这种技术理论上可以应用于区块链智能合约。也就是说,可以显式地编写智能合约以支持以某种方式并行执行事务。我不确切知道如何实施。也许区块链研究会在这方面提出一些创新的东西。然而,即使有这样的解决方案,编写具有SIMD能力的智能合约也会变得非常复杂。
多个智能合约和SIMD智能合约都不是理想的解决方案,尽管两者都可能提供一些扩展的机会。
智能对象资产开启分片的使用
使用智能合约进行分片的限制点是状态和代码执行的分片。如果有一种方法可以避免在单个智能合约状态和代码执行时序列化事务,则分片可能会增加吞吐量扩展。换言之,如果存在多指令多数据(“MIMD”)执行的手段,则区块链分片的机会将得到显着改善。
正如“重新思考区块链帐户概念”中所述,如果每个用户帐户都有自己的状态,而不是使用单独的智能合约,那么每个用户帐户可以包含代表资产的对象,无论是代币还是其他类型的实体。如“可扩展智能对象资产、智能对象资产所有权和部分智能对象资产所有权与数据报区块链可扩展区块链对象模型”中所述,XSOA和对XSOA的引用可用于在账户之间直接交易之间转移所有权的帐户状态。
例如给定两组交易,其中每笔交易在不同的账户之间,即:一笔交易是从账户A到账户B;另一个交易是在账户C到账户D之间,然后交易可以同时在不同的分片上执行。此外,因为XSOA的代码独立于任何帐户,并且对于每个事务可能是不同的代码,我们可以实现MIMD模型的分片。这是每个分片上的不同代码和每个分片上的不同数据。
此处的规模限制点是可以在不相交的帐户集之间同时进行的交易数量。我们预计随着账户数量的增加,任何一组交易中不相交账户集的机会也会增加,这反过来会导致分组的机会增加。
结论
作为一种给定的分片共识算法,,一个突出的问题是如何利用这种技术。智能合约固有地序列化交易而不是复杂的SIMD类型解决方案,仅通过使用多个单独的隔离智能合约来提供扩展。即便如此,每个智能合约的吞吐量仅限于单个分片的吞吐量。通过重新思考用户帐户以包含状态信息,并使用XBOM模型,DataGrid区块链提供了一种分片可扩展性的解决方案,可根据帐户数量和帐户之间的不相交交易进行扩展。除了启用继承和实时代码重用之外,我们认为这是区块链扩展问题的重要解决方案。