買以太坊 買以太坊
Ctrl+D 買以太坊
ads

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

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

大咖零距離 | BTC價格劇烈波動 如何保持長期盈利:4月1日16:00,金色盤面邀請撈針選手泰迪幫主做客金色財經《大咖零距離》直播間,將分享《BTC價格劇烈波動,如何保持長期盈利》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可。[2020/4/1]

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

大咖零距離 | 寶二爺,李笑來的成功我們能復制嗎?該如何抓住減半行情?:3月3日18:00,金色盤面邀請幣圈KOL老俞說幣做客金色財經《大咖零距離》直播間,將分享《寶二爺,李笑來的成功我們能復制嗎?該如何抓住減半行情?》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/3/3]

例子

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

動態 | 社科院法學所刊文《對“去中心化”的區塊鏈如何監管》:中國社科院法學所趙磊在《經濟參考報》發表題為《對“去中心化”的區塊鏈如何監管》的文章。文章指出,對區塊鏈技術的監管,應該分為兩個層面:一是結合區塊鏈技術的具體應用場景,分行業進行監管;另一是針對區塊鏈,制定專門的技術標準,以實現區塊鏈技術的規范、統一。而判斷某種商業活動或者社會管理活動是否可以應用區塊鏈,至少應該從以下兩方面進行衡量:一方面是區塊鏈技術只能在虛擬空間中應用;另一方面是區塊鏈技術無論在何種場景中應用,必須符合其去中心化、共識機制與分布式記賬等技術特征。[2019/1/10]

圖1升級前的合約代碼

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

Thomas 發布趣味視頻 講述EOSIO系統如何向節點支付獎勵:據金色財經合作媒體IMEOS 報道,昨日 Thomas Cox 在 YouTube 上傳了一個手繪風視頻,為大家講解 EOSIO 系統如何向節點支付獎勵。視頻中說到,按照每年通貨膨脹 5% 的規則,每天大約會有 133,000 個新的 Token 產生,那么增發總數的 1%,即約為 27,000 個新的 Token 用于支付節點支出。并且,新系統中沒有取中間值報價的說法。另外 4% 會進入 Worker Proposal Fund。[2018/5/21]

然后,我們部署合約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區塊鏈ALLenumivoCallisto Network區塊鏈dapp開發教程trustwallet錢包怎么用

Gate交易所
區塊鏈:“未來區塊鏈峰會 2021”正式開幕 虎符國際迪拜高調亮相_加密貨幣

10月17日,“未來區塊鏈峰會2021”在迪拜世貿中心正式開幕,全球知名企業亞馬遜、微軟、IBM、Google及區塊鏈創新公司虎符國際等齊聚迪拜,為全球受眾呈現一場科技盛宴.

1900/1/1 0:00:00
AME:ZT創新板即將上線KWS_EvilSquidGame

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

1900/1/1 0:00:00
DEX:XT關于延遲上線BUGG的公告_https://etherscan.io

尊敬的XT用戶: 應項目方要求,XT將延遲BUGG上線時間,相關時間調整如下:交易對:2021年10月16日20:00NEXTYPE與巴西最大的游戲公會DUX建立合作關系:金色財經消息.

1900/1/1 0:00:00
BKK:BKEX Global 關于上線 MOWA(Moniwar)并開放充值功能的公告_GLO

尊敬的用戶:?????????????BKEXGlobal即將上線MOWA,詳情如下:上線交易對:MOWA/USDT幣種類型:BEP20?充值功能開放時間:已開放交易功能開放時間:2021年10.

1900/1/1 0:00:00
INE:幣安新增AVAX/AUD、AVAX/BRL、AXS/ETH、FTM/ETH、LUNA/AUD、SOL/ETH、TROY/BUSD交易對_YGG

親愛的用戶:幣安將於2021年10月15日18:00上線AVAX/AUD、AVAX/BRL、AXS/ETH、FTM/ETH、LUNA/AUD、SOL/ETH、TROY/BUSD交易對.

1900/1/1 0:00:00
STE:Steam禁止NFT和區塊鏈游戲,或利好競爭對手Epic Games_區塊鏈

本文來自Cryptodaily,原文作者:AmaraKhatriOdaily星球日報譯者|余順遂游戲巨頭EpicGames向TheVerge表示.

1900/1/1 0:00:00
ads