作者: mutourend & lynndell, Bitlayer Research Group
1.引言
Discreet Log Contract (DLC) 是由麻省理工學院的Tadge Dryja在2018年提出的一種基於預言機的合約執行框架。 DLC允許兩方根據預先定義的條件進行有條件支付。雙方預先確定可能的結果並進行預簽名,並在預言機簽署結果時使用這些預簽名來執行付款。因此,DLC在確保比特幣存款安全的同時,也實現了新的去中心化金融應用。
上一篇文章《DLC原理解析及其優化思考》總結了DLC在隱私保護、複雜合約、資產風險低等方面的優勢,也分析了DLC存在密鑰風險、去中心化信任風險、串謀風險等問題,並將去中心化預言機、門限簽名、樂觀挑戰機制等引入DLC,解決其應面臨的各種問題。由於DLC涉及預言機、Alice和Bob三個參與者,不同參與者之間串謀攻擊窮舉是相對複雜的,導致預防策略也是相對複雜度的。複雜的防禦策略不是完美的,不符合大道至簡,缺乏簡潔美。
在比特幣中,任意參與方的任意行為均需要透過UTXO實現。因此,使用共識機制確保UTXO正確,則能夠抵抗任意攻擊。類似,在DLC中,任意參與者的任意行為都需要透過CET(Contract Execution Transaction)實現。因此,使用樂觀挑戰機制確保CET正確,則能夠抵抗任意攻擊。具體而言,預言機質押2BTC後,則能簽署CET。在CET中加入樂觀挑戰機制。如果CET不被挑戰,或成功應對挑戰,則CET正確,能夠完成結算,預言機解除質押且獲得手續費;如果Oracle試圖作惡,則任何人都可成功挑戰,該CET將無法結算,預言機損失質押金且該預言機無法再對同一CET簽名。符合大道至簡,具有簡潔美。
2.DLC原理
Alice和Bob簽署對賭協議:投注第ξ個區塊的雜湊值是奇數或偶數。如果是奇數,則Alice贏得遊戲,可提取資產;如果是偶數,則Bob贏得遊戲,可提取資產。使用DLC,透過預言機傳遞第ξ個區塊資訊構造條件簽名使得正確的獲勝方贏得所有資產。
橢圓曲線生成元為G,階為q。預言機、Alice和Bob各自的密鑰對分別為(z, Z), (x, X), (y, Y)。
注資交易(鏈上): Alice和Bob一起創建一筆注資交易,各自將10BTC鎖在一個2-of-2的多簽輸出(一個公鑰X屬於Alice,一個公鑰Y屬於Bob)。
建構CET(鏈下):Alice和Bob創建CET1和CET2,用於花費注資交易。
預言機計算承諾R = k · G,然後計算S和S’
S := R – hash(OddNumber, R) · Z
S’ := R – hash(EvenNumber, R) · Z
則Alice和Bob對應的新公鑰如下:
PK^{Alice} := X + S
PK^{Bob} := Y + S’.
結算(鏈下->鏈上):當第ξ個區塊成功生成,則預言機根據該區塊的雜湊值,簽署對應的CET1或CET2。
如果哈希為奇數,則預言機如下簽署s
s := k – hash(OddNumber, R) z
廣播CET1。
如果哈希為偶數,則預言機簽署s’
s’ := k – hash(EvenNumber, R) z
廣播CET2。
提幣(鏈上):如果預言機廣播CET1,則Alice可以計算出新私鑰,並花費鎖定的20個BTC
sk^{Alice} = x + s
如果預言機廣播CET2,則Bob可以計算出新私鑰,並花費鎖定的20個BTC
sk^{Bob} = y + s’
Bitlayer研究小組發現:上述過程中,任意行為都需要透過CET來實現。因此,只需要使用樂觀挑戰機制確保CET正確,就能夠抵抗任意攻擊。錯誤的CET會被挑戰,不被執行,而正確的CET會被執行。此外,預言機需要為惡意行為付出代價即可。
待挑戰程序為f