反思分片和智能合约的制约因素

2019-08-18 14:38 栏目:经验之谈 来源: 查看()
有很多研究致力于如何通过分片来增强区块链的可扩展性。据我所知,这些研究的主要思想是使多个事务能够在不同的段中并行执行,而不会牺牲区块链(包括其所有分片)的不可修复的修改和安全性。成为可能。我能找到的大多数研究都集中在碎片的一致性算法上。虽然所有这些研究看起来都很有希望,但我想从不同的角度来看待碎片。

首先,为了展示我的观点,让我们讨论现有片段设计中的一致性算法。更准确地说,它是一种共识算法,可以在开放的无信任区块链上进行讨论并可用。虽然这些算法已经可用且已经运行,但我们是否真的通过分片获得了所需的可扩展性?让我们快速浏览一下Aldam定律[1],这样你就可以更好地理解我的困惑:

反思分片和智能合约的制约因素

上述法则表明,理论上,随着系统资源的增加,执行所有任务的速度将会增加。然而,无论增加多大,理论速度总是受执行部分的执行限制,而这部分任务无法从改进中受益。速度[2]。这带来了根本问题。——一旦所有可并行化部分的吞吐量最大化,序列化部分的吞吐量就成为系统吞吐量的上限。 对于区块链的碎片化,这意味着吞吐量的潜在增加受到当前可在隔离片段中同时执行的事务数量的限制。也就是说,如果切片中的事务需要来自其他切片的数据,则它必须同步来自其他切片的该数据的传输。这是一个序列化的事务,根据Aldam定律,大量分片的存在限制了吞吐量。 独立的本地货币交易 如果明确限制两个帐户之间的交易仅在两个帐户之间转移货币余额,例如在两个帐户之间汇款,则不需要任何其他帐户中的数据。因此,如果两个帐户的数据在特定切片中可用,则可以异步执行事务和其他帐户的事务。随着分片数量和帐户对之间不相关事务的数量增加,网络吞吐量会扩大。随着账户数量的增加,可以预见的是,分割独立交易的可能性将会增加。在上述约束下,吞吐量的大小由执行单个事务所花费的时间决定,因为同时我们可以执行大量的事务。这是我们在考虑增加区块链吞吐量时想象的理想情况。 设计分片的智能合约 但对于智能合约,情况并不像想象的那么顺利。智能合约在区块链上作为单独的分类帐帐户部署,但数据状态及其程序代码除外。代码上运行的每个事务都会更改智能合约中的数据状态。每个更改都记录在区块链上,并通过表示状态的哈希值进行验证。为了保持区块链状态的确定性和连续性,每个智能合约一次只能在一个切片中执行,除非智能合约账户本身的状态可以分段。总之,这使得智能合约帐户的执行成为将交易发送到智能合约的所有帐户的限制因素。由于智能合约用于发行代币,随着特定代币的数量增加,无论有多少分片,他们的智能合约很可能成为吞吐量的瓶颈,正如Aldam定律所预测的那样。 就目前智能合约的碎片实施而言,我只能看到两种通过分片来提高可扩展性的方法: ·使用分片中隔离的多个智能合约 ·使用确定性多线程智能合约(也称为SIMD) 使用多个智能合约可以充分利用分片的优势。例如,如果将每个智能合约(表示令牌)分配为在单独的分片中执行,则对于特定令牌,该事务不会影响其他令牌的事务。虽然每个令牌的事务受到其所在的特定分片中智能合约的吞吐量的限制,但是分片的数量可以随着大且不断增长的令牌线性增长。这并不能解决单个智能合约的吞吐量问题,但它是区块链的改进,其中所有合同都在一条链上并且没有碎片。 然而,即使采用这种方法,只要用户帐户的状态分布在不同的分片上并且同时(例如,使用本地货币来支付交易),就会出现问题。 一种称为超级计算矢量化的技术使程序能够并行执行某些代码。这被称为单指令多数据流(“SIMD”)。为SIMD编写的程序是确定性的。从本质上讲,SIMD机器(也称为今天的通用GPU(“GUGPU”)使用一系列处理器来分割数据。这对于某些类型的应用非常有效,例如图形和类似的矩阵操作。 理论上,这项技术也可以应用于区块链中的智能合约。也就是说,可以明确地编写智能合约以支持以某种方式并行执行事务。至于如何实施,我不太确定。也许在这个领域会出现一些创新的区块链研究。然而,可以预见的是,即使有这样的解决方案,为SIMD操作编写智能合约也会非常复杂。 无论是使用分片中隔离的多个智能合约还是使用SIMD智能合约,都很难将其视为理想的解决方案,尽管它们都有可能提高可扩展性。 智能对象资产可以进行分片 对于智能合约的碎片化,主要的限制因素是状态的碎片化和代码的执行。如果有一种方法可以避免在单个智能合约状态和代码执行中进行事务序列化,则碎片可以通过提高吞吐量来提高可伸缩性。换句话说,如果存在多指令多流(“MIMD”)执行方法,则将显着改善通过区块链分片来提高可伸缩性的机会。 正如我们在“重新思考区块链帐户概念”[3]中所描述的,如果每个用户帐户都有自己的状态,而不是使用单独的智能合约,那么每个用户帐户都可以包含代表资产的对象,无论对象是令牌还是另一种类型的实体。如文章“可扩展智能对象资产,智能对象资产所有权和基于DataGrid区块链的扩展区块链对象模型的分数智能对象资产所有权”[4]中所述,可以使用XOSA和对XSOA的引用在账户之间转移所有权直接通过帐户状态之间的交易。 例如,假设有两组交易,每组交易在不同的账户之间,即一个交易从账户A发送到账户B;另一个事务从帐户C发送到帐户D,然后这两个事务可以在不同的分片中同时执行。此外,由于XSOA的代码独立于任何帐户,并且每个事务的代码可能不同,我们可以使用MIMD模型实现分段。在此模型中,每个分片中的代码和数据都不同。 对于此模型,限制其可伸缩性的因素是可以在不相交的帐户组之间同时发生的事务数。我们可以预见的是,随着账户数量的增加,不相交账户组之间任何一组交易j的机会增加,这反过来又会导致分散机会的增加。 结论 作为一种假定可用的碎片一致性算法,一个突出的问题是如何使用这些技术。智能合约自然会对交易进行序列化,除非您使用复杂的SIMD类型的解决方案,否则您只能通过使用多个隔离的智能合约来提供可扩展性。即使采用这种方法,每个智能合约的吞吐量仍然受到单个切片的吞吐量的限制。通过重新启用用户帐户以包含状态信息和使用XBOM模型,DataGrid区块链提供了一种改进碎片可伸缩性的解决方案。——根据帐户数量和帐户之间的不相交事务进行缩放。除了支持继承和实时代码重用之外,我们认为这是区块链可伸缩性问题的重要解决方案。 [1]https://en.wikipedia.org/wiki/Amdahl%27s_law [2]同上。 [3]https://medium.com/@dbebjerman/rethinking-the-blockchain-account-concept-6c94748f8021 [4]https://medium.com/@bebeberman/extensible-smart-object-assets-smart-object-asset-ownership-and-fractional-smart-object-asset-995c259a8508

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发