溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

以太坊智能合約開發(fā)時升級策略是什么

發(fā)布時間:2022-01-15 15:04:09 來源:億速云 閱讀:137 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容介紹了“以太坊智能合約開發(fā)時升級策略是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

100%可智能合約開發(fā)升級機制

目前有兩種主要策略用來實現(xiàn)可升級的智能合約:

  • 使用代理合約

  • 將邏輯和數(shù)據(jù)分離成不同的合約。

這兩種方法要解決的根本問題是如何更新合同的邏輯,同時仍然保留對合同狀態(tài)的訪問。

代理智能合約

代理合約使用delegatecall操作碼將函數(shù)調(diào)用轉(zhuǎn)發(fā)到可更新的目標合約。 由于delegatecall保留了函數(shù)調(diào)用的狀態(tài),因此可以更新目標合約的邏輯,并且狀態(tài)將保留在代理合約中以供更新后的目標合約的邏輯使用。 與delegatecall一樣,msg.sender將保持代理合約的調(diào)用者身份。

由于最近的拜占庭硬分叉,現(xiàn)在可以獲取函數(shù)調(diào)用的返回大小了,因此與Nick Johnson首次提出的方法相比,目前這種方法可以通用。 在Daonomic的文章中可以看到一個通用代理合約的例子,你可以更詳細地了解這個機制。

智能合約開發(fā)分離邏輯和數(shù)據(jù)

這中方法到將智能合約拆分兩個合約:

  • 包含數(shù)據(jù)(變量,結(jié)構(gòu),映射等)以及getter/setter的數(shù)據(jù)合約

  • 包含如何更新這些數(shù)據(jù)的業(yè)務(wù)邏輯的邏輯合約

邏輯合約通過setter更新數(shù)據(jù),而數(shù)據(jù)合約只允許邏輯合約調(diào)用setter。 這允許在保持數(shù)據(jù)不變的同時更換實現(xiàn)邏輯,從而實現(xiàn)完全可升級的系統(tǒng)。

通過引導(dǎo)用戶使用新的邏輯合約(通過諸如ENS的解析器)并更新數(shù)據(jù)合約的權(quán)限來允許新的邏輯合約 執(zhí)行setter,就可以實現(xiàn)合約的更新。

查看Thomas Wiesne的視頻以更好地了解這一機制。

使用鍵值對數(shù)據(jù)模型分離邏輯和數(shù)據(jù)合約

這種策略的工作原理與上述類似,只是不使用最終期望數(shù)據(jù)結(jié)構(gòu)(struct,mapping等)來定義合約數(shù)據(jù)模型,所有數(shù)據(jù)都被抽象化并存儲在鍵值對中,然后使用一個標準的命名系統(tǒng)以及sha256散列算法用于查找數(shù)據(jù)值。

可以查閱David Rugendyke的文章以更好地理解這種機制。

部分智能合約開發(fā)時可升級策略

創(chuàng)建一個完全可升級的合約聽起來不錯,但需要一個很大的妥協(xié):保證合約的不可變性。 因此在很多情況下 實現(xiàn)部分可升級的合約可能是更合理的選擇。

在此策略中,智能合約的核心功能可以保留為不可升級。 其他可能不太完整或更復(fù)雜的組件則采用可升級策略實施。

這方面已經(jīng)有一些很好的案例:

  • 以太坊名稱服務(wù)ENS:ENS核心合約是一個非常簡單的合約,不能更改。域名注冊商則可以由管理員升級。 域名注冊商是一個合約工廠,如果使用一個新的域管理器,它可以與以前的所有數(shù)據(jù)狀態(tài)重新鏈接,而不會有太多麻煩。

  • 0xProject:603DEX(去中心化交易所)核心智能合約可以完全升級,而代理合約(每個用戶一個)保持不變。0x“代理”合約(不同于前面介紹的代理策略)包含用戶資金和相關(guān)設(shè)置。 由于這個原因,它不是0x合約系統(tǒng)的可升級部分。

其他挑戰(zhàn)

  • 在所有情況下,都需要對是否保持智能合約的不變性進行取舍。

  • 創(chuàng)建可選的可升級智能合約系統(tǒng)對用戶來說是可能并且有價值的,但是增加了復(fù)雜性。

  • 對Solidity編譯器的更改可能會破壞新舊合約之間的兼容性。

  • 制定可升級策略時需要考慮gas開銷。

“以太坊智能合約開發(fā)時升級策略是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI