去中心化这个概念在区块链构架中起这绝对重要的作用,而正是由于类似比特币这样的电子货币的流行,去中心化这个词被大家所接受。他很好理解,但是很难定义。很多团队、企业花大价钱来改造自身系统去适应去中心化构架,带来的确实事半功倍的效果。那么,去中心化到底能带来什么?笔者认为,去中心化并不是一个构架或者技术上的概念。其实,他更体现在组织结构、社会层面的内容上。本文就为你揭开去中心化的面纱。
去中心是分布式吗
去中心化和分布式是很容易混淆的概念。分布式指的是所有交易并不是在一台中心服务器上完成的,但这并不是说这些服务器不是在一个控制中心下工作的。一加油站为例,在高速公路旁可以看到很多个中石化加油站,他们是分布式分布在各个不同的地点,但是他们都由一个总公司控制。而去中心化指的是,在分布式的节点中,没有一个中心控制节点。
#中心化的类型
当我们谈起中心化的时候,通常值的是下面三种类型,他们之间可以交互也可以独立存在。
- 构架层面的中心化系统结构有多台服务器搭建,类似微服务系统。当有若干个服务器宕机并不会影响整个系统的工作状态。
- 政治层面的中心化有多少个机构或者组织来控制整个系统的运行。
- 逻辑层面的中心化系统的界面和数据结构是不是一个整体存在的还是可以切分成若干个互相独立的实体。
如何理解上面的三种中心化类型呢,当然上面提到的中心化类型对应了三种去中心化类型,只是一个反义词的概念,下面我给出几个实例为大家分析一下他们的区别:
- 传统企业是具备了上面三种类型的中心化结构。CEO总管公司的运营方向,这是政治层面的中心化,企业会有一个总部,这体现了构架上的中心化,逻辑层面的中心化体现在这个企业是不可分割的一个整体,我们不能把他切分成如果干小公司
- 语言是一种逻辑上的去中心化结构。英语是很多欧美国家的官方语言,即便一下非英语母语国家,很多人也都可以熟练的用英文进行交流。所以,英语的语法不是由一个人或者一个组织定义的。
- BitTorrent是一种内容分发协议,他是基于逻辑去中心化的构架协议。
- 区块链是在逻辑层面和构架层面的去中心化构架。没有任何一个机构可以控制他,也没有一个中心服务器来管理所有网络节点。
#为什么要去中心化
下面的问题就是为什么我们要进行去中心化,一下列出的几点给出了去中心化的原因。
- 容错性去中心化的系统容错性能往往要高于基于一个中心服务的系统应用。因为去中心化系统中各个服务依赖于不同的组件,某一个组件失效不会对整个系统造成过大的伤害。
- 免疫攻击网络安全一直是老生常谈的话题,在基于中心服务器的应用中,攻击者只要瞄准都一台服务器就可以对整个系统造成毁灭性的打击。在去中心化的系统中,攻击者往往找不到具体的目标,这加大了黑客入侵的成本。即便在某些服务被攻击的情况下,系统中的部分功能仍然可以继续运行、使用。
- 抵御合谋在去中心化的系统中,人们很难通过几个人的投票或者干预而达到损害其他人的目的。中心化的组织结构中,领导层对整个结构有着绝对话语权,他们可以根据自身的利益而对其他没有话语权的员工、客户、供应链等方面进行损害其利益的行为而不收到指责。
上面的三个因素是去中心化里很重要的三个要点,他们各自又有自身的缺陷,接下来我们逐一的分析他们的特点。 ##容错性 容错性的概念是显而易见的,他已经被应用在很多的场景中。一台或者多台服务器宕机,容错性可以保证在这样的环境下系统仍然可以正常工作。在现实生活中也充斥了这样的例子,比如飞机一般都配有两个以上的发动机,当一个出现故障另一个可以承担整个机身引擎的作用;医院中的急救室的电源;银行等金融机构的账本存储等等都囊括了容错性的构架设计。但是在这样的去中心化的实现中,我们真的可以保证容错性吗?如果一架飞机配备了四台引擎,但是这四台引擎都是来自一家厂商,如果这家厂商的引擎都具有某种缺陷从而导致引擎失效,那么飞机的容错性只能是纸上谈兵。 回到区块链中,区块的构架也能保证系统容错性吗?并不见得,看下面的几个场景:
- 如果区块链网络中的所有节点都运行了一套有Bug的程序软件,整个去中心网络的容错性是很难保证的。
- 如果区块链中所有检点都运行一个软件程序,而这个软件程序的开发团队收了贿赂。
- 区块链中大部分节点都来自一个国家,而这个国家的政府掌控者所有该国家节点的运行环境,那这个政府是可以操作区块链网络的。
- 如果大部分网络挖掘机的硬件是来自一个厂商,而改厂商在设计硬件时留了一个后门,他们可以利用这个后门做任何想做的事情。
在设计一个去中心环境的系统构架时,这些因素都是应当考虑进去的,针对上面的问题笔者给出了下面一些设计上的思考:
- 一个技术理论诞生以后是要允许存在多个具有竞争力的实现产品,从而避免了一家独大的局面。
- 协议的制定应当在民主自由的环境下协商进行。从而更多的民主人士可以参与到讨论中来,避免了在协议制定上的腐败和堕落。
- 技术的核心开发人员应当来自多个国家或民族,保证他们是客观的开发软件。
经过上面的思考,我认为容错性虽然是一种通过技术解决问题的方法,但是在去中心化的构架中我们仍要考虑政治上的去中心化。
##免疫攻击 在一些简单的金融模型中,去中心化可能不是那么的重要。例如,你创建了一个协议,其他交易都在这个协议下操作,如果你确定当有超过51%的网络节点受到攻击则用户交易将失效,那么用户并不关心在这个网络协议是中心化的还是去中心化的,因为他们终将损失交易所得。然而,在一个更为复杂的经济模型中,特别是网络攻击不可避免的情况下,去中心化就显得特别重要了。如果你以性命威胁受害人交出一百万,那么一百万对他来说显得微不足道。但是,如果这一百万分布在十个人手中,那你要威胁十个人才能拿到这一百万。我们的世界其实充满了各种不均衡,有一种不平衡体现在攻击和防御的博弈中,例如,一个造价一百万的房子可能要花掉一万元来摧毁它,有趣的是建造和防御并不成线性关系,同样一个造价十万元的房子,可能要花掉三千元来毁掉它,一百万对一万和十万对三千这两种非线性关系造就了去中心化在免疫攻击中的优势。
##抵御合谋
最后我们看看抵御合谋。合谋这个词通常指的是贬义的意思。简单来说,合谋就是我们不愿意看到的合作方式。在一个团队里大家都在一起工作,一起开会,一起协商,但是不论多大或者多小的机构都会出现小的团体,小团体的出现必然会产生不一样的想法和有奇异的观点。当这个小团体的声音逐渐强大,大到一定规模,例如51%,的时候,他的影响必然会左右整个团体最终的利益。在区块链构架中,比特币一直强调他可以安全的保护用户交易不受干扰,防止重复交易的产生,但是不可避免的,当超过三分之一的挖掘机节点达成一致时,他们就可以左右比特币的交易。如果我们要消除这种不合适的“合谋”,是不是说要取消所有节点之间的合作,或者说加大节点之间交流的力度呢?我觉得有三个方法可以降低这种“合谋”的可能性。
- 不要试图调节不和谐的声音,相反通过协议上的定义加强这种声音。
- 找到一种可以加强协作的媒介,但是不允许在协作之上进行“合谋”从而产生攻击的可能。例如,比特币的开发者通常都说英语,而挖掘机的工作者都说中文,由于英文和中文这两种沟通介质本身具备了一定的排斥性,因此他为沟通制造了一定的障碍,从而减少了错误的产生。
- 尽量在有意沟通和“合谋”沟通之间创造差异,让前者更容易,后者更复杂。 #小结 在去中心化的道路上也许会走很多弯路,在没有弄清楚其真正含义的情况下不建议大家轻易尝试其构架方案。大家常犯的错误是去中心化的概念不仅仅局限于技术层面,对于政治、企业组织结构同样适用,一个去中心化的企业结构应该是一种分散形式存在的实体,这对于企业转型来说无疑创造了很大的麻烦。 从技术上说,在传统中心化、单体构架中,所消耗的开发成本较低,要求开发人员掌握的知识与去中心化相比好小很多。对于初创型公司或者技术实例不强的开发团队来说,个人不建议做这样的尝试。区域块无疑是一个炙手可热的技术构架,很多痴迷技术的开发者往往希望尝试新鲜的技术方案,但前提一定要先了解其负面影响,以及应用场景,切记不要为了区域块而区域块。只有有了相应的业务支撑的情况下,再去实践对于研发成本来说是一个比较合理的分配方式。 #作者简介 赵翼,毕业于北京理工大学,目前就职于SouthbankSoftware,从事大数据,Blockchain方面的开发工作。曾在GE,ThoughtWorks,Jump!,TheBigCrunch,元气兔担任项目开发,技术总监等职位,接触过的项目种类繁多,有Web,Mobile,医疗器械,社交网络,大数据存储等。