专栏名称: 哔哔News
哔哔是一家致力于做人人都能看懂的区块链资讯的行业媒体。哔哔,看见未来的另一种可能。
目录
相关文章推荐
Excel之家ExcelHome  ·  这些技巧都学好,一堆工作等你搞 ·  昨天  
完美Excel  ·  处理使用密码保护工作表的VBA代码 ·  4 天前  
Excel之家ExcelHome  ·  这些公式真简单,学会年薪三万三 ·  4 天前  
Excel之家ExcelHome  ·  这几个隐藏函数,你的Excel里有没有? ·  3 天前  
Excel之家ExcelHome  ·  学会公式一波,工作越干越多 ·  1 周前  
51好读  ›  专栏  ›  哔哔News

V神Vitalik:你真的懂区块链的“去中心化”是什么吗?

哔哔News  · 公众号  ·  · 2018-03-04 19:25

正文

区块链大火,除了中本聪之外,Vitalik同样功不可没。

 

Vitalik在20岁就创办了以太坊,在思维方式上,他就表现得和许多年轻人并不一样。“去中心化”是一个普通人大都会选择性略过的概念,人们认为自己能够完全理解这四个字的含义,但 Vitalik 选择揪住这个词,试图给它一个更标准化的定义。

 

 

定义「去中心化」

 

大部分人在面对提问时,习惯举出下面这三张图来解释所谓的“去中心化”:

 

 

但很遗憾,上面这三张图作为一种常见的解释,基本是无效的。 


我们需要一种更底层的方式,也需要一种更明确的判断标准,来定义「去中心化」。 

 

判断“去中心化”的三把尺子

 

在软件世界里,所谓的“去中心化”,实际上是可以分成三个维度进行讨论的。这三个维度,也是判断一个东西是否是“去中心化”的三把尺子。

 

1、架构层: 在物理世界里,一个系统由多少台计算机组成?在这个系统运行的过程中,可以忍受多少台计算机的崩溃而系统依然不受影响?

 

2、政治层: 有多少个人或者组织,对组成系统的计算机拥有最终的控制权?

 

3、逻辑层: 从这个系统所设计的接口和数据结构来看,它更像一台完整的单一设备,还是更像一个由无数单位组成的集群?——这个维度可能比较抽象,不太好理解,我们可以用另一种比较简单的方式来做判断: 如果把这个系统分成两半,两部分里同时包含生产者和消费者,那么这两部分能继续作为独立单元完整地运行下去吗?

 


图表里这些例子的分类和排放暂时还比较粗糙,在逻辑上也许还有不少争议,不过我们还是可以尝试捋顺一遍这些例子:

 

传统公司: 传统公司在政治层上是中心化的(每个公司都有一个CEO),在架构层上也是中心化的(每个公司都有一个总部),在逻辑层上,仍然是中心化的(你没办法真正把公司拆成两半)。

 

法律: 现代法律有两种体系,一个是大陆法,一个是普通法。大陆法依赖于一个中心化的立法机构,在架构层上它是中心化的;对比普通法来看,普通法是由很多个法官,他们作为个人,所做出的很多先例来构成的。尽管现在许多法院享有有很大的自由权力,可以自己定法,因此大陆法在架构层上也有一小部分的”去中心化“,但对比普通法这种由许多个法官个体组成的体系,普通法的去中心化程度显然更高。当然,两者在逻辑层上都是中心化的(法律就是法律)。

 

语言: 语言在逻辑层上是去中心化的。没有任何一种语言的存在需要中心化的基础设施作支撑,英语的语法规则,也不是由任何一个单一的个人创造的,也不受任何组织的控制(你可能会说,世界英语最初是 Ludwig Zamenhof 发明的,但从现在来看,英语的沟通功能,更像是一种不断自我进化的生活化语言,它是逐渐自我生长出来的)。


BT: 类似英语,BitTorrent 在逻辑层上也是去中心化的。内容分发网络(cdn)也是这样,但它们都受某一家公司的独立控制。

 

区块链: 区块链在政治层上是去中心化的(没有人或组织可以控制区块链),在架构层上也是去中心化的(没有一个统一的服务器可以被攻击), 但在逻辑层上,区块链是中心化的(每个区块链网络都存在自己的一个普遍性的共识,同时系统的行为更像一台单独的计算机)。

 

捋顺一遍后,你应该有了一个发现:

 

借助我们的三把尺子所提供的标准来看,很容易就明白了: “中央数据库”这里的所谓中心化,其实是逻辑层的中心化。

 

在大多数情况下,逻辑层的中心化代表了比较好的选择。不过,也有不少人主张逻辑层也需要尽可能地去中心化。

 

为什么需要“去中心化”?

 

我们已经掌握了如何判断“去中心化”的方法。接下来的问题是,为什么去中心化很重要?它的好处在哪?

 

容错性

 

