我有一个基本的区块链,我写这篇文章是为了探索和了解有关该技术的更多信息。我与他们唯一的真实体验是从客户端到服务器的一对一交易,作为交易记录。我现在对分布式区块链感兴趣。
在最简单,最理论的形式中,如何管理共识?对等体如何知道开始在下一个块上写入事务?您必须知道> 50%的整个池何时接受了写入的最后一个块。但是p2p系统基本上是无限制的,你不能信任第三方来处理担保,那么这是如何实现的呢?
编辑:我现在大致知道比特币如何处理共识:
共识确定了已接受的区块链。 "最长有效链的典型规则"确保只接受一种变体。人们可以在任意数量的确认后接受区块链,通常6个就足以确保获胜者。
然而,这似乎是一种缓慢而且最不慎重的方法。它确保节点上有一定数量的浪费工作,这些节点恰好位于网络的一部分,并且与普遍接受的解决方案大致同时具有本地有效解决方案。
有更好的选择吗?
答案 0 :(得分:1)
有趣的问题。我想说区块链技术只能解决概率上的共识。区块链网络有一定的信心,对此有所了解。
将区块链视为分布式系统我们可以说区块链的状态是分布式的:区块链是整体保留的,但是有很多本地副本的分布式副本。更有趣的是,操作是分布式的:写入或读取可以同时发生在不同的节点上。读取操作可以在区块链的本地副本本地完成,但是如果您的本地副本不是最新的,那么这种读取当然可能是陈旧的,但是区块链网络中的节点总是有动机保留其本地复制最新版本,以便他们在必要时完成新的交易。
写操作在这里是棘手的部分,区块链必须解决。由于写入以分布式方式同时发生,区块链必须确保避免不一致,例如双重花费并以某种方式就当前状态达成共识。区块链这样做的方式是概率性的,首先他们通过添加要解决的“难题”来编写链,这使得不同分布式写入同时发生的概率降低,但它们仍然可能发生,但概率较低。此外,由于激励网络中的节点使其状态保持最新,因此接收泛洪写入操作的节点将验证它并将该操作接受到其链中。我认为始终保持链条最新的动机是关键,因为这可以确保链条取得进展。即作家有明确的动机来保持其链条的最新状态,因为它将与其他并发作家的“最长连锁第一”原则竞争。对于非对抗性矿工,也有动机中断当前的挖掘,接受新的写入块并重新启动挖掘过程,确保系统中的某种活跃性。
因此区块链依赖于概率共识,那么概率是多少?两个完全相等的分支同时并行增长的概率接近于0,假设没有任何大的对手节点接管网络。以非常高的概率,一个分支将比另一个分支更长并且被接受并且网络在该分支上达成共识并且必须重新尝试在较短分支中的写入操作。当然,最大的担忧是大型对抗性矿工团体,他们可能会故意尝试在区块链中创建分叉以执行双重花费攻击。但是,如果它们接近网络中50%的计算能力,那么这种情况很可能会成功。 / p>
总而言之:区块链中的自然分支可能由于并发写入的概率原因而发生(由于解谜而降低的概率)将几乎100%的概率收敛到单个分支,因为写操作继续发生,并且网络在一个分支上达成共识。
然而,这似乎是一种缓慢而且最不慎重的方法。它 确保有一定数量的浪费工作 恰好位于具有本地网络的网络的一部分的节点 有效解决方案与普遍接受的大致相同 溶液
有更好的选择吗?
不是我能想到的,如果系统中的所有对等体都“受到控制”,那么会有更多有效的解决方案,你可以让它们遵循一些协议,也许有一个指定的领导者来告诉写入的顺序并确保达成共识,但在分散的开放系统中这是不可能的。
答案 1 :(得分:0)
在事先知道参与者的许可区块链环境中,客户可以获得共识的密码证明(例如,至少有2/3的参与者签署了共识)并进行验证。通常可以使用阈值签名来实现。 在公共区块链AFAIK中,无法做到这一点,因为参与者的数量一直未知/一直在变化。