評論:那件波卡不敢在白皮書中明說的事

波卡是一個以平行鏈跨鏈為主要特色的公鏈項目。在波卡生態中,一個被頻繁提到的一點是:開發者可以根據自己的需要開發獨立的平行鏈,而波卡的生態將為所有的平行鏈提供安全性。因為波卡是一條公鏈,所以波卡的安全性就是公鏈安全性,

所謂謊言重復一千遍就會成為真理,當所有人都在重復一個觀點的時候,人們往往會選擇相信這個觀點,而不是自己去探尋思考波卡的安全性設計能否站住腳,波卡基于 Validator 的巡查制度,究竟能為平行鏈提供多高的安全性,其實是值得質疑的,

這一期,我們來討論一下波卡共識協議中與安全相關的設計內容,以及不同角色的參與方應該如何應對,

幾周前,烤仔曾經質疑了波卡的跨鏈延遲,在社區伙伴的幫助下,烤仔注意到了 Gavin Wood 在 hackmd.io 的部落格中提到了跨鏈延遲,他是這么說的:

Complete finality might take up to 60 seconds for a parachain transaction, and a few seconds less for a Relay chain transaction.

大意是說,波卡的確認時間在一分鐘上下。烤仔對此是驚訝的,因為在波卡的 Validator 巡查制度中,同時驗證一個平行鏈的 Validator 并不是很多,如果這少數的 Validator 作惡,就會把錯誤的賬本狀態通過中繼鏈傳染到其他的平行鏈上去,最終摧毀整個波卡的正確性和安全性,而為了緩解這種安全威脅,允許任何人提交錯誤證明(這些人稱為 fishermen)、留出足夠時間給錯誤證明,是波卡公鏈安全中重要的一環。

在以太坊的二層協議 Optimistic Rollup 中,提交錯誤證明的時間窗口是以天計的,然而,這個時間窗口,在波卡中被設成了不到一分鐘。Gavin Wood 也解釋了為何設計如此短的時間窗口:

As of the most recently published deisgn, fishermen are no longer required for our baseline security guarantees as we have introduced explicitly-appointed secondary-checkers from the validator set (see Section 4.4.2 Validity and Availability in Overview Paper). Fishermen are kept since they only bolster security with no other implications.

(注: deisgn 為原文的拼寫錯誤)

大概意思是說,因為波卡引入了 secondary-checkers,所以原先“允許任何人提交錯誤證明”的設計就不需要了。如果 fishermen 能趕得上一分鐘內的提交窗口,那它還可以提交錯誤證明,但波卡已經不關心它趕不趕得上了。

這個 secondary-checkers 是個啥,為什么可以取代 fishermen 的地位?白皮書 4.4.2 章節是這么說的,

The third level of validity checking is executed by a few randomly and privately assigned validators. We determine the number of validators in the third level of validity checking considering the amount of invalidity reports given by fishermen and unavailability reports given by collators.

這個設計在烤仔之前的文章中也提到過。波卡引入了秘密檢查的 Validator,有點類似于暗訪調查組。暗訪的 Validator 數量沒有具體說明,只說是 “a few”,具體的參數要根據 fishermen (任何一個提交錯誤證明的人) 和 collator (側鏈全節點) 報告的異常數量來看,暗訪調查組的設計能夠防止攻擊者與平行鏈當前的 Validator 合謀,因為你不知道暗訪的 Validator 是誰,但這種設計無法阻止一個壞的 Validator 被選進暗訪組. 這個設計可以加強波卡生態的安全性、提升攻擊難度,但不能完全取代 fishermen, 因為它無法排除暗訪的 Validator 自身是惡意的情形,

但,波卡就是放棄了 fishermen.

波卡在白皮書中并沒有講他把錯誤證明窗口設成了極為激進的一分鐘,也沒有講他們在安全設計中放棄了 fishermen,在一篇和另一個公鏈項目對比性能時,Gavin Wood 又拋出這個一分鐘的參數來展示波卡的性能,而對安全性輕描淡寫一筆帶過,

跨鏈延遲一小時的波卡固然有它的局限性,但如果為了追求效率而放棄了提供安全性保障,那么波卡越繁榮,就越能吸引攻擊,最終摧毀的是整個波卡的生態,如果波卡堅持這種不安全的方案,生態各方又應該如何應對呢?

對于波卡平行鏈的開發者,烤仔的建議是 Don’t be evil。上述討論的所有安全性威脅,都需要平行鏈全節點參與合謀。即使其他平行鏈的作惡行為會通過中繼鏈傳染過來,但只要保證自己的平行鏈不首先出錯,就足以問心無愧了。

對于波卡未來生態的用戶,要謹慎地選擇平行鏈。波卡的 Validator 機制不足以提供充足的安全性,但平行鏈的全節點可以彌補。選擇節點足夠多、足夠分散的平行鏈,可以緩解這一安全性問題,但是,一個平行鏈被 Validator 操縱的后果是會隨著中繼鏈傳染的,即使自己選擇的平行鏈足夠可靠,其他不可靠的平行鏈通過跨鏈消息發來的資產也會影響這一平行鏈的安全性。

對于 DeFi 合約的開發者,波卡跨鏈的故事雖然新穎,但波卡生態著實沒有帶來什么新東西,功能上,諸如零知卷疊、隱私計算等新功能均可以通過 EVM 合約或者二層網路設計來完成,性能上,波卡的技術架構注定了平行鏈單鏈性能只會比以太坊更差,波卡只能不斷講多鏈的總性能比以太坊單鏈好。

但是多鏈無法解決好跨鏈延遲和安全性之間的平衡,使得互操作性成為一種需要犧牲安全性才能做到的事情,這是在整個公有鏈領域獨此一家的。而 EVM 生態的性能問題,也已經被各種新興公鏈解決。

最后,波卡這個“放棄 fishermen”的改動是一個定時炸彈,你永遠不知道它什么時候會炸,在一個足夠去中心化的、兼容 EVM 的、有用戶和生態基礎的、高性能的公有鏈上做開發,才是一個對產品發展和用戶負責的選擇,

最后,烤仔也提醒大家,警惕波卡不公開協議修訂的安全風險。像“將 fishermen 從安全設計中排除”這種重大改動,波卡都是在和別人比性能時才透露的,而至今沒有體現在白皮書里,波卡可以對此有自己的解釋,畢竟 fishermen 并沒有被完全去除,如果所有的 fishermen 都有比 Optimistic Rollup 的錯誤提交者高幾十倍的效率的話,波卡的安全性不會有任何影響,

對于這種解釋,我想波卡的忠實信仰者們一定是會接受的,

0 条回复 A文章作者 M管理員
    暫無討論,說說你的看法吧