容错性的核心,其实就是“可以承受出现错误的能力,以此降低系统崩溃的概率”。 一台计算机出现故障的概率,和十台计算机的其中五台同时出现故障的概率,哪一个更大? 显然是前者。这其实也是分散风险的一种方式,在现实生活中,这种容错能力已经得到了广泛的应用,比如喷气发动机、备用发电机,以及医院、军事的基础设施等等。

 

但是,去中心化的这种容错能力虽然很有效、也很重要,但它有时远不如一个简单的数学模型来得有用。 原因就在于“共模故障”。


四个喷气发动机比起一个喷气发动机来看确实更不容易出故障,但如果这四个喷气发动机都是同一个工厂制造的呢?或者说,这四个喷气发动机都是被同一个不合格的员工制作的呢?这就是共模故障。

 

那么,现在的区块链,能够抵御共模故障吗?

 

还真不一定。

 

看看下面这些例子:

 

一个区块链的所有节点都运行相同的客户端软件,而这个客户端软件有一个BUG。

 

一个区块链的所有节点都运行相同的客户端软件,而这个客户端软件的开发团队互相勾结,出现腐败。

 

提议升级区块链网络协议的研究团队,互相勾结,出现腐败。

 

在一个工作量证明(POW)的区块链中,70%的矿工都在同一个国家,而这个国家的政府为了国家安全,决定接管所有矿场。

 

大部分挖矿硬件都由同一家公司生产,而这家公司被贿赂或者被威胁,在挖矿硬件上开了一个后门,使得所有的挖矿硬件可以被随意关闭。

 

在一个权益证明(POS)的区块链中,70%的币由一个交易所持有。

 

很明显,为了保证去中心化的容错能力,以上这些问题都应该尽可能把它最小化。

 

怎么最小化呢?

 

下面这些措施可能会有一些帮助:

 

尽可能保持多方的竞争关系;

 

升级协议的技术和知识必须是民主化的,这样更多的人就可以共同参与研究、讨论和批评一些明显不良的协议变化;

 

核心的开发和研究人员应该由多个公司或组织雇佣(或者,他们中的许多人可以是志愿者);


挖矿算法应该以最低程度的中心化思路去设计;

 

理想情况下,我们使用权益证明的方法(POS)来摆脱硬件的中心化风险(当然权益证明可能也会带来新的风险)。

 

值得注意的一点是,当我们着眼于比较初级的容错能力的时候,我们往往会去关注架构层上的去中心化设计,但如果当你开始考虑一个系统更长远的升级和发展时的容错性,那么政治层上的去中心化也很重要。

 

抗攻击性

 

在纯经济模型中,去中心化其实并不重要。 如果你创建了一个“一旦发生51%攻击,验证者就会损失5000万美元”的协议,那这个验证者是由一家公司还是由100家公司控制并不重要。5000万美元是保证这个协议的经济安全的边际成本,那么5000万美元就是5000万美元。


事实上,博弈论还会告诉我们,中心化系统甚至可以最大化这种经济安全边际成本的概念(现有的区块链的交易选择模型也反映了这一观点,因为矿工/区块提出者将交易打包到区块中,实际上正是一个非常迅速的轮换独裁的过程)。

 

但如果是在一个更丰富的经济模型中,特别是如果这个经济模型里存在胁迫的可能性(或者说针对节点的目标 DOS 攻击),那么,去中心化就会变得非常重要。 


当一个人的生命安全受到威胁时,5000万美元对他而言就是身外之物,你可以很容易抢走他的钱,但如果这5000万美元是十个人分散持有的,那么你必须威胁勒索的人数,瞬间就飙到了10倍,而且这10倍的工作量,还要在同一时间里完成,这对任何一个抢劫犯来说,都是噩梦。

 

不过在大部分情况下,我们所生活的这个世界,有一个特点是: “攻击/防御”具有不对称性,攻击者往往更占优势。 比如,一幢花费1000万美元建造起来的大楼,可能10万美元的攻击成本就可以轻松摧毁它。


但这种攻击/防御的杠杆效应往往是次线性的:摧毁1000万美元的大楼需要10万美元,100万美元的大楼则需要3万美元,再往下,更小型的大楼则需要更高的比率。

 

这个道理至少可以让我们懂得区块链机制设计的三个关键点:

 

第一,相比工作量证明机制(POW),权益证明机制(POS)更安全。POW需要挖矿的计算机,这些硬件很容易被检测、管理或攻击,而POS针对的则是权益证明,也就是代币,而币相对计算机硬件而言更容易隐藏;


第二,开发区块链的团队,分布得越广泛(包括地理位置上的分布)就越有利;


第三,在设计共识协议时,需要同时考虑经济模型和容错模型。

 

抗勾结性

 

最后,我们终于可以讨论以上三点中最复杂的一点了:抗勾结性。

 

抗勾结性这个词听起来有点怪,因为“勾结”这个词本身就挺难定义的。简单点说,我们可以认为, “勾结”就是“我们所不喜欢的协调方式”。 在理想状态下,我们希望每个人之间都能拥有完美的协调关系,但当某一部分人能够完美协调、而另一部分人无法协调时,情况就会变得很危险。

 

