ConsenSys:速覽以太坊測試網簡史

語言: CN / TW / HK

測試網路是模擬區塊鏈主網的替代網路,其建立目的是為了測試和試驗主網區塊鏈的功能,以減少實際執行式產生的錯誤,例如真實資金的損失。 這些區塊鏈測試網可以比作傳統 Web 開發中的「模擬環境」,開發人員可以在測試網中除錯協議升級和智慧合約,然後再部署到主網。

根據這些網路跟主網之間的相似程度,一些測試網路使用與主網路相同的底層技術和共識機制,而一些測試網路使用與主網不同的技術和共識機制。 需要注意的一個重要區別是,從測試網路獲得的代幣沒有經濟價值。

Olympic 測試網 – 2015 年初

有史以來第一個公共以太坊測試網路被稱為 Olympic,並在以太坊主網正式啟動之前釋出。 Olympic 測試網是一個工作量證明測試網路,是為了在以太坊主網路正式公開發布之前,進行第九次也是最後一次測試。

Olympic 測試網通過激勵應用程式開發人員、資料提供商和交易所傳送高負荷交易,對網路進行壓力測試,嘗試將測試網路推向極限狀態。

Olympic 測試網路被稱為以太坊 0.9,網路 ID 為 0。在以太坊主網路成功公開發布後,它於 2015 年 7 月停止。

Morden 測試網 ——2015 年 7 月

在以太坊公共主網啟動後,需要一個新的公共測試網路與主網攜手並進。 於是 Morden 測試網,另一個工作量證明測試網路誕生了。

該網路的 ID 為 2,在 2016 年 11 月被棄用之前的一年多的時間裡,它是唯一的以太坊測試網路。Morden 測試網主要用於測試兩個最主要的以太坊客戶端 Geth 和  Parity 之間的垃圾資料和一些僅測試網的共識問題 。

雖然 Morden 網路已被以太坊團隊放棄,但它仍然活躍在 Ethereum Classic 社群中,並更名為 Morden Classic 測試網路。

Ropsten 測試網 - 2016 年 11 月

Ropsten 是以太坊的第三個也是最後一個工作量證明測試網路。它在主網升級後推出,這個新的測試網路是以瑞典斯德哥爾摩的一個地鐵站命名。

Ropsten 測試網路支援所有主要的以太坊客戶端,並且是唯一可用的工作證明共識機制測試網路。

2017 年 2 月,Ropsten 測試網路遭受了一次嚴重的拒絕服務攻擊。 這次攻擊導致網路速度減慢並消耗過多的磁碟空間,使得以太坊客戶端很難與 Ropsten 網路同步。 同時逐漸將 Gas 限制從 470 萬增加到大約 90 億,每當傳送大筆交易時都會使網路癱瘓併產生大量垃圾區塊。

Ropsten 團隊在 2017 年 3 月通過社群捐贈的 GPU 雜湊算力成功地恢復了網路,清除了因攻擊而積累的所有垃圾區塊。

Kovan 測試網 - 2017 年 3 月

2017 年 2 月對 Ropsten 測試網路的攻擊導致了其他幾個測試網路的誕生。

Kovan 測試網由 Parity 團隊建立。 Kovan 和攻擊後啟動的其他測試網路一樣,主要為了滿足開發人員測試其應用程式的穩定且與客戶端相容的測試網路的需求而誕生的。

Kovan 測試網路使用權威證明共識機制,為了保證安全,該機制通過維護一小部分受信任的簽名者和驗證者而犧牲了去中心化。這些簽名者和驗證者通過質押他們的聲譽來在網路中建立新區塊。

由於這些驗證者的身份是已知的,為了保護他們的聲譽,他們會積極維護網路。

與 Ropsten 一樣,Kovan 測試網路是以新加坡的一個地鐵站命名的。它的網路 ID 為 42,建立一個新塊大約需要 4 秒。該測試網路沒有獲得一些主要的以太坊客戶端(例如 Geth)的支援,並且不能完全再現當前的生產環境(PoW 主網)。

