首页
学习
活动
专区
工具
TVP
发布

区块链分布式系统模型来源于信鸽

由于区块链就是一种分布式系统,所以这篇文章我就从这一概念开始讲起。 为了让你更容易理解分布式系统,我们先来构建一个模型。

在“浅说区块链共识机制”那篇文章中,我举了一个村庄举办相亲大会的例子,我们来回顾一下。

大村子因为人口增长变成 11 个小村落分散在地图各地;

村落之间的通信只能依靠信鸽;

一只信鸽可能无法完全覆盖所有村落,需要有中继村落代为传输消息。相亲大会的举办权会为村子带来巨大收益,为了产生合理的举办者,人们约定了几条规则:

大会举办权从 A 和 B 两个村子中产生,他们每一届都是候选村;

投票时所有村落仅能投 A 或 B;

用投票的方式产生举办者,少数服从多数。

所有村子会为了举办权都会使出浑身解数,比如延迟发送投票结果、篡改别人的投票结果、假装没有接收到通知等等。其实这是一个典型的分布式系统,可以看成是我们简化版的区块链网络环境,

在“投票过程被大家所认可”这个语境下,“被大家所认可”表示某个村落投票的结果已经被记录,用于最后统计结果,而不是认可投给 A 或者投给 B,这也是我在上述强调你要注意区分的一点。

那我们这里所说的一致性到底体现在那里呢?

主要体现在下面两种类型的问题上。

非人为恶意的意外投票过程。非人为恶意篡改可归类为信鸽半路挂掉、信鸽迷路、信鸽送错目的地、信鸽送信途中下雨导致信件内容模糊、接收信件的人不在家、天气变化信鸽延迟送达等等。这些对应到分布式系统面临的问题就是:消息丢包、网络拥堵、消息延迟、消息内容校验失败、节点宕机等。

人为恶意篡改投票过程。人为恶意篡改包括“精神分裂式投票”,中继篡改上一个村落的投票信息。对应到分布式系统面临的问题就是:消息被伪造、系统安全攻击等等。发生的人为恶意篡改的过程就可以称之为系统发生了拜占庭错误(Byzantine Fault),如果系统可以容忍拜占庭错误而不至于崩溃,也就是在发生系统被恶意篡改的情况下仍然可以达成一致,我们将这样系统称作为做拜占庭容错系统。

软件架构上也经历了基于 ESB 的模块化 SOA 模式,到无状态的微服务架构。从工程的角度来看,根据业务需求达到 4 个 9、6 个 9 就足够了,只是肯定比不了区块链近乎 100% 的可用性。

分区容忍性在企业内部极少出现,尤其是中心化的服务性应用,所以很少考虑。然而区块链的 P2P 网络环境十分复杂,所以必须要保证很高的分区容忍性。

通过以上我们可以发现比特币、以太坊等公链是偏重高可用性、分区容忍性(AP),满足最终一致性(C)且 TPS 较低的分布式系统。

所以如果有人号称他们的区块链能够达到媲美中心化系统上万的 TPS,先别着急投资,你问问他们技术是不是知道 CAP 定理,再问问他们的去中心化程度如何。

这点我们也可以从 EOS 等高性能的区块链身上佐证,EOS 全球只有 21 个记账节点,而以太坊全球有上万个节点可以随时参与记账,所以越想去中心化,你的 TPS 就不可能高,这也就是为什么 EOS 的 TPS 高,而以太坊的 TPS 低。

区块链中的共识算法目前具有工业成熟度的是 PoW,另外两种比较成熟的是 PoS 和 DPoS,其次还有一些变种和单一币种使用的共识算法,例如 Ripple 共识、PoC 共识(概念性证明)、PoE 共识(存在性证明)。

在使用 PoW 共识算法的情况下,容错阈值是 50%,而 PBFT 及其变种的容错阈值是 33% 左右,这里的百分比是指作弊节点占全网节点的比例。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180808A19LY200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券