iT邦幫忙

2025 iThome 鐵人賽

DAY 23
1

「我記得很久以前我們談到系統的升級,這是怎麼發生的呢?中間有什麼過程」特務 K 問。

「這是個長故事,我們今天來談談」小雨說。

升級前的寧靜

今年四月的某一天,小雨從電子郵件的通知中,得知共識客戶端發布了一個新版本。

這個新版本標記為「高優先度」,並註明支援主網路,代號為 Pectra 的升級。

差不多的時候,小雨也收到共識客戶端類似的通知。

以太坊基金會的官方部落格也 宣布了升級日期 及內容。

2025 年 5 月 27 號。第 364032 個計票期。

時間非常精確。

社群網路上沸沸揚揚各種期待的聲音。

小雨抽空躲到秘密地下室裡,開啟作為節點的主機。主機已經靜靜的在那邊運作多年,沒人講的話完全不會注意到他的存在。

小雨照著他熟悉的流程, git pull 拉回新的版本,確認過版號,並開始建置新版本的客戶端軟體。

共識客戶端 ... 停止。
執行客戶端 ... 停止。

執行客戶端 ... 啟動。
共識客戶端 ... 啟動。

節點照著熟悉的流程,緩緩地找回同儕節點,以及同步喪失數分鐘的區塊。

接下來就等升級的那一天了。

升級當天

以太坊社群通常會有升級相關的活動與 直播 ,人們盯著節點日誌與儀表板上一個個新產出的區塊,倒數接近升級的那個計票期。直播中,相關的開發者與研究員也會介紹這次升級的內容。例如這次升級會帶來許多驗證者體驗的改善,以及提升系統的資料泡服務量。

「為什麼人們要那麼焦慮的看著產出的區塊呢?我能體會那種跨年般倒數的氣氛,但似乎人們也有某種隱憂」特務 K 問。

「這需要談到所謂『升級』背後做的事情」小雨說。

升級在升什麼

升級其實是一種對協議的更動:改動全節點驗證一個區塊的規則。

以這次資料泡的升級為例。在升級之前,用於定價的軟上限是每個區塊 3 個資料泡,硬上限是 6 個。升級之後,改為軟上限 6 個,硬上限 9 個。

如果有個區塊搭載 8 個資料泡,跑著舊版客戶端的節點是不會收下該區塊的。但跑新版客戶端的節點會收下。

升級是一種節點運行者需要明確同意的事情。如果使用者不同意升級,也就是不下載更新版的客戶端,會與所有舊版的節點形成自己的另外一個網路。舊版節點會認為新版節點所產出的區塊是不合協議規則,而將之拒絕。

這是為什麼升級,其實也稱「硬分岔」,新與舊的節點將互不相容。

升級當天的隱憂

以太坊因為避免單一節點的程式碼故障,癱瘓整個網路,因此實作了多種客戶端。

在升級的當下,所有使用新版客戶端軟體的節點,會開始套用新的協議規則來驗證區塊。

人們在觀察說,會不會有區塊是有些客戶端不收的,最後不同客戶端間形成了分岔鏈。

「不過這種狀況的機會不太大,以前也從沒發生過」小雨說。

因為在升級前其實開發者和研究者做足了許多準備,才讓升級能順利進行。

升級的背後:治理

以太坊協議的更動,是由一套 EIP 治理流程所決定的。

以太坊改進提案(Ethereum Improvement Proposals, EIP) 是以太坊協議的標準制定流程。

研究員通常會在 https://ethresear.ch/ 網站提出研究想法。在研究結果確定之後,以及某些實驗或軟體雛形開發成功後,會開始起草一個 EIP 。

https://eips.ethereum.org/ 網站上,我們可以看到各式各樣的提案。

其中 核心(Core)這一類型的提案影響比較重大,因為會影響到節點升級。

其他有名的類別如 ERC ,許多知名的標準如:現在到處都是的 ERC20 代幣, NFT 用的 ERC721 ,或是影響數位簽章安全的 EIP-712 。這類標準因為不牽扯節點升級,僅規範合約實作介面,一般稱 ERC (但一些比較早期的提案仍稱 EIP)。