儘管 Kovan 測試網路與 Ropsten 測試網路相比是一個更穩定、更快速的測試環境,因為不需要 CPU 密集型挖礦來維持網路,但業內許多人仍然認為它是:

  1. 一個不優雅的解決方案,因為以太坊應該有一個動態的區塊限制。
  2. 不可移植,因為其他客戶端需要自己實現新的分叉邏輯。
  3. 與同步模式不相容

Kovan 網路今天仍然活躍,並且仍然是社群中許多團隊最喜歡的測試網。

Rinkeby 測試網 - 2017 年 4 月

由於 Kovan 測試網路是因為 Ropsten 攻擊而迅速啟動,以太坊團隊建立了 Rinkeby 測試網 作為長期解決方案,該解決方案使用  Clique POA(權威證明)

該網路也是以斯德哥爾摩的一個地鐵站命名的,網路 ID 為 4,出快間隔時間為 15 秒。

新的權威證明網路易於實施並嵌入到任何的以太坊客戶端中。它還允許使用現有的同步技術,如 Fast、Light 和 Warp ,而無需客戶端開發人員嚮應用新增自定義邏輯。

它將通過以下方式維護隨時間變化的受信任簽名者列表:

  1. 首先,將區塊頭中的 32 位元組「extra-data」欄位重新用於儲存 secp256k1 簽名的 65 位元組欄位,允許任何獲得區塊的人根據授權簽名者列表對其進行驗證。這意味著區塊頭的「miner」部分已經過時。
  2. 然後,重新利用剛過時的「miner」欄位和權威證明過時的「nonce」欄位,在常規區塊中建立投票協議。 這兩個欄位初始值設定為零,但如果簽名者希望對授權簽名者列表進行更改,他們必須將「miner」欄位設定為他們希望投票的簽名者,並將「nonce」設定為 0 或 '0xff...f」 以表示投票贊成新增或踢出簽名者。

在區塊處理過程中,任何同步鏈的客戶端都可以計票,從而通過大眾投票維護動態變化的授權簽名者列表。

儘管以太坊團隊努力建立標準的權威證明協議,但 Rinkeby 僅得到 Geth 以太坊客戶端的支援,這為建立另一個所有主要客戶端都支援的測試網路留出了空間。

Gorli 測試網 – 2018 年 9 月

該測試網路作為一個黑客馬拉松專案,由 Chainsafe 團隊在 ETHBerli 上啟動。 它試圖通過 Go 語言重寫 Parity 的 Aura Proof-of-Authority 共識機制(主要用 Rust 編寫)的方式來實現其功能。

當 Afri Scohedon 與 Chainsafe 團隊一起建立「下一代」PoA 公共測試網路時,它成為了一個官方專案。該網路與所有主要的以太坊客戶端相容,包括 Geth、Parity、Hyperledger Besu、Nethermind 等。

團隊採取的早期步驟包括:

  1. 在以太坊改進提案 (EIP-225) 中充分指定權威證明引擎,例如 Aura 或 Clique。
  2. 在不同的客戶端上實施這些引擎中的一個或多個。
  3. 基於模擬主網路可用實現條件,引入一個簡單的新權威證明測試網路。

通過這些步驟,Gorli 網路在 2019 年初成功啟動。至今它仍然是唯一能夠保證一致可用性的權威證明網路。

Gorli 網路的網路 ID 為 5,鏈 ID 為 5,平均出塊時間為 15 秒。它的 狀態指示板資源管理器 可以在連結中檢視。

關於測試網歷史的最終想法

今天有許多可用的以太坊測試網路,每個都試圖解決歷史遺留的獨特問題。本文僅涉及最流行和使用最廣泛的測試網路,目前還有一些其他具備獨特性質的網路,例如 Sokol

在部署到主網之前,有人可能會問哪個選項是測試應用程式的最佳選項。 答案是沒有一個「最佳選擇」,因為這實際上取決於團隊想要測試的功能,以及他們需要測試網路與以太坊主網路的相似程度。 作為其開發過程的一部分,大多數軟體團隊會選擇並堅持使用其中一個或多個網路。