比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > Gate.io > Info

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

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

Uniswap基金會就如何分配約440萬個ARB發起征集建議:5月24日消息,Uniswap 基金會管理者之一 Erin Koen 今日在 Uniswap 社區就“如何分配約 440 萬個 ARB發起征集建議。征集中提到,代幣將發送至 DAO 在 Arbitrum 上的別名地址; 如何部署分配需要經過正常的治理投票。提案期持續兩周(至 6 月 7 日星期三)。 屆時,已獲得社區反饋的提案應根據批準的治理流程將其納入新的溫度檢查帖子。[2023/5/24 15:22:31]

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

英國央行官員:如果穩定幣被用作一種支付方式,將研究如何對其進行監管:英國央行金融市場基礎設施執行董事Christina Segal-Knowles演講表示, 如果穩定幣被用作一種支付方式,她會研究如何對其進行監管。如果監管得當,像穩定幣這樣的數字貨幣可能會有好處:包括更便宜的支付方式和更多的功能。它們可能對金融穩定有潛在的好處。但這需要監管機構按照我們對當前使用的貨幣所期望的標準來控制新形式的貨幣。[2021/6/10 23:27:58]

例子

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

直播|Philip Gradwell:如何知道新一輪牛市是否到來:金色財經 · 直播主辦的金點Trend《以太坊之外的DeFi,香嗎? 》馬上開始!16:30準時開播!本場嘉賓來自Chainalysis的首席經濟分析師分享“如何知道新一輪牛市是否到來”,請掃碼移步收聽![2020/8/28]

圖1升級前的合約代碼

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

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

分析 | 2018年美國用戶搜索“如何購買Ripple”的次數高于“如何購買比特幣”:據bitcoinexchangeguide消息,去年收集的一項數據顯示,美國用戶對于“如何購買Ripple”這一短語的搜索次數高于“如何購買比特幣”。不過全球范圍內,“比特幣”詞語本身仍然比“ XRP ”或“ Ripple ” 的搜索次數更多。但XRP社區粉絲依舊認為XRP距離成為領先的數字資產并不太遠。[2019/4/3]

圖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:NUMCALALLSUMNumbers Chainethicaldilemmamathwallet錢包騙局SUMO幣

Gate.io
LC上線大幣網(Dcoin)預告_COI

親愛的大幣網(Dcoin)用戶:LC將于近期上線大幣網(Dcoin),詳情請參考最新公告。 幣種介紹 項目名稱:LifeCash 代幣名稱:LC LC是一種創新貨幣,可以隨時隨地兌換成現金.

1900/1/1 0:00:00
AOFEX於10月20日上線LSS(Lossless)_FEX

尊敬的用戶:AOFEX將於2021年10月20日上線LSS,具體時間安排如下:充提業務均已開啟交易時間:10月20日17:00提示:以下內容來源於公告發布時的網絡現有資料,AOFEX已盡力核對.

1900/1/1 0:00:00
資管巨頭古根海姆 Guggenheim 首席投資官 Scott Minerd 稱不再投資比特幣_比特幣

鏈聞消息,據CoinDesk報道,資管巨頭古根海姆的首席投資官ScottMinerd表示,在今年早期預測比特幣可能達到60萬美元后,他不再投資比特幣.

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

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

1900/1/1 0:00:00
固定利率借貸協議 Element Finance 以 3.2 億美元估值融資 3200 萬美元,Polychain Capital 領投_ROT

鏈聞消息,固定利率借貸協議ElementFinance以3.2億美元估值完成3200萬美元A輪融資,PolychainCapital領投.

1900/1/1 0:00:00
Gate.io 關于支持參與Polkadot插槽拍賣活動公告_GATE

Gate.io將開啟Polkadot插槽拍賣活動。據Polkadot官方消息,118號議案已被Polkadot理事會投票通過,Polkadot第一次平行鏈插槽拍賣將于2021年11月11日正式開.

1900/1/1 0:00:00
ads