提案發起後,提案人會繼續到 https://ethereum-magicians.org 論壇討論。

他們可能會在各種年會或開發者實體活動中,和實作客戶端的開發者討論。

最後一些開發、測試細節會在 核心開發者會議 All Core Dev Call 討論。並決定開發進度是否能納入該年的升級。

所有升級的提案的實作,也都會在測試網路先行升級,早先發現各種可能的狀況。

誰最有權力?

面對一個幾兆台幣的平台,升級事關重大。

又升級往往牽扯極其複雜的技術決策,決策又是人做出來的。到底誰會影響這些決策?誰又會被這些決策影響?

如果這裡面少少的人有辦法做出重大影響,是否會成為這個充滿各種防禦機制的平台的阿基里斯腱?

受影響的人

我們舉出一些範例,但這些並不是全部

  • 一般使用者
    • 平台的安全性、效率,對使用者的體驗都會有影響。交易便不便宜,可不可以不用付手續費
  • 驗證者
    • 驗證者是否能夠快速抵押、提款。或是否能押金很多時,不用跑很多個節點
  • 應用開發者 或合約開發者
    • EVM 是否可以使用回呼函式 callback
    • 合約部署貴不貴
  • 捲捲開發者
    • 是否可以用合理的成本使用密碼學的預編譯
    • 資料泡便不便宜

有影響的人

最終最終是全節點要不要接受升級。

但沒有辦法證明一個人是不是跑節點的人

一篇近期的 論文 列出一些觀察

  • 貢獻者繁多,但個別不到 30 個人有辦法推 Core EIP 和貢獻客戶端程式碼。
  • USDT USDC 等大穩定幣廠商,以及預言機廠商 Chainlink ,也許有能力干涉治理。
    • 前者因為需要實體資產背書穩定幣,他們可以說只背書升級前的分支 ,使得有升級分支上的穩定幣都不被承認而價值歸零。這種能力的威脅理論上可以去影響或否決某些提案。
    • 後者是因為許多 Defi 倚賴預言機的報價。如果預言機不想服務升級後的分支,會讓許多 Defi 壞掉。也能影響治理結果

面對反對的聲音

這套治理機制如何面對反對的聲音?

曾經 2016 時,DAO 硬分岔時,一群不同意分岔的人跑了一條以太坊經典(Ethereum Classic)分岔鏈,至今仍 持續運作中,並維持著算力制。

在以太坊升級為押金制時,一群不甘的中國礦工也自行形成了 ETHW 分岔鏈。至今似乎已經沒有運作。

在與主流沒有共識時,少數人能以分岔的方式運作。

但對於個別的提案,似乎治理機制會偏好幾乎沒有太多異議的提案。

一但爭議發生時,會將提案延後處理,待提案人與反對者溝通。近期的例子是 EOF 提案被從比較近的升級中 移除。固然技術複雜度是一個原因,但在先前的升級中,反對者的聲音沒有進到治理程序裡面也是個原因。

總結

儘管是銅牆鐵壁的系統,仍有一些咽喉點,需要人為治理來介入。

以太坊不是一個毫無人煙的無政府主義烏托邦,而是一個還年輕有許多熱情人士澆灌的技術產物。

以太坊也曾經展現出許多有創意的治理技術:例如冰河時期的設計。冰河時期是算力制時期的機制,他會讓出塊時間漸漸變慢,慢到系統再也無法有意義使用為止。這個設計是為了讓以太坊束縛其承諾的押金制轉換,人們必須在冰河時期到來之前,做出政治決策,要不升級成押金制,要不就在繼續升級推遲冰河時期。而這些決策,必須要有營運節點的個人的支持。

冰河時期相當是一條用數學做出來的,活的死線。

技術治理,也許不是 IT 人擅長的電腦議題。但仍是系統的一環,有許多挑戰與創意有待人們探索。


上一篇
分身又不乏術的電腦
下一篇
過度公開透明的電腦
系列文
那個有好多好多節點的電腦調查報告25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言