概述
在提高区块链去中心化程度之前,我们必须先知道衡量的标准。
去中心化 被 普遍 认为 是比特币和以太坊胜过传统同类方案的主要优势。(编者注:这里有四个超链接。其中第二个为 V神博文《去中心化的意涵》,中译本见文末超链接)然而,尽管人们广泛认可去中心化的重要性,大多数关于这个话题的讨论并没有进行量化。如果我们能够商定一个定量的衡量标准,我们就能够:
- 衡量某一系统的去中心化程度
- 判断系统的某个修改对去中心化程度的影响(提高或降低去中心化程度)
- 设计优化算法和架构,使去中心化程度最大化
在这篇文章中,我们提出了最小中本聪系数(minimum Nakamoto coefficient),作为系统去中心化程度的一个简单的定量衡量标准,该方法受著名的基尼系数和洛伦兹曲线(劳伦兹曲线)所启发。
我的基本思路为(a)列举出某个去中心化系统的各个基本子系统,(b)判断需要破坏系统中多少个体才能控制每个子系统,以及(c)然后用该最小值来作为该系统的有效去中心化程度的一个衡量标准。该最小中本聪系数的值越大,该系统的去中心化程度就越高。
为了更好理解这个定义,我们首先交代有关基尼系数和洛伦兹曲线的相关概念的部分背景,然后根据这些衡量标准,展示一些图表和计算结果来看一看整个加密生态系统的去中心化现状。我们接着会讨论衡量去中心化的概念,作为对比特币和以太坊基本子系统的综合衡量方法。我们在结尾部分将最小中本聪系数定义为系统级去中心化的提议衡量方法,并且讨论改善这个系数的方式。
洛伦兹曲线和基尼系数
尽管这两者通常受到政治派别的关注,但在“过于不公平”和“过于中心化”的概念上两者还是有惊人的相似之处的。具体来说,我们可以把“财富的分配不均”视为高度不公平,而把“权力的分配不均”视为高度中心化。
经济学家很早以来就运用这两种工具来衡量某个群体内的不均衡性:洛伦兹曲线和基尼系数。洛伦兹曲线的基本概念如下图所示:
洛伦兹曲线在上图中以红色示出。随着累积分布偏离一条直线,基尼系数(G)从0增至1。图表来自 Matthew John。
基尼系数的方程式可以由如下所示的洛伦兹曲线和所谓“绝对平等线(Line of equality)”以下区域计算得出:
-洛伦兹曲线和基尼系数-
同时基尼系数也可以由连续分布和离散分布的实体中个人份额计算而得(方程参见此处)。
直观上来说,资源的分布越均匀,基尼系数就越接近于 0。反过来说,资源的分布越是偏向一方,基尼系数就会越接近于 1。
这抓住了我们中心化的直觉概念:在一个 G=1 的高度中心化系统中,只要占有一个决策者和/或一家实体就能破坏这个系统。反过来说,在一个 G=0 的高度去中心化系统中,想要破坏该系统则需要占有多个决策者。因此,基尼系数小意味着去中心化程度高。
加密货币:基尼系数和洛伦兹曲线
为了有一个直观的感受,让我们来通过一个简单的例子看一看洛伦兹曲线和基尼系数:加密货币市场资本范围内的财富分配。为此,我们展示了于 2017 年 7 月 15 日市值前 100 名的数字货币的市值分布,计算了各自的市场份额占比,并做出了与基尼系数相关的洛伦兹曲线:
-来源: https://coinmarketcap.com/ -
如果我们衡量前 100 名数字货币市值的中心化程度,基尼系数是 0.91。这和我们的直觉知识相符合,因为自 2017 年 7 月起,整个市值的 70% 被名列前 2 名的数字货币持有,即比特币和以太坊。
去中心化系统是由子系统组成的
为了将这个概念应用到公有链领域,我们需要对去中心化系统和去中心化子系统加以区别。具体来说,去中心化系统(比如比特币)由一系列去中心化子系统(比如挖矿、交易所、节点、开发人员、客户端等等)组成。以下为组成比特币的六个子系统:
-我们将利用这六个子系统来阐述如何衡量比特币或以太坊的去中心化程度。请注意:你可以使用不同的子系统,取决于你认为哪些子系统对去中心化程度更重要。-
现在,人们可能争辩说这些去中心化子系统中的一些可能比其它子系统更必要;例如,挖矿对于比特币的运作来说是绝对必要的,然而交易所(尽管很重要)实际上却不是比特币协议中的一部分。
但是,让我们假设某一个体能够识别去中心化系统中的基本去中心化子系统。然后我们可以规定,如果某人可以破坏某个去中心化系统的任何基本去中心化子系统,那么这人可以破坏这个去中心化系统。
量化比特币和以太坊的去中心化程度
有了这些定义,我们现在针对比特币和以太坊挖矿、客户端、开发人员、交易所、节点和所有者这些子系统来计算系统的洛伦兹曲线和基尼系数。我们可以根据基尼系数和洛伦兹曲线这两个衡量标准来判断各个系统的去中心化程度。
下面是比特币的曲线:
下面是以太坊的曲线:
让我们以上面各个图表中的 6 个面板为参照,依次讨论一下这些子系统。
(编者注:原文的下列小节中没有单独的图表;为方便阅读,编者通过截图拼凑成对比图表加入文中。)
挖矿去中心化程度
如图表的左上角面板所示,通过测量过去 24 小时的区块奖励,我们发现比特币挖矿的去中心化程度惊人。以太坊挖矿则更为中心化。这些数值的变化相当大,因此我们可以进行持续追踪或者通过取过去 7 天或 30 天的平均值来稳定结果。
客户端去中心化程度
如每个图表顶部中间位置的面板所示,大多数比特币用户使用 Bitcoin Core 客户端,而 Bitcoin Unlimited 则是第二大受欢迎的客户端。这意味着如按不同客户端代码库的数量来衡量的话,比特币中心化程度相当高(基尼系数=0.92)。对于以太坊来说,大多数(76%)客户端是 geth,另外有 16% 的客户端是 Parity,以太坊客户端代码库的基尼系数也达到了 0.92,这两个代码库占了大半个生态系统。
开发人员去中心化程度
在右上角的面板中,我们可以发现 Bitcoin Core 客户端拥有大量为其做出代码贡献的工程师。尽管原始的提交数量对于贡献度来说无疑是一项不精确衡量标准,但这似乎还是表明相对少量的工程师群体为 Bitcoin Core 做了绝大部分工作。以太坊 geth 客户端的开发甚至更为集中化,只有两位开发人员贡献了代码。
交易所去中心化程度
各个交易所比特币和以太坊的交易量差异很大,相应的基尼系数也是如此。然而,我们出于展示目的,在左下角的面板中计算了过去 24 小时的基尼系数快照。
节点去中心化程度
去中心化的另一个衡量标准(底部中间位置的面板)是确定比特币和以太坊的在不同国家的节点分布情况。
所有权去中心化程度
在右下角最后的面板中,我们来看一看比特币和以太坊所有权的去中心化程度,按地址的分布情况来衡量。有一点很重要:如果我们要囊括地球上 70 亿的总人口,其中大多数是没有比特币或以太坊的,则基尼系数基本上就是 0.99+。如果我们要囊括所有余额,也就会涵盖很多空的余额,也会再次得出 0.99+ 的基尼系数。因此,我们在这儿需要某些阈值。我们采用的不完全阈值,是所有超过185 个 BTC 的账户及超过2477 个以太币的账户的基尼系数。因此,这是 2017 年 7 月之前比特币和以太坊富人(持有相当于 500,000 美元以上代币)的所有权分布情况。
在什么情况下类似于此的定限度量标准会有意义呢?也许是碰到类似于当下的美国国税局vs.数字货币交易所 Coinbase 问题的场景时:美国国税局正搜集有关所有账户余额大于 20,000 美元的持有人的资料。从攻击者的角度看,基尼系数大意味着政府只需要拉拢少数大额持有人,就能获得大比例的未兑现加密货币以及控制价格的能力。
综上所述,得出两点结论。第一点:当一个人不想要 BTC 或 ETH 的基尼系数精确为 1.0 时(因为这种时候,将只有一个人拥有所有数字货币,那么就没有人会有帮助提升该网络的动机),实际上出现的情况是相当高的财富中心化程度仍然和去中心化协议的运作相兼容。第二点:如下所示,我们认为中本聪系数尤其在衡量持有人去中心化程度时要胜过基尼系数,因为其排除了选择阈值时的任意性问题。
最大基尼系数:区块链去中心化程度的粗略衡量标准
我们可以把子系统去中心化的这些衡量标准样例结合,来衡量一个系统的去中心化程度吗?一种简单的途径是简单地取所有基本子系统基尼系数的最大值,如下所示:
因此,通过这个衡量标准,比特币和以太坊的基尼系数最大值都约为 0.92,因为两者的节点所具有的客户端高度集中在一个代码库中(比特币的是 Bitcoin Core,以太坊的是 geth)。
至关重要的是,选择的基本子系统不同,这些值也就不同。例如,某人可能认为单一代码库并非系统去中心化的阻碍。如果是这样的话,那么比特币的最大基尼系数将改进到 0.84,同时新的去中心化瓶颈将是国家间的节点分布情况。
我们当然 不会 争论说这里特别选出的六个子系统就是衡量去中心化的最佳选择;我们只是想要收集一些数据来展示这种计算的结果。我们 确实 赞成的是,最大基尼系数这个度量标准开始为识别出可能出现的去中心化瓶颈指明正确的方向。
最小中本聪系数:区块链去中心化的改进版衡量标准
然而,最大基尼系数存在一个明显的问题:虽然一个较高的基尼系数对应“更加中心化的”系统与我们的直觉吻合,但由于每个基尼系数被限制在 0-1 的范围内,意味着这个系数并非直接衡量破坏某个系统所需控制的个体或实体的数量。
具体来说,对于一个区块链来说,假设你有一个交易所子系统,其中有 1000 名参与者,基尼系数为 0.8,还有一个有 10 名矿工的子系统,基尼系数为 0.7。结果可能是只破坏 3 个矿工而非 57 个交易所就足以破坏这个系统的去中心化,这意味着利用系统的基尼系数最大值来寻找瓶颈可能会把瓶颈指向交易所,而非实际上的矿工分布。
有多种方式克服这种困难。例如,我们可以在将不同子系统的基尼系数结合起来之前提出这些系数的原则权重。
另一种可替代方式为基于洛伦兹曲线来定义一种精神上类似的度量标准,通过这个度量标准来计算基尼系数,我们称之为“中本聪系数”。如下图所示。在这个例子中,给定子系统的中本聪系数为 8,因为要达到 51% 控制将需要 8 个实体。
也就是说,我们将中本聪系数定义为,获得某个子系统总容量中 51% 的控制权所需的实体最小数量。结合上述措施,通过取系统中每个子系统基尼系数最小值的最小值就能得到“最小中本聪系数”,就是我们为了从整体上破坏这个系统而需要破坏的实体数量。
中本聪系数代表破坏给定子系统所需的实体最小数量。最小中本聪系数是所有子系统的中本聪系数中的最小值。
如果子系统被破坏的阈值不是 51%,我们还可以定义一个“修正中本聪系数”。例如,可能要使某个系统严重退化,需要操控 75% 的交易所,但是只需要 51% 的矿工。
我们现在可以利用前面部分的洛伦兹曲线来计算以太坊和比特币的中本聪系数。这是计算以太坊的标准客户端 geth 的洛伦兹曲线的一个举例。如我们所见,只要控制两名开发人员,就能操控 geth 开发中 51% 的代码贡献,所以中本聪系数为 2。
上图阐述了这一概念。下面是比特币和以太坊的所有子系统的图表,这次计算了中本聪系数:
在下面的表格中,我们汇集了所有子系统的中本聪系数:
如我们所见,有了这些基本子系统,我们可以说比特币和以太坊的中本聪系数都是 1。具体来说,Bitcoin Core 或 geth 代码库的破坏将破坏超过 51% 的客户端,这将造成它们各自网络的损坏。
那么想要改进以太坊,就意味着类似 Parity 的其他客户端需要获得更高的市场份额,在此之后,开发人员或挖矿的中心化将成为下一个瓶颈。类似地,比特币的改善也将需要类似 btcd、bcoin 等客户端获得更广泛的采用。
最小中本聪系数取决于子系统定义
我们知道,有些人可能会争论说,比特币的单个标准客户端的高度集中化并不影响它的去中心化,或是说,这种程度的集中化是一个无可避免的。我们不就此问题表态,因为在不同的基本子系统定义下,得到的去中心化衡量标准是不同的。
例如,如果有人认为“创始人和演讲人”是一个基本子系统,那么以太坊的最小中本聪系数就是 1,因为 Vitalik Buterin 和以太坊是一损俱损的连带关系。
相反,如果有人认为“拥有大量挖矿能力的不同国家的数量”是一个基本子系统,那么比特币的最小中本聪系数又将是 1,因为……将导致 51% 的挖矿算力被破坏。
如何选择最能代表一种特殊去中心化系统的基本子系统将会成为一些争论的话题,我们认为这超出了这篇帖文的讨论范围。然而,“创始人和演讲人”和“中国矿工”的破坏对于两种不同的链来说是两种不同的攻击,这一点值得观察。正如此,如果某人想比较不同加密货币的最小中本聪系数,生态系统多样化可能可以在某种程度上在量化的角度提高去中心化。
结论
许多人表示,去中心化是诸如比特币和以太坊之类的系统最为重要的属性。如果这当真的话,对去中心化的量化是非常关键的。最小中本聪系数就是一个这样的衡量标准;随着该系数的增加,破坏这个系统所需的实体的最小数量也在增加。我们认为这和去中心化的直觉概念相对应。
量化去中心化的明确衡量标准之所以重要,原因有 3 点。
- 衡量。第一,此类定量的衡量标准可以明确地计算出来,在一段时间内记录下来,并在控仪表盘上展示。这赋予我们在子系统内系统级地追踪去中心化的历史趋势的能力。
- 提高。第二,就像我们衡量业绩一样,诸如中本聪系数的衡量标准让我们能够衡量去中心化程度的提高或降低。这让我们能够开始把去中心化的变化归因于对代码的单独部署或其他类型的网络活动。例如,在资源紧缺的情况下,我们可以衡量部署 1000 个节点或雇用 2 个新的客户端开发人员是否将对去中心化有比较大的提高。
- 优化。最后也是最重要的一点,可量化的目标函数(从数学意义上来说)决定任何优化过程的结果。表面上相似的目标函数可以得出迥异的解决方案。如果我们的目标在于既要优化跨系统的去中心化程度,又要优化系统内的中心化程度,我们将需要类似洛伦兹曲线、基尼系数和中本聪系数的定量度量标准。
我们承认,有关某个去中心化系统需要哪些基本的子系统的话题还有很大的争论空间。然而,在给定一个提议的基本子系统的情况下,我们现在可以生成一个洛伦兹曲线和一个中本聪系数,然后判断这个子系统是否从整体上来说真的是该系统的去中心化瓶颈。
照此,我们认为最小中本聪系数为迈向去中心化量化的第一个有用步骤。
Vitalik 的评论:
关于比特币和以太坊的开发人员和客户端去中心化,我认为这 4 幅图表忽略了 2 点:
-
许多所谓的“其他比特币客户端选择”实际上是和 Bitcoin Core 相同的代码库的分叉,但是所有以太坊实现都是从零开始创建的完全独立代码库。因此,Core 和 BU 是否应该算作两个完全独立的客户端这一点有待讨论。
-
以太坊并不真正具备“标准客户端”的概念。如果你从字面上理解为“人们为了加深对协议规则的理解而参考的客户端”,那么在许多情况下,那其实是 pyethereum,因为 python 更易于理解。C++ 客户端是生成测试套件的客户端。因此在我看来,光计算对 Geth 的代码贡献数量对生态系统的去中心化来说表述不充分。
以上只是阐述了“子系统”的概念是多么难以捉摸。在去年的拒绝服务(DoS)攻击中,Geth 有一段时间是无法使用的,同时大多数人就切换到了 Parity。因此,有些子系统并非十分关键但也不可忽略。
同时,我认为你忽略了一个基尼系数并不完全合适的原因:在现实世界中,基尼系数通常用作衡量一个国家的全职居民之间的财富不均程度,因此实际上衡量的是结果的不平等,在加密世界里,账户间的不平等可能源自两种情况:(1)在给定参与程度下,不同用户在系统中成功的能力差异;以及(2)他们参与程度的差异。
全球人口范围内生产大提琴的基尼指数可能在 0.99 以上,但很明显,没有人在意这个。就挖矿和财富而言,问题在于有如此一长串几乎不感兴趣的业余参与者,导致这里的基尼系数看起来是衡量横坐标的长度(计算用户数量),而非其他东西。(校注:由于有大量业余用户的参与,因此在“专业用户”的挖矿参与度和拥有的财富一定的时候,业余用户越多基尼系数就会越大。)因此,关注中本聪系数或诸如前 100 名数字货币份额的相似衡量结果肯定是优选的。
原作者的回复:
当然,我同意上述所有说法。我依然认为列举子系统并利用诸如中本聪系数之类的东西,这个大致的思路能让我们对于去中心化的直觉变得明确。
作为一个类比,这有点像测评游戏网站:http://benchmarksgame.alioth.debian.org/why-measure-toy-benchmark-programs.html
我们挑选的每个子系统就像一个不同的基准。任何单独的基准都有缺陷,但是一套基准就有助于我们决定给定语言倾向于在何处变得快速或缓慢。
更详细的回复:
许多所谓的“其他比特币客户端选择”实际上是和 Bitcoin Core 相同的代码库的分叉,但是所有以太坊实现都是从零开始创建的完全独立代码库。
表示同意,而且这是那个子系统度量标准的一次可能的改善(“真正独立的代码库”)。如果我们使用那个定义,那么以太坊的客户端去中心化优于比特币的,因此诸如 btcd 和 bcoin 之类的真正独立的代码库在比特币中拥有的份额不如 Parity。尽管如此,这两个系统仍将通过这个衡量标准在很大程度上中心化。
以太坊并不真正具备“标准客户端”的概念。如果你从字面上理解为“人们为了加深对协议规则的理解而参考的客户端”,那么在许多情况下,那其实是 pyethereum,因为 python 更易于理解。C++客户端为生成测试套件的客户端。因此在我看来,光计算对 Geth 的代码贡献数量对生态系统的去中心化来说表述不充分。
当然,从“比较以太坊最流行的客户端与比特币最流行的客户端范围内,开发人员代码贡献分布”的意义上来说,其基本上是选用于大概的同类比较。你可以利用另一种定义,比如用于生产的所有独立代码库的代码贡献分布。或者有人争论说代码贡献的计算其实不重要。
虽然如此,就像评测游戏一样,这个讨论至少开始让衡量去中心化意义的具体且定量的标准变得明确。
就挖矿和财富而言,问题在于有如此一长串几乎不感兴趣的业余参与者,导致这里的基尼系数看起来是衡量横坐标的长度(计算用户数量),而非其他东西。
我们确实想到过这个问题——你说得对,如果我们在所有 ETH 或 BTC 地址范围内进行计算,那么这的确是个问题,同时基尼系数非常接近于 1.0(因为绝大部分地址拥有 0 BTC/ETH,世上绝大多数居民同样如此)。
在这种情况下,对于财富/地址的计算来说,我们将其限定为 ETH 和 BTC 的前 N 个地址,这样的话,任何人都可以拥有关于“前 N 个地址中财富的去中心化程度”的一个衡量标准。我们不争论说这是个关键的度量标准,只是作为例证。尽管你不希望 BTC 或 ETH 的基尼系数为 1.0(因为这种时候只有一个人将拥有所有数字货币,并且没有人会被激励去帮助提升该网络),实际上出现的情况是相当高的财富中心化程度仍然和某个去中心化协议的运作相兼容。
对于挖矿/区块奖励计算来说,在时间窗口方面存在天然的限制。所以我们没有在此深入探究。
因此,关注中本聪系数或诸如前 100 名数字货币份额的相似衡量结果肯定是优选的。
是的,中本聪系数在具备直观解读(“破坏系统所需的实体最小数量”)方面来说也是有用的,但是基尼系数并没有做到如此明确具体。
链接: https://news.earn.com/quantifying-decentralization-e39db233c28e
最后
以上就是强健小天鹅为你收集整理的【转】量化去中心化的全部内容,希望文章能够帮你解决【转】量化去中心化所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复