Optimistic Rollup 如何運作
節錄來自 OVM 團隊的 Kelvin Fitcher 的講解:
Optimistic Rollup 是 Ethereum Layer 2 的一個解法。”Rollup” 背後的邏輯就是捨棄在昂貴的 Layer 1 上運行智能合約,我們可以選擇在 Layer 2 上運行,然後再把結果存在 Layer 1 上。所以實際上可以執行一堆的交易,最後只記錄一次的結果回鏈上。
好處當然是把吞吐量提高了,但問題是,我們到底要如何驗證這個寫回鍊上的結果是正確的?
Optimistic Rollup 的方法就是:要允許在鍊上重新跑過這些交易,一但證明某筆交易是錯的,也可以獲得獎勵。更底層的來說, Optimistic Rollup 透過智能合約實作了 EVM,他們稱作 OVM,整個 VM 是用 Solidity 寫的。
但這樣只解決了簡單的問題。
很多智能合約會使用到外部的狀態(例如 block.number
)而這些值在 Layer 2 上是不存在的或是根本已經是不對的。
所以他們做了兩件事:
- 禁止某些會有不確定效應的 EVM 指令集
- 如果真的需要用到這些會有不確定效應的指令,則這些指令會被導到一個獨立的智能合約,稱作 Execution Manager。
第二個問題是,要是 Execution Manager 接受了錯誤的指令,要怎麼停下來。一個外部的智能合約被呼叫時,可以撤銷這個呼叫,但無法撤銷原始調用它的程序。
所以直接的解法就是,要求所有調用 Execution Manager 的呼叫都要遵照回傳的指示暫停執行且撤銷呼叫。
簡單來說,不是所有的智能合約都可以直接在 OVM 上執行,需要另外一個轉譯器 (Transpiler) 來把它轉成 OVM 支持的版本。
儘管還在測試網階段,但我們接下來有望看到 Synthetix & Uniswap 採用Optimistic Rollup。
Layer 2 的春天終於要來了嗎 🤔
參考資料: