TMT观察网_独特视角观察TMT行业

【技術】數據分片是一種向內擴容的手段卻偽裝成了向外擴容,這將使得以太坊不斷中心化區塊鏈

馮超 2018-06-19 21:35
分享到:
導讀

在發表了上面這篇文章之后,我和Vitalik進行了以下對話。盡管一開始是他對我的文章的回應,但對我來說,這段對話的目的是指出為什么Vitalik及許多以太坊粉絲無法理解數據分片為什么降低網絡的完整度。

輕量客戶端及完全驗證節點之間的區別

你是不是在想這個標題究竟是什么意思?別著急,往下讀就會明白了。最好先去給自己倒杯咖啡,因為這篇文章也很長。如果你還沒讀過以下這篇文章的話,可以先讀這篇:以太坊區塊鏈大小已經超過1TB了,這是個嚴重的問題

在發表了上面這篇文章之后,我和Vitalik進行了以下對話。盡管一開始是他對我的文章的回應,但對我來說,這段對話的目的是指出為什么Vitalik及許多以太坊粉絲無法理解數據分片為什么降低網絡的完整度。幸運的是,對于我所提出的問題,Vitalik都很配合地回答了,這些問題逐漸分解了這背后的邏輯,所以他的回答也屬意料之中:

我本來要說的是“節點”,打錯打成“區塊”了,但是他知道我是什么意思并且就此進行了回應。

@StopAndDecrypt: 好像非權益節點的角色都在逐漸弱化,就像現在的比特幣SPV節點一樣,只不過“擁有選擇”而已。

Vitalik: 在“任何”系統中,一個非權益節點所能做的就只是驗證而已。在一個非數據分片的系統中,你可以主動驗證所有東西。而在一個數據分片的系統中,更多是被動的:只驗證你在乎的東西,此外如果其他節點對某些數據提出疑問的話你也可以去驗證。

@StopAndDecrypt: 不對,如果發來的是無效的區塊的話我的節點會拒絕,這是遵守共識的行為。只有遵守共識的節點才有意義,并且幸運地所有比特幣節點都能夠做到這點。你的意思是只有有權益的節點才會遵守共識。

我把這一段標出來因為這一段很好地總結了這篇文章的中心思想。

Vitalik: “以太坊現在就是這個樣子,我們轉換到數據分片之后也將會一樣,只不過一些功能會對某些人來說更好用一些。” 

我:“我完全不同意你的看法。以下是完整的反駁。”

這篇文章的目的是以易于理解的方式詳細解釋以下信息(排名不分先后):

比特幣、舊的以太坊、新的以太坊的網絡架構之間的差別,只涉及到非常簡單的數學,沒有復雜的方程,只是需要一點邏輯。

基于區塊鏈的網絡最終隨著時間的推移最終都會變成中心化或者去中心化,究竟會變成哪個取決于其網絡架構。這就排除了bootstrap和技術成熟周期(不管這個周期有多長),并且假設不對協議進行任何改動。我們可以把這稱為該網絡的“本質方向”。

對協議進行改動可能會對網絡的中心化或去中心化過程產生即時或間接的影響,但長期來看不一定會改變該網絡的“本質方向”。

目前來看以太坊的固有方向是中心化的,將它改為權益證明也不會改變這個方向,而數據分片則是一個有瑕疵的擴容方案,只是緩兵之計。

這篇文章很長,但不難懂。如果你想弄懂這個問題的話就好好讀一下。

目錄

概念解釋

擴容的種類,以及這些不同的擴容方案是如何應用于去中心化的區塊鏈網絡上的。

去中心化的網絡中,完全驗證的節點的重要性。

本質的中心化vs. 本質的去中心化

網絡區別

比特幣的網絡拓撲學,以及為什么比特幣本質上是去中心化的。

以太坊工作證明的拓撲學,以及為什么它本質上是中心化的。

以太坊權益證明拓撲學,以及為什么它與前者并無差別。

數據分片

以太坊的權益證明拓撲學和數據分片,以及為什么這更加糟糕。

反駁

對Vitalik的回應的反駁。

對這篇文章的反駁:

https://medium.com/@gustav.simonsson/keeping-up-with-the-etherians-a-response-to-blockchain-size-concerns-a4858c2701d9

擴容什么?擴誰的容?在哪里擴容?

什么時候……擴容?

論點:更大的區塊會使得驗證者中心化

就是這么簡單,這就是擴容之爭中整個數字貨幣社區爭論的中心,熟悉區塊鏈協議的人一般都不會否認這個事實。以下這段節選我認為很好地解釋了各種“第二層”擴容方案(在這些方案中唯一可行的一個已經實施到比特幣中了)。

以下視頻是Vitalik解釋為什么數據分片是一種第一層(L1)擴容方案:

https://www.youtube.com/watch?time_continue=40&v=SAiuWwzcp6g

Vitalik:分片技術是一種第一層(L1)擴容方案,就是說它可以讓區塊鏈更好地工作,基本上會有更高的可延展性,這就是分片技術主要要做到的。

請注意,在這里說的“擴容”并沒有給出語境,那么我們就來提供一點語境。我們不能一直亂用“可擴容性”這個詞,尤其是我們甚至還沒有對這個詞達成一個意見一致的定義。哪怕每個人對這個概念的定義都不同,在此進行辯論的人應當至少對這個詞提供他們自己的定義。

我在本篇文章中討論擴容的時候,我所討論的只有一件事,那就是在不犧牲去中心化的前提下提高性能,而網絡的去中心化程度最直接的代表指征之一就是驗證節點的總數。討論區塊鏈網絡擴容的時候聚焦在除此之外的任何事情,要么是沒有正確地理解,要么就是出于某種原因而故意誤導。

把這一點說清楚很重要,因為這是一個基礎,能夠幫助你接下來理解以下幾種擴容方式以及如何應用到去中心化網絡上。

向外擴容:增加基層(L1)上的完全驗證節點的數量,或者在不影響網絡“本質方向”的基礎上提高基層性能。提高性能就會增加使用網絡的動力,從而增加驗證節點的數量。所以在以上兩種情況下,驗證節點都會在一定程度上增加。

向上擴容:即在基層上再添加層。向上擴容可以正確地進行,也有可能出錯。正確的方式會對基層有很小的影響或者根本沒有影響。像閃電網絡之類的支付通道網絡就是正確的向上擴容的一個很好的例子。側鏈可以說是不正確向上擴容的例子之一,因為有可能會破壞挖礦的安全模型,但這不是本文要討論的問題。

反過來則有:

向內擴容:減少完全驗證節點的數量。向內擴容就是通過提高基層的性能來減少完全驗證節點的數量。數據分片做的就是這個,這也是為什么我要寫這篇文章的原因。

向下擴容:降低層的復雜性。這在一個去中心化的網絡中是不必要的。這個方法往往應用于中心化的系統中,比如公司裁員或者內部結構重組。

我們經常提到“節點”這個詞,但往往不給出定義,讓初來乍到的人很難懂。我有一個朋友跟我講Nano可以讓所有人都運行節點并且擁有自己的區塊鏈。人們往往不知道他們自己在講什么,因為他們接觸不到正確的信息。如果不是正確的節點的話,盲目增加節點數量毫無意義。所以我說他們一直在向大家鼓吹的是一個向內擴容的方案,因為這個方案的結果會使得正確的重要的節點數量下降。不一定馬上就會下降,但是隨著時間的推移一定會下降。我接下來也會講講為什么這很重要。

完全驗證節點的重要性

Jameson Lopp: 這是我的節點。還有很多像這樣的節點,但這一個是我的。我的區塊鏈由我來驗證,這是我的財政生命,我必須要對它擁有完全的掌控,就如同我完全掌控我自己的生命。沒有我的話,我的節點毫無用處。沒有我的節點,我則感到不安。為了保持區塊鏈的真實性,我必須運行我的節點。

Bitcoin: #不是邪教

Miles Suter: 給一群擁有共同價值觀、準則和展望的人貼上邪教的標簽,這是把問題簡單化的做法,這種論點也非常軟弱無力。當一個人無法提出真正有力的論據時才會才用這種下三濫的手法。

*譯者注:@Bitcoin是一個宣傳BCash的推特賬號

https://twitter.com/lopp/status/1001903809004736513/// 如果你想知道為什么@Bitcoin的推特賬號拉黑了我,可以閱讀我的BCash文章。

你已被@Bitcoin加入黑名單,無法查看該用戶的推特。

我要做的第一件事情是舉例解釋為什么這些很重要,然后再向大家展示常見的反對意見,我將簡要地對這些反對意見作出回應,然后在本文稍后部分解釋比特幣網絡究竟是如何工作的。到時候讀者將能夠從我的解釋中理解為什么這些反對節點的論點并不成立了。

先給大家提個醒:如果你打開這篇文章的目的是要閱讀有關以太坊的內容,而你對比特幣網絡的工作原理并不感興趣的話,那你以后活該輸掉投進以太坊里的錢或者開發的精力和時間。

我的例子很簡單:

在比特幣中,所有的節點都完全驗證。如果有人想要上傳無效的東西,則將不會被網絡傳播。每一個節點都想人體免疫系統里的白細胞一樣能夠識別外來者的入侵。對于區塊鏈網絡來說沒有比這更優秀的安全系統了。

以下是一些常見的反對節點的論點:

除非你是“挖礦節點”,否則都無法確保執行共識,而那些不是挖礦的節點會妨礙“挖礦節點”。

對于去中心化來說,邊緣(edge)比節點更重要。所以增加節點數量并不一定能提高去中心化程度。

需要多少個節點才能保證安全?肯定有一個“足夠好”的節點數量,達到這個數字就能保證安全了吧?

1: “除非你是“挖礦節點”,否則都無法確保執行共識。”

為了回應這個問題,我將直接開始解釋比特幣網絡的工作原理。你將在“比特幣網絡拓撲學”這個章節里找到答案,我也將這一章節的內容寫成了一篇獨立文章,因為單單是這一問題就有很多錯誤信息在網上大肆流傳。(這最終都會回到數據分片和以太坊身上,相信我。)

2: “邊緣(edge)比節點更重要。”

