以太坊交易所 以太坊交易所
Ctrl+D 以太坊交易所
ads
首頁 > Uniswap > Info

如何利用 delegatecall 進行以太坊智能合約升級_區塊鏈:FuzzBalls

Author:

Time:1900/1/1 0:00:00

本文作者:powervip

以太坊智能合約升級

在以太坊智能合約的開發過程中,對于一些復雜的合約開發,要開發出完美沒有bug的智能合約,要求是相當高的。即使編寫出來的智能合約能完美沒有bug,也很難保證以后的需求和應用業務邏輯一成不變。所以,在開發智能合約的同時,就要考慮好以后的合約更新和升級問題。

思路

以太坊智能合約的更新和升級,其中一種思路就是:在智能合約的編寫過程中,要做到數據和應用邏輯的分離。簡單來說,就是把數據和應用邏輯分別放在2個獨立的合約里(本文稱之為數據合約和業務合約)。我們在升級合約時,保證存放數據的數據合約里的數據結構不改變,改變的只是存放應用邏輯的業務合約。這樣才能保證原有的業務數據不被破壞和能夠繼續使用。

經濟日報:區塊鏈的價值和前途取決于如何運用:4月20日,經濟日報刊文“加密資產走熱帶來什么價值”。文章表示,加密資產市場正在見證投機與人性的瘋狂。從技術進步的維度看,部分加密資產由于運用了區塊鏈技術,的確為創作者乃至知識產權保護帶來益處。事實上,無論如何炒作,區塊鏈作為技術本身是中立的,其價值和前途取決于如何運用。目前,區塊鏈技術還存在性能不足、普及尚淺、未獲權威認可等問題。如果拋開加密資產市場的噱頭與炒作,更多看到以NFT等為代表的確權體系對知識產權保護、重塑數字娛樂等產業的作用,進一步完善區塊鏈建設,發揮出其更大的潛力,造福于人,可能會給這一輪熱情烙印上更深遠的意義。[2021/4/20 20:38:16]

Solidity有三種合約間的調用方式call、delegatecall和callcode。其中,delegatecall可作為智能合約升級的一個較好的途徑。關于合約間的調用方式call、delegatecall和callcode,詳見我另一篇文章<<圖文并茂詳細介紹Solidity的三種合約間的調用方式call、delegatecall和callcode>>,有興趣的同學們可以看一下。原文鏈接:https://blog.csdn.net/powervip/article/details/104330170

大咖零距離 | 如何使用趨勢跟蹤策略只賺不虧:2月7日18:00,金色盤面邀請實盤大V數字貨幣大空頭做客金色財經《大咖零距離》直播間,將分享《如何使用趨勢跟蹤策略只賺不虧》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/2/7]

例子

假設我們要計算一個求和公式:numC=numAnumB我把數據numA、numB、numC作為數據存放在數據合約contractA中,把求和的業務邏輯放在數據合約contractB中。為了演示合約升級,我故意把contractB中的業務邏輯函數calcSum()中的加法運算故意寫成乘法運算,以便后面進行合約升級。代碼不是很復雜,代碼如下:

聲音 | 日本金融廳長官:針對區塊鏈等分布式金融系統,如何確保公眾利益已成為新課題:據日經新聞消息,今日在日本福岡舉行的G20峰會上,日本金融廳長官遠藤俊英發表演講指出“監管規則可能抑制創新,監管規則也會跟不上技術變革”。此外,以區塊鏈技術為首的分布式金融系統在沒有金融機構充當中介的情況下,可能實現顧客和市場參與者之間的直接交易,因此金融機構的地位存在下降的可能性,在這種情況下,如何確保公眾利益已成為新的課題。[2019/6/8]

圖1升級前的合約代碼

我們先部署合約A,再部署合約B。通過合約A的setNumA()函數把NumA設為1,通過合約A的setNumB()函數把NumB設為2,再復制合約A的地址0x692a70D2e424a56D2C6C27aA97D1a86395877b3A。

