iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0

特務 K 和小雨和押金制吿一段落了。

特務 K 又再回想了一下這個盲人摸象的過程。

  • 以太坊是個點對點網路
  • 這個點對點網路可以提供服務
  • 人們可以在以太坊部署合約程式,也能和合約互動
  • 但要繳出手續費作為相應代價
  • 驗證者會打包交易到區塊裡,並廣播區塊
  • 全節點必須驗證這個區塊,這包含重新執行區塊裡的運算,確認運算結果
  • 點對點網路需要對全節點所同步的資料有共識
  • 驗證者抵押了鉅額的押金,築起攻擊者威脅共識安全的龐大攻擊成本
  • 以太坊單位時間能提供運算服務的量體,以每區塊的燃氣上限衡量。

在撰文的當下,以太坊的每區塊有 4 千 5 百萬的燃氣。

「這是從今年二月的 3 千 6 百萬燃氣調升的,在二月之前則是維持很長一段時間的 3 千萬」小雨說。

特務 K 又想起

  • 和以太坊合約互動的交易,其運算可大可小。大小也是用燃氣衡量
  • 運算其實被拆解為最基本的運算單元:操作碼
  • 操作碼上都有標記使用一次會消耗多少燃氣
  • 這樣可以確保節點雖然使用不同平台的電腦,但同樣的交易能算出一樣的結果,對於這段運算所消耗的燃氣也會計算相同
  • 操作碼可能有存粹運算的,可能有使用記憶體的,可能有使用硬碟的。但如果交易本身記載資料,廣播這筆交易消耗的網路資源,也會以燃氣的方式計算。

「想必提升區塊燃氣上限,代表節點每個區塊的時間,要再負擔更多運算了」特務 K 問「這樣節點不會癱瘓掉嗎?」

小雨解釋幾種提升區塊燃氣上限的情況:

  • 電腦有摩爾定律,隨時間硬體的性能會變好,硬碟容量會變多,網路頻寬會增加。但這個是很長時間才有這種條件
  • 客戶端的程式碼可能不斷增進效率,曾經有些情況是因為這樣調整的。
  • 最近這次,則是因為早先有些吃重的操作碼調貴。壞人使用該操作碼塞滿區塊癱瘓系統的風險降低了,可以酌情調整區塊燃氣上限。

「看起來,整個點對點網路的乘載上限,好像已經被個別節點電腦的硬體性能決定了」特務 K 這麼觀察。

但為什麼不直接跑兩條鏈,這樣一條鏈有 4 千 5 百萬的燃氣,兩條鏈就有九千萬了!特務 K 靈光一閃。

「但這樣系統的總押金,就得和這兩條鏈分享了」小雨說「兩條鏈各自的安全性都折半了」。

規模化的遊戲規則

提升點對點網路能提供的服務量,人們叫這個動作「 規模化(Scaling)

所以要做到規模化,我們得先建立一些遊戲規則:

  • 避免犧牲安全性 :整個總押金的安全性,必須要能被整個系統分享。
    • 犧牲安全性的錯誤示範:
      • 純粹拆分成多條鏈,會分散總押金,降低個別鏈的攻擊門檻。
  • 避免犧牲去中心化 :參與者仍能使用消費者等級的電腦來跑全節點。
    • 犧牲去中心化的錯誤示範:
      • 豪邁調高區塊燃氣上限
      • 豪邁調快出塊時間
      • 使用資料中心等級,性能超好的電腦,才能跑全節點。其實這點可以看成上面兩者綜合的結果,就是單位時間運算負擔超大,普通電腦跑不動了。

特務 K 仍在消化這些限制條件,並在腦中摸索一些想法。

小雨整理出一些觀察:

目前網路中的節點,每個節點都做一樣的事。的確達到避免單點故障、備份的效果了,但如果不同節點可以分工處理不同種類的交易,那就有機會規模化。當然這要在能分享總押金的前提之下實現,分兩條鏈的方案的確有節點分工,但失去前提。

運算資源

另外一種觀察是把運算資源拆開來看:針對 CPU 類的、記憶體類的、硬碟類的、和網路頻寬類的。

CPU 類的

注意節點做的運算,其實目的並不像一般電腦要把某個值算出來,而是去驗算某個計算結果:看人家有沒有算對。