為了接下來的文章更好讀懂,我在這里要澄清一點,當我說“去中心化”的時候,我指的是下圖里(C)的情況(但是是四維而不是平面的二維)。這張圖是我從Vitalik那里偷來的,他曾經寫文章解釋為什么這張圖很糟糕:

Fig.1-(a) 中心化 (b) 去中心化 (c) 分布式網絡 (這還有待明鑒)

邊緣(edge)只是節點之間的連接,以下的兩張圖表中每張圖表都有16個節點,節點數量相同,但其中一個的邊緣卻比另一個要少得多,邊緣多的圖表中,每個節點都和所有其他節點相連接。

這兩者之間的區別是什么?

第一張圖有足夠的邊緣來將信息傳播(我們待會會詳細講這個)至網絡中的每一個節點,只需要進行足夠次數的“跳躍”即可完成,并且這些節點無法被審查屏蔽,因為他們之間的連接(即邊緣)分散得很好。

另一個網絡呢?

每個人都知道你是誰。

每個人都知道你發送的這筆交易是不是由你創建的。

每個人都知道通過一個節點中繼的區塊是由該節點創建的還是僅由該節點中繼,這個區塊可能是來自一個他們不喜歡的礦工。

現在他們知道IP地址包含一個擁有大量比特幣的地址。

他們知道那是一個礦工,或者他們知道是哪一個IP地址允許他們不喜歡的礦工中繼那些區塊。

如果有人能控制無限量的驗證者的話,那他們就能審查并屏蔽你,或者屏蔽任何包含你的交易的區塊。

這簡直是隱私和安全的反面教科書。

關于邊緣,肯定有一個“足夠”的數量可以達到,你待會就會明白了。在我的上一篇文章中,我同時也談到了傳播的問題,盡管邊緣數量“有限”,傳播速度還是在不斷加快。騙子往往尤其愛用這個論斷(甚至是連Vitalik都時常揭穿的騙子),他們騙人的時候就愛用這個招數來顯得自己很聰明:

他還像個白癡一樣把第一層(L1)網絡和第二層(L2)網絡拿來相提并論。

Dr Craig S Wright: 好好笑哦

這種理論就是節點(頂點)才重要,而不是邊緣。這種論斷毫無真實性,只能用來騙騙不懂的人。

閃電網絡有2000個節點,而永久性的邊緣只有8000個

比特幣現金有800個節點,卻有24萬個邊緣

因此比特幣現金更加去中心化

這是微軟公司四處散播的謠言

3: “到底需要多少個節點?”

我認為,會提出“到底要多少個節點才能保證安全”這種問題,說明有人還是看不到大局。提出這個問題就說明他們認為一定要有一些節點才是安全的,所以現在的問題就是要弄清楚究竟要多少個。問這些問題的人有時候是真心提問,有時候則是在試圖轉移話題。

以下是一些簡單的問題,讀者不一定對這些問題都有答案。假設能夠保證安全的節點數量是2萬個全節點。

如何通過編寫代碼來保證節點數量一直保持在2萬個以上?

即使可以通過代碼實現了,網絡如何才能知道到底有幾個節點,而不需要一個預言機(oracle)來告訴它呢?

我們假設需要2萬個節點,但是我們為什么要假設2萬個呢?我們在現實生活中做過測試,發現要阻止政府被推翻需要2萬個“人”?這個例子很蠢,但如果人口增長了10倍的話,2萬這個數字還準確嗎?

如果我們現在就確定下來一個數值,將來發現這個數值不對,我們還要冒著風險再走一遍流程來更改協議,換成一個新的數值,這值得費這么大勁嗎?

我想說的是,根本沒有辦法這樣做。你沒法寫代碼讓網絡保持在一個特定的節點數量上。我傾向于以下結論,并且目前我還沒有看到有什么好的論據來反對它:任何區塊鏈網絡,如果不改變協議,并且需求持續增長,那么這個網絡將會隨著時間的推移變得中心化或去中心化,究竟往哪個方向發展取決于網絡架構。如果你想要去中心化的話,那么你所寫的協議就必須本質上是去中心化的。這就意味著協議的設計必須保證驗證節點的數量會隨著時間增長,而不是減少,這一點就引出了下一章節。

本質中心化/去中心化

在本章節的開頭,我想要澄清一些關于這兩條鏈的比較的問題。我和其他人以前曾經用過的比較方法確實有一些問題,所以在這里我改用更加公平的方法來進行比較,這個方法反而讓一切看起來都更糟糕了。

比特幣區塊“大小”呈線性增長是因為節點在最大區塊能力下進行處理所需要的數據量隨著時間的推移是不變的。所以下面左邊這張圖表和右邊這張圖表其實是一樣的。

左圖:隨著時間的推移,鏈的增長呈線性

右圖:隨著時間的推移,處理所需數據量保持不變

·      單純的區塊大小增長會導致隨著時間的推移節點需要處理更多的數據(但保持不變),鏈的增長也會更快(但依然是線性的)。不斷增加區塊大小則會使得這兩者都不斷增長。

但愿以下能夠解釋清楚,但是我會更進一步地闡釋:

本質的去中心化:驗證者增加

區塊大小限制=鏈呈線性增長

鏈呈線性增長=節點需求保持不變

節點需求保持不變=隨著時間的推移節點數量上升

本質的中心化:驗證者數量減少

沒有區塊大小限制=鏈呈指數增長

鏈呈指數增長=節點需求增高

節點需求增高=隨著時間的推移節點數量下降

https://twitter.com/StopAndDecrypt/status/1000874907448827904

區塊鏈網絡構架對全部驗證的節點數量增長或者減少有直接影響嗎?

也就是說:我認為,一個區塊鏈網絡的節點,如果不去干擾它并且需求保持不變,那么這個節點將有以下兩種結果:

1] 增長

2] 縮減

它將不會在某個點“來回徘徊”。

你同意嗎?

85% 是

15% 否

https://twitter.com/StopAndDecrypt/status/1003807436967481344

@StopAndDecrypt:應該把那16%的人從每一個@bitcoin發起的投票中去除。

@pierre_rochard:選一個

16% 低廉的交易費用

54% 2100萬比特幣

如果設定一個區塊大小不再增長,那么隨著科技的發展,運行節點將變得越來越容易,于是節點總數量將會上升。當我說“本質去中心化”的時候說的就是這個意思。當比特幣升級到隔離見證之后,運行完全驗證節點的要求確實提高了,但只提高了一點點。這并沒有導致任何人被迫退出網絡或者讓依然運行隔離見證之前的節點的人遇到困難,最重要的是,這個網絡依然保持著本質去中心化:

當區塊大小因為隔離見證而改變的時候,這并不是單單為了“增加空間”,還因為許多其他原因。現在比特幣區塊大小受到管制,設定了一個限制,并且不會被改變。如果一個區塊太大的話,那它將會被認定為無效區塊。這是我們想要的結果,因為這保證了數據量不會隨著時間的推移而改變。沒有人投票來決定這個事情,這并不是一個51% vs. 49%的情況。只要區塊太大就一定是無效的,一直都是這樣的。

網絡無法得知你的節點挖出了一個區塊,協議通過這種方式來保證所有人隱私平等,而區塊大小限制則保證物理平等,即無法區分一個驗證者挖礦或者不挖礦(后面會展開講這個)。不應當因為對每個人的節點都更容易,就將節點按照處理交易的能力分成三六九等。如果去掉了區塊大小限制,那么這些節點就會被分成三六九等,一群節點有能力通過創建區塊來關閉另一半網絡,從而逼走其他節點,長此以往將會毀滅整個網絡。

信息安全行業中有一個概念叫做“攻擊面”:你所暴露的面越多,就越容易受到攻擊。同樣地,我們可以說機構管理行業也有它的“爭論面”:所需要爭論的決策越多,該機構的效率就越低下。

改變比特幣的設計,使得區塊大小可變,會導致:

我們不想要的大小現在也被認可為有效的了。

礦工們會開始隨心所欲創建區塊,不管這些區塊會對其他參與挖礦或不參與挖礦的驗證者有什么影響。

運行節點的要求越來越高,導致節點數量越來越少。

更多的變量則意味著有更多的方法來區分和隔離不同的節點。

我還想指出的一點是,不管區塊大小限制是2MB還是8MB都沒有關系??傆幸惶炜萍及l展會使得區塊大小限制能夠達到你想要的那個數字,不過那又是另外一個話題了,因為我們可以現在就把區塊限制設定為50TB,然后“坐等科技進步”,但是等那一天到了比特幣也被中心化毀掉了。區塊大小限制究竟應該多大是另一個話題,我現在唯一要討論的是必須要設置一個限制,不會隨著時間的推移而改變,如果區塊大小超過了這個限制,就會被判為無效。

這就引出了下一個例子:以太坊及其隨意限定的“gas限制”:

如果沒有合理限制的話,就像在上圖中或者在以太坊中,區塊大小不斷增長,而科技發展的速度不夠快,無法跟上,于是你就無法再繼續運行節點了。當我說“本質中心化”的時候就是這個意思。由一幫中心化的演員來決定的不受限制的增長要求是非常糟糕的。即使有了數據分片,這個限制還是會隨著時間的推移而增長。數據分片也許能夠通過分擔工作而短暫地有效,但以太坊終究還是會朝著本質中心化的方向走去:

以太坊的區塊大小由礦工決定,礦工設置區塊的gas限制。如果你不能理解以太坊的gas限制的話,以下是一個非常簡單的解釋,這個解釋可能會引起某些技術人員的不滿:

在以太坊中,區塊大小限制不是字節,而是這個區塊能夠擁有多少單位量的gas。為了方便討論,我們假設這個限制是1000單位的gas。

如果你想要創建一個交易或者說一個“合同”,要進行處理就需要花費gas。假設你的交易需要2個gas,我的交易需要5個gas。我們的交易都能塞進一個區塊中,這個區塊中還有其他價值993個gas的交易。

當礦工挖出一個區塊的時候,他只能往里放價值1000個gas的交易,如果超過了的話網絡就會將這個區塊判為無效區塊。

只不過他們并不受限于1000這個數值…

他們可以往區塊里放進1200個。接著他們可以往里面放1500個。共識規則允許他們逐漸提高這個限制而不會被判為無效。其他礦工可以制作小一點的區塊,這樣可以把平均值降下來(進而讓限制值降下來),但這些只是其他礦工而已。如果你在這種共識規則下運行一個完全驗證的節點的話,你無權決定這個度量。在這個網絡上,曠工高于一切,并且Vitalik本人甚至并不否認這一點。

Vitalik: 其拒絕對網絡有直接影響的節點只有礦工或者驗證者。這個系統能夠安全應對33-50%針對驗證層的攻擊。

@StopAndDecrypt: 如果這是真的,我們現在早就有應急共識或者Segwit2X了。曠工的“支持”率當時已經接近100%了,還說什么他們懶得創建區塊。

提交一個區塊和提交一個交易是一樣的,要么有效要么無效。

所有節點拒絕。

以太坊網絡代碼對節點進行了區分,因此以太坊本質上是中心化的。這是目前比特幣和以太坊網絡特質的本質區別。以太坊上的完全驗證節點并不擁有平等的投票權,因為他們的外部能力允許他們改變協議,進而影響其他節點。在比特幣中,并不存在能夠影響別人運行節點的投票權。

如果你不去干擾比特幣(我們確實不打算去干擾它),那么它的完全驗證節點將會隨著時間的推移而增加。

如果你不去干擾以太坊,那么它的完全驗證節點將會隨著時間的推移而減少。

我認為在這里有必要指出,如果沒有像閃電網絡這樣的狀態通道網絡技術,我關于比特幣的說法也不能成立。像這種本質的特征不僅限于節點增長或減少。此外我還認為,盡管以太坊也有可能會有狀態通道網絡,但以太坊目前面臨的麻煩要大得多。

下面兩個章節將通過詳細闡述比特幣的網絡拓撲學來展開解釋這個概念,然后會講到由于投票權問題而導致的以太坊網絡的差別。

比特幣網絡拓撲學

比特幣不僅僅是區塊組成的一條鏈。我首先想幫助讀者理解比特幣的區塊鏈網絡是如何設計的,因為這個問題是最簡單的,而且你首先要理解其基礎的特性才能理解后面的內容。我在這里說“區塊鏈網絡”,是因為比特幣還有一個支付通道網絡(閃電網絡),建立在其之上,并不影響區塊鏈網絡的結構。不過我并不打算在這篇文章中討論比特幣的閃電網絡,因為這和本文主旨無關。

以下是一個把比特幣網絡簡化的例子,假設比特幣網絡中只有1000個完全驗證節點(實際上目前有115,000個)。每個節點連接著8個其他節點,因為這是客戶端的默認設置,如果不改變客戶端的設置的話那就是默認8個連接。我的節點就是其中一個,如果你也在運行節點的話,你的節點也在其中。Coinbase的節點也在其中,Bitmain的節點也在,如果中本聰還在世的話,他的節點也在其中。 

請注意這只是一個示意圖,真正的網絡拓撲學可能會有所不同(很大概率確實不同)。一些節點的連接數比默認的8個要多,另一些節點可能少一點或者只有一個連接。我們無法得知這個網絡到底是什么樣子的,因為當初設計這個網絡的時候就故意設計成這樣以保護隱私(不過一些監控網絡情況的公司會盡力給出最近似的估計),節點可以定期改變他們連接的其他節點。

我以這張圖表開篇是因為我想讓讀者明白這些節點之間沒有區別,因為他們都是完全驗證的節點。在里面的節點和在外面的節點沒有差別,他們都有同等數量的連接。當你開始運行一個全新的節點時,這個節點會找到別的節點進行連接,成為整個網絡的一部分。在這張圖表中,一個節點到另一個任意節點的最長距離是6.在現實生活中,這個最長距離可能會有點偏差,因為尋找別的同伴節點并不是一個完美地自動化的過程,并不能把每個節點都均勻地分散,但通常來說,添加新的節點到網絡上并不會改變這一點。有個游戲叫做6 degrees of Kevin Bacon,這個游戲基于六度分隔理論,即世界上任何互不相識的兩人,平均只需要6步就可以將他們聯系起來。如果我的交易是有效的,那么只需要6步就能傳送到(幾乎)每一個節點上。

我將從這群節點中選出“我的”節點并將它單獨拎出來,這樣我就能演示當我創建一個交易并向網絡宣布時會發生什么。在下面的圖表中,我的節點是最右邊的這個,有8個節點(同伴)和我的節點相連接。

當我創建一個交易,并“向整個世界發送”時,這個交易實際上只是發送給了這8個節點。因為比特幣最基本的設計理念就是要求所有的幾點都是完全驗證的節點,所以當這8個節點收到我的交易時,他們會驗證這個交易是否有效,然后再將它發送給他們連接的8個節點。如果我的交易是無效的,那么它甚至不會通過網絡的第一道“防線”。我的節點連接的節點絕對不會把無效交易發送給他們的同伴節點。我的同伴節點甚至不會知道是我創建了那筆無效交易。他們無法得知這個交易是誰創建的,并且會平等地對待所有數據,但是如果我繼續向我的同伴節點發送無效交易的話,它們最終都會屏蔽我。他們會自動防止我向他們發送垃圾信息。不管你是誰或者你的公司有多大牌,如果你的交易無效,那它就不會被廣播出去。

現在假設你運行的不是全節點而是一個輕量客戶端,有不同的輕量客戶端可供桌面端或手機端使用,包括Electrum、Armory、Bread以及Samourai Wallet。輕量客戶端系連在一個特定的節點上,有一些客戶端一段時間之后可以改變系連的節點,但是他們最終還是必須系連在其他節點上。下面是輕量客戶端系連在節點上的示意圖:

我向讀者展示這個的原因將會在下文逐漸展開。我想請讀者注意這只是一個示意圖,我把這個輕量客戶端畫在球的表面只是為了方便展示,實際上根本沒有表面,不管這個節點在圖中的哪個地方,輕量客戶端都只是和它系連在一起。我用黃色把它圈出來了,綠色的點是輕量客戶端系連的節點,藍色的點是輕量客戶端。所有發送到輕量客戶端或者從輕量客戶端發出的信息都要經過系連的節點。他們依賴這個節點,他們不是網絡的一部分,他們不是節點。請記住這一點,在以太坊中他們的行為方式稍有不同,但他們對網絡的影響都是一樣:即毫無影響。

現在要講到好玩的部分了,有些人會誤解網絡的工作原理:如果我想開始挖礦會怎樣?

挖出一個區塊就是創建一個區塊。就像要發送一個交易一樣,你必須創建一個區塊并向網絡宣布。任何一個節點都可以宣布創建一個新的區塊,這個過程并沒有什么特別的,你只是需要一個新的區塊而已。挖礦現在越來越困難了,但如果你愿意的話,你可以購買專門的設備然后接入你的個人節點。

還記得剛才關于無效交易的討論嗎?對于區塊來說也是一樣,但你首先要明白區塊是如何創建的。

首先請觀看以下視頻。我直接跳到了關于哈希的比較重要的部分,使用nonces(隨機數)以及將新的區塊頭接到鏈上:

https://v.youku.com/v_show/id_XMzY3MjIzMTczMg==.html?spm=a2hzp.8244740.0.0

如果有時間的話最好看完整個視頻。這是我個人最喜歡的解釋挖礦原理的視頻。

當你看到視頻的這個部分的時候,標著“Prev hash”的就是區塊頭:

視頻中沒有提到的是,哪怕區塊里所有的交易都是無效的,你仍然可以創建有效的區塊頭。要挖出一個包含無效交易的區塊所需要的時間,和包含有效區塊所需時間是一樣的。那么為什么要花這么多時間精力創建區塊呢?因為要推動通過一筆交易,然后會把本不屬于你的比特幣獎勵給你。所以這就是為什么節點不僅要檢查區塊頭,還要檢查區塊中的交易。這樣才能阻止礦工花時間創建包含無效交易的區塊。所有節點都要檢查,沒有任何一個礦工能夠蒙騙系統。如果不是所有節點都檢查的話,那這個系統就要依靠那些檢查的節點。這就會把節點分成三六九等,只有檢查的那些節點才重要。以太坊目前就是這樣,我將在下個章節中展開講述。

如果你加入了一個礦池會怎樣?你可能會選擇加入礦池,因為單獨一個人挖礦實在是太難了,或者你的公司比較大,你想要穩定的收入。許多礦工都選擇加入礦池,他們將自己的專用設備通過一個完全不同的協議——Stratum挖礦協議來直接接入礦池。就和用你的非節點手機創建一個交易一樣,你不需要運行節點才能將你的設備接入礦池。不用運行節點也能夠挖礦,許多礦工都是這么干的。下圖中藍色箭頭顯示的就是這種模式,在這里我以Slush 礦池為例:

請注意,我把這些由礦池運行的節點單獨拎出來是為了方便展示。就和任何其他節點一樣,這些由礦池運行的節點也需要同伴節點。他們需要同伴節點來接收交易和區塊,也需要同伴節點來廣播他們創建的區塊。我要再強調一遍:所有節點都驗證所有區塊和交易。如果任何一個礦池傳播了一個無效區塊,他們的同伴節點馬上就會知道,因為他們是完全驗證節點,他們不會把這個無效區塊發送給其他節點。就像交易一樣,無效區塊不會進入到網絡中。

如果不把這些節點單獨拎出來的話,可以從另一個角度去看。以下是一個私人礦工,他不想別人知道他的身份;他有8個隨機的同伴節點,這些節點都不知道他是一名礦工。這個機制故意設計成這樣以保護隱私。網絡中的任何一個節點都無法得知他們收到的區塊是由他們的同伴節點所創建的。他們所能知道的只是這個區塊是否有效,如果有效就繼續發送給下一個,如果無效則不發送。

但愿你現在已經能夠理解個大概了,我應該沒有使用任何復雜的數學或者方程式來解釋。我認為現在已經基本覆蓋完這個話題,可以轉而繼續下一個了。但是最后還有一件事我要說一下,因為很多人會用這個來迷惑還沒有完全理解我剛才講的東西的人。這個太常見了,所以我必須要講一下。

https://twitter.com/VitalikButerin/status/1000232465540136960

