Contract-Development
我們真的需要智能合約來實現可複制/可重放的業務邏輯,還是事件/日誌記錄就足夠了?
我還沒有找到任何地方很好地涵蓋了這個主題。我一直在玩智能合約,並試圖弄清楚智能合約相對於輸入參數的簡單記錄有什麼優勢。
在精神上,我只是進入軟體開發的基礎,我有一個算法讀取輸入數據,根據一些算法處理它並寫入輸出數據/結果。
正如我所看到的,如果我只是將輸入保存/保存到乙太坊日誌中,然後使用這些日誌作為區塊鏈之外任何外部軟體的輸入,我可以保持一致的分佈式狀態重用乙太坊基礎設施:
日誌方法的優點:
- 沒有錯誤的智能合約的風險。日誌沒有邏輯或狀態,只是“事實調查”。如果處理它們的外部程序有問題,我們可以修復它。
- 便宜得多。日誌記錄是每字節幾個weis,(比執行事務便宜得多)。
- 從一個區塊鏈實現/環境移植到另一個更容易(只需重放日誌)。
- 還有其他人嗎?
Log方法的缺點:
- 智能合約取決於乙太坊區塊鏈(非冪等)或外部預言機(輸入源)的目前狀態,具體取決於時間。
- 使用“虛擬貨幣”(乙太幣)作為支付方式的合約不會自動清算。
- 每個客戶端都需要從區塊鏈“下載”日誌並重新處理計算(這在公共網路中可能有問題/不允許嗎?)。
- 還有其他人嗎?
後記:我試圖添加“冪等”標籤,但我沒有足夠的聲譽。出於顯而易見的原因,我仍然認為“冪等”對於智能合約來說是一個非常重要的話題。
首先,我認為這是一個很好的問題。一段時間以來,我一直在思考同樣的問題,但我從未將這些想法用清晰的語言表達出來。
優點下的所有點都是正確的,而且很重要。便宜可操作。
我認為,第一個缺點是摩擦。在許多情況下,如果沒有一些狀態來決定要生成什麼日誌,就無法正確生成日誌。例如,投票。沒有狀態(即投票數),您無法實現一個非常好的投票系統(除了像“The Voice”那樣完全開放)。
不過,我認為缺少一個缺點。通過將業務邏輯推到非鏈流程中,您已經刪除了區塊鏈帶來的一件事:安全性。僅記錄智能合約可用於以後證明發生了惡意事件,但不能像有狀態的智能合約那樣用於阻止惡意活動。
我並不是說無狀態的僅日誌智能合約沒有案例。當然有,而且這些案例非常有趣。
喜歡“冪等”這個詞。如果我知道它的含義,我會使用它!