Ardor 輕量級合約:(幾乎)採用新的分階段交易類型的無需信任的方式?
我在 Bitcointalk 上問過這個問題,但到目前為止沒有得到任何回應。正如 Lior 提議讓 Stackexchange 成為關於 Ardor 的主要交流媒介,我在這裡問。
正如我在常見問題解答中所讀到的,輕量級合約的主要缺點是它們並非完全無需信任,因為您無法保證“合約所有者”真正執行合約。
例如,如果合約是一個“交換合約”,它應該給你一些 ARDR 代幣(例如這個 IGNIS/ARDR 交換),那麼如果合約所有者不執行合約,你將不會得到代幣(並且契約所有者可以竊取您的 ARDR)。
您可以自己執行合約,但 AFAIK 您無法實現“合約所有者”在沒有自己執行的情況下簽署交換交易 - 您只能驗證合約是否按照原始碼執行了他應該執行的操作。(如果我在這裡錯了,請糾正我。)
但也許您可以執行以下操作:
- 您首先自己執行合約,並根據您計劃交易的輸入(在這種情況下,用您的 ARDR 中的代幣獎勵您的交易)計算應該由此產生的“預期交易”。
- 您現在發出具有“預期交易”條件的分階段交易(“條件交易”) - 在交換情況下,您從合約賬戶收到計算的代幣金額。
- 如果合約沒有執行或沒有給你預期的代幣數量,交易將在未來某個區塊到期。
這樣,合約所有者只能在合約所有者執行合約時花費所產生的幣。因此,您可以免受“選擇性騙子”的侵害,這些騙子只執行一次合約,然後再也不會執行。
合約所有者也是安全的:合約的建構方式應該首先檢查它是否真的能夠產生所需的交易。如果不是,那麼他根本不會發出“預期交易”。所以什麼也沒有發生(只是我們在區塊鏈上記錄了一個無用的分階段交易,但我認為這是一個小問題,它創造了僅在可能的條件下觸發合約的動機)。
這種情況可能嗎?我在關於輕量級合約的討論中沒有讀過它。如果不是,我認為這將是一個很好的補充,因為那時輕量級合約將與乙太坊智能合約一樣不信任(或幾乎一樣不信任)(甚至更多,因為乙太坊合約可能會耗盡 gas)。
AFAIK 它將需要一種新型的分階段交易 - 類似於需要連結交易的交易,但能夠不需要完整的交易雜湊(在這種情況下無法計算)但“未簽名”交易或要接收的代幣/硬幣的數量。
乾杯,d5000
如何解決它的一個想法是這樣的:
- 發件人根據其生成的秘密雜湊值,分階段送出契約觸發交易,並使用揭示秘密批准模型。
- 由該觸發交易啟動的合約,使用由觸發交易使用的秘密的相同雜湊和触發交易全雜湊組成的複合批准模型送出響應交易。
接下來會發生以下情況:
如果發送者批准觸發交易,它也可以批准合約交易,因為它們依賴於相同的秘密。
如果發送方不批准觸發交易,則觸發交易和合約送出的交易都會過期。
如果發送方嘗試批准合約交易但不批准自己的交易,則該合約交易將不會被批准,因為它還依賴於區塊鏈中未批准的觸發交易完整雜湊。
要實現這一點,我們至少需要對現有設計進行兩處更改: 1. 通過尚未批准的分階段交易觸發合約,目前不支持。2. 增強按交易全散列批准模型,使其可以選擇僅在全散列代表分階段批准的交易時才獲得批准,而不僅僅是像現在這樣儲存在區塊鏈中的交易。