聲音 | 肖磊:區塊鏈監管如何“去糟粕而留精華”存在挑戰:據騰訊科技報道,肖磊發表專欄文章稱,虛擬幣市場有其特殊性,這可能會給監管帶來一定的挑戰和困擾。由于虛擬幣這個概念,實際上來自于其底層技術“區塊鏈”,如果站在監管層的角度,其中一個考慮是,去糟粕而留精華,把炒作虛擬幣這個糟粕去掉,而留下“區塊鏈”這個精華,這個可能會存在很大的挑戰。[2018/8/23]

然后,我們部署合約B,并把合約A的地址粘貼到函數run_sum()的參數欄中,見下圖。運行函數run_sum()。這時候,我們再點擊numC,會看到numC的值為2。顯然,這不是我們想要的求和結果。

圖2部署合約B,并把合約A的地址粘貼到函數run_sum()的參數欄中

我們把函數calcSum()的returna*b;這句注釋掉,把returnab;這句的注釋去掉,變成下面的代碼:

圖3升級后的合約代碼

先刪掉合約B,重新編譯和部署合約B,并把合約A的地址粘貼到函數run_sum()的參數欄中重新運行run_sum()。這時候,我們再點擊numC,會看到numC的值為3。合約B升級成功,由原來的乘法運算升級為加法運算。合約A原來的NumA和NumB的內容完美地保留了下來。

如果你覺得這篇文章寫得還可以,請幫忙點個贊,謝謝!你的鼓勵,我的動力!

我的github:https://github.com/powervip

參考資料

powervip:https://learnblockchain.cn/people/5018

以太坊:https://learnblockchain.cn/article/1201

智能合約:https://learnblockchain.cn/article/1258

Solidity:https://learnblockchain.cn/docs/solidity/

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

本文來源于非小號媒體平臺:

登鏈社區

現已在非小號資訊平臺發布105篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/10423871.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

每周編輯精選WeeklyEditors&#039;Picks

Tags:NUMCAL區塊鏈ALLNUM幣ethnical區塊鏈專業是什么意思FuzzBalls

Uniswap
以太坊無損彩票項目 PoolTogether V4 版本上線,獎金和中獎人數隨彩票池規模增加_以太坊:DAPP

鏈聞消息,以太坊無損彩票項目PoolTogether宣布V4版本上線,目前支持存入Polygon和以太坊上的USDC,未來將提供更多選擇.

1900/1/1 0:00:00
澳大利亞證券和投資委員會向Telegram上的“拉高出貨”群發出警告_加密貨幣:ASI

據Cointelegraph10月15日報道,澳大利亞證券和投資委員會正在關注Telegram上的“pumpanddump”群.

1900/1/1 0:00:00
XT關于即將上線LCC的公告_USD:HTT

尊敬的XT用戶: XT即將上線LCC(LCCOIN),并在主板區開放LCC/USDT交易對。具體開通時間,請關注后續公告.

1900/1/1 0:00:00
ZT創新板即將上線GOMA_GOMA:區塊鏈

親愛的ZT用戶: ZT創新板即將上線GOMA,並開啟GOMA/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年10月19日11:00; GOMA Boundary DAO 報名競.

1900/1/1 0:00:00
【獎勵發放】第二期理財活動結束及獎勵發放的公告_比特幣:BidCommerce

第二期理財活動結束及獎勵發放的公告作者AAXManager本周已更新 尊敬的AAX用戶: AAX于2021年9月17日18:00-2021年10月2日18:00舉辦的“理財活動第二期.

1900/1/1 0:00:00
Orangex邀請送5U,首充送5%真金活動_USD:usdt幣圈搭建

尊敬的Orangex用戶:為感謝新老用戶對Orangex的支持,特舉辦“邀請送5U,充值贈5%真金”的活動。活動時間:4月7日-4月11日重要提醒:參與活動需填寫表單.

1900/1/1 0:00:00
ads