建议的解决方案# 4:分片
区块链世界中的分片类似于传统软件系统中的数据库分片。对于传统数据库,分片是数据库中数据的水平分区,每个碎片存储在一个单独的数据库服务器实例中。这有助于将负载分散到不同的服务器上。
类似地,使用区块链分片,区块链的整体状态被分成不同的分片,状态的每一部分都被网络中的不同节点存储。
单一分片
分片示意图
在网络上发生的事务根据所影响的碎片被定向到不同的节点。每个碎片只处理状态的一小部分,并且是并行处理的。为了在碎片之间进行通信,需要有一些消息传递机制。
实现消息传递有多种方法。Ethereum的例子中,他们的方法是一个“收据”范式:当一个事务在一个碎片执行时,它可以改变的自己的当地的碎片,同时产生“收据”,这是存储在某种形式下的分布式共享内存,然后可以查看其他碎片(但不是修改)。
Ethereum收据的范式
总的来说,区块链分片需要我们创建这样一个网络,在这个网络中,每个节点只处理所有事务的一小部分,同时仍然保持高安全性……这是一个困难的挑战。
为什么?
首先,区块链协议假设网络中的所有节点互不信任。尽管如此,尽管在不同的计算机上进行处理,这些事务仍然需要就一个共同的状态达成一致。由于每个节点互不信任,一个节点在碎片a上处理事务,仅仅对碎片B上处理事务的节点说发生了事务是不够的;相反,它需要以某种方式向他们证明这一点。
此外,由于分片的目标是不用验证每个节点每笔交易,我们需要找出一种验证机制,确定哪些节点碎片验证那些节点的安全性,不能给攻击者创造机会,他们可能滥用权力干扰网络。
实现分片很困难的另一个原因是,在区块链上执行的事务可能依赖于区块链中前一个状态的任何部分,这使得并行执行事务具有挑战性。此外,在并行化的情况下,现在需要一种防止出现错误的方法来缓解竞争条件等问题。
还有很多技术产品如何实现分片Ethereum—特别是,如何使用“加密经济激励”来驱动系统中的玩家不作弊(在这种情况下,确保节点传递有效信息给其他节点)——我希望在以后的帖子中探索。
建议的解决方案# 5:Plasma
Plasma是最近才引入的,是在区块链上实现可拓展计算的相对前途的解决方案之一。
Plasma本质上是一系列在根区块链(即主要的Ethereum区块链)之上运行的契约。根区块链使用一种被称为“欺诈证明”的东西来加强Plasma状态的有效性。(注意:欺诈证明是一种机制,通过这种机制,节点可以使用数学证明来确定某个块是否无效)。
Plasma白皮书
区块链被组合成一个树层次结构,每个分支都被视为区块链,它有自己的区块链历史记录和可简化映射的计算。我们称子链为“Plasma块链”,每个子链都是区块链中的一个链。
Plasma 白皮书
等离子体区块链不显示根链(如Ethereum)上区块链的内容。相反,只在根链上提交区块标题散列,这就足以确定区块的有效性。如果在根链上提交了欺诈证据,那么区块将回滚,区块创建者将受到惩罚。换句话说,我们只在拜占庭条件下向根链提交数据。
因此,根区块链只处理来自子区块链的少量承诺,这反过来减少了传递到根区块链的数据量,并允许更大数量的计算。
此外,数据只传播给那些希望验证特定状态的人。这消除了每个节点监视每个链的需要,从而使契约执行更具有可伸缩性。相反,他们只会观察那些他们在经济上受到影响的人,以执行正确的行为并惩罚欺诈行为。欺诈证明允许任何一方强制执行无效块,并确保验证了所有状态转换。
此外,如果某一特定链受到攻击,参与者可以迅速而廉价地大规模退出受损的子链。
Plasma似乎类似于处理链外事务的状态通道实现(如闪电网络)。状态通道与血浆的主要区别在于,使用血浆,并不是所有参与者都需要在线更新状态。此外,参与者不需要向根区块链提交数据来参与和确认事务。
Plasma的优点是,像Lightning Network这样的状态通道类型的解决方案可能是在Plasma之上进行快速财务支付/合同的主要接口层,而Plasma则以最小的根链状态承诺来维护对状态的更新。
建议的解决方案#6:离线计算(例如TrueBit)
TrueBit是一个解决方案的例子,它使用脱链计算来支持Ethereum智能契约之间的可拓展事务。实际上,就像状态通道一样,TrueBit在区块链之外使用了一个层来完成这个任务。换句话说,它是一个可验证地执行非链计算的系统,否则在链上执行这些计算将非常昂贵。是这样的:
网络中的特定参与者(称为“解决者”)不是参与每个节点,而是执行智能合约所做的计算,并提交问题的解决方案和定金。如果解决者是正确的,那么解算者将得到奖励并返回存款。否则,如果解决者作弊,定金将被没收,任何争议将通过“验证游戏”在区块链上解决。
验证游戏是这样的:在网络中有一组名为“验证者”的参与者,他们在区块链中检查解决者的工作。如果没有验证者发出错误信号,则系统接受解决方案。如果验证者对求解者的解决方案的正确性提出异议,则游戏将在区块链上进行一系列的回合来解决争议,其中计算能力有限的网络中的“法官”将裁决所有争议。该系统的构建是为了确保评委在区块链上所做的工作与在区块链下执行实际任务所需的工作相比是很小的。
在这个游戏的最后,如果求解者实际上是作弊,它将被发现并受到惩罚。否则,挑战者将为虚惊一场所消耗的资源买单。
离链计算粗略图表(由TrueBit提出 )
最后,为了让审核员,承认错误的存在,并且值得努力找到这些错误,TrueBit偶尔做一些有趣的事情,解决部队提交错误的解决方案,改变正常的系统激励:解算器被提交一个不正确的支付解决方案,提交正确的惩罚。这确保了系统中始终存在对正在验证事务的验证者的奖励。
综上所述,协议允许任何人发布计算任务,任何人都可以因为完成任务而获得奖励,而系统的激励结构保证了返回的解决方案的正确性。通过将计算和验证过程从Ethereum区块链移到一个单独的协议中,它可以进行其他大量的计算,而不受Ethereum气体极限的限制。
其他区块链可伸缩性的建议解决方案。
在加密社区中还有一些其他的建议,我觉得很有趣。虽然这些解决方案不是直接针对解决可扩展性的,但是它们可以帮助更容易地间接解决一些可伸缩性问题。
股权证明
与工作证明类似,股权证明是一种共识机制,通过防止双重认证来支持区块链的安全性。
在传统的基于工作证明的区块链中,矿工们通过快速解决计算密集型的工作证明数学难题来换取奖励,从而保持区块链数据的完整性。在这方面,它们帮助使用CPU能力验证事务,并且您拥有的CPU能力越大,您影响网络的能力就越大。在股权证明中,利益相关者用他们的“美元”(在Ethereum的例子中是以太)来投票,而不是用计算能力。
这到底是如何工作的呢?
区块链跟踪某些验证节点,这些节点称为“验证器”,为了参与验证块,这些节点必须放置一个安全存款(称为“绑定”)。如果验证器以一种加密图形可验证的方式生成协议认为“无效”的任何内容,那么它们的押金和参与协商一致过程的特权将被没收。如果他们押对了赌注,他们就能赚回押金和交易费用。
实际上,验证器通过与最终的一致意见打赌来赚钱,而通过与一致意见打赌来赔钱。可以将其类比为工作证明,即每个矿工都用他们的哈希能力押注于哪个块将被接受。如果他们为了欺骗系统而下错赌注,那么他们生产的任何块都将被孤立,导致他们赔钱。
有几种不同类型的利益证明共识算法,以及分配奖励给验证器的不同机制,我将不在本文中讨论。
网友评论