Py学习  »  MQ

“清华段奕宏” LIVE 首秀:区块链共识到底牛逼在哪?(二)

DapDap区块链 • 5 年前 • 662 次点击  

我们知道,区块链本身就是一种分布式的网络,那么它跟计算机中的分布式系统又有什么关系?

区块链是一种计算机技术,所以说我们需要在计算机科学里面给他找一个合适的位置,让大家搞清楚:它和计算机的一些技术有什么样的关系。

区块链是一种分布式系统。分布式系统的定义是指:这个分布在不同计算机上的软件或组件对外能够提供一致的服务,所以说区块链,他就是一个分布式系统。

分布式系统会有很多分类。我们在这里边会对它做这样一个分类。这个分布式系统可以分为存在拜占庭错误的分布式系统和这个不存在拜占庭错误的分布式系统。

什么是拜占庭错误?这个其实很容易理解,一支队伍里,如果有内奸。那我们就认为这个队伍或者这个系统,它是存在拜占庭错误的,就是内奸会发假消息。

如果是非拜占庭错误的分布式系统,我们认为这个队伍里可能有人能力弱一点,有人能力强一点,但是不存在内奸也不存在叛徒,这个就是非拜占庭错误的分布式系统。所以我们从拜占庭错误这个角度来把这个分布式系统的分为两类。

分布式系统的共识,大部分考虑的是非拜占庭错误的这个共识机制。比如说像 google 的集群,像我们常见的云计算平台,它也是很多计算机协作起来,对外提供计算对外提供服务。但是,我们从来不考虑这里边的节点是不是恶意节点,因为我们默认它这里边没有恶意节点。

但是区块链,它是一种存在拜占庭错误的共识机制的分布式系统。我们允许好人进来,也允许坏人进来,也就是说我们都不分辨好坏,任意节点想提供服务都可以加入到区块链网络里提供服务,所以区块链是一种拜占庭容错的分布式系统。

所以这个定义,就是区块链在整个计算机学科中给他的一个位置。

了解完区块链共识机制的产生、原理以及与分布式系统的关系之后,我们接下来将深入到对区块链共识机制的讨论,比如大家熟知的 POW 和 POS 等。

就是共识机制,大家说的比较多的,很多创业公司,包括很多科技界大佬,他们都会说自己对共识机制有什么样的创新。其实在共识机制上做创新是一件非常难的事情。

从我个人的角度来看,其实这个区块链共识机制,一共就只有两种技术路线,一种中本聪开创的中本聪共识,通过挖矿,通过 POW 提供的一种共识机制。

另外一种共识机制就是1999年 OSDI 会议上发表过一个叫 PBFT 算法,它是一种实用的拜占庭容错的算法。

但是需要补充的,第二种算法 PBFT 必须是在数目确定的节点中达到共识。也就说如果那你这个选取的节点的数目不确定,它就很难达成共识;所以它不太适用于我们的 P2P 网络,因为 P2P 网络允许任何节点随时加入,随时退出。任意时刻你没法确定全网节点的准确数目有多少。

现有的 pos 机制,包括这个 eos 的 DPS 机制,我们是把它划分到 PBFT 的技术路线。pos 拥有币的人,比如拥有以太币的人,他可以通过自己的这个币经投票选举出下一个区块生产者。

但是,选举下一个区块生产者在计算机的实现里到底怎么做呢?就必须要用到 PBFT 算法也就是在数目确定了的这个节点中,把下一个区块生产者通过选举的方式选举出来。

为什么这个 DPoS 有21个节点,或者说其他采用了 POS、采用 DPoS,都有数目确定的节点呢?这就是因为 PBFT 的技术路线只能在确定数目的计算机节点里边选出下一个区块生产者,所以这是 DPoS 不得已而为之,也是 PBFT 算法的内在缺陷所决定的。

那么,POS实现起来会存在怎样的问题呢?

POS机制最早是在比特币论坛里的一个网友提出来的。他提出:通过拥有这个数字货币人通过选举来把这个下一个区块生产者选出来。这样的话就避免了像比特币中挖矿,因为挖矿比较耗能量比较污染环境。

但是,POS 本身那实现起来比较困难。因为它本身是依赖于 PBFT 。但是 PBFT 又必须是确定数量,才能选举选出唯一的区块生产者。这个也容易理解:你连选举的总数目都不知道,你又怎么知道能达到二分之一的通过率或者三分之二的选举率呢?所以这个就是很难去做。

POS 最根本的问题在于什么呢?我们一般叫着无利攻击(nothing at stake)。我们可以这样来理解这个名词:主席台上有十个候选人,下面很多人给这十个候选人投票。如果你投票的话,就说没有任何成本。那很有可能呢,你是会对这个主席台上十个人都分别投一票,也就一个人投十票给每个人投上一票。这样的好处话就说,不管台上哪个候选人成为最终的获胜者,你都会有好处。

最终这会造成一种什么情况呢?也就是下边的投票人会对上面主席台10个候选人都投票。最后主席台上这十个候选人呢,每个人都可以获得全票。获得全票之后,这十个候选人也就他们得到的票数一模一样的,我们为没办法选择出唯一的一个区块生产者。这样就无法达成区块链共识。

这个就是 POS 中存在的一个根本问题,也就是无利攻击。这个问题的根源在于,你投票是没有成本的,如果你投票有成本,你就会慎重一点,不会为十个候选者,每人都投一票了。 本文共四部分,敬请期待每天内容。 本文来源于公众号DOGI GAMES CLUB 康烁知乎专栏: 比特币的诞生和中本聪共识: https://zhuanlan.zhihu.com/p/41120200 区块链到底有几种共识机制 https://zhuanlan.zhihu.com/p/41120418 免信任的共识机制 https://zhuanlan.zhihu.com/p/40442564 分布式系统和区块链共识的关系 https://zhuanlan.zhihu.com/p/40804329

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/27276
 
662 次点击