1. 程式人生 > >量化去中心化,Part-2

量化去中心化,Part-2


在這裡插入圖片描述

最大基尼係數:區塊鏈去中心化程度的粗略衡量標準

我們可以把子系統去中心化的這些衡量標準樣例結合,來衡量一個系統的去中心化程度嗎?一種簡單的途徑是簡單地取所有基本子系統基尼係數的最大值,如下所示:

在這裡插入圖片描述

因此,通過這個衡量標準,比特幣和以太坊的基尼係數最大值都約為 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)