一文讀懂 LeapDAO 如何讓智能合約在 Layer 2 上運行

原文標題:《引介 | LeapDAO:打造可以在 Plasma 上運行的智能合約》

以太坊社區的核心目標之一是將智能合約放到二層區塊鏈上執行。這個目標具有很大的發展潛力,能夠擴大以太坊的資金轉移量,增強以太坊的規則執行力度。為了實現這一目標,我們設計了一個名為 SolEVM Enforcer 的計算驗證游戲,讓 EVM 字節碼可以在鏈下執行。SolEVM 由 3 部分組成:

  • 鏈上步進器—— Enforcer 合約
  • 鏈下解釋器—— ECMAScript 的執行方式跟 Solidity 合約相同,以此實現高性能的鏈下執行
  • ——帶有易于開發者理解的接口

SolEVM enforcer 本質上類似于 Truebit OS ,可以獨立于 Plasma 鏈使用,因此有很多用例:

  • 執行區塊鏈游戲的規則
  • 驗證因數據量過大而無法在鏈上驗證的零知識證明
  • 驗證合約內的工作量證明
  • 執行正確的唱票程序
  • 作為使用以太貓等非同質化代幣的狀態性 dApp 的側鏈

相比于 Truebit OS ,SolEVM enforcer 既能夠用 WASM 代碼,也能夠用 EVM 字節碼運行。要對以太坊主網和 Plasma Leap 上的合約正確執行與否作出判斷,這種代碼兼容性就是必須的。

SolEVM enforcer 將被整合進 Plasma 鏈,防止合約被非法執行(invalid execution)。總的來說,LeapDAO 社區正在開發兩個獨立的系統,而且打算將二者融合起來,如下表所示:

一文讀懂 LeapDAO 如何讓智能合約在 Layer 2 上運行 (1)

下面幾節將介紹 SolEVM enforcer 的必要開發步驟,以及如何將它嵌入 Plasma 鏈。雖然 Plasma 鏈制定了自己的里程碑路線圖,我們團隊的主要貢獻是通過計算驗證游戲來實現智能合約在 Plasma 上的運行。我們會基于 Plasma 的里程碑路線圖來講解我們的開發進度。

里程碑 1 —— 拂曉之歌

內容:SolEVM Enforcer 允許計算在鏈下進行,并為每一個執行步驟生成證明。計算結果會記錄在鏈上,其他人可以挑戰先前生成的證明。最后會生成一個去中心化的計算預言機,解題者(solver)可以將鏈下計算結果與保證金一起放入預言機,發現無效計算結果的挑戰者可以獲得獎勵。

局限性:在這個里程碑中,我們取消了包含 CALLDATACOPY, CODECOPY, RETURNDATACOPY, EXTCODECOPY 操作碼的計算,因為它們的證明過程比較復雜。

此外,在我們的整個路線圖中都不會支持下列操作碼,因為這些操作碼的富狀態性(statefulness):

  • SLOAD STORE
  • CREATE CREATE2
  • CALLCODE

上文提到的去中心化計算預言機在博弈設計上仍不夠穩健,開發人員必須為挑戰者完善激勵機制。

可交付成果:這個里程碑能夠將簡單的鏈下計算結果(由任何未禁用操作碼組成的 EVM 字節碼)整合到任意智能合約內。開發人員可以使用已部署的實例代碼和庫,將這一功能加入他們的 dApp 里。

  • 部署在測試網上的鏈上步進器。
  • 鏈下解釋器和簡單代碼庫已經打包發布在了 npm. CLI 工具上,用來進行執行登記(Enforcer)和爭議處理(Dispute)。
  • 關于如何將計算結果上鏈以及如何在爭議中勝出的博客文章和講解視頻。

里程碑 2 —— 銅墻鐵壁

內容:將 SolEVM Enforcer 整合入 More Viable Plasma 的退出機制(exit game)中。這樣一來,就能確保只有包含有效計算結果的交易可以參與 Plasma 退出交易機制的挑戰游戲,而且智能合約能夠在第二層區塊鏈上執行。

局限性: 我們需要引入兩種措施:要么,我們引入一種緊湊的證明,用來給 CALLDATACOPY、CODECOPY、RERURNDATACOPY 和 EXTCODECOPY 操作碼提供數據;要么,我們引入對 callData、代碼、returnData 和內存的大小限制。這將決定 SolEVM 可承受的計算量極限。正如上一個里程碑中所說,只有無狀態計算才能夠執行。

可交付成果:

  • 部署在主網上的鏈上步進器
  • 在鏈上步進器上添加一個能夠翻譯 Plasma Leap 交易的組件
  • 整合進 Plasma 節點的鏈下解釋器
  • 能夠監控所有退出 Plasma 鏈的操作并且挑戰無效計算的「瞭望塔」
  • 關于如何在 Plasma 鏈上編寫并運行智能合約的文檔
  • 挑戰游戲設計完成,等待審計

里程碑 3 —— The Kink-Spring

內容:前兩個階段只能執行無狀態計算,極大地限制了 Plasma 鏈上智能合約的應用范圍。到了這個里程碑階段,我們重新引入了存儲措施,不過不是用 SLOAD、SSTORE 操作碼,而是可以由合約直接使用的非同質代幣。存儲和合約資金可以單獨通過 More Viable Plasma 的退出機制退回,智能合約可以從第二層區塊鏈上遷移至主網。

局限性:在單一運營者設置下運行的 Plasma 鏈雖然能夠確保計算安全地運行,但是仍有可能會審查交易。dApp 可能不愿意遷移到這樣的環境中,除非 Plasma 鏈通過 PoS 設置實現了抗審查性。

可交付成果

  • 支持 / 轉至君士坦丁堡分叉。我們不會實現 CREATE2 操作碼。
  • 關于如何編寫有狀態的 Plasma 合約的文檔
  • 組織一場 Plasma dApp 的黑客馬拉松
  • 退出機制設計完成,等待審計

作為一個開源軟件社區,Leap 是在各成員的努力之下發展起來的。看過了上面的路線圖之后,你是不是心動了呢?不管你有什么興趣和技能,我們提供了很多參與機會,一起來提高區塊鏈的可擴展性,將區塊鏈技術帶入千家萬戶吧!

作者:以太坊愛好者 | 來源:鏈聞