鏈聞 ChainNews:
在該系列(一)中我們定義了節點,對比了中心化和點對點網絡的區別,提到了點對點網絡在加密貨幣中的重要意義。這一講我們將進一步探討以太坊網絡。

文章來源: 行走的翻譯 C

以太坊的網絡結構

以太坊是點到點的網絡結構。網絡中的參與者,又稱節點,不享有任何特殊權利,人人平等。雖然節點並不享有特權,但是他們在網絡中的功能和參與程度不同。以太坊網絡中不存在中心服務器,或者獨裁者,而是一個扁平拓撲結構。

所有去中心化的加密貨幣都是這種網絡結構,目的就是爲了真正踐行這樣一種理念:創造一種貨幣體系。在這個體系中人人平等,不存在管理部門可以隨意定義貨幣的價值。比特幣或者以太坊都是如此。

那麼問題來了。沒有中心繫統,這個系統中的人怎麼會知道某筆特定的交易發生了呢?具體的網絡運作原理有點類似八卦傳播協議。我們來回想下八卦都是怎麼傳播的。假設 Alice 給 Bob 轉了 3 個 ETH,最靠近 Alice 的節點知道了這個消息,然後轉告他們身邊的人,這些人又告訴就近的人,然後一傳十,十傳百,直到所有人都知情了。節點就是你隔壁的王大爺,就是你的七大姑,八大姨,你們村的大喇叭。

以太坊的節點是什麼呢?一個節點就是參與以太坊網絡中的一臺電腦。參與方式有三種:

保存部分區塊鏈信息,即輕客戶端。

保存一份完整的區塊鏈信息,即全節點。

確認交易,即挖礦。

什麼是輕客戶端?

我們之前提到過,點到點的系統就是把維護網絡的責任分佈給節點。要是有人想參與這個網絡卻沒有資源下載並維護這個系統的完整區塊鏈呢,就可以選擇輕客戶端。作爲輕客戶端,同樣可以保障以太坊網絡的高度安全,並且有權利確認一筆交易。

什麼是全節點?

所有連接以太坊網絡的電腦,只要完全執行以太坊的共識規則就叫做全節點。全節點要在電腦桌面上下載整個區塊鏈,保證整個網絡的可信。全節點需要遵從的部分共識規則包括:

確保每個區塊中的挖礦獎勵準確無誤,爲 5 個 ETH。

交易有正確的簽名。

交易和區塊存儲在正確的數據結構中。

任何區塊中都不能出現雙花現象。

全節點確認其他節點和交易,並且依賴其他節點的信息(想想八卦是咋回事,你也是從別人那裏聽來的)。

礦工 vs 節點

簡單說,所有的礦工都是全節點,但並不是所有的全節點都是礦工。礦工需要運行所有連接區塊鏈的節點。但是並不是所有下載了全節點的都必須挖礦。

以太坊問題面臨的擴容問題

以太坊網絡的共識是怎麼一回事?這個網絡的每一個節點都在做計算,當他們達成共識的時候,一筆交易就被認定不存在問題了。最初這種達成共識的過程不存在問題,但是隨着以太坊的普及,交易數量在穩步提升,問題就來了。如下圖所示:

雖然交易量上去了這是個好事情(你看 BCH 就在各種想辦法提高交易量),但是網絡在達成共識前所需要的計算量也大幅上升。此外,由於某些大公司的加入和 ICO 狂潮,以太坊愈發普及,以太坊網絡上的節點也出現爆炸式的增長。事實上,以太坊的節點是所有加密貨幣中最多的,因而也是最去中心化的。

截止到 2017 年 5 月,以太坊的節點數爲 25000,而比特幣只有 7000 個節點。單就 4 月份到 5 月份,節點數量就增加了 81%。

你或許認爲網絡節點越多處理交易的速度就越快。事實並非如此。

共識是以線性方式實現的。也就是說,假如有 3 個節點:A, B, C,爲了達成共識,A 先要做計算並確認結果,B 繼續做同樣的事情,最後輪到 C 重複同一過程。

然而,如果出現一個新的節點 D,共識需要的時間就更久了。隨着以太坊的普及,交易確認時間變慢了。

在一次速度測試中,以太坊每秒也就處理 20 筆交易,但是 PayPal 每秒能處理 193 筆交易,Visa 更勁爆,一秒 1667 筆!

我們得明白以太坊的目標不是單純的做貨幣,終極目標是演化成新型的互聯網,希望開發者能在上面運行 Facebook 和 YouTube 這種規模的各種 DAPP。不進行擴容,這不扯淡嗎?

爲了解決擴容問題,社區有三種解決方案:

  • 增加區塊大小

  • 讓用戶使用其他競爭幣

  • 分片

增加區塊大小

增加區塊大小意味着每個區塊能容納的交易數增大,即提高性能,但是也存在相應的問題:

首先,簡單擴大區塊並沒有解決節點達成共識速度低的問題。而且因爲每個區塊裏的交易數增加了,單個節點要計算和確認的工作量也隨之加大了。

爲了容納更多的交易,區塊大小需要定期增大,這最終會導致網絡的中心化。因爲普通的電腦和用戶無法承擔下載並維護如此巨大的區塊鏈。這違反了區塊鏈中人人平等的理念。

最後,區塊大小隻能通過硬分叉來提升,這會導致社區分裂。上次以太坊硬分叉,誕生了兩種貨幣。想必大家都不想再看到這種情況了。(CD:其實自從 BCH 分叉後,感覺好像大家巴不得天天分叉領糖果。。。)

讓用戶使用其他競爭幣

另一種解決方案是運行平行的雙層鏈,而非單一的區塊鏈。換句話說,網絡上如果運行了 50 個 DAPP,就每條鏈上各運行 25 個。這會導致兩大問題:

分散一條鏈上的算力非常不明智。算力決定了一條鏈有多安全,決定了這條鏈能不能抵擋外部黑客的攻擊,決定了這個系統的運行速度。

如果分散算力到兩條鏈上,惡勢力礦工更容易對算力小的鏈發動 51% 攻擊。

分片

最後一種方案就是以太坊要採用的分片技術。在深入剖析這個技術之前,我們先簡單鋪墊一下。假設三個節點 A, B, C 需要確認數據 T。我們不讓這三個節點各自都確認一遍 T,而是把 T 分成 3 片:T1, T2, T3。然後 A, B, C 各負責一片。這樣就節約了很多計算時間。

現在對分片有一點模糊的概念了吧。下一講我們再詳細闡述分片技術。再會!

更多精彩內容,關注鏈聞 ChainNews 公衆號(id:chainnewscom),或者來微博@ 鏈聞 ChainNews 與我們互動!轉載請註明版權和原文鏈接!