区块链技术资源分享
追寻中本聪先生的脚步

分割区块链的基本设计是什么样的?区块链分片

一个简单的方法如下。有一些节点称为collat​​ors,它们接受碎片k上的事务(取决于协议,协作者可以选择哪个k或随机分配一些协议k)并创建排序规则。排序规则有一个排序标题,一个形式为“这是shard上的事务排序规则”的短消息,k它预期shard 的前一个状态根为k0x12bc57,排序规则中的事务的Merkle根是0x3f98ea,状态在处理完这些事务之后,根应该是0x5d0cc1,签名者是#1,2,4,5,6,8,11,13 ... 98,99“。

一个块必须包含每个分片的排序标题。在以下情况下块有效:

  1. 每个归类中给定的前置状态根与相关联的分片的当前状态根匹配
  2. 所有归类中的所有交易都是有效的
  3. 归类中给出的后置状态根与在给定的前置状态之上执行排序中的事务的结果相匹配
  4. 排序规则至少有三分之二的注册该分片的校勘员签名

请注意,现在在这样一个系统中可以存在几个“层次”的节点:

  • 超级完整节点 - 处理所有归类中的所有事务,并为所有碎片维护完整状态。
  • 顶级节点 - 处理所有顶级块,但不处理或尝试下载每个归类中的事务。相反,如果这个分类中有三分之二的分类者认为这个分类是有效的,那么这个分类是有效的。
  • 单个分片节点 - 充当顶级节点,但也处理所有事务并为某个特定分片保持完整状态。
  • 光节点 - 仅下载和验证顶级块的块标题; 不处理任何排序标题或事务,除非它需要读取某些特定分片状态中的某个特定条目,在这种情况下,它将Merkle分支下载到该分片的最近校对头,然后从那里下载Merkle证明在该状态期望的值。

这里面临的挑战是什么?

  • 交叉分片通信 - 上述设计不支持跨分片通信。我们如何安全地添加交叉分片通信?
  • 单一分片接管攻击 - 如果攻击者在一个分片中接管绝大多数的整理者,要么阻止任何整理得到足够的特征,要么提交无效的整理?
  • 欺诈检测 - 如果发现无效的排序规则,如何可靠地通知节点(包括灯节点),以便验证欺诈行为,如果确实是欺诈行为,则拒绝排序规则?
  • 数据可用性问题 - 作为欺诈检测的一个子集,数据从排序中丢失的具体情况如何?
  • 超二次分片 - 在n> c ^ 2的特殊情况下,在上面给出的简单设计中,将会有多于O(c)的校对首部,因此普通节点将不能处理甚至仅顶级块。因此,事务和顶层块之间需要两个以上的间接寻址(即我们需要“碎片碎片”)。什么是最简单和最好的方式来做到这一点?

但是,交易的效果可能取决于之前发生在其他碎片中的事件 ; 一个典型的例子是货币转移,在这里货币可以从碎片我移动到碎片j,首先创建一个“借记”交易,破坏碎片中的硬币,然后创建一个在碎片j中创建硬币的“信用”交易,到借记交易创建的收据作为证明信用是合法的。

CAP定理并不意味着完全安全的分布式系统是不可能的,所以分片是徒劳的?

CAP定理是与分布式共识有关的结果; 一个简单的陈述是:“在网络分区发生的情况下,你必须选择一致性或可用性,你不能同时拥有”。直观的论点很简单:如果网络分成两半,一半发送一笔交易“将我的10个硬币发送给A”,另一个发送交易“将我的10个硬币发送给B”,则系统是不可用的,因为一个或两个交易将不被处理,或者变得不一致,因为网络的一半将看到第一个交易完成,而另一半将看到第二个交易完成。注意CAP定理与可伸缩性无关; 它适用于多个节点需要就某个值达成一致的任何情况,而不管其同意的数据量如何。所有现有的分散系统都在可用性和一致性之间找到了一些折衷。在这方面分片并没有从根本上造成任何困难。

分割区块链的基本设计是什么样的?区块链分片

分享到:更多 ()

来评论吐槽 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

快手号:神吐槽shentucao

交易所地址更多手机免费挖矿APP