吐槽君烤仔 | 波卡為什麼絕口不提跨鏈延遲?

在烤仔的上一篇文章《吐槽君烤仔 | 波卡從“萬鏈互聯”到“one鏈who連”》中,我們指出波卡的跨鏈延遲不足以支撐起波卡生態所構築的願景,最終會使得波卡的泡沫破裂。在本期文章中,我們來解構波卡的協議設計,來探尋波卡諱莫如深的跨鏈延遲究竟是多少

根據波卡的官方技術文件,在波卡的架構中,有三個關鍵角色:提名人(nominator),驗證人(validator),收集人(collator)。驗證人大致相當於 relay chain (相當於核心鏈)的 pos 全節點。提名人負責選舉驗證人。收集人大致相當於 parachain (相當於側鏈)的全節點。這裡我們要分析的,就是驗證人和收集人的關係。下面,我們用核心鏈、側鏈指代波卡中的 relay chain 和 parachain。

為了讓平行鏈上的狀態可靠地同步到核心鏈上,收集人(側鏈全節點)每生成一個區塊,就要相應的產生一個有效性證明 (proof of validity)區塊。驗證人(核心鏈全節點)透過側鏈開發人提供的演算法驗證這個有效性證明區塊。如果驗證透過,就把側鏈區塊頭及相關後設資料寫入核心鏈中,相當於側鏈的狀態同步到了核心鏈上。

在官方預設方案中,這個有效性證明區塊需要包括:所有交易內容、處理每筆交易時讀到的資料(如轉賬傳送人餘額)及其證明、處理每筆交易時寫入的資料(如更新轉賬傳送人餘額)及其證明。這樣,驗證人(核心鏈全節點)就不需要儲存任何側鏈的狀態,只需要重新執行一遍交易就可以了。但在 cpu 開銷上,驗證人(核心鏈全節點)仍要執行側鏈的每一筆交易。顯然,驗證人(核心鏈全節點)不可能同時執行每一個側鏈的每一筆交易。波卡的方案是,驗證人同時只驗證一個側鏈,但隨著時間的推移,同一個驗證人會在不同側鏈之間切換,頗有些巡視組的感覺。

但是,如果波卡有 100 個側鏈,就意味著同一時間一個側鏈只有 1/100 個驗證人。如果這些驗證人恰好都是壞人,就可以與這個側鏈的一個收集人(側鏈全節點)合謀,在側鏈執行上弄虛作假,並且同步到主鏈上。這種情況下,側鏈的安全性將毫無保證。於是,波卡設定了“賞金獵人”和“隨機巡視”的機制賞金獵人維護一個側鏈的全節點,當虛假的側鏈區塊被提交到核心鏈上時,賞金獵人可以透過舉報獲得賞金。除了賞金獵人之外,波卡還會隨機秘密分配驗證人(核心鏈全節點)來檢察。

這個方案非常像以太坊裡面 optimistic rollup 的思路。一些人負責將側鏈的資料提交到主鏈上,另外一些人負責監督和舉報錯誤提交。這個思路最大的問題是,為了留出充足的舉報時間,從側鏈區塊提交核心鏈到側鏈區塊被核心連結收需要相當長的時間。在 polkadot 原始白皮書(polkadot.network/polkadotpaper.pdf)提到的以太坊跨鏈方案中,以太坊跨入波卡需要半個小時,而波卡跨回以太坊需要一個小時。白皮書特別提到,波卡跨回以太坊之所以需要一個小時時間,是為了給舉報留足時間。雖然白皮書沒有明確說明核心鏈與側鏈之間的跨鏈延遲,但可以推斷,這段時間應當也是十分鐘級到小時級。這意味著,一個波卡側鏈發出的跨鏈訊息,需要等待幾十分鐘時間,然後才能被訊息接收方收到和處理。

如果波卡是一個聯通不同區塊鏈的解決方案,花幾十分鐘時間將資產從以太坊跨至其他鏈是可以接受的。然而,在今天的波卡生態中,每個 defi 應用和基礎設施成為了一個側鏈,在以太坊上的合約間互動、在波卡這裡變成了長達幾十分鐘的跨鏈

當然,波卡可以選擇一個激進的方案,放棄安全性換取效率:為每一個區塊留出極小的錯誤證明 (proof of fraud) 時間視窗,甚至不給錯誤證明留時間。換句話說,就是拋棄錯誤證明這個安全性基石。這樣,雖然可以顯著地降低跨鏈延遲,但也是在自掘墳墓。跨鏈延遲一小時的波卡或許還有一定的價值,毫無安全性可言的波卡就只是空氣了。

最終,我們的結論是,在跨鏈時間延遲上,波卡平行鏈(側鏈)與以太坊 layer 2 相比並沒有優勢。以太坊 layer 2 做不好的事情,波卡一樣做不好。


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读