因此 重新執行運算(Re-execution) 只是一種最基本的驗算方式。這邊能改進的方法有兩種思路:

  • 賽局式的驗算:樂觀的假設對方會算對。但對方得提供一筆押金,如果執行驗算結果不一樣,就可以懲罰對方。
  • 密碼學式的驗算:透過先進的 零知識證明(Zero Knowledge Proof) 技術,驗算變成用另外一種比較便宜的方式驗算。

記憶體類

現代的記憶體其實便宜到沒什麼運算負擔。記憶體一直不是重算的瓶頸。但記憶體仍然定價很高,目的是為了避免攻擊者攻擊用。

硬碟類的

硬碟類其實和其他類別的運算差很多。因為存下資料的瓶頸並不是一個區塊時間內存不存得完的問題。而是什麼時候會把硬碟用滿的問題。

每單位時間會要在硬碟新增的資料,會像膽固醇一樣慢慢堆積在血管裡,永遠走不掉。硬碟類的操作碼,燃氣被訂得很貴,目的是延緩最壞情況塞滿硬碟的時間。

但好消息是,其實硬碟實在不是區塊鏈運算裡面真的非用不可的東西。理由是一個密碼學工具:束縛(Commitment Scheme)。

「這詞一般台灣人都翻承諾,但我好討厭那個翻譯,因為承諾聽起來好像 Promise ,是一種可以打破,打破又沒責任的話語,在賽局或密碼學來講都不通」小雨說

「我心中的 Commitment Scheme 比較像酷拉皮卡的束縛中指鏈,被捆住的人無法掙脫」小雨很想補充。

雜湊函式,或是雜湊樹,就是一種簡單的密碼學束縛,可以讓你把一個資料綁定一個雜湊值。

與其把一團資料存在硬碟,其實只要存雜湊值即可。

下次需要那團資料的整體或一部分時,只要提供成員證明與雜湊值相驗即可。

這邊有幾個假設:

  1. 那團資料要確實被發佈。如果鏈上徒留雜湊值,卻沒有人真的持有那團資料,就好像存在硬碟但硬碟毀損一樣,這機制就無法作用了。
  2. 那團資料未來要有人拿得出來。如果沒有人存下來,那和沒發佈一樣。但對大多數應用而言,這不是太苛求的假設。

網路頻寬類

區塊在點對點網路中廣播,需要使用網路頻寬。世界各地的網路基礎建設參差不齊。

如果區塊裝載的資料太多,有時會不太容易廣播出去,有些節點會收不到。

由於前面硬碟類的使用,未來十分倚賴網路頻寬的使用。

這邊沒什麼密碼學黑科技,但一點巧妙的基本密碼學技巧加上節點分工,人們有些規模化資料發佈的方案。

運算資源定價

最後一種規模化的做法,其實是去檢討運算資源定價本身。

以前的燃氣,其實是把多種性質各異的運算資源,用同樣一種計價單位捆綁起來。

而區塊燃氣上限的訂定,都是以每種運算資源的最壞使用情況去訂定。

但平均而言,每種資源都沒有用到真的全節點電腦的極限。

最近協定設計的方向是慢慢把不同運算資源給予不同的燃氣單位計價。例如,代表網路頻寬資源的資料泡(blob),有其燃氣單位: blob gas 。

「為什麼當初不直接設計多種計價單位呢?」特務 K 問「為什麼現在才這麼做?」

「因為要打包包含多種計價單位的交易,並最大化利潤是種計算上很複雜的背包問題,讓礦工節點的設計有點困難」小雨說「但現在區塊建造者都在搞複雜排序去從交易壓榨提取值了,先前的顧慮對區塊建造者而言就沒那麼嚴重了。」

在運算資源定價重新設計之後,可以提升資源使用的效率。

總結

「綜合以上討論,要規模化必須得獲得總押金完整的保護,還得避免犧牲去中心化」特務 K 總結。

他也列出各種規模化的因素:

  • 硬體科技進步,自然提升節點性能
  • 密碼學進步,提升更有效率的驗算方式
  • 各種運算資源有各自的規模化策略
  • 善用節點分工,少量犧牲備份,換取運算資源有效利用
  • 完善資源定價,解放資源利用率

「我們之後會看一些具體的例子」小雨說。


上一篇
幫電腦打工 要給多少薪水?
下一篇
能使出相信我之術的電腦
系列文
那個有好多好多節點的電腦調查報告20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言