特務 K 和小雨和押金制吿一段落了。
特務 K 又再回想了一下這個盲人摸象的過程。
在撰文的當下,以太坊的每區塊有 4 千 5 百萬的燃氣。
「這是從今年二月的 3 千 6 百萬燃氣調升的,在二月之前則是維持很長一段時間的 3 千萬」小雨說。
特務 K 又想起
「想必提升區塊燃氣上限,代表節點每個區塊的時間,要再負擔更多運算了」特務 K 問「這樣節點不會癱瘓掉嗎?」
小雨解釋幾種提升區塊燃氣上限的情況:
「看起來,整個點對點網路的乘載上限,好像已經被個別節點電腦的硬體性能決定了」特務 K 這麼觀察。
但為什麼不直接跑兩條鏈,這樣一條鏈有 4 千 5 百萬的燃氣,兩條鏈就有九千萬了!特務 K 靈光一閃。
「但這樣系統的總押金,就得和這兩條鏈分享了」小雨說「兩條鏈各自的安全性都折半了」。
提升點對點網路能提供的服務量,人們叫這個動作「 規模化(Scaling) 」
所以要做到規模化,我們得先建立一些遊戲規則:
特務 K 仍在消化這些限制條件,並在腦中摸索一些想法。
小雨整理出一些觀察:
目前網路中的節點,每個節點都做一樣的事。的確達到避免單點故障、備份的效果了,但如果不同節點可以分工處理不同種類的交易,那就有機會規模化。當然這要在能分享總押金的前提之下實現,分兩條鏈的方案的確有節點分工,但失去前提。
另外一種觀察是把運算資源拆開來看:針對 CPU 類的、記憶體類的、硬碟類的、和網路頻寬類的。
注意節點做的運算,其實目的並不像一般電腦要把某個值算出來,而是去驗算某個計算結果:看人家有沒有算對。
因此 重新執行運算(Re-execution) 只是一種最基本的驗算方式。這邊能改進的方法有兩種思路:
現代的記憶體其實便宜到沒什麼運算負擔。記憶體一直不是重算的瓶頸。但記憶體仍然定價很高,目的是為了避免攻擊者攻擊用。
硬碟類其實和其他類別的運算差很多。因為存下資料的瓶頸並不是一個區塊時間內存不存得完的問題。而是什麼時候會把硬碟用滿的問題。
每單位時間會要在硬碟新增的資料,會像膽固醇一樣慢慢堆積在血管裡,永遠走不掉。硬碟類的操作碼,燃氣被訂得很貴,目的是延緩最壞情況塞滿硬碟的時間。
但好消息是,其實硬碟實在不是區塊鏈運算裡面真的非用不可的東西。理由是一個密碼學工具:束縛(Commitment Scheme)。
「這詞一般台灣人都翻承諾,但我好討厭那個翻譯,因為承諾聽起來好像 Promise ,是一種可以打破,打破又沒責任的話語,在賽局或密碼學來講都不通」小雨說
「我心中的 Commitment Scheme 比較像酷拉皮卡的束縛中指鏈,被捆住的人無法掙脫」小雨很想補充。
雜湊函式,或是雜湊樹,就是一種簡單的密碼學束縛,可以讓你把一個資料綁定一個雜湊值。
與其把一團資料存在硬碟,其實只要存雜湊值即可。
下次需要那團資料的整體或一部分時,只要提供成員證明與雜湊值相驗即可。
這邊有幾個假設:
區塊在點對點網路中廣播,需要使用網路頻寬。世界各地的網路基礎建設參差不齊。
如果區塊裝載的資料太多,有時會不太容易廣播出去,有些節點會收不到。
由於前面硬碟類的使用,未來十分倚賴網路頻寬的使用。
這邊沒什麼密碼學黑科技,但一點巧妙的基本密碼學技巧加上節點分工,人們有些規模化資料發佈的方案。
最後一種規模化的做法,其實是去檢討運算資源定價本身。
以前的燃氣,其實是把多種性質各異的運算資源,用同樣一種計價單位捆綁起來。
而區塊燃氣上限的訂定,都是以每種運算資源的最壞使用情況去訂定。
但平均而言,每種資源都沒有用到真的全節點電腦的極限。
最近協定設計的方向是慢慢把不同運算資源給予不同的燃氣單位計價。例如,代表網路頻寬資源的資料泡(blob),有其燃氣單位: blob gas 。
「為什麼當初不直接設計多種計價單位呢?」特務 K 問「為什麼現在才這麼做?」
「因為要打包包含多種計價單位的交易,並最大化利潤是種計算上很複雜的背包問題,讓礦工節點的設計有點困難」小雨說「但現在區塊建造者都在搞複雜排序去從交易壓榨提取值了,先前的顧慮對區塊建造者而言就沒那麼嚴重了。」
在運算資源定價重新設計之後,可以提升資源使用的效率。
「綜合以上討論,要規模化必須得獲得總押金完整的保護,還得避免犧牲去中心化」特務 K 總結。
他也列出各種規模化的因素:
「我們之後會看一些具體的例子」小雨說。