去中心化的真正含义
“去中心化”这个词是在加密经济学中见到的最多的一个词之一,也是通常被视为到底是不是区块链的依据。然而这个词,也可能是被人们定义的最不恰当的一个词。
“去中心化”这个词是在加密经济学中见到的最多的一个词之一,也是通常被视为到底是不是区块链的依据。然而这个词,也可能是被人们定义的最不恰当的一个词。数千小时的投入研究和价值数十亿美元的哈希算力都被用来试图实现去中心化,并保护和提高去中心化的程度。当人们讨论协议并变得开始激烈时,非常常见的是,一个协议(扩展协议)的支持者会声称对方的协议提案是“中心化”的,并以此作为最后击倒对方推理的论据 。
但是,“去中心化”这个词到底意味着什么,常常会有很多的混淆。比如说,下面这三个完全没有帮助,但是却太常见的三个图表:
微信图片_20171024101338.jpg
现在,让我们来看看Quora上的问题“分布式和去中心化的区别到底在哪里?”的两个不同回答。第一个回答实际上是在机械地复述上面的图表,而第二个回答则截然不同,他说:“分布式意思是说,并非交易的所有过程都在同一个地点处理,而去中心化意思是没有任何的单一个体可以对交易的处理进行控制。”与此同时,在以太坊问答社区“Ethereum stack exchange”上最顶部答案给出了和上图非常类似的图表,只是“分布式”和“去中心化”的位子换了。显然,这个澄清和说明一下是很有必要的。
去中心化的三种类型
当人们在讨论软件的去中心化时,他们实际上在讨论的,是三个独立的中心化/去中心化的轴。在某些情况下很难看的清如何在没有另一个的情况下,能判定现在的这个是中心化还是去中心化的。一般来说,中心化和去中心化是互相独立的,这三个轴如下:
架构上的(去)中心化—这个系统是由多少个计算机组成的?这个系统可以容忍多少台计算机在任意一个时间崩溃后还能继续运行?
政治上的(去)中心化—有多少的个人和组织能最终控制组成这个系统的电脑?
逻辑上的(去)中心化—系统呈现和维护的接口和数据库结构像是一个单一的整体呢?还是非结构群体?一个简单的启发是:如果你把这个系统的使用方和提供方一分为二,他们还能作为完全独立的单元进行运行吗?
请注意,这图表中很多位置的内容还有待争议,但是让我们尝试着理解一下:
传统的公司在政治上是中心化的(一个CEO),架构上是中心化的(一个总部),逻辑上也是中心化的(你不能真正意义上把他们砍成两半)。
民法依赖于一个权利集中的立法机构,而普通法则是由许多个别的法官做出来的先例而来。民法现在有一部分架构上面的去中心化,因为有很多的不同法院存在,并且也有自行决定的自由,但是普通法却更去中心化。无论是民法还是普通法,在逻辑上来看,他们都是中心化的(法律就是法律)。
语言在逻辑上是分散的:Alice和Bob之间说的英语和Charlie和David之间说的英语不需要一直。没有一种语言的存在需要需要集中式的基础设施,并且英语的语法规则并不是由单一的个人所创造或控制的(然而世界语是最初由Ludwig Zamenhof发明的,现在世界语逐渐的演进更像是一个活跃的语言,没有权限)。
BitTorrent和英语一样,在逻辑上是分散的、去中心化的,但类容传送网络和他类似,却是由一个单一的公司所控制。
区块链在政治上是去中心化的(没有人能控制他),在架构体系上也是去中心化的(没有基础设施的中心故障点),但是在逻辑上是中心化的(有一个共同认可的状态,并且系统表现的像一个单一计算机)。
很多时候,当别人在谈论区块链的优点时,他们描述的是拥有一个“中央数据库”的便利好处;中心化是逻辑的中心化,在许多情况下这种中心化可以说是好的(虽然来自IPFS的Juan Benet支持尽可能的推进逻辑上的去中心化,因为逻辑上去中心化的系统在网络分散区中更易存活下来,并且在世界上连通性差的区域也能很好的运行等,并见本文从Scuttlebot开始明确倡导逻辑的分散化)。
架构上的分散化往往导致政治上的集中,但也不一定——在正式的民主体系中,政客们在一些会晤室见面并投票,但是这个房间的维护者并不能够获得大量的决策权改变结果。在计算机化系统中,架构上而不是逻辑上的去中心化可能会发生,如果有一个在线社区为了方便而使用了一个权利集中的论坛,但是如果有一个广为接受的社会契约却遭到论坛的拥有着恶意的破坏的话,那么这个论坛里的所有的人都会离开去另外一个论坛(这个社区是由一群在其他论坛看到审查制度可能在实践中执行的一群反抗的人组成)
逻辑的中心化使得架构上的去中心化更加困难,但也不是不可能-可以看到,分散的共识网络已经被证明有用了,但却比维护BitTorrent更困难。逻辑集中化使得政治分权更加困难-在逻辑集中化系统中,更难通过简单的“活和让你活”来解决争论。
去中心化的三个原因
接下来这个问题是,为什么去中心化会有用?通常会有以下几个观点:
容错力:去中心化的系统不太可能意外失效,因为他们依赖于很多独立的组件,而这些独立的组件不太可能一起意外失效。
抗攻击力:去中心化的系统使得被攻击破坏和操控的成本更高,因为他们缺少敏感的中心点,而中心点则容易被比周围经济系统规模更低的成本攻击。
防勾结串通:去中心化系统中参与者更难以牺牲其他参与者为代价而密谋使他们自己获利。而不得不说的是,公司和政府的领导者们密谋做一些利于自己而伤害公民、客户、员工和公众,这是常常发生的事情。
所有的三个论点都是重要和有效的。但是一旦当你开始考虑决定协议的时候,这三个论证都会导致一些有趣和不一样的结论。让我就一个一个的展开这些论证。
关于容错力,核心论证点很简单。什么会不太可能发生:一台计算机出现故障?还是十台计算机中有五台计算机同时出现故障?这个原理是毋庸置疑的,在现实生活中的很多情形中也可以用的到,包括喷气机发动,备用发电机,特别是在诸如医院,军事基地的基础设施,投资组合多元化的地方,当然还有,计算机网络。
然而,这种有效同时也很重要的去中心化,有时远不如一个偶尔用来预测的数学模型的灵丹妙药。原因就是共模故障。当然,四个喷气发动机比起一个喷气发动机来看更不容易出故障,但如果说这四个喷气发动机都是同一个工厂制造的呢?而且这四个喷气发动机都是被同一个不合格的员工制作的呢?
今天的区块链能有效设防共模故障吗?没有必要,可以参考以下场景:
区块链的所有节点都在相同的客户端软件运行,这个客户端软件居然有一个错误。
区块链的所有节点都在相同的客户端软件进行,这个客户端软件的开发团队居然都是社会腐败分子。
提出升级更新协议的研发团队居然是社会腐败分子。
在区块链的工作量证明中,70%的矿工在同一个国家,该国家政府决定为了国家安全的考虑抢占所有的采矿场。
大部分的采矿硬件是由同一家公司建造的,这家公司被贿赂或者被强迫开了一个后门,允许这个硬件被随意关闭。
在区块链权益证明中,70%的利率货币在同一个交易所中。
从容错能力的去中心化的整体观点会看到所有这些方面,并会想如何最小化这些问题。那么从这可以看出,一些结论自然是显而易见的;
实现多方竞争关系是至关重要的
协议升级背后的技术考量的知识必须是民主化的,这样更多的人可以更加自然的参与研究讨论和批评一些明显不良的协议变化。
核心的开发和研究人员应该由多个公司或组织雇佣(或者可以找来许多的志愿者来填充)
挖掘算法应该以最低程度的中心化思路去设计。
理想情况下,我们使用权益证明的方法来完全摆脱硬件的中心化风险(当然我们也要非常小心由于使用了权益证明而可能带给我们的新的风险)。
需要注意的是,初始形式的容错要求在架构上是去中心化的,但是你想,社区的容错能力一旦控制着协议的持续发展,那么可以看出,政治上的去中心化也是非常重要的。
现在,让我们来看看抗攻击能力。在一些纯粹的经济模型中,即使去中心化完全不重要,你也可以得到你想要的结果。如果你创造出一种协议,验证器保证会在51%的攻击(即最终性回归)发生时让你损失5000万美元,那么这个验证器是被一家公司控制还是被一百家公司控制就不是那么重要了。5000万美元的经济安全保证金是5000万美元的经济安全边际成本。事实上,为什么中心化甚至能够最大化这种经济安全的概念是有着很深层次的博弈论的(现有区块链的交易模型反映了这个观点,因为包含在区块中的交易通过矿工/区块申请人实际上也是一种流转的独裁做法)。
然而,一旦你采用了更加丰富的经济模型,特别是承认强制性存在的可能的那种(或者更温和的那种比如定向的针对节点的DOS攻击),去中心化就变得更加重要了。如果你威胁一个人的生命安全,那么5000万美元也就变得对他们来说不再重要了。但是如果5000万美元在十个人中间传播,那么你必须威胁10倍的人数,并且要同时期的做这件事情。一般来说,在许多情况下,现代世界的特点有着攻击/防御的不对称性,有利于攻击者—一幢花费1000万美元的大楼可能会被花费10万美元不到就摧毁了,但攻击者的杠杠往往是亚线性的:如果说摧毁一个花费1000万美元的大楼只需要花费10万美元,那么一幢100万美元的大楼可能只需要3万美元的成本就可以摧毁了。更小的成本给出了很好的比率。
这种推理会导致什么样的结果呢?首先,他强烈的推动了权益证明机制,超过了工作量证明,因为计算机硬件更容易被检测,调节和攻击,而硬币则更容易被隐藏(权益证明机制也因为其他某些原因更容易抵抗来自其他节点的攻击)。其次,他也支持广泛分布的开发团队。第三,当在设计共识协议时,他也会暗示需要同时考虑经济模型和容错模型。
最终,我们可以得到三个论点中最复杂的一个,防勾结串通。串通这个行为很难定义,可能唯一真实有效的表达方法是说“我们都不喜欢的结合”。在现实生活中很多情况下,最理想的情况是每个人之间的协调配合都很完美,但是如果一个人可以协调配合但是其他人不行,那么就是很危险的了。
一个简单的例子是反托拉斯法,为了使市场一方的参与者更难聚集在一起设置监管上的障碍,行动上像一个垄断者以牺牲市场另一方参与者的利益和社会福利,来获得外部的利益。另一个例子是美国候选人和超级PAC之间协调的规则,尽管在实践中被证明难以实施。一个更小的例子是一些象棋比赛中。为了防止两个玩家在比赛中进行很多次游戏试图提高其中一个玩家分数的规则。无论你在哪,成熟机构防止不必要的协调的尝试无处不在。
在区块链协议的情况下,共识背后的数学和经济推理通常依赖于至关重要的不协调选择模型。或者假设说,一款游戏由许多小的可以独立做出决定的角色组成,如果一个角色在工作量证明中获得了超过1/3的矿力,那么他就可以通过私自采矿来获得巨大的利润。但是,我们真的可以说,当90%的比特币的矿力非常的好以至于他们能够出现在同一会议上,这未经协调的选择模型真的是现实的吗?
区块链倡导者也指出,区块链更加的安全,因为他们不能够跟着自己的想法随意改变他们的规则。但是如果说软件和协议的开发者们都为同一家公司工作,或者说是一家人坐在一个屋子里,那么上面这个安全也就不一定能保证了。总的来说,这些系统不应该是被一方单独垄断的。因此,你可以很确定地表示,区块链会更加的给予安全性如果参与方之间都不是协调的关系。
当然,这也显示出了一个根本的驳论。许多的社区,包括以太坊,经常被称赞说有着强壮的社区精神,并且能够很快反应协调实施,发布和激活分叉,在六天内解决服务器拒绝访问的问题。但是我们该如何促进和提高这种积极的协调能力,同时防止坏的矿工反复的协调51%的攻击,使他人陷入困境的“不良协调”呢?
有三种方式来回答这个问题:
不用考虑太多不良的协调问题,反而,应该更多的尝试构建可以抵制他的协议。
尽力找到一个好的媒介允许协议有足够多的协调演进和前进,但这个协调没有足够多到可以发起攻击。
尽量学会区分什么是有利的协调什么是不利的协调,并且尽量使有利的协调更容易,不利的协调更困难。
第一种方式大部分是Casper设计的理念,然而,他本身是不够的,因为单靠经济本身并不能处理好另外两个方式中关于去中心化的考量。第二种方式则在程序开发上难以明确地进行,尤其是长期的开发工作,经常会出现开发不明确的意外。比如说,比特币的核心开发人员经常说英语,而矿工们大部分都说汉语,这就是一个美丽的意外。因为它创造了一种“两院制”管理办法,使协调更加困难,有利于降低同一模型生产的风险,因为英语和中文社区会因为距离和沟通上的困难而产生分歧并且争论一番,因此不太可能会两方会赞成同样的错误。
第三个就是社会挑战,在这方面的解决方案可以有:
社会干预会试图提高参与者对区块链社区的忠诚度以防止市场一方的玩家只对自己这一方的人忠诚。
在同一背景下提高各方市场参与者之间的沟通,让他们清楚,验证方,开发者和矿工都是处于同一阵营的,所以他们之间必须协调好来维护自己的利益抵抗其他的阵营。
以减少鼓励验证方/矿工发展成为一对一的“特殊关系”,减少中心化的传递网络和其他类似的超协议机制的方式来设计这个协议。
明确清楚这条协议的基本属性应该有哪些,什么事情是不应该做的,或者什么事情是只有在极端情况下才可以做的。
第三种去中心化,是以避免不希望发生的协调的去中心化,恐怕这也是最难实现的,权衡取舍是无法避免的。也许最好的解决方案是极度的依赖一个被保证是非常去中心化的一个小组,那就是:协议的用户。