智能合約可以更新嗎?
鑑於智能合約工作事件的不確定性,智能合約能否在部署到區塊鏈後更新。例如,現實生活中的契約可能會在契約執行期間由當事人修改。
“智能合約”是那些包含大量描述性資訊但並不完全是字面意思的吸引人的名稱之一。
它們通常不類似於法律契約。法律契約傾向於描述應該發生的事情以及如果這些事情不發生會發生什麼。法庭上擠滿了人,他們使用一種有點不確定的過程來解決由於不應該**發生的事情而發生的事情。
“智能合約”是不可變的、有狀態的和持久的軟體過程,它說明了將要發生的事情。離開通常是不可能的,因為它們是確定性的。
建構智能合約不像談判和重新談判法律契約,更像是設計、測試和生產硬體。最後,它會做它所做的事情,並抵制改變它所做事情的嘗試。
智能合約軟體的難處理性是其可信度的來源——每個人都可以理解,它的執行規則不會被任意改變——即使是作者也不會。預設條件是無法更改。
這確實給軟體開發人員帶來了挑戰。必須注意確保質量並確保相關性,因為提前未預料到的未來需求會出現。
有一些設計模式試圖為作者提供一定程度的適應性。這些基於模組化和委託。不可更改的設計可能包括將流程委託給模組的流程,以及將模組交換為更令人滿意的東西的流程。這總是會削弱智能合約的“不可變”保證,並引發誰來決定合約是否應該升級的問題。
類似的情況如下:
你設計一艘宇宙飛船以盡可能快地使用當今的技術。你在前往木星的旅途中將它射入太空。除非你把它放在那裡,否則什麼都不會在船上,因為你無法趕上它。
但是,您有一點遠見,並預計可能需要升級或維修。你可以從地球上與它交流。您可以在船上放置一些備件或 3D 列印機,並對車載電腦進行程式以響應來自地球的命令。您可以使其可升級和可修復,直到您可以預期和適應您需要做的事情。所有這些額外的東西都增加了宇宙飛船的質量(想想程式碼複雜性和治理問題),你增加靈活性(和風險)的各種方式對每個人來說都是顯而易見的,以檢查你的飛船設計。
希望能幫助到你。
最簡潔的答案是不。智能合約是不可變的、有狀態的和持久的軟體。
但是有一些設計解決方案可以使用代理“升級”它們。您可以在 OpenZeppelin 閱讀代理升級模式。