比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads
首頁 > Gate.io > Info

NUM:如何利用 delegatecall 進行以太坊智能合約升級_CAL

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

“如何看待比特幣凌晨突發大跳水”相關討論上知乎熱榜前三:根據知乎首頁,一條提問“如何看待比特幣凌晨突發大跳水,24小時近20萬人爆倉,一度跌破5.5萬美元,112億資金灰飛煙滅?”登上知乎熱榜,現排名第三位,熱度2375萬。[2021/5/13 21:59:09]

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

美國空軍和雷神公司正在研究如何利用DLT技術幫助指揮天空:金色財經報道,美國空軍(USAF)持續進行的一系列區塊鏈投資正在進入戰斗管理系統領,其已與美國大型國防合約商雷神(Raytheon)簽訂了近50萬美元的合同。該合同的標題是“描述DLT(分布式分類帳技術)在Air C2中的適用性和相關性”。合同的標題表明,雷神公司的先進技術研究人員將考慮DLT如何可以使指揮官密切注視天空以及飛行員。[2020/9/4]

例子

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

直播|Higer :DeFi與ETH2.0如何引領下一個區塊鏈時代?:金色財經 · 直播主辦的金點Trend《2020 DeFi Dai飛嗎?》馬上開始!DeFi生態里,我們還應該狙擊哪些項目?成長空間是多少?應該關注哪些風險?16:00準時開播!本場嘉賓來自區塊鏈研習社的創始人Higer分享“DeFi與ETH2.0如何引領下一個區塊鏈時代”,請掃碼移步收聽。[2020/7/31]

圖1升級前的合約代碼

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

聽證會 | 扎克伯格:還未確定如何處理錯誤交易的最終政策:金色財經直播報道,在今日聽證會上,議員Bil Foster詢問了有關如何處理錯誤交易。扎克伯格說,他不確定是否已經為此制定了政策。已對此有所考慮,但還沒有確定”最終政策。[2019/10/24]

然后,我們部署合約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:NUMCALALLSUMNumisMeColu Local NetworkDOGEALLY幣SUM幣

Gate.io
USD:關於幣安ETH/USDT永續合約異常強平的公告(2021-10-15)_USDT

親愛的用戶:2021年10月14日23:21:49,幣安的ETH/USDT永續合約出現異常強平.

1900/1/1 0:00:00
HXRO:ZT創新板即將上線HXRO_tps幣圈

親愛的ZT用戶: ZT創新板即將上線HXRO,並開啟HXRO/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年10月19日17:00; HXRO 項目簡介:HXRO是一種ERC-.

1900/1/1 0:00:00
ETF:外媒:近期或有5只比特幣期貨ETF準備推出,本周可能會推出2只_GFAL幣

金色財經報道,美國第一個比特幣交易所交易基金(ETF)預計將在當地時間本周二推出,近期將有大約5只比特幣期貨ETF準備推出,本周可能會推出2只.

1900/1/1 0:00:00
HOO:明星項目 METAX 將在 Hoo Labs 開啟認購_Asva Labs

2021年10月21日15:00,HooLabs將重磅上線元宇宙賽道的明星項目METAX。用戶持有不同額度的HOO,可獲得不同的參投額度.

1900/1/1 0:00:00
加密貨幣:巴西國會正在討論有關“加強對加密資產的反洗錢監管”法案_NAN

10月20日消息,巴西國會目前正在討論針對第2303/15號法案的修正案。該法案最近由巴西眾議院的一個特別委員會批準,旨在加強對數字貨幣的反洗錢監管.

1900/1/1 0:00:00
區塊鏈:法蘭西銀行對CBDC進行國債試驗_CLE

10月20日消息,由Euroclear牽頭的一個機構財團已成功試驗了中央銀行數字貨幣(CBDC),以在測試區塊鏈上結算法國國債.

1900/1/1 0:00:00
ads