@StopAndDecrypt:你實際上就是創建了一個子網,讓Electrum和Bread的SPV客戶端發送區塊頭,然后把他們稱為比特幣網絡的一部分。但實際上他們什么也不干。

Vitalik:其拒絕對網絡有直接影響的節點只有礦工或者驗證者。這個系統能夠安全應對33-50%針對驗證層的攻擊。

 我原本的評論是在討論輕量客戶端,也叫作SPV客戶端,他們并不算是網絡的一部分。我在前文用藍色的系連點演示過了。Vitalik的回復試圖暗示說只有挖礦的節點,其拒絕才對網絡有影響。請記住:節點無法判斷另一個節點究竟是創建了一個區塊還是只是把這個區塊中繼而已,這個機制是故意設計成這樣子的。

下面是最后一個圖表,讓我來努力解釋一下“只有挖礦的節點才重要”這種說法背后的邏輯。一些礦工會和其他礦工連接,所以他們的同伴節點中有一些也是礦工。并不是所有礦工都會這么做。這些直接相連的礦工中有一些也會使用可選的中繼網絡,比如由Bitcoin Core開發者Matt Corallo開發的FIBRE,但甚至連這個側網絡也不是僅屬于礦工的,任何人都可以加入,包括你和我,它只是用來幫助區塊在網絡里中繼而已。不管怎樣,有人試圖爭辯說,這些挖礦節點相互連通(不管是用FIBRE等工具還是不用),就說明這些節點才是重要的。這個結論很荒謬:

在這個例子中,我沒有把節點的同伴節點單獨拎出來。你現在應該明白了吧。他們拒絕無效的區塊。綠色圈子里的節點絕對不是網絡中唯一重要的節點。說完了這點,我想我已經覆蓋了比特幣區塊鏈網絡中的知識點,現在可以開始講以太坊了。

使用工作證明的以太坊 

除去幾個重要的不同點外,這一章和上一章內容差不多。最重要的知識點是完全驗證節點不能因為區塊的大小或者gas限制而拒絕某一區塊。如果這個外部流程沒有一個油門閥加以控制的話,完全驗證節點就會受到很大的壓力,不得不加快處理信息的速度,甚至是趕不上進度,導致節點數量減少,將節點組推向更大的企業。

和比特幣相似,以太坊的區塊鏈延長過程和代幣分發過程目前使用的都是工作證明。由于以太坊區塊鏈網絡的功能不同,區塊內儲存的數據也不同。這個和數據的類型,“智能合約”之類的沒有關系,只和數據量以及網絡拓撲學有關。

下面的圖表,和比特幣的那個圖表一樣,只是為了演示而畫的示意圖,和真實的網絡拓撲學有一定差距。在圖中,我沒有給每個節點都平均分配同伴節點,每個節點擁有的同伴節點數量呈曲線,因為眾所周知以太坊的同伴節點有問題,因為節點數量一直在下降,能夠服務足夠的數據量的“好的”同伴節點如今已經很難找了。

https://github.com/ethereum/go-ethereum/issues/15753

 philoctetes409bc: 我正在試圖弄清楚是什么問題,但我只能得出這一個結論,那就是我們沒有足夠的同伴節點了,你們有誰也遇到這個問題嗎?

copumpkin: 我也沒辦法進行同步,甚至換上了現代固態硬盤也不行,所以我認為這個問題的根源還要更深。

當好的同伴節點數量受到限制時,這個“去中心化的”網絡就會變成這樣。當人們試圖同步一個新的以太坊節點的時候就會出問題,因為已經沒有足夠的同伴節點提供他們所需要的數據了。只有一小群有很多個連接的同伴節點為整個區塊鏈服務。這對于一個廣播網絡來說是非常糟糕的。更糟糕的是gas限制(并進一步限制區塊大小)不斷上漲,因為它根本不受限制,給這些有限的節點施加更大的壓力,節點越來越少,盡管Vitalik聲稱“gas限制已經X個月沒有變過了”:

>由于以太坊區塊大小不斷迅速增長,瓶頸不受管制

>你的節點遲早有一天會因為這個問題而無法同步,除非設置一個區塊大小限制。

這種觀點非常無知。以太坊已經有區塊大小限制了,只不過是以gas限制的形式進行。Gas限制值是8百萬,并且已經有6個月沒有變過了??焖偻絛atadir增長已經停留在10GB每月并且持續6個月了,并且將不會再增長太多,因為大幅提高gas限制會導致叔伯率(uncle rate)中心化問題。所以我們其實已經見識過最糟糕的情況了,這種情況持續了半年。

Gas“限制”并不能算作真正的限制,并且就像我上文說過的,礦工可以隨意選擇。重要的是,不管gas限制是多少,以太坊節點都不會拒絕區塊。這是比特幣和以太坊的本質區別之一。節點并沒有能力組織外部壓力用不受管制的數據來把他們中心化。礦工現在不提高gas限制是因為他們好心,而且Vitalik也告訴他們不要這么做。這聽起來很去中心化吧?區塊鏈不應該以這樣的方式運轉。如果費用上漲得太高了會發生什么?

讀讀Vitalik的回復,再結合下面的圖表看看:

以太坊有兩個選擇:

如果gas限制不上漲,則沒有足夠的空間來儲存這些合約,用戶就會展開價格大戰,進而導致費用上漲。如果費用上漲太多,普通的合約就會變得非常昂貴,依靠低廉費率運行的Dapps(去中心化應用)就無法工作了。上次發生這種事的時候,他們被迫提高限制,因為他們需要Dapps。

如果gas限制上漲,那么以同伴節點為中心的節點數量將會下降得更多。

幸運的是,以太坊和比特幣一樣有輕量客戶端,如果你無法運行你自己的驗證節點的話,可以使用輕量客戶端…

還記得我前文演示過的嗎?SPV客戶端(只同步區塊頭)需要系連在一個特定的節點上,并不屬于網絡的一部分。在以太坊中,他們更進一步地為這些輕量客戶端創建了一個“子網絡”,他們可以在這個子網絡上分享區塊頭。可能你還不知道吧,實際上在以太坊中,大多數人(因為各種原因)并不運行完全驗證節點,而只是運行輕量客戶端。

https://www.reddit.com/r/ethereum/comments/7k4vy5/we_desperately_need_more_lightserve_nodes/

我們非常迫切地需要更多—lightserve節點!!!!!!!

以太坊錢包有一個很棒的功能就是用輕量客戶端網絡來同步。這是一個可用的工作程序(所以不需要網頁瀏覽器),可以與以太坊網絡互動,同時只下載大約1 GB數據。這對大多數人來說非常重要,因為他們都沒有很高級很昂貴的硬件。但是最近我在geth的最新版本中發現了一些bug,導致輕量模式網絡非常不穩定。我們沒有足夠的同伴節點來為每一個人服務,這就導致新的同伴節點可能永遠也無法連接,如果他們能夠連接的話,他們肯定會幫助到其他輕量模式用戶。所以輕量模式網絡現在就像在“鬧饑荒”一樣。拜托了開發者們,麻煩盡快修復連接不穩定的bug吧。這里的用戶們也可以伸出援手,用輕量模式運行以太坊錢包,這樣就會有更多可用的輕量節點了。此外,Parity的開發者們,希望你們能給Parity也開發一個兼容的輕量模式版本,這樣兩個錢包的用戶就能相互連接了。

這是一個很好的機會讓以太坊接收被比特幣背叛的用戶。這里的社區很活躍,開發者很團結,網絡很穩定,交易又快又便宜。

所以請盡快修復這個bug,讓輕量模式網絡正常運轉,這會幫到很多像我這樣的用戶,我們目前沒有能力負擔得起儲存20 GB數據,但我們很聰明,不想用網頁瀏覽器來運行以太坊。(永遠不要把生意和快樂混在一起。)

我想更多地使用以太坊來支付,但每次我上網時,我總是需要讓我的筆記本聯網大約20小時,才能和其他輕量模式同伴節點連接上,下載幾個100 MB的區塊頭。由于有bug,有時候光鏈會被損壞,獲取1 GB光鏈數據需要花上30至40小時。如果我在bittorrent上下載東西,速度為500 kb/s,下載1 GB只需要33分鐘。

我們需要更多lighserve節點!!!!!! 目前這個需求非常非常高。

修改:所以問題出在,最新的協議升級導致搜尋同伴節點不太靠譜,這個問題在輕量模式下更加嚴重,因為本來lightserve節點就少,可能是因為運行geth的時候lightserve選項默認是關閉的(因為lightserve還在試驗階段)。我在Github上看到有人建議運行geth 1.7.2版本而不是1.7.3版本,但我沒法試試這個是不是能解決問題。在Linux系統上,運行geth后,你可以運行以太坊錢包,然后它就會監測到geth正在運行。我認為如果你只是運行以太坊錢包的話,geth會在內部啟動或者怎樣,我覺得最新的這次更新之后用的是geth 1.7.3。

https://github.com/ethereum/go-ethereum/issues/15454/// 你也可以查看我之前的文章。

KainniaK: 能不能修一下這個?做一個應用程序版的以太坊錢包很難嗎?我不想用在線錢包,而且我也不是隨時都能上網。我希望我的筆記本電腦在我上線的時候能夠和網絡同步,但現在就沒法用。請快點修好這個拜托了!!!!!!

lmars: 跟你們說一下,我現在自費運行幾個輕量服務器,所以我的節點能夠擁有充足的輕量客戶端同伴節點。這個“解決方案”就是要求社區里更多人運行節點并開啟輕量服務器(查看這里),希望大家能夠幫幫忙,也運行一個輕量服務器。

他們一直都面臨著全節點短缺的問題,沒有足夠的全節點向輕量客戶端提供所需的區塊頭。輕量客戶端無法一直和同伴客戶端相連接,因為人們開啟和關閉客戶端比較隨意,所以他們更依賴于全節點志愿給他們數據。在比特幣中,沒有志愿這回事,所有全節點執行同樣的中繼功能,這很容易做到??傊?,我不認為為輕量客戶端專門創建一個子網并沒什么問題。我認為如果有人想要運行一個輕量客戶端,那么他們應當能夠這樣做。我認為這些輕量客戶端有一個子網是一件好事,最好的情況下,人們不再需要信任某一特定節點來獲取區塊頭,最壞的情況下,他們無法滿足他們自己制造的需求。問題在于開發者們開始管這些輕量客戶端叫“節點”,誤導社區相信這些輕量客戶端對網絡是有貢獻的。輕量客戶端不是“節點”,他們對網絡毫無貢獻。

https://twitter.com/NickSzabo4/status/1001488447129829377

Nick Szabo: 好的籬笆造就好鄰居,“經常對清賬目讓友誼天長地久”(語出Pacioli)。全節點驗證加上全球廣播造就全球化的社區——這個社區只包括完全驗證者,不包含外來人。

以太坊開發者確實把輕量客戶端稱為節點。下面這張圖是關于數據分片的,這個話題我等下會講,但開發者們不應該到處跟社區里的人將他們運行的輕量客戶端是節點。這樣的話計算出來的節點數量一直往上漲,但實際上是輕量客戶端數量上漲,而全節點數量下降。把輕量客戶端稱為節點只是在掩蓋事實。

但愿我現在已經講明白了。驗證區塊頭對網絡一點意義都沒有。

限制就是每一個節點都要驗證所有數據分片的區塊頭,而節點對區塊頭的驗證能力受到其計算能力的限制,因此要進行“二次方數據分片”:如果一個節點能夠處理C件事情,那么就有C個數據分片的區塊頭來讓該節點處理;或者說,如果一個節點在驗證一個單一的區塊,那么它就能驗證C個交易,所以他的總處理容量就大約是C的二次方。

下面的圖表更能準確代表網絡是什么樣子的:

看到這個圖之后,你對“節點”總計數的數值有什么看法?這些節點看起來有什么不一樣嗎?沒讀這篇文章之前你知道他們之間的區別嗎?就算他們不把輕量節點也算進去,最終會發生什么變化?

隨著時間的推移,盡管“節點”總計數可能會上升,如果一個網絡是本質中心化的并且對完全驗證節點不夠重視的話,它就會注定變成這樣:更加糟糕。

不僅僅是驗證者數量開始下降,礦工也會開始直接連接到彼此以避開糟糕的叔伯率或者孤塊率。叔伯或者孤塊的出現是因為出塊時間相距太近。不同的礦工在同一時間挖出有效的區塊將會形成兩條有效的鏈。最終其中一個區塊有人接著繼續創建區塊,而另一個則會成為孤塊。

在這張圖中紫色的就是孤塊。

當網絡選擇了另一條分支繼續下去的時候,你知道孤塊會給誰帶來最大的損失嗎?是那些小礦工,這樣就導致網絡更加中心化了,因為小礦工無法承擔收入上的震蕩。

現在的情況是:

驗證者數量不斷下降

社區成員無法運行驗證節點,只能轉而運行輕量節點。

開發者們告訴社區這沒關系,因為他們反正也不是“有意義的驗證者”。

即將對網絡架構進行本根性的改動,將會使得驗證節點數量更加少,到時候需要32 ETH才能成為驗證節點

對于這個話題的回應要么是同意這是個問題,要么根本不承認存在問題。當人們爭辯說不存在問題的時候,他們往往愛用我們之前已經討論過了的“非挖礦”策略。他們會說“中間那些正在減少的節點,他們本來也什么都不干,除非他們參與挖礦或權益”。

https://twitter.com/StopAndDecrypt/status/999716942322814976

@StopAndDecrypt: 如果你處在驗證節點下面的一層,那么你的拒絕對于在你之上的網絡沒有任何影響。我的手機可以接收全節點并且拒絕他們,但無法將有效的區塊廣播給驗證節點的網絡。將輕量節點放到子網上也不會改變這個事實。

@nicksdjohnson: 這個非挖礦比特幣節點所做的事情有什么不同?

@StopAndDecrypt: 如果你非要跟我玩文字游戲,那我只能這樣回應:不存在什么非挖礦節點。挖礦是一個哈希過程,區塊被提交給網絡以進行驗證。大多數礦工并不運行節點,他們只是連接到一個運行單個節點的礦池而已。你明明知道還要問。

@nicksdjohnson: 恭喜你,這是我這個月聽到的最難懂的言論。

這真的是你這個月聽到的最難懂的言論嗎?

https://twitter.com/NickSzabo4/status/1001488447129829377

Nick Szabo: 好的籬笆造就好鄰居,“經常對清賬目讓友誼天長地久”(語出Pacioli)。全節點驗證加上全球廣播造就全球化的社區——這個社區只包括完全驗證者,不包含外來人。

回顧:

在比特幣中,所有的節點都驗證,沒有哪個節點擁有更大的話語權,因為區塊大小受到限制,并且這個限制由他們共同守護。

在以太坊中,節點分為全節點和輕量節點,只有全節點才驗證。全節點對gas限制沒有硬性要求,這就導致他們要處理的數據越來越多,許多節點因此而關閉。

使用權益證明的以太坊

和使用工作證明的以太坊差不多,前文所說的內容在使用權益證明的以太坊上也成立。他們計劃將權益證明和數據分片一起上線,所以我不認為單單只有權益證明的以太坊會出現。這一章節只是為了重申中心化的問題,因為我快要講到數據分片了。除了上一章節講到的內容,權益證明還存在以下問題:

不挖礦就意味著沒有外部成本。進行權益的驗證者只需要拿出他們的幣并托管他們的服務器。他們可以什么都不干躺著掙錢,同時繼續升級服務器來適應不斷增長的節點要求,而其他人都被遠遠地拋在后頭。

進行權益需要32 ETH(文章發稿時約16,000美元),所以不僅是驗證者數量不斷下降,而那些負擔得起16,000美元來進行權益的人并不在乎數據處理要求。這將只會導致數據吞吐量增長加快。

這個網絡和下面的以太坊網絡的結構一樣,只不過這次我將進行權益的節點高亮標出了,這樣你就可以看到驗證節點和進行權益的驗證者的比例隨著時間的變化。請記住,Vitalik說本來就一直這樣,在上文我已經解釋過了這在技術上講是不正確的。不管怎樣,有了權益證明之后,這個過程推進速度加快了:

到價格巔峰的時候,理論上講你需要有45,000美元才能成為這些節點的一員。眾籌集資并不會改變任何事情,運行節點的是礦池而不是你。幸運的是權益證明將與數據分片一起上線,所以這個章節到這里就結束了。

使用權益證明 數據分片的以太坊

就和這個章節標題說的一樣,數據分片帶來向內擴容,卻給人向外擴容以太坊的假象。就和你所想的一樣,這跟驗證節點計數有關,但稍微有點小插曲。驗證工作分配給不同的群組,每一組都有他們自己的數據分片。這樣做的目的是為了減輕單一驗證節點所需要承擔的工作量,這樣才會有更多的節點。但這只會延長問題,而不是解決問題。此外,其中一些節點現在面臨著巨大的成本,因為要成為其中的一員就必須進行權益。

Vitalik:是的,數據分片提案中進行權益的最低要求是32 ETH。

worthalter: 在第一階段不建議當驗證者,除非你對這個技術很熟悉。成為一個獨立驗證者需要的權益估計會超過1000 ETH,這是很大一筆錢。加入權益礦池會簡單得多,你可以在這里查閱更多資料:https://medium.com/rocket-pool/rocket-pool-101-faq-ee683af10da9

capitalol: 我比那更多的ETH。自打眾籌開始我就在這兒了。我需要指導告訴我如何安全地進行設置,我要設置我自己的,還要幫我管理的其他人設置。

Sefirot8: 這他媽要1000?太荒謬了。

rxg: 要在以太坊上進行權益的最低價格大概會由運行一年casper智能合約的成本(即gas費用)來決定。如果你的權益每年收益比成本低的話,那你就負擔不起進行權益。所以不太可能需要1000ETH才能達到收支平衡。

https://v.youku.com/v_show/id_XMzY3MjM5NTA5Mg==.html?spm=a2hww.20027244.uerCenter.5!3~5~5!2~5~DL~DD~A&firsttime=1

完整視頻: https://www.youtube.com/watch?v=r0TGpp2SV-w

1. 我們不會讓比特幣每3秒就要處理1GB的數據,因為我們不打算提高區塊大小限制。

2. 我們將不會有10個全節點,我們將會有數以百萬計的節點,因為我們不打算提高區塊大小限制。

3. 很顯然我們對于“向外”擴容的定義有差別,他們認為犧牲全節點數量換取基層吞吐量并沒有什么不對。

我在上文已經對全節點作了非常詳細的解說了,我們對于定義上的不一致并不會有什么影響,接下來我要講講他們的定義。

換個說法:

他們想要在基層提高交易吞吐量。

他們知道不管他們怎么做這都會導致節點數量下降。

他們的解決方案是將工作量分攤開來,這樣節點數量下降的影響“不會太糟糕”。

他們認為節點數量下降后剩余的節點還能“湊合”保證輕量客戶端的安全。

他們提出“挖礦模式”的謬論,將節點數量下降后剩余的節點與假設的只有10個全節點的比特幣相比較,以此來為自己辯護。

他們的解決方案是數據分片,他們把這稱為向外擴容,并且覺得犧牲“一些”節點也沒關系,但卻聲稱這在將來會帶來更多節點,比比特幣的10個節點還要多。

我認為這篇文章最重要的知識點是含有完全驗證節點的比特幣網絡、本質去中心化,以及這和別人試圖向你宣傳的“擴容方案”有什么不同。現在讓我們來把它和數據分片比較一下。這里開始就有趣了,因為甚至Vitalik都沒有清晰地給出它的拓撲學是什么樣子的。數據分片的概念是“所有節點都是平等的,做著同樣的工作”,然后卻背道而馳。找出究竟是哪里開始中心化的過程將會非常…有趣。

首先,以下是對數據分片常見的解釋,一篇經典的講數據分片的文章通常長這樣:

https://bitcoinist.com/vitalik-buterin-sharding-plasma-scale-ethereum-10000-times/

第一層— 數據分片

Vitalik解釋說數據分片是一種第一層(L1)擴容方案,旨在直接改善現有的區塊鏈,讓它更好地運行。

