和风网标志

重新思考分片和智能合约以最大化区块链吞吐量

日期:

从我们的系列中休息一下, 大卫·贝伯曼 在查看了 Scaling Ethereum 2019 LIVE - Day XNUMX 演示后写了这篇文章。

很多研究都涉及如何通过分片使区块链扩展。 据我所知,主要概念是允许在不同的分片上并行执行多个事务,而不会损害包括所有分片在内的区块链的不变性和安全性。 我能找到的大部分研究都集中在分片共识算法上。 尽管所有这些研究看起来都非常有前景,但我想从不同的角度来看看分片。

为了争论,假设存在分片的共识算法。 此外,假设该算法在开放的无许可区块链上运行,并且今天可用。 我的问题是,即使这样,我们是否能获得分片所希望的扩展。 为了了解这一点,让我们快速看一下阿姆达尔定律[1]:

                                                                          

      阿姆达尔定律

这表明整个任务执行的理论加速比随着系统资源的改进而增加,并且无论改进的幅度如何,理论加速总是受限于不能从中受益的部分任务。改进。[2] 这实质上表明,一旦所有可并行化部分都最大化,系统的吞吐量将受限于串行化部分的吞吐量。

对于区块链分片,我将其解释为吞吐量的潜在增加目前仅限于可以在单独的分片上同时执行的交易数量。 也就是说,如果一个分片上的事务需要来自另一个分片的数据,它必须同步来自另一个分片的数据传输。 这是一个序列化点并且给定一个大的分片池,根据阿姆达尔定律支配吞吐量。

个人原生代币交易

两个账户之间的交易明确限制为仅在账户之间转移硬币余额,例如在两个账户之间发送硬币,不需要来自任何其他账户的数据。 因此,如果两个账户的数据在特定分片上可用,则该交易可以与其他账户上的其他交易异步执行。 这与分片数量和账户对之间不相交交易的数量成比例。 随着账户数量的增加,人们预计分片这种独立交易的机会也会增加。 在限制中,吞吐量取决于执行单个事务所需的时间,而不管在任何给定时间点正在执行多少事务。 这正是我们想要提高区块链吞吐量的情况。

用于分片的智能合约

对于智能合约来说,事情并没有那么好。 智能合约在区块链上实现为单个分类帐帐户,其数据状态与程序代码相关联。 每个事务都通过更改数据状态的代码运行。 每个更改都记录在区块链上,并使用代表状态的哈希进行验证。 为了保持区块链的确定性、一致状态,每个智能合约一次只能在一个分片上执行,除非智能合约账户本身的状态可以分片。 一般来说,这使得智能合约账户的执行成为所有向智能合约发送交易的账户的限制因素。 由于智能合约用于代币化,随着给定代币的流通量增加,其智能合约很可能成为吞吐量的瓶颈,无论存在多少分片,正如阿姆达尔定律所预测的那样。

使用当前智能合约的实现模型,我只看到两种可能的分片扩展方式:

· 使用多个分片隔离的智能合约

· 使用确定性的多线程智能合约,(又名 SIMD)

多个智能合约可以利用分片。 例如,如果每个代表一个代币的智能合约都分配给一个单独的分片,那么给定代币的交易不会影响其他代币的交易。 尽管每个单独的代币的交易都受限于智能合约在其特定分片上的吞吐量,但随着代币的数量越来越多,分片的数量可以随着它们线性增长。 这并不能解决单个智能合约的吞吐量问题,但它是对单个区块链上所有智能合约的改进,无需分片。 即使采用这种方法,如果需要来自分片之间共享的用户帐户的任何状态(例如,用于支付交易的本机硬币),也会出现问题。

来自超级计算的一种称为矢量化的技术使程序能够并行执行其代码部分。 这被称为单指令多数据(“SIMD”)。 为 SIMD 编写的程序是确定性的。 本质上,今天是通用图形处理器单元(“GPGPU”)的 SIMD 机器将其数据分片到处理器阵列中。 这对于某些类别的应用程序非常有效,例如图形的矩阵运算等。

该技术理论上可以应用于区块链智能合约。 也就是说,可以明确编写智能合约以支持以某种方式并行执行交易。 我不知道这将如何实现。 也许区块链研究会在这个领域提出一些创新的东西。 然而,即使有这样的解决方案,编写支持 SIMD 的智能合约也会变得更加复杂,正如人们所预料的那样。

多个智能合约和 SIMD 智能合约都不是理想的解决方案,尽管两者都可能提供一些规模化的机会。

智能对象资产帮助启用分片

智能合约分片的限制点是状态分片和代码执行。 如果有办法避免交易在单个智能合约状态和代码执行上序列化,分片可以增加吞吐量扩展。 换句话说,如果有一种多指令多数据(“MIMD”)执行的方法,区块链分片的机会将大大提高。

如“重新思考区块链账户概念”中所述[3],如果每个用户账户都有自己的状态,而不是使用单独的智能合约,那么每个用户账户都可以包含代表资产的对象,无论是作为代币还是其他类型的实体。 如“使用 DataGrid 区块链可扩展区块链对象模型的可扩展智能对象资产、智能对象资产所有权和部分智能对象资产所有权”中所述[4], (XSOA) 和对 XSOA 的引用可用于在账户之间转移所有权,并在账户状态之间直接进行交易。

例如,给定两组交易,每笔交易在不同账户之间,即:一笔交易是从账户A到账户B; 另一笔交易是账户 C 和账户 D 之间的交易,则交易可以同时在不同的分片上执行。 此外,由于 XSOA 的代码独立于任何账户,并且每个交易的代码可能不同,我们可以实现 MIMD 模型的分片。 那是每个分片上的不同代码和每个分片上的不同数据。

这里规模的限制点是可以在不相交的账户集之间同时发生的交易数量。 我们预计,随着账户数量的增长,任何交易组中不相交账户集的机会也会增加,这反过来会导致分片机会的增加。

结论

鉴于分片共识算法的可用性,一个突出的问题是如何利用这种技术。 智能合约本质上是序列化交易,除了复杂的 SIMD 类型的解决方案之外,只能通过使用多个单独的隔离智能合约来提供扩展。 即使这样,每个智能合约的吞吐量也仅限于单个分片的吞吐量。 通过重新考虑用户帐户以包含状态信息,并使用 XBOM 模型,DataGrid 区块链提供了一种解决方案来扩展分片可扩展性,该解决方案可随帐户数量和帐户之间的不相交事务而扩展。 除了启用继承和实时代码重用之外,我们认为这是解决区块链扩展问题的重要解决方案。

[1] https://en.wikipedia.org/wiki/Amdahl%27s_law

[2] 同上

[3] https://medium.com/@dbeberman/rethinking-the-blockchain-account-concept-6c94748f8021

[4] https://medium.com/@dbeberman/extensible-smart-object-assets-smart-object-asset-ownership-and-fractional-smart-object-asset-995c259a8508

资料来源:https://steemit.com/blockchain/@mholdmann/rethinking-sharding-and-smart-contracts-for-maximizing-blockchain-throughput

现货图片

最新情报

现货图片