(太長不看版:這跟存儲空間限制沒有關係)
不到一年前,以太坊錢包Parity的一位開發者Afri Schoedon寫了一篇文章,現在這篇文章是對他的文章的一個間接回應:
我想要聲明的是我對在這個領域中幾乎所有的開發者都心懷尊敬,這篇文章並不是要攻擊什麼人。我寫這篇文章的目的是解釋目前真正的問題是什麼,以及解釋為什麼Afri Schoedon的文章並沒有討論到這些真正的問題。我很希望有人能夠寫篇文章來解釋這些問題,這樣我們就可以把它也應用到比特幣上。確實有個別開發者故意通過協議誤解來進行誤導、混淆、無視,就和2X以及replay保護措施那場鬧劇一樣,不過大多數開發者並不是那樣的人。你不能因為出了這樣或那樣的事就討厭這些開發者。他們和我們一樣都是為了同一個目標而奮鬥的,並且我相信Afri是屬於第二類開發者,而非前者。
@ravensorb 本issue已被分類識別,併入子任務,你可以在這個鏈接裡查閱到概況:https://wiki.parity.io/Known-Issues-Priorities
@codewizWarp-sync本身沒毛病,在以太坊之外的任何鏈上都正常運行。目前以太坊的體積大小是一個很嚴峻的問題,而且這也不屬於Parity的問題。
如果你之前讀過我的文章,那你就會發現這篇文章裡有一些片段是從之前的文章中搬過來的。到目前為止,我的文章主要都是以一個“極大主義者”的角度來寫關於比特幣的問題以及在比特幣社區內的一些爭論。如果你只從你個人的角度來看的話,這些爭論的原因其實都是一樣的。我甚至會用權益證明來為我的意見進行辯護,以至於不去批評權益證明這個東西。
修正:看起來有些人並沒有好好閱讀我的副標題所以誤解我的意思了。這裡討論的不是檔案節點,而是完全驗證了的節點。不管你是為了趕上進度而漏讀了哪些東西我都不在乎。這是關乎同步的問題。輕節點並不能算作節點。
目錄
· 我的論點:以太坊的失控數據(runaway data)目錄只是冰山一角。
· 我的預測:一切都歲月靜好,直到大廈崩塌。
· 我的建議:進行轉置。
我的論點:更大的區塊會使得驗證者中心化
就是這麼簡單,這就是擴容之爭中整個數字貨幣社區爭論的中心,熟悉區塊鏈協議的人一般都不會否認這個事實。以下這段節選我認為很好地解釋了各種“第二層”擴容方案(在這些方案中唯一可行的一個已經實施到比特幣中了)。
1. 公共區塊鏈擴容所面臨的挑戰
首先要弄清楚的是,“擴容”並不是一個單獨的問題,而是一系列挑戰,要克服這些挑戰,才能讓全球數以百萬計的用戶用上以太坊。
討論最多的一個擴容問題就是交易吞吐量。目前以太坊每秒能夠處理大約15筆交易,而Visa的交易處理速度則為45,000/tps。去年一些應用如Cryptokitties或者有時候甚至一些ICO都會因為太受歡迎而拖慢整個網絡速度並導致gas費上漲。
核心限制在於,像以太坊這種公鏈中,每一筆交易都需要被全網每一個節點處理。在以太坊區塊鏈上進行的每個操作,比如說一筆交易,創建一個Cryptokitty,或者進行一個新的ERC20合同,都需要全網的每個節點同時進行處理。這個機制就是故意這樣設計的,以保證公共區塊鏈的權威性。節點不需要其他人來告知現在區塊鏈上發生了什麼,它們得自己去弄清楚。
這就給以太坊的交易吞吐量設置了一個根本性的限制:不能高於我們願意向一個單一節點索取的量。
該文章的作者是Josh Stark,他能夠弄明白這一點。他的公司甚至宣佈進行一個項目,要在以太坊上弄一個和閃電網絡一樣的東西。(巧的是Elizabeth Stark的公司也在參與建設閃電網絡。)
那麼問題是什麼呢?先把權益證明的東西放在一邊,底層的激勵機制完全不對,因為以太坊的區塊大小沒有限制,就算要設置一個限制也得是一個合理的數字,而且這些去中心化的應用(Dapps)也不可能正常運轉,因為現在沒有限制的情況下他們也才勉強能夠運轉。甚至這個限制的數值到底是多少也不必討論了,因為現在根本就沒有限制。
有點跑題了。我現在要簡單地定義一個區塊鏈,有些人可能會被惹毛。
以下是一個區塊鏈所能提供的:
· 一個不可更改的、去中心化的賬簿。
· 就這樣沒別的了。
以下是一個區塊鏈所需要的東西以保持他的本質:
一個去中心化的網絡並且擁有以下能力:
· 分散我的賬簿——驗證
· 添加我的賬簿——工作
· 為我的需求提供激勵——代幣
以下是讓區塊鏈失敗的因素:
· 在區塊鏈上添加讓它偏離網絡的目標的功能。
區塊鏈只是網絡的一個工具,並且是隻能用在特定網絡中的一種特定工具,這個特定工具和特定的網絡是相互依存的,其中一個沒有了另一個也無法存活。你可以在這個網絡的基礎之上建設其他東西,但是坦白說如果在這個網絡的底層(L1)上添加了使得網絡無法正常運作的東西的話,這個網絡遲早玩完。
下面我舉個例子,這是一個L1層面上的功能,它並不會影響網絡的正常運轉,它就是多重簽名。
多重簽名確實需要節點多做一點工作,但這點工作算是“微不足道”的。需要注意的是,對於這些設計良好的網絡來說,硬件並不是它的瓶頸,網絡延遲才是。向一個多重簽名地址支付款項,並不比向一個普通地址支付款項所需要的網絡費用高,因為對於每筆交易來說是按字節收費的。這項區塊鏈功能並不會妨礙網絡的正常運轉,因為在網絡上進行傳輸的數據是(1)按字節收費的,並且(2)受到區塊大小限制的管理。這裡說管理而不是“限制”。區塊大小並不限制交易流程,而是管理向所有節點廣播的數據量,那麼問題就出在這裡。
當我們說“數據目錄”大小時,指的是從創世區塊起一整條鏈的大小,但如果只從字面意思理解的話就會有人來抬槓:
· 光盤空間很便宜,而且摩爾定律認為當價格不變時,集成電路上可容納的元器件的數目,約每隔18-24個月便會增加一倍,性能也將提升一倍。
· 如果需要的話可以修剪區塊鏈。
· 不需要一直追溯到創世區塊,只需要最後X個區塊就可以確定目前整個網絡的狀態了。
這些言論完全無視了一個節點每秒必須處理的數據。
如果願意的話你可以閱讀我寫的關於摩爾定律的文章,我在這裡只節選其中重要的幾點。在Oz那裡他們試圖辯稱“你不需要運行一個節點,只有礦工才有資格決定採用什麼代碼”。這種說法很荒唐,但在這裡我不打算進行反駁,因為權益證明把礦工完全移除,把所有東西都放到節點裡了。(其實他們一直都在節點裡,只不過這次沒有礦工來轉移話題了。)
1. 摩爾定律討論的是集成電路的增長速度,每年大約能夠增長60%。這個定律討論的並不是可用的帶寬(而帶寬才是更重要的)。
2. 帶寬的增長速度要慢得多。我們來看看尼爾森定律。從1:1比例開始(在硬件和帶寬上沒有瓶頸),每年增長50%,10年複合增長得到大約~1:2的比例,這就意味著每十年帶寬增長速度要慢兩倍,每20年就慢四倍,每40年慢八倍,如此反覆。(實際的情況要糟糕得多,但是我這裡只做簡單的假設,因為僅僅是這樣就已經相當糟糕了。)
3. 網絡延遲比帶寬增長要慢,這就意味著隨著網絡上節點的平均帶寬速度提高,區塊和數據傳輸速度並不以同樣的速率提高。
4. 更大的區塊需要更好的數據傳輸(更低的網絡延遲)來抵抗節點中心化。
嚴格地從以太坊的角度來看,轉換成權益證明之後只剩下節點了,那麼你肯定想要確保不會發生節點中心化。比特幣網絡所遇到的瓶頸是它的區塊大小(這是理所當然的),因為這保證了網絡的需求增長速度永遠不會超過外部(有時候不一定)限制(如計算性能或網絡性能)的增長速度。由於以太坊不斷增長的區塊大小,它的瓶頸不再受到這些外部因素的控制,網絡需求不斷超過平均用戶的硬件和帶寬水平,導致網絡愈加縮小和中心化。
StopAndDecrypt: 兩天內就達到了10 GB。作為一個比特幣愛好者,我有個嚴肅的問題:對於這個增長趨勢你們有什麼應對方案嗎?你們將在不到一個月的時間內增長33%。請文明發言。
Vitalik: 那個圖表具有非常大的誤導性。300GB是一個檔案全節點的大小,這種節點存儲著歷史數據,包含目前和過去的所有狀態。狀態本身僅有~1-2 GB,歷史數據大約有~10 GB。修剪了的節點仍然存儲著所有的狀態和歷史,如果你真的需要的話它可以調出任何歷史狀態,但這個節點只有大約20 GB。如果只需要現時狀態的話,這個數字還可以更小。
Senzheng:不要認為大家像關心帶寬一樣關心空間大小。
對於全節點最低上傳速度,在保證網絡安全的情況下,實時帶寬需要多大?
就和這裡的分析相似:https://iancoleman.github.io/blocksize/#_ & https://twitter.com/SDWouters/status/862426991370358784 (我才意識到以太坊不一樣)
(沒有回應)
Privpub: 有人認為修剪過的節點就像比特幣裡的SPV節點一樣,而且無法實現“真正的”去中心化,這個觀點你怎麼看?
Vitalik: 你說的其實是一個輕量客戶端,即使是以太坊輕量客戶端也比比特幣SPV節點要強大得多:比特幣SPV節點能夠驗證交易,而以太坊輕量客戶端能夠驗證現時狀態。
比特幣SPV並不是節點,他們並不在網絡上傳播區塊或交易。他們像水蛭一樣吸附在區塊頭上。
下面提到的概念對於理解本文接下來要講的內容非常重要,請注意閱讀:
· 你可以將無效的交易放進區塊中,並且仍能創建一個有效的區塊頭。
· 如果網絡是由10個全節點控制的,只要區塊頭是有效的,則只需要其中一半即可忽略/准許無效交易通過。
這就是為什麼從網絡的角度來看驗證交易非常重要,以及為什麼需要一個大的去中心化網絡。對於我外婆來說這是並不重要,但我們現在討論的不是我的外婆。我們現在討論的是如何保證正常工作的節點能夠不斷增長而不是減少。
這個節點一直在參與工作,直到因為網絡需求增加而被砍掉:
cryptoogre: 我不知道發生了什麼,是不是Geth現在對系統有要求了。
之前我一直在i3內核和8GB內存上運行Geth,在cache=1024的情況下,能夠在兩小時內進行快速同步。
受到攻擊之後我就無法再同步或運行Geth了。
分叉之後,Geth每次同步到99%的時候就停止同步了(大約需要6小時),然後就開始進行正常區塊輸入,沒辦法跟上,我一直都比鏈落後5到7個小時。
我準備在固態硬盤上用cloud vm進行測試,不過我唯一能夠想到的可能性就是Geth對硬件的要求已經超過我的機器的性能了。
iamsunbird: 我也遇到同樣的問題,客戶端已經連續同步一天半了,但還是跟不上。
這並非不常見,並且還在繼續發生:
sonulrk: 我從這個Geth快速模式問題中得到的經驗是:
1. 你一定要用Quad內核處理器和4GB以上的內存
2. 你一定要用固態硬盤而不是機械硬盤
3. 你的網絡一定要穩定,速度要達到2mbps及以上
如果你能實現以上3個條件的話那你可以試試Geth,打開完全模式的話基本上一個星期、最多兩個星期就能完全同步。如果使用的是快速模式的話就看運氣了,要麼兩三天內能夠完成同步,要麼永遠也完不成。
winsvega: Geth 1.8版本仍然有這個問題,重啟Geth後出現這個錯誤
快速同步模式會掉節點而且無法同步,還有不到100個區塊就完成了,但是一直沒法同步。
ceciliato310: 這就是P2P網絡的本質,你會受到節點和網絡情況的限制。一般來說只要耐心等待最終還是會成功的。按ctrl-c重啟也可以(但願重啟之後你能得到一個好一點的節點)。另一個解決辦法是找一個好的節點然後手動添加它。
注意到了沒有,解決辦法是“尋找一個好一點的節點”或者“升級你的硬件”。不管是節點還是硬件,都不應該成為瓶頸。當你所有的節點都被那群吸血的水蛭給佔滿了(因為只有好的節點真正在幹活),這個網絡就會變成一群主人領導一群奴隸,最終變成一個主人剩下的都是奴隸。(如果你不同意這個說法的話,請證明為什麼將來不會出現這個趨勢,因為現在的趨勢就是這樣,如果不加以限制的話就不會停止。如果你的答案是數據分片的話,我在文章末尾會講到這個。)這就是教科書式的中心化,不受管制區塊會將網絡變得中心化。大區塊(但是有限制)會使情況變得好那麼一點點,但是會為不斷增大的區塊大小開了先例,這就使得情況變得同樣糟糕,因為這就開了先例,只要“形勢需要”,就可以擴大區塊大小,這也就相當於區塊大小不受管制了。這就是我們為什麼在比特幣區塊大小問題上堅決不讓步的原因。
我在推特上談過幾次這個問題,但是效果並不顯著,因為我的推特關注者中並沒有很多以太坊圈子裡的人。
還需要進一步解釋嗎?
假設要保持同步的話,你的Geth節點需要處理100個“單位”的數據。
你的硬件能夠處理150個單位。第二天網絡要求你處理101個單位,下個月要求你處理125個單位。
總有一天你會跟不上的。
上面那個圖標只是為了解釋而畫的,並不涉及實際的數據。綠色的曲線代表以太坊網絡的各種需求的總和。總有一天要麼是你的節點會跟不上同步,要麼會設置一個區塊大小限制。可能是現在,也可能是十年後或五十年後,但是在這個速度下總有一天你的節點會跟不上同步的速度。但這並不會發生在比特幣身上。現在你可以盡情地否認,但總有一天會發生的。當它發生的時候,像CryptoKitties, Shrimp Farm,Pepe Farm之類的去中心化應用將會停止運行。這就和Ryan Charles的網站Yours.org的結局一樣,當時它原本是建在比特幣上的。唯一的區別是比特幣已經有區塊大小的限制了,Ryan要麼沒弄明白情況所以沒預料到會這樣,要麼就是他認為區塊大小會不斷增加。Ryan並沒有吸取教訓,反而在BCash上下了更大的血本,而Yalls.org則將他的創意移植到了比特幣的閃電網絡上。
我的預測:以太坊將會設置一個區塊大小限制,把BCash和它自己逼上絕路。
http://bc.daniel.net.nz/ ←這個網站已經不再更新數據了,這個圖表經過改動,使用REAL目前的數據進行推測
上面的圖表甚至不是預測了,在這張最後存留的圖表比較了兩條鏈的數據目錄,我用這些數據進行了推測(黃色部分)。以下是我們目前已知的:
· 比特幣的未來是可預測的,區塊鏈增長和網絡需求將永遠是線性的。(這是我們想要的。)
· 以太坊節點每秒所需要處理的數據量已經非常大了而且還在不斷增長。(這不是我們想要的情況。)
· 如果以太坊鏈上需求停在它現在的這個點,區塊鏈增長將繼續保持這個線性增長趨勢,如圖中虛線所示。(這個情況很糟糕。)
· 如果以太坊鏈上需求繼續爆炸性增長,那麼抱怨他們的節點跟不上同步節奏的人會越來越多,總有一天會爆發。(如果到了這一步就只有一個選擇了。)
上面那張圖發生什麼了?這個節點的主人不再維護這個節點了。其他物理限制也是個問題,比如說你有限的生命裡的時間也是有限的。進行維護的要求應當比較低,而不是高得不可理喻。
你知道我是如何維護我的比特幣/閃電網絡節點的嗎?只要讓筆記本電腦一直開機就行了。如果需要重啟,那我就關機然後重新開機就好了。我每天還會用我的筆記本電腦做很多其他的事情,這並不影響我運行節點軟件。如果發生了什麼改變導致我的節點不再和網絡兼容並且無法同步,如果我是受了錯誤信息引導的話,我會大聲痛罵那個讓這一切發生的大傻瓜。但幸運的是我並沒有受到錯誤信息引導,我很有預見性地選擇了比特幣。
那麼問題是什麼呢?我認為大多數運行以太坊節點的人並不知道他們掉進了一個怎樣的坑裡。我認為他們並不瞭解這其中的基本激勵模型,他們也不知道為什麼沒有區塊大小限制這件小事會讓他們陰溝翻船。希望這篇文章能讓他們明白這些道理。
那麼當那個心理預期的爆發點達到時會發生什麼呢?人們會放棄嗎?要失去多少個節點才會發生?探索者網站甚至已經不再追蹤這些數據了。Etherscan.io已經不再追蹤全部或者快速同步目錄了,Etherchain.org上則直接出現找不到頁面的錯誤提示。
Etherscan同樣也不會讓你放大內存池,即等待被放進區塊的交易。費用上漲的原因就是等待被放進區塊的交易越來越多。隨著時間的推移你將能夠看得出來。下面的圖標比較了比特幣的內存池和Etherscan.io的內存池:
這兩張圖表都在監測這些網絡上在排隊的交易數量,比例也大致一樣,大約4/5天。區別是什麼呢?我可以縮小比特幣的這張圖表,然後查看整個歷史。這一點為什麼重要?當你的網絡沒有受管制的上限時,心理學就很重要了。以下是我們的圖表縮小了看的樣子:
明白我的意思了嗎?明白為什麼比例很重要了嗎?如果我把以太坊的內存池也縮小了看,發現這部分其實是處在一個不斷上漲的曲線的巔峰?我並不是說這就是它今天的情況,而是說這個信息不應當這麼隱晦。如果有那一天這個不再隱晦了,那就已經太晚了,來不及拯救了。現在也已經太晚了。
現在讓我們來看一下比特幣網絡上的區塊和交易延遲。下面有兩個圖表,第一個是一個區塊要傳播到整個網絡需要多久,第二個是一個交易要傳播到全網需要多久。交易由節點來處理(一共有115,000個節點),然後由節點暫時保存,直到礦工創造出一個有效的區塊並向全網公佈。
· 區塊傳播所需時間大幅度減少,因為軟件性能有了很大的提升。交易進來內存池之後會被驗證。當得到一個新的區塊時,迅速與已經存儲的交易進行交叉對比,並且很少會收錄還未收到的交易。這就使得你的節點能夠以非常快的速度驗證區塊,並把它發送給其他節點。
· 交易時間則緩慢上升,但目前似乎有穩定下來的趨勢。由於軟件的隱私性能加強,交易時間的增長是被允許的,但權衡之下還是利大於弊,因為平均出塊時間至少要10分鐘,所以交易時間上漲16秒也是可以接受的。當大多數區塊都已經滿了的時候,這種上漲的趨勢也會停止,因為區塊大小限制帶來的交易費會自我調節交易進來的速度,如果比特幣協議沒有什麼其他的改變的話。
請注意,這些信息當中沒有一項是以太坊能夠提供的:
比特幣就是按照這個理念來設計的。排隊等待的交易數量逐漸增加,但是區塊是受到管制的,人們逐漸學會使用區塊鏈這個工具,然後交易流會逐漸穩定下來。如果這個工具不受管制,那麼就會有一大幫人來搶著用這個工具,添加像CryptoKitties這樣隨意的功能,讓整個網絡無法運行,直到所有積累的交易處理完為止。所有以太坊的全節點都要處理每一個這樣的合約。你可能不需要處理,他們可能也告訴你說不需要處理,但確實有人需要來處理。那麼有多少個這樣的人呢?更高的費用怎麼辦?他們在底層就把像CryptoKitties這種愚蠢的去中心化應用扼殺在搖籃裡了。這些應用完全沒有存在的必要,而其他的“可行的想法”也會得到同樣的下場,並且只會更加糟糕,因為區塊鏈不會擴容。
這些去中心化應用會把你的區塊鏈搞垮因為他們不受管制:
但那不就是最初的承諾和夢想嗎?那就是以太坊區塊鏈全部的前提:和比特幣一樣,但是比比特幣更好。實際上不是的。
很顯然不受管制的區塊並不會導致無限的交易,到此處得到的教訓是這個網絡甚至在物理上就無法處理目前的數量了,確實沒有足夠的節點能夠處理這些信息並及時地進行中繼。你知道到底有多少以太坊節點嗎?你真的知道嗎?比特幣網絡大約有115,000個節點,其中約有12,000個聽節點,幾乎所有的節點都是參與工作的,因為這是受到管制的。具體什麼是聽節點在這裡並不重要,因為不管是聽節點還是非聽節點,他們都參與了將區塊接收和發送給其他相連接的節點的工作。默認是8,那麼客戶端就不會讓你超過8,除非你手動添加。這個限制是估計設置的,你最好不要添加太多,不然對網絡不好:
比特幣默認是不會允許超過8個外向連接的,-maxconnections只控制你允許多少內向連接。你可以把這個數值調高一點,但等其他大多數人連接上你要花一些時間。
請不要修改這個,因為根本沒必要。在網絡上可連接的節點是一個稀缺資源,而且對於去中心化來說是必不可少的。如果人們都像個別站點那樣試圖連接所有節點,那麼我們很快就會用完這些節點。
如果你是一個商人或者礦工,你可能想和幾個你信任的節點建立固定的連接(請查看-addnode 命令行/配置選項),但是有更多的連接並不意味著有更強的驗證能力(參考客戶端永遠驗證所有的東西),也不意味著中繼更快(因為你需要將新的區塊和交易分發給你所有的節點,反而更慢了)。這主要就是為網絡提供服務。
還記得前文提到過的這個嗎?
這並不是解決的辦法。這只是一個例子,說明為什麼一個允許參與者作出自私的選擇而不進行監管的鏈是很糟糕的。這隻有一個結局:主人和奴隸節點,少數的主人領導所有的奴隸節點。聽起來很去中心化對嗎?尤其是當成為主人節點對財力的要求越來越高的時候…
為了公平起見,我們在這裡說點離題的話:這也正是閃電網絡所受到的批評,但閃電網絡是另一種完全不同的網絡。區塊鏈網絡是點對點廣播網絡。像閃電網絡這樣的狀態通道則是點對點任播網絡。這兩種網絡中信息傳遞的方式是完全不同的。即使是你家裡的冰箱也有足夠的硬件來成為一個閃電網絡節點。閃電網絡 “輻射狀通道模式”相關的批評是關於通道平衡容量的。輻射狀通道模式和主人與奴隸的問題一樣,但有了通道平衡之後數據就不會遇到瓶頸。你只需要把閃電網絡客戶端標準化,打開X個通道,每個通道含有X資金,然後網絡就會按照這個標準形成,完全避開了輻射狀通道模式,就像比特幣客戶端標準化地只允許8個節點。閃電網絡是一個很新的東西,所以我們還不知道應該有什麼樣的標準,因為我們現在可以測量的數據量幾乎為零。/結束為閃電網絡辯護
談到我們可以測量的數據幾乎為零,為什麼以太坊節點數量只有這幾個圖表?歷史在哪裡?這些節點中有多少個使用了fast/warp同步而且從未完全驗證?你不需要全部儲存,因為你還可以修剪,但是再問一次,有多少個是完全驗證過的?有多少個僅是輕量客戶端,只同步區塊頭的?
可笑的是,像Trustnodes這種鼓吹BCash陰謀的宣傳網站會發布像以下這樣睜著眼睛說瞎話的文章,這些文章被大量轉發,不知情的人也不會去質疑它:
我才不要放鼓吹BCash網站的鏈接
目前有115,000個比特幣節點,並且全部都已驗證:
那麼現在你該怎麼辦呢?你作為一個獨立的人,逐漸意識到了這個問題,你會怎麼做呢?如果你完全不知道發生了什麼,你會怎麼做呢?這個網絡中充滿了這樣的人,他們逐漸地離開了(不一定是離開,而是參與工作的節點逐漸降級為輕量節點),那這個網絡會怎麼樣呢?還剩下多少個參加工作的節點?還有多少個節點擁有創世區塊的完整副本?如果只有5個數據中心在為整個奴隸網絡(輕量節點)鏈服務會怎麼樣呢?如果每個人都只同步區塊頭的話,誰來驗證交易呢?你可以乾坐在那裡不斷告訴自己:“網絡只需要最近的狀態歷史就能保持安全”,但是當你的網絡從底層開始全軍覆沒,大多數節點甚至跟不上最後的1,000個區塊時,這個網絡又怎麼會是安全的?
經驗教訓:
1. 以太坊區塊大小增長是一件不好的事,這是因為節點處理所需,而不是因為他們要在硬盤上存儲的量。
2. 為了防止網絡全盤崩潰,以太坊需要設置一個合理的區塊大小限制。
3. 設置區塊大小限制會導致費用上漲,這就使得許多去中心化應用無法運轉或者速度大幅減緩。在未來這些去中心化應用將無法使用。
4. 如果去中心化應用無法使用,那麼以太坊整個存在的意義就沒有了。
BCash在這裡是什麼角色?
1. BCash剛剛將他們的區塊大小從8MB提高到了32MB,並且很快會添加新的OP_CODES來使得像ICO和BCash Birdies™之類的功能得以實現。
2. BCash“還有增長的空間”,因為他這個區塊鏈上的壓力還不是很大,而以太坊區塊鏈身上則揹負著巨大的壓力。
以太坊正在走向滅亡,而BCash正在走上它的老路,無視各種警告。他們想要更大的區塊和ICO,於是他們做到了。這兩個區塊鏈都會成為同樣的東西:逐步邁向死亡的、被中心化統治的區塊鏈,但是通過逐步的區塊大小增加來繼續支持具有欺詐性質的實用代幣,使其繼續苟延殘喘,直到整個系統崩潰,沒有人能夠再運行節點。
我的建議:停止使用中心化的區塊鏈
唯一一個運行完全驗證的節點的人就是那個支撐起整個以太坊網絡的人。整篇文章到此為止我都很努力地不去提Vitalik的名字,這樣我才能專注於討論技術問題但如果這張照片(或者原來那張)無法代表以太坊空間的精髓的話,那我就不知道還有什麼能代表了。我為Vitalik指出像Fake Satoshi之類的大騙子而鼓掌,但同時他也錯誤地代表了以太坊所宣稱的功能。
啊對了,還有那個被稱為殺手鐧的數據分片?那完全就是騙人的把戲,還是同樣的節點中心化問題,只不過往上披了一層面紗而已。這完全就是將我剛才警告過的主人和奴隸網絡強塞給你,只不過打著“新的擴容技術”的名號而已。
忘了Vitalik放出來的圖表吧,因為那根本就沒意義。現在讓我們來將以太坊目前的網絡簡化一下。下面的圖表中將所有的輕量客戶端用綠色標出來,而“好的”全節點用紅色標出。你的fast/warp同步節點可能現在還是紅色的,直到它無法再繼續保持,或者你不再繼續升級或維護,改為使用輕量客戶端,變成了綠色的點。
隨著時間的推移,綠色的點越來越多而紅色的越來越少,這個情況是無法避免的,因為所有人都在這麼幹。你運行的是一個全節點還是一個輕量客戶端?甚至你有在運行節點嗎?“如果同步失敗”,那麼很多人都會建議你轉而使用輕量客戶端,但這並不能解決問題。
這張圖甚至已經把情況輕描淡寫了。實際上許多全節點(紅色)的網絡連接很差,根本沒有圖上畫的連接得這麼好:
不過不要擔心,Vitalik來拯救世界了。他要把“節點”變成SPV客戶端,只同步區塊頭。
限制就是每一個節點都要驗證所有數據分片的區塊頭,而節點對區塊頭的驗證能力受到其計算能力的限制,因此要進行“二次方數據分片”:如果一個節點能夠處理C件事情,那麼就有C個數據分片的區塊頭來讓該節點處理;或者說,如果一個節點在驗證一個單一的區塊,那麼它就能驗證C個交易,所以他的總處理容量就(大約)是C的二次方。
這是什麼意思呢?我花了很多時間來畫了個圖好讓大家有個直觀的感受,但是首先我們先用文字來解釋一下:
在比特幣中,你要麼完全驗證,要麼不驗證。你可以是以下兩種情況之一:
· 一個全節點,所有的活都能幹,完全驗證所有的交易/區塊。
· 一個SPV客戶端,什麼都不幹,掛在一個全節點上,只同步區塊頭,不分享任何東西。這些客戶端不是網絡的一份子,根本就不配被提起,不過為了避免困惑我在這裡還是說一下。
再強調一次,比特幣裡一共有115,000個全節點,他們什麼活都能幹。
在以太坊裡有:
· 什麼活都能幹的全節點,完全驗證所有的交易/區塊。
· 試圖幹活的節點但是由於節點問題而無法同步,所以跳過並使用warp/fast同步,“完全”驗證新的交易/區塊。
· 輕量“節點”,永遠只同步區塊頭,我猜他們也會和其他相似的節點分享區塊頭,所以我們可以把他們稱為“SPV節點”。在比特幣裡她們並不存在。再說一次,比特幣裡的SPV客戶端並不傳遞信息,他們不屬於節點。
你所看到的以太坊節點數量?我敢說那大多數都是輕量節點,根本不進行驗證工作(檢驗區塊頭不能算是驗證)。不同意的話就來證明我是錯的吧,拿出數據來。這就相當於運行了一個次級網絡,相互分享區塊頭,但是計算網絡節點的時候卻被用來濫竽充數。他們對網絡完全沒有貢獻,只是吸血的水蛭而已。
有了數據分片的新的以太坊有點不一樣,這裡有:
· 什麼活都能幹的全節點,完全驗證所有的交易/區塊。
· 含有全節點的數據分片網絡,能夠在該數據分片內幹所有的活,並且驗證其他數據分片的區塊頭。
· 只同步、驗證、傳播其他數據分片的區塊頭的“節點”。(檢驗區塊頭不能算是驗證,這就相當於還是一個次級網絡,假裝裡面是真正的以太坊節點,當他們統計節點的時候會把這些假的節點也算進去,讓人們繼續相信這還是一個運營正常的去中心化網絡,但實際上它已經不是了。)
猜猜你會運行哪種節點?大膽猜一下吧。對於完全驗證的節點來說什麼都沒有改變。
我為了省時間所以畫連接線的時候都是複製粘貼的,因為沒必要那麼精確。藍色的點是數據分片網絡。紅色的是以前的以太坊網絡,他們需要處理所有的東西。綠色的“節點”則只是將區塊頭進行同步和傳播而已:
這並不是擴容。如果你的節點無法同步,那它就會降級為一個輕量客戶端。現在有了數據分片,你的節點降級為一個“數據分片節點”。不論如何,每次有一個節點降級,你就失去了一個全節點。更糟糕的是,他們把這些綠色的點也稱為節點,但他們只是同步區塊頭而已,把所有的驗證工作留給紅色的節點。
在這種情況下,你究竟如何才能知道有多少完全驗證節點?你現在完全無法得知了,因為唯一一個追蹤這個數據的網站把輕量客戶端也算進去了。假如這些全節點中心化到了10個數據中心裡,那你怎麼知道呢?你永遠不會知道。
更正:有人“糾正”了我關於數據分片的說法,但我很清楚我知道它應該怎樣工作。我想讓這篇文章簡單一點,因為這篇文章不是關於數據分片的。我會另外寫一篇文章來討論這個問題,主要是關於校勘者(Collater)和執行者(Executor)的,他們只是改頭換面的全節點,但你無法運行。在我寫出這篇文章之前,你可以先看下面這張新的圖表,它更精確地反映了含有數據分片的以太坊網絡。
0全節點:
另一方面,比特幣從一開始就被設計成防止出現這種狀況:
那麼你會怎麼做?
你應該怎麼做?
你是一個開發者嗎?用上你所學到的一切知識,找一個好的、沒壞的區塊鏈進行應用開發吧。
你是一名商人嗎?集中精力讓你的服務能夠接受支付網絡吧,要確保這個支付網絡基於一個好的區塊鏈上。
你是一名投資者嗎?現在開始投資一個好的區塊鏈吧,要確保這個區塊鏈不會在未來的幾年內就走向衰亡。
你是一個賭徒嗎?購買EOS吧,這是個新玩意,但同樣糟糕,理由和我前文所述一樣,只不過還沒人知道而已。
你是一個理想主義者嗎?那這個絕對不是你想要的區塊鏈,你應該去尋找你真正想要的區塊鏈。
如果你有興趣運行一個永遠不會同步不上、也不會要求你升級硬件的比特幣節點,可以查看以下這些教程:
原作者:StopAndDecrypt
原文鏈接:https://hackernoon.com/the-ethereum-blockchain-size-has-exceeded-1tb-and-yes-its-an-issue-2b650b5f4f62 版權聲明:
作者保留權利。文章為作者獨立觀點,不代表巴比特立場。