目前,以太坊上運行的每個節點都要處理每一筆進入網絡的交易。這個驗證過程提供了很高的安全保障,但這也意味著這個區塊鏈最快的速度取決于每個節點的最快速度,而不是他們合力一起工作。

而數據分片則意味著區塊鏈網絡被分散成含有獨立交易歷史的小片。這樣節點就只需要處理某一片上的交易,總的交易吞吐量將會增加,因為單一的節點不再需要承擔所有的工作了。

這篇文章發表在一個區塊鏈新聞網站上,所以肯定會使用吸人眼球的話語而根本沒有技術含量。我把其中一些詞語高亮標出來是因為這些詞語最能吸引不太懂行的社區成員:“可擴容性”這個詞文章沒有給出定義,“處理”需要進一步澄清含義,每次說到“節點”這個詞的情況都不適用于你或者你的輕量節點。下列這些詞組:

“單一節點”

“獨立節點”

“每個節點”

都可以用以下詞組替代:

需要花$16,000來進行權益的節點

需要花$16,000來進行權益的節點

需要花$16,000來進行權益的節點

每當你讀到有關數據分片的文章時,它總是說“這會讓節點更加輕松”,但是能夠負擔得起$16,000來進行權益的節點根本不需要輕松。他們本來就可以處理更大的區塊。數據中心并不需要數據分片,如果某個節點很重要的話,你也不會在一臺筆記本電腦上運行它。這個系統中有許多種不同的節點,目前還不清楚當協議定稿后,哪一些節點會保留下來。我會先講基本構造,然后定義該系統內的主要幾種節點,這樣就能區分哪些節點重要,哪些不重要。

數據分片把一個區塊鏈分成許多個區塊鏈,這些區塊鏈被稱為Collation,然后在頂部打個結,祈禱模子不會再長大。開玩笑的,以下是一個collation的示意圖:

開玩笑的啦,下面這個才是collation的示意圖,我花了很長時間才把它畫得好看一點:

下面我們來分析一下這個圖:

Collation [紫色區塊]: Collation就是數據分片語境下的區塊,他們可以形成collation鏈,和區塊鏈相似。

執行者節點[藍色]: 執行者節點驗證每個collation內的數據。他們計算合約,然后將Collator節點下放到特定的分片中。

Collator節點[紅色]: Collator節點從分片中“獲取”數據,創建collation(區塊),然后拿給執行者節點去“執行”。

輕量節點 [粉色]: 這些是你將要運行的節點。這些節點對網絡不作任何貢獻,他們只是“觀看”。這些節點有能力檢查交易,但是他們不能中繼交易或者區塊,所以即使他們發現某個交易或者區塊是無效的,他們也沒有辦法終止中繼。再說一遍,這就是比特幣節點和其他區塊鏈的本質區別。每一個比特幣節點都做同樣的事,沒有辦法把他們區分開來。

在每個分片中,唯一重要的節點是執行者和Collator節點,這兩者都需要32 ETH才能運行。每一個輕量節點可以“選擇他們‘在乎’的節點(如果他們想選的話),然后同步該分片以及主鏈上的區塊頭。他們大概不需要這樣做,除非他們是一個應用或者服務,需要依靠驗證該分片,因為他們的合約在那個分片上。

上面這張圖中有多條Collation鏈,許多執行者和Collator節點在這些鏈(32 ETH)上工作,還有“主鏈(綠色)”,以及在頂部還有你的輕量節點,如果你選擇了一個特定的分片來“驗證”。

你應該注意的幾件事:

除非你有32 ETH,不然你將不會成為執行者或者Collator節點。

你的輕量節點并不中繼區塊。它并不執行共識代碼,遇到無效區塊時除了大喊大叫什么也做不了。(驗證節點形成的網絡能夠拒絕廣播無效的交易和區塊,所以他們才有話語權。輕量節點根本就不能廣播區塊,也就更不用說阻止無效區塊了。)

主鏈上并沒有交易數據,它只儲存Collation鏈的區塊頭。

這還不是全部,還有更多關于這個網絡的內容。你所有的輕量節點只同步主鏈的區塊頭,他們可以被歸為一大類,就是下圖中的這個大的長方形。他們什么也不干,但數量卻是最多的。一般來說,如果你沒有32 ETH的話,那你就會成為他們中的一員。

vbuterin: “數據分片將節點分成三六九等的做法在我看來是對區塊鏈網絡來說最糟糕的主意了,并且子層節點對保護網絡的去中心化性質并沒有任何實際作用?!痹趨f議中并沒有說要把節點分成三六九等… 我說過很多次了。即使“驗證一切”的節點數降為零,這個網絡也照樣能夠存活。安全模型并不依靠“驗證一切”節點;這些節點只是額外的,大概只有像etherscan這樣的人和互聯網文檔才會去運行,因為它在數據搜集上具有優勢。從協議的角度來看,這樣的節點還不如不存在。如果沒有這些節點,我們就只有分片節點組成的網絡,每個分片節點只需使用比目前以太坊節點所需少得多的資源即可運行。這是因為每個分片節點只需處理O(sqrt(n))活動。

StopAndDecrypt: 對的,你已經把“驗證一切”的任務分攤給了各個分片,這些分片受某些節點協調,而這些節點必須要進行權益才能參與數據分片的任務下放過程。這些節點數量有限,并且會不斷減少。除非你能證明這些節點將會增長而且不需要進行猜測、祈禱或者補貼,否則這將是一個大問題。

vbuterin: “這些節點數量有限,并且會不斷減少。”為什么會減少?如果gas限制不斷上漲,確實是會減少,但是如果gas限制保持不變呢?

StopAndDecrypt: 永遠保持不變?

我想說的重點是,盡管“完全驗證”的工作被分散了,但是做這些工作的節點數量依然很少。Vitalik說這些節點所要處理的工作量比現在以太坊節點要做的少,但那本來就不是問題。問題在于做這項工作的難度會隨著時間的推移越來越大,這就是本質中心化的。Vitalik甚至也同意如果gas限制不斷上漲的話,節點數量將會下降,沒有什么能夠阻止這件事情的發生?,F在礦工的行為是利他的,但是如果挖礦已經不存在了,會發生什么呢?如果只剩下權益,而且進行權益的人并不在乎別人的區塊被孤立怎么辦?為什么他們要讓gas限制降下來?請記住,他們可以手動調整這個數值,如果他們彼此緊密相連,并且完全有能力處理數據,為什么不故意將gas限制降下來呢?如果他們開始把他們的權益收益湊起來,搭建更多節點,增加他們對網絡的控制權該怎么辦?

@dr_hodes: 有了#masternodes之后,最好是把你的權益集合起來然后創建更多的節點!如果你賣掉你的收益的話,就會失去規模效應。在所有masternode/POS挖礦當中,這是最有價值的一條建議。

紅色曲線=集合獎勵

藍色曲線=賣掉每日收益

@bccponzi: 這讓我想起bitconnect雇的那幫托兒,將他們的1%每日利息集合起來。集合shitcoin只會讓你最終得到一大袋毫無價值的幣。

如果人們不認為這是一個shitcoin會怎樣?大多數會失敗,但是如果其中一個幣確實暫時能夠保持比較去中心化,說服人們一直使用它,又會發生什么?

在文章的開頭我說過這篇文章很容易讀懂,現在我不認為它達到了這個效果,但是我已經盡力把它寫得簡單明了了。我提到這個是因為我想用數據分片的常見問題的鏈接來結束這篇文章,這個鏈接里列舉了很長一串大家都公認的數據分片的問題,他們的應對方案,這些應對方案所帶來的新的問題,以及這些新的問題的應對方案??傊浅碗s,我花了很長時間才好不容易弄清了其中關于節點類型的長篇累牘,但我覺得必須要把這個鏈接放出來才算公平。

我的問題從來不是以太坊是否“能行”,而是它是否能夠保持去中心化。引進數據分片之前,以太坊確實比較糟糕,但是長期來看這個網絡只有一條路可走。如果你覺得有中心化的驗證者也沒什么關系的話,那你還不如買EOS。他們甚至連假裝一下都懶得,直接奔著中心化去了。他們甚至不需要數據分片,因為他們就直接以中心化的方式來處理區塊鏈數據。

谷歌可以處理所有人的交易。

但我們不想讓谷歌處理所有人的交易。

我們也不想讓財富500強或400強公司來處理。

我們從中學到了什么?

聽起來我們面臨著擴容的三難困境。這個困境是什么,我們將如何克服它?

三難困境聲稱區塊鏈系統最多只能有下列三個特質中的兩個:

去中心化(定義:在每個參加者只能獲取O(c)資源的情況下,系統仍然能夠運行,例如一個普通的筆記本電腦或者一個小的虛擬專用服務器)

可擴容性(定義:能夠處理O(n) > O(c)交易)

安全性(定義:能夠阻擋擁有O(n)資源的入侵者的攻擊)

這份文檔接下來的內容中,我們將繼續使用c來指代每個節點所擁有的計算資源的大小(包括計算能力、帶寬以及存儲空間),用n來指代在一些抽象語境中生態系統的大??;我們假設交易量、狀態大小以及該數字貨幣的市值都是n的倍數。

不。

請使用第二層。

分析Vitalik的回復

1:Vitalik:”這種觀點非常無知。以太坊已經有區塊大小限制了,只不過是以gas限制的形式進行。Gas限制值是8百萬,并且已經有6個月沒有變過了?!?/span>

- 我在前文已經討論過這個了。如果數據分片不能及時上線作為緩兵之計的話,你就會提高gas限制。

2:Vitalik:”快速同步datadir增長已經停留在10GB每月并且持續6個月了,并且將不會再增長太多,因為大幅提高gas限制會導致叔伯率(uncle rate)中心化問題。所以我們其實已經見識過最糟糕的情況了,這種情況持續了半年?!?/span>

- 如果不提高gas限制的話,費用上漲將會導致Dapp無法使用,引起社區不滿,因為他們抱有期望和需求。這一點我在前文也提到過了。你別無選擇的時候,叔伯率將不再重要。目前礦工只是出于好心才聽從你的指揮,這也是一個問題。