比如,反垄断法就是一个例子。为了防止市场的参与者聚集起来,互相勾结、实施垄断,损害市场消费者和社会的利益、以此获得超额利润,反垄断法就在市场运行中故意设置了监管上的障碍。

 

还有一个小例子是一些象棋比赛制定的规则,这些规则用来防止两名选手为了提高各自的分数而频繁和对方进行比赛。

 

可以看到,这种“反勾结”的尝试,在现实世界的各种复杂系统里其实无处不在。

 

而在区块链协议里,建立共识安全背后的数学原理和经济学原理,通常也依赖于这种“反勾结”的设定。

 

“反勾结”就是尽可能避免节点之间相互产生协调,换句话说,它假设一个区块链网络是由许多独立决策的节点组成的。

 

区块链的拥护者相信区块链更安全,因为区块链网络中的任何个体都不能任意去改变协议本身的规则。但如果软件和协议的开发者都服务于同一家公司、同属于同一个家族、都在同一个办公大楼上班,这种情况下其实是很难防范的。

 

要真正保证安全,最关键的一点是防止系统变成一个自私自利的集权垄断体。 因此,如果一个区块链网络越松散,它们就越难相互勾结在一起,也就安全。

 

但是,这里面其实揭示了一个根本性的矛盾。

 

很多社区(包括以太坊)之所以存在,是因为它们拥有一个强大的社区精神,在执行、发布和激活硬分叉上拥有快速协调的优势。 我们需要思考的问题是,应该如何去培育和改善这种良好的协调关系,同时,又要防范那些糟糕的协调关系,防止它们不小心演变成“互相勾结” (比如,矿工们试图通过互相勾结,反复进行51%的攻击,以此实行欺诈)。

 

要解决这个问题,可能需要做到以下三点:

 

别试图减少勾结,要用协议的方式彻底消灭勾结。

 

试着找到一个平衡点,这个平衡点可以提供足够的协调关系帮助协议更好的发展,但同时又不足以演变成勾结关系、发动进攻。

试着去区分清楚“好的协调关系”和“有害的协调关系”,然后想办法让前者更容易,让后者更难。

 

其中的第一个方法,在以太坊的 Casper 机制的设计中,有很多地方都用到了这种指导思想。但是,只有第一点本身是不够的,因为仅仅依靠经济学的方式并不能解决去中心化的其他两类困扰;

 

第二个方法很难进行明确的设计,但它经常会自己意外产生。比如, 比特币的核心开发人员一般说英语,而矿工一般说中文,这几乎可以被称作为一个“幸福的意外”了,因为它在无意中创造了一种“两院制”的治理机制,一方面它让彼此之间的勾结变得很困难,另一方面则减少了共模故障的风险 ——英文社区和中文社区,因为沟通困难,从某种程度上来说,他们更容易拥有各自的独立的思考,因此不太可能同时犯相同的错误。

 

第三个方法则代表了一个社会学挑战,它需要做到的可能包括:

 

社会干预措施,即试图提升参与者对该区块链社区整体的忠诚度,以替代或抑制市场各个参与者对彼此产生的直接的忠诚度的影响。

 

促进不同的的市场参与者在同样的语境下进行沟通,这样一来,不管是验证者、开发者还是矿工,他们就不太会把自己归类为某一种阶层,这样就能减少他们协调起来对抗其他阶层、保护自己阶层利益的可能性。

 

在设计协议时,尽量避免或者减少验证者和矿工彼此形成一对一的“特殊关系”,或者是形成中心化的中继网络,以及其他类似的超级协议机制。

 

关于协议应具备的基本属性,以及哪些事情不该做,或者哪些事情只能在非常极端的情况下才能做,这些协议本身都应该规范得非常清晰、清楚。

 

防止勾结、抗勾结性的去中心化,可能是目前最难实现的了。 要真的实现它,一些权衡和取舍也是不可避免的。或许,最好的解决方案,可能是去重度依赖于最能够保证去中心化程度的一个群体:也就是协议的用户。

 

欢迎加入BiBiNews telegram 群:https://t.me/bibinews01


【地瓜科普】玩转数字货币,你还需要这几款必备工具!

【地瓜科普】认祖归宗,数字货币有哪些派系?

【地瓜科普】你还应该知道的币圈赚钱好方法——看一看自己在币圈属于哪一类小韭菜还是老司机

【地瓜科普】数字货币交易遭全球围剿,去中心化时代或将到来

【地瓜科普】数字货币以及区块链各路资源大盘点

【地瓜科普】哔哔课堂重磅:智能合约-区块链,终于等到你,还好我没放弃

【地瓜科普】USDT、bitCNY、DAI等锚定代币知多少,合格韭菜必备姿势!

【地瓜科普】公有链、联盟链、私有链,同一区块链不同演绎

【地瓜科普】马化腾diss PoW,共识机制哪家强

【地瓜科普】监管来袭行情动荡,要锁仓的朋友请看这篇数字货币钱包攻略

【地瓜科普】实操版挖矿教程