第161篇 笔记-去中心化的含义
创始人
2024-06-01 13:48:18
0

本文主要内容来自Vitalik Buterin的文章。

“去中心化”这个词是在加密经济学领域用得最多的一个词,通常也作为辨别区块链的依据。然而,这个词也可能是被定义得最不恰当的一个词。数千小时的研究和价值数十亿美元哈希算力的投入都旨在实现去中心化,并保护和提高去中心化的程度。当人们关于协议的讨论变得越发激烈时,一种非常常见的情况是,协议的支持者会声称对方的协议提案是中心化的,并以此作为最终击倒对方的论据。

下图为常见的图表:

(a)中心化 (b)分布式网络 (c)去中心化

分布式意味着交易并非都在同一个地方处理,而去中心化意味着不存在单一的个体可以对交易的处理进行控制。

一、去中心化的三种类型

三个去中性化模型含义如下:

  1. 架构上的(去)中心化。这个系统是由多少台物理计算机组成的?这个系统可以容忍多少台计算机在任意某个时间同时宕机,并且还能继续运行?

  1. 运行上的(去)中心化。有多少个人和组织能最终控制构成这个系统的计算机?

  1. 逻辑上的(去)中心化。系统呈现和维护的接口和数据库结构看起来更像是一个单一的对象,还是松散的群体?简单的启发方式是:如果你把这个系统一分为二,那么这两半还能作为完全独立的单元继续运行吗?

在某些情况下,很难把三者完全隔离开。

为了帮助理解,试举几例:

  1. 传统公司在运行上是中心化的(只有一个CEO),架构上是中心化的(只有一个总部),逻辑上也是中心化的(不能在真正意义上把这家公司连同员工分成两半)。

  1. 语言在逻辑上是去中心化的,A和B之间说的英语与C和D之间说的英语不需要保持一致。没有一种语言的存在需要依赖于中心化的基础设施,并且语法规则并不是由单一的个体创造或控制。

  1. 区块链在运行上是去中心化的(没有人能控制),在架构上也是去中心化的(没有基础设施层面的中心故障点),但其在逻辑上是中心化的(有一个受到共同认可的状态,并且系统表现得像一台单一的计算机)。

很多时候,当谈论区块链的优势时,人们描述的是拥有一个中心化数据库的便利优势。但这种中心化是逻辑上的中心化,在许多情况下,这种中心化是极有用处的。当然,也有人支持尽可能地推进逻辑上的区中心化,因为这种系统在网络分区问题中更容易存活下来,并且在世界上连通性极差的地区也能很好地运行。

架构上的中心化往往会导致运行上的中心化,但这没有必然联系——人们在一个大厅里见面并投票,但这个房间的维护者并没有获得任何决策权。在计算机化系统中,可能会发生架构而非运行上的去中心化——某个在线社区为了方便而使用了一个中心化论坛。但是,这个社区的成员当中有一条广为接受的社会契约,那就是如果论坛的拥有者作恶,那么所有人都会转移到另一个论坛。

逻辑中心化让实现架构去中心化难上加难,但并非不可能。逻辑中心化使得运行去中心化更加困难。

二、支持去中心化的三个理由

为什么去中心化有用?人们通常会提出一下几个观点。

  1. 容错性好。去中心化系统意外宕机的可能性更小,因为它们依赖大量独立的组件,而这些独立的组件不太可能同时意外崩溃。

  1. 能抵抗攻击。去中心化系统使得攻击、破坏或者操控的成本更高,因为它们缺少敏感的中心点,而中心点容易遭受比周围经济系统规模成本更低的攻击。

  1. 抵御参与者串谋。在去中心化系统中,参与者更难串谋以牺牲其他参与者为代价来使自身获利。

以上三个论点都十分重要,且十分有效。但是一旦开始做出协议决策的时候,这三个论点都会导向一些有趣和不一样的结论。不妨一个一个地展开说明。

首先是容错性,核心论证很简单。什么样的事情发生的可能性更低:是1台计算机出现故障,还是10台计算机中有5台计算机同时出现故障?这个道理是毋庸置疑的,并且在现实生活中的很多场景中也可以用得到。

然而,这种有效同时也十分重要的去中心化有时还不如一个偶尔被用来进行预测的数学模型。原因是其中可能会存在共模故障。不妨考虑以下场景:

  1. 区块链的所有节点都在运行相同的客户端软件,并且这个客户端软件存在漏洞。

  1. 区块链的所有节点都在运行相同的客户端软件,这个客户端软件的开发团队和提出更新协议的研发团队都是社区腐败分子。

  1. 在区块链的工作量证明中,70%的矿工来自同一个国家,他们出于安全考虑决定取缔所有矿场。

  1. 大部分的挖矿硬件都是同一家公司生产的,这家公司开了一个后门,任何人都可以通过这个后门随意关闭硬件。

  1. 在区块链权益证明中,70%的押注币存放在同一个交易所中。

从容错去中心化的整体观点出发,不妨看看它们的影响是如何被最小化的。下述结论显而易见。

  1. 拥有多种相互竞争的实施方式至关重要。

  1. 协议升级背后的技术因素必须达成共识,这样更多的人可以更轻松地参与研究讨论和批评某些极度糟糕的协议变化。

  1. 核心开发者和研究人员应该从多家公司或组织招聘。

  1. 挖矿算法应该按照最小化中心化风险的思路去设计。

需要注意的是,初始形式的容错主要集中在实现架构去中心化,但是社区的容错能力一旦控制了协议的持续发展会发生什么,也是需要思考的。

下面讨论抵御串谋。串谋这种行为很难定义,可能有效的表达方法是:串谋是指公众都不喜欢的结合。在现实生活中,很多情况下,最理想的情况是每个人之间的协调配合都很完美,但是如果有人选择配合而其他人选择不配合,那么就很危险了。

在区块链协议的案例中,共识安全性背后的数学和经济推理通常依赖于至关重要的非协调选择模型,或者依赖于某个博弈是由众多微小但可以独立做出决策的参与者所组成的假设。如果某个参与者在工作量证明中获得了超过1/3的挖矿算力,那么他们就可以通过自私挖矿来获得巨大的利润。但是,当90%的挖矿算力协调得非常好,以至于他们能够出现在同一个会议中时,我们还可以说这种非协调选择模型具有实用意义吗?

区块链倡导者也指出,区块链更加安全,因为它们不能跟着自己的想法随意改变自身的规则。可以肯定的是,如果参与方之间协调得越糟糕,那么区块链会越安全。

这就显示了一个根本的悖论。许多的社区,包括以太坊社区,经常被称赞说有着强烈的社区精神,并且能够迅速协调实施、发布以及激活硬分叉。但是,该如何促进和提高这种积极的协调能力,同时避免恶意攻击而使他人陷入困境的不良协调?

这一问题的回答有以下三种:

  1. 不必过多考虑如何缓解不良协调的问题,相反,应该更多地尝试构建可以抵抗这类问题的协议。

  1. 尝试去寻找一个合适的中间点,在允许协议通过足够的协调进行演进和发展的同时,保证这种协调不足以发动攻击。

  1. 尝试区分什么是有利的协调,什么是不利的协调,并且尽量使有利的协调更容易,不利的协调更困难。

也许最好的解决方案是依赖于某个保证具有高度去中心化的团体,那就是协议的用户。

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...