3:Vitalik:”此外,只關注檔案節點大小是不對的,因為(i)你可以甚至每年一次再次同步,或者運行一個Parity節點,它會幫助你修剪,這樣就可以大大減小datadir體積。(ii)檔案節點包含一大堆額外的數據(技術上講是所有的歷史狀態以及Patricia 樹節點),這些數據都可以從區塊鏈(小于50 GB)重新計算出來,所以在任何嚴格的信息理論語境下這都不能算作“把歷史數據丟掉”。如果你覺得丟掉歷史數據也沒什么關系的話,你可以在只有狀態模式下運行Parity,光盤要求會下降到10 GB?!?/span>

- 我展示那張數據吞吐量隨時間變化的圖表時就討論過這個“沖突”了。目錄大小和節點處理需求的不斷攀升是非常相似的。對于這個論斷唯一的回應就是你將不會提高gas限制。但是你會。

4:Vitalik:”數據分片的全部意義就在于網絡理論上講可以在所謂的“全節點”數量降為零的情況下存活。如果有5個全節點,這5個全節點也不會有任何額外的特殊待遇能夠決定共識;這些節點只會驗證更多的東西,因而能夠更快地找到正確的鏈,就是這樣。形成共識的節點只能是分片節點?!?/span>

- 我在前文已經討論過數據分片的問題了。

5 (好好笑哦):Vitalik:”最后要指出的是,你把“BCash”這個詞用錯了;這是一個裝置,而不是區塊鏈或者數字貨幣。”

- https://hackernoon.com/thats-not-bitcoin-that-s-bcash-f730f0d0a837

簡介

在這篇文章的開頭,我想先澄清一些事情。當我說BCash的時候,我指的是Bitcoin的山寨版,正式名稱是Bitcoin ‘Cash’(比特幣“現金”)。

由于比特幣現金社區成員并不太喜歡別人給他們取的“BCash”的昵稱,于是有人開玩笑地創建了一個假的項目就叫做“BCash”,以此來讓外人困惑并阻止別人把比特幣現金稱為“BCash”?,F在當你說“BCash”的時候,他們就會說這指的是那個假的項目,好像這樣就能讓你的論點不再成立似的。

如果你正在和別人辯論,然后說了BCash的這個詞?不好意思辯論到此為止,對方肯定會說:“BCash是一個完全不同的幣,你要么不懂行,要么就是來找茬的?!?/span>

不好意思,我既不是不懂行也不是來找茬的。你就是個大騙子。

這是假的:

紅圈內:你似乎不太懂啊…Bcash還沒有上線

解析Gustav Simonsson的回應:

https://medium.com/@gustav.simonsson/keeping-up-with-the-etherians-a-response-to-blockchain-size-concerns-a4858c2701d9

1:  “(…) 基層的獎勵結構完全壞掉了,因為以太坊區塊大小沒有限制(…)”

Gustav Simonsson:“這種論斷往輕了說是誤導人,往重了說就是假話了。以太坊是有區塊大小限制的,這個限制以gas限制的形式存在,這是由共識協議保障的。

他們不太可能會選擇提高區塊大小,因為這會破壞網絡?!?/span>

- 我在這篇文章中非常詳細地解釋了gas限制,這要感謝這幫人給我的動力。網絡不會因為驗證者掉線或者同伴節點丟失而壞掉。網絡運轉于兩個數據中心之上。會壞掉的是去中心化。已經連接的節點沒有理由去關心其他連接不上的節點的驗證能力。

2: “就算有了區塊大小限制,這個限制也得是合理的,這些Dapp將無法運轉,因為他們現在在沒有區塊大小限制的情況下就已經幾乎無法運轉了?!?/span>

Gustav Simonsson:“沒有人會再去海灘玩了,因為那里人多太擠了。

如果一個區塊鏈網絡已經達到最大工作限度,所有區塊都填滿了交易,那么所有的交易發送者就會在發送交易的時候同時附上一筆交易費。”

- 這完全沒說到點上,因為這和我們討論比特幣時用的論點是一樣的,這個論點很流行,但是比特幣并不會向Dapp開發者和用戶們承諾低廉的費用以及可用性。比特幣混合器用他們偷來或者黑來的幣把90%的區塊空間斗占滿了,因為比特幣混合比用那些愚蠢的沒人用的Dapp更好,于是Dapp在價格大戰中就會被擠出來,這時候你還能用什么來營銷呢?這就是我要說的重點。隨便你怎么說,總有一天你會不得不用和比特幣一樣的特色來為以太坊的存在辯論,但是比特幣能夠做得更出色。

Gustav Simonsson:“作者的論述自相矛盾,建議把以太坊上的應用搬到比特幣上。如果這些應用因為交易費用上漲而在以太坊上毫無用處,那么搬到比特幣上之后,其他用戶會支付更高的交易費用,這些應用也同樣會毫無用處?!?/span>

- 我建議開發者們在比特幣的基礎之上進行開發,但我不是說把那些本來就不會成功的點子移植到比特幣上。幾乎所有的Dapp本質上都是中心化的,根本就不能算作“Dapp(去中心化應用)”。他們都可以在閃電網絡上安裝。不管該支付通道網絡區塊大小如何都不會出現費用問題。你可以爭辯說以太坊也能夠做到,但這并不表示它的基層有什么額外的理由存在。

Gustav Simonsson:“根本不存在由于應用加載量過大而拖垮以太坊的說法”

- https://www.google.com/search?q=cryptokitties ethereum

3: “比特幣區塊大小并不會限制交易流,它管理的是向整個網絡廣播的數據。”

Gustav Simonsson:“對于任何正確定義的“交易流”來說這都是錯誤的。對交易的任意限制并不會限制交易流,因為更多的交易在給定的時間段內不能流動…如果我們把閃電網絡等鏈下解決方案也算進來,當做L1交易限制并不會降低交易流的論據,那么我們也應該把以太坊上已經有的解決方案也算進來?;蛘吒纱喑姓J創建例如支付通道的成本會隨著L1費用的增加而上漲?!?/span>

- 我們確實把它算進去了,所以我說它確實不會限制交易流。區塊大小相當于一個發電大壩,發的電就是交易費用。流過大壩的水溢進了閃電網絡中,而閃電網絡對于閃電節點和支付通道外的交易吞吐量沒有上限,閃電節點和支付通道本身的流量也沒有上限。

此外,如果在一筆交易中你將收到比特幣,那么這筆比特幣可以直接通過一個新開的通道接收。這并不是一個兩步走的流程。 

4: “我想說的是說這個信息不應當這么隱晦。如果有那一天這個不再隱晦了,那就已經太晚了,來不及拯救了?!?/span>

Gustav Simonsson:“這個信息并不隱晦。你可以直接運行一個全節點然后進行查詢。

只是因為你還沒找到在做這個的網站

這個“太晚了”的說法,往輕了說是把這個具體問題進行有瑕疵的擴大化,往重了說這是個事后謬誤。”

- 這個信息就是很隱晦,并不是我“找不到”追蹤這個信息的網站,追蹤這個信息的網站現在已經停止追蹤了。

你忘了引用下一句話了:“現在已經太晚了?!?/span>

這是一個諷刺手法,不是謬誤。要么接受要么走人。

5: “請注意,這些信息(區塊傳播時間以及交易時間)當中沒有一項是以太坊能夠提供的”

Gustav Simonsson:“這是完全錯誤的。只要運行幾個在地點上較為分散的節點就能輕松計算出區塊傳播時間,讓這幾個節點彼此相互連接,然后測量他們發現并中繼新區塊和交易的時間。

如果你比較懶,不想花費幾個小時的時間學習如何部署、使用、甚至添加debugging到以太坊客戶端的話,可以去查看連接到https://ethstats.net/的節點的區塊傳播時間?!?/span>

- 首先,這并不簡單。再說一遍,這和我沒有關系,因為很顯然我有能力區別這些網絡并搜集這些信息。這些信息就是我分享出來的,因為我做過這些事。

其次,我不需要在全世界各地建立節點來查這個,網上的抱怨以及上圖左邊這欄里的數據(這張圖就是從你說的那個網站上得來的)更加堅定地支持了網上的共識。有半數的節點志愿將他們的數據共享到這個網站上,但是有很糟糕的延遲,這就說明存在問題。

第三,懶人是不會像我這樣不嫌其煩地去搜集數據的,當我說這個數據不向公眾開放的時候我也沒有說錯。一般來說網絡數據都不向大眾開放,因為它并沒有被整理出來呈獻給公眾,雖然其中有些信息確實曾經向公眾開放。要搜集這些資料可不是光有普通人的常識就能做到的。

6: [瞎嚷嚷要用“正確”的方式來使用區塊鏈,痛罵CryptoKitties]

Gustav Simonsson:“作者預設存在一種“正確”的方式來使用一個公開的不需要許可的區塊鏈。如比特幣和以太坊這樣的區塊鏈的魅力所在,就是用戶可以用它來干什么都行,只要他們能夠說服礦工接受他們的交易。

例如,很多人確實_很喜歡_ CryptoKitties,甚至在最近的一次拍賣中為了一只貓拍出了價值$140,000的ETH的天價?!?/span>

- 這個礦工接受什么交易無關。我說的是,盡管這些交易現在被礦工接受,但在將來,任何只能用低廉價格才能運轉的Dapp將無法繼續運轉,除非提高限制,或者犧牲去中心化。你或許要開始在別處尋找這個功能了。如果你不在乎去中心化,那么這個說法就不適用于你的情況,這也完全沒關系。但是這確實就是以太坊現在的賣點:

拋開洗錢不講,這世上確實有傻瓜存在。CryptoKitties就是一個很好的例子。我實際上很喜歡CryptoKitties,因為它就像個試金石一樣能夠試出誰是傻瓜,而且我并不討厭貓:

7: “比特幣網絡大約有115,000個節點,其中約有12,000個聽節點?!?/span>

Gustav Simonsson:“這個比特幣節點計數和好幾個其他來源的計數有出入

如果這些其他來源都算錯了,那么他們肯定很想知道作者提供的這個網站究竟是如何計算比特幣節點的。

此外,計算這些較大節點數量的代碼是由誰審計的?”

- 它所做的一切就是計算非聽節點以及聽節點。這兩者都計算會比較困難,所以很多網站都不會做。同樣地,在以太坊中區分輕節點和驗證節點也比較困難,所以很多網站也都不做。

