最大基尼系数:区块链去中心化程度的粗略衡量标准
我们可以把子系统去中心化的这些衡量标准样例结合,来衡量一个系统的去中心化程度吗?一种简单的途径是简单地取所有基本子系统基尼系数的最大值,如下所示:
因此,通过这个衡量标准,比特币和以太坊的基尼系数最大值都约为 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
作者:Balaji S. Srinivasan 和 Leland Lee
翻译&校对:张凌 & Elisa
稿源:以太坊爱好者(https://ethfans.org/posts/quantifying-decentralization-part-2)
网友评论