我們將介紹一種全新的方式來設計位元幣上的智能合約,在我們以前的所有合約中,所有內容都嵌入在位元幣腳本中并由礦工進行驗證,在新方法中,我們將結合以前的合約,在鏈下驗證交易,令人驚訝的是,它可以保持鏈上合約的不信任性質,同時大大提高效率和私有性,我們通過改進公平的拋硬幣合約來舉例說明總體的思路,
實用公平硬幣拋
使用基于哈希的承諾方案,我們引入了一種無需受信任的第三方即可實作公平拋硬幣的合約,但是在實際應用之前它有一個小問題:即當其中一方知道了對方的秘密之后,他/她發現自己輸掉了比賽,即使他/她不能拿回賭注,也可以簡單地中途退出,
定時承諾方案
解決上述問題的一種方法是使用定時承諾方案 (TCS1),基本思想是讓一方存入一定的保證金,如果他誠實地遵守協議并在一定時間內公開承諾(即透露他的秘密),這筆錢將被退還,如果中止,他將被沒收保證金,
1. 承諾階段
Alice 創建 Tx0, 并將一些保證金鎖定在名為 TimedCommit 的合約中,可以通過兩種方式使用這筆資金:
-
Alice 公開秘密并簽名;
-
時間 t 之后,Alice 和 Bob 都簽名,
她還用時間鎖 t 簽署了 Tx2 并將其提供給 Bob,注意 Bob 會在本地/鏈下驗證 Alice 的簽名以及時間鎖 t,
contract TimedCommit {
bytes aliceHash;
PubKey alice;
PubKey bob;
public function open(bytes aliceNonce, Sig aliceSig) {
require(sha256(aliceNonce) == this.aliceHash);
require(checkSig(aliceSig, this.alice));
}
public function forfeit(Sig aliceSig, Sig bobSig) {
require(checkSig(aliceSig, this.alice));
require(checkSig(bobSig, this.bob));
}
}
2. 公開階段
在時間 t 之前,Alice 可以通過廣播包含她的秘密和簽名的 Tx1 贖回資金,否則,Bob 可以通過在 t 之后廣播Tx2 來獲得資金,

使用 TCS 抑制拋硬幣中的中途退出
為了阻止任何一方中途退出擲硬幣,各方必須在設定階段的Tx0 中支付一定的押金,押金必須大于下注金額才能生效,生成的交易圖2 如下所示:

在原始交易 Tx0 的設定中,只有1個包含合約 CoinToss 的輸出,引入TCS之后,還有兩個額外的輸出來抑制兩個參與者的中途退出,
請注意,即使創建了6筆交易,由于位元幣具有防止雙花的功能,最多也將只有4筆交易最終上鏈,
概括
當多個不信任方希望在不依賴受信任第三方的情況下安全和公平地開展業務時,可以將上述方法推廣到任意型別的合約,因此,智能合約成為我們之前介紹的智能合約超集,它完全由礦工運行和驗證的計算機代碼(即Script / sCrypt)組成,它們還可以包含保持脫鏈的交易和鏈下驗證的業務邏輯,這更類似于計算機網路領域中的協議設計(例如,TCP中的三次握手)和加密技術(例如,Diffie-Hellman密鑰交換),即使有人耍賴,也可以確保協議安全和公平地執行,并且是鏈下驗證的,
為保持鏈上智能合約(又名1.0)的無需信任優勢,以此方式設計的智能合約(又名2.0)享有顯著優勢,值得注意的是,位元幣的 UTXO 模型適用于這種簽約方式,而帳戶模型很難實作這一目標,甚至是不可能的,
效率
在以上示例中,我們節省了6筆交易中的2筆,鏈上交易減少了33%,我們期望在實際應用中節省大量交易費用,而實際應用中的交易圖則更大,例如,如下圖所示,當它退化為深度為 n 的二叉樹時,只需在鏈上完成 log(n) 個交易(紅色箭頭),而不是 n 個!

隱私
由于只有一部分交易在鏈上進行結算,因此僅關注區塊鏈上交易的任何人都無法獲得完整的資訊來了解正在發生的事情,同時,合約涉及的各方可以保留所有交易,包括未出現在鏈上的交易,這即增加了隱私性,同時也保留了必要時的追溯能力,
這只是眾多 2.0 合約示例中的第一個,敬請關注,
…
[1] Andrychowicz, Marcin & Dziembowski, Stefan & Malinowski, Daniel & Mazurek, ?ukasz. (2014). Fair Two-Party Computations via Bitcoin Deposits. 105–121. 10.1007/978–3–662–44774–1_8.
[2] Bitcoin Class: The Traveling Salesman Problem and the Transaction DAG https://youtu.be/hd2kn6NU19M
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/278527.html
標籤:區塊鏈