https://twitter.com/LukeDashjr/status/1001202223009935361

@LukeDashjr: 我把他們全部都算進去

@Emoji_Nakamoto: 對,我知道,但你會減去離開網絡的節點嗎?其他節點探索者是不是只計算core最新版本中的節點?

@LukeDashjr: 不再活躍的節點要幾周后才會被除名。

@Emoji_Nakamoto: 所以節點探索者們并不計算聽節點,或者他們偷懶用別的方法來實現,有這個可能嗎?

@LukeDashjr: 他們*只*計算聽節點,而聽節點是少數。

@Emoji_Nakamoto: 這個現象有沒有什么比較好的解釋?

@LukeDashjr: 因為這樣做很容易。

8: “你所看到的以太坊節點數量?我敢說那大多數都是輕量節點,根本不進行驗證工作(檢驗區塊頭不能算是驗證)。不同意的話就來證明我是錯的吧,拿出數據來。”

Gustav Simonsson:“作者為什么不提供一些數據來支持他們的胡說八道?“我敢說”是一種訴諸權威的詭辯技巧。讀了作者這些錯誤的說法和誤解,我認為在討論(以太坊)協議和網絡問題時,他的可信度已經下降到不足以被嚴肅對待了?!?/span>

- 我承認我確實有在假設,但是說我已經失去可信度就有點太扯了。我的擔心是有依據的并且不應該被無視。你可以不同意,但你必須說明為什么你不同意。我的這篇以及上一篇文章就進行了非常清楚的說明:驗證節點很重要,而以太坊從協議開始就一直在忽視他們。

9: “如果你的節點無法同步,那它就會降級為一個輕量客戶端。”

Gustav Simonsson:“這是錯誤的。就算一個節點同步時落后了幾個區塊,它還是可以回復關于過去的區塊和交易的查詢以及服務其他正在同步的節點。作者可以查看一下比如Parity或者go-ethereum的客戶端的并發和狀態處理,來理解目前節點是如何安裝同步以及將如何與新的數據分片提案一同工作的?!?/span>

- 這并沒錯,是你只看到字面意思。網上有很多評論都是關于節點無法同步,別人一直說“沒關系”,于是人們只好使用快速同步。站遠了看,這將導致驗證節點離線而輕量節點在線,就像我在前文中展示的圖表一樣。

10: “在這種情況下,你究竟如何才能知道有多少完全驗證節點?你現在完全無法得知了,因為唯一一個追蹤這個數據的網站把輕量客戶端也算進去了。假如這些全節點中心化到了10個數據中心里,那你怎么知道呢?你永遠不會知道?!?/span>

Gustav Simonsson:“好吧,我們現在已經能確切地知道,目前有115000完全驗證的比特幣節點,但是在作者所想象的假設的將來,我們將無法知道以太坊網絡中到底有多少正確地進行驗證的全節點?

很顯然現在比特幣里的一些網絡工程設計魔法可以應用到這個假想的未來的以太坊網絡中。由于比特幣和以太坊的客戶端都是開源的,我想以太坊開發者們應該很快就會發現這個魔法然后應用它,讓我們隨時都能得知當前究竟有多少個全節點。”

- 能夠確定比特幣中到底有多少個全節點的原因是所有節點都進行驗證。這個網絡中的所有參與者都驗證這條鏈,只有這樣你才知道下一個區塊是有效的而不需要依靠信任其他人。比特幣當中沒有輕量節點。

在以太坊中,節點可以以非常多種模糊曖昧的方式與彼此交互,要想知道哪些節點是完全驗證節點,唯一的方法是向過去的隨機區塊發起請求,看它是否有那個完整的區塊,但大多數以太坊節點一般不保存歷史記錄,因為以太坊是基于狀態的。

以太坊和比特幣的網絡的本質上是完全不同的,這就是為什么對比特幣網絡進行調查很容易,而對于以太坊來說則困難重重。

—?—?—

Gustav Simonsson:“運行以太坊全節點的要求當然會高一點。舊一點的電腦可能會跑不動,而且一定得用固態硬盤。但是不管怎樣都肯定不需要一個很強大的服務器。實際上,任何一臺機器,只用來運行節點,裝有過去六年之內上市的CPU,8 GB的RAM以及一個現代固態硬盤都能夠很好地運行一個以太坊全節點(我的一個蠻普通的服務器上就運行了好幾個全節點)。中繼交易和區塊所用的帶寬確實需要考慮,但是對于連接良好的網絡來說一般不是個問題。”

- 1: 隨著時間的推移越來越難了。

  2: 這已經沒有什么實際意義了,因為驗證節點需要花費$45,000

  3: 不花費$45,000的驗證節點網絡的帶寬很重要,因為“連接良好”對于隱私保護是很危險的,這一點前文已經講過了。

—?—?—

Gustav Simonsson:“礦工們已經意識到現行的區塊(gas)限制,并且積極與社區中的其他成員討論理想的區塊大小限制應該是什么

在歷史上,礦工曾經降低過也曾經提高過限制“

- 在一個中心化的工作證明網絡中這一切都不重要。不過如果是一個工作證明系統的話那么將會非常危險。礦工們并沒有激勵機制來保證“其他”節點保持連接或者同步,“因為他們可以只同步區塊頭”。礦工們現在只是好心,但是并不能保證他們將來也會保持這樣。當這些網絡開始向上擴容的時候,信任那些執掌大權的人是一件很危險的事。

—?—?—

Gustav Simonsson:“總的來說,網絡上線之后,隨著客戶端性能不斷改善,礦工逐漸提高限制,直到目前的8M(以太坊上線的時候是3.14M)。一般來說,如果同步問題嚴重到影響ETH的價格,礦工將會降低限制來管理網絡。”

- 我沒有理由相信限制會下降,我已經寫了很多文章來講這個了。

—?—?—

Gustav Simonsson:“其他人已經討論過以太坊支持的各種同步模式及其不同的資源要求,另一件值得討論的事情是,如果以太坊網絡確實發展得太快,導致大多數全節點跟不上,那么有一個緊急補救措施,那就是checkpoint。

像StopAndDecrypt這種人,聽到區塊鏈checkpoint這種不神圣的、充滿罪惡的詞語的時候,大概要跳腳吧。如果安裝共識協議的客戶端同意從checkpoint區塊而不是從創世區塊開始進行同步的話,這個區塊鏈如何能實現去中心化呢?!“

- Checkpoint有它自己的功能,但是你所聲稱的我對他們的看法都是胡扯。不管怎樣,同步模式并不重要,如果你想這樣做的話那也沒關系。再重申一遍,我的擔心是驗證節點組以及checkpoint只關心歷史數據,而不是同步以后的數據處理要求。

Gustav Simonsson:“對比特幣或以太坊進行大于幾個小時的重組在實際操作中都是非常不可能的”

- 我同意。

—?—?—

Gustav Simonsson:“結語

沒有人真正知道要保證一個網絡“安全”究竟需要多少個全節點。

我們無法得知一千、五千、一萬或其他數值是不是確保網絡安全的最低值?!?/span>

-請看上文。

—?—?—

Gustav Simonsson:“說了這么多,我們應當繼續鼓勵開發以太坊應用的個人或團隊——或者任何想要為這個網絡做貢獻的人——運行自己的全節點。”

- PoS和Sharding上線之后,我希望那些人口袋里有$45,000這么多錢。如果ETH價格上漲那就更糟糕了。DASH要求得有1000個幣,運行masternode的成本曾經一度高達$1,000,000。

—?—?—

Gustav Simonsson:“對于那些堅持讀到這里的讀者們——“

- 我堅持讀到這里了,并且我不恨你。大家老是說我的寫作風格充滿敵意,但我確實沒有敵意。

節點 區塊 網絡 驗證 數據
分享到:

1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。


專題報道

主站蜘蛛池模板: 全球化工设备网—化工设备,化工机械,制药设备,环保设备的专业网络市场。 | 雷冲击高压发生器-水内冷直流高压发生器-串联谐振分压器-武汉特高压电力科技有限公司 | 宽带办理,电信宽带,移动宽带,联通宽带,电信宽带办理,移动宽带办理,联通宽带办理 | 100国际学校招生 - 专业国际学校择校升学规划 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 软文世界-软文推广-软文营销-新闻稿发布-一站式软文自助发稿平台 | 智能汉显全自动量热仪_微机全自动胶质层指数测定仪-鹤壁市科达仪器仪表有限公司 | 金蝶帐无忧|云代账软件|智能财税软件|会计代账公司专用软件 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 办公室装修_上海办公室设计装修_时尚办公新主张-后街印象 | 电销卡_北京电销卡_包月电话卡-豪付网络 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 神马影院-实时更新秒播| 地磅-电子地磅维修-电子吊秤-汽车衡-无人值守系统-公路治超-鹰牌衡器 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 邢台人才网_邢台招聘网_邢台123招聘【智达人才网】 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 小型单室真空包装机,食品单室真空包装机-百科 | 沈阳激光机-沈阳喷码机-沈阳光纤激光打标机-沈阳co2激光打标机 | 压滤机滤板_厢式_隔膜_板框压滤机滤板厂家价格型号材质-大凯环保 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 企业微信scrm管理系统_客户关系管理平台_私域流量运营工具_CRM、ERP、OA软件-腾辉网络 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 杭州代理记账多少钱-注册公司代办-公司注销流程及费用-杭州福道财务管理咨询有限公司 | 数年网路-免费在线工具您的在线工具箱-shuyear.com | 德国UST优斯特氢气检漏仪-德国舒赐乙烷检测仪-北京泽钏 | 仿古建筑设计-仿古建筑施工-仿古建筑公司-汉匠古建筑设计院 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 变位机,焊接变位机,焊接变位器,小型变位机,小型焊接变位机-济南上弘机电设备有限公司 | 菏泽商标注册_菏泽版权登记_商标申请代理_菏泽商标注册去哪里 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | RV减速机-蜗轮蜗杆减速机-洗车机减速机-减速机厂家-艾思捷 | 防水接头-电缆防水接头-金属-电缆密封接头-不锈钢电缆接头 | 湖南自考_湖南自学考试网 |