以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads

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

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

MicroStrategy將在明年指導企業如何采用Bitcoin:金色財經報道,MicroStrategy將在明年5月的活動中指導企業如何采用Bitcoin。[2022/12/8 21:31:03]

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

中央財經大學郭田勇:應深入研究如何用數字人民幣組建更多功能:中央財經大學中國銀行業研究中心主任郭田勇表示,在數字化的浪潮下,貨幣作為一種支付媒介,其本身的數字化是必然趨勢。考慮到傳統貨幣印制發行成本高、不易攜帶等局限,數字貨幣以其獨特的優勢,極大降低了交易成本。郭田勇指出,數字貨幣如果由政府或者中央銀行來主導,必須協同好同原有銀行體系為主導的支付關系。目前,中國的數字貨幣屬于M0范疇,從金融學角度看,M0并不具有貨幣創造的能力,在整個貨幣儲存量中占比也很小,因此,數字人民幣的范圍還非常有限,未來如何用數字人民幣組建更多的功能,將其推向更大的領域,值得深入研究。這是一個循序漸進的過程,要把握好節奏。郭田勇稱,數字人民幣前期推進比較成功,有利于提升人民幣國際化程度。隨著中國經濟實力增強,人民幣國際業務更為廣泛。面對龐大的國際結算量,數字貨幣高支付效率的優點更易凸顯。(中國新聞網)[2021/7/7 0:32:14]

例子

日本金融廳長官:日本要密切關注如何克服發行CBDC的挑戰:日本金融廳長官HIMINO表示,日本不僅需要對央行數字貨幣(CBDC)進行學術研究,要更密切地關注如何克服發行央行數字貨幣可能帶來的挑戰。如果只是解除對比特幣和其他加密貨幣的管制,這可能只會增加投機交易,并不一定會促進技術創新。不考慮推動加密貨幣交易的新舉措,希望更多地關注如何將區塊鏈技術與增強公共福利的政策結合起來。[2020/8/5]

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

大咖零距離 | 如何盡量的以小博大:1月3日20:00,金色盤面邀請實盤大V爆哥做客金色財經《大咖零距離》直播間,將分享《如何盡量的以小博大》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/1/3]

圖1升級前的合約代碼

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

然后,我們部署合約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:NUMCALALLSUMNum ARSethical怎么記憶AlligatorkSUM價格

歐易交易所app官網下載
超話社區 | 跨鏈協議ENVELOP,為NFT增添新功能_NFT

如今,NFT市場的火熱有目共睹。根據DappRader最新數據,三季度NFT行業交易總額超過了106.7億美元,環比增長704%,同比增長38060%;其中全球最大的NFT交易平臺OpenSea.

1900/1/1 0:00:00
BKEX Global 關于上線 FINA(Defina Finance)并開放充值功能的公告_KEX

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

1900/1/1 0:00:00
BKEX Global 關于下架OTC-CNY交易區的公告_KEX

尊敬的用戶: 為響應當地政府監管政策要求,BKEXGlabal將于2021年11月30日24:00下架OTC-CNY交易區,具體細則請留意后續公告.

1900/1/1 0:00:00
幣安槓桿推出USDT借貸優惠活動,優惠年利率低至9.31%!_ERO

親愛的用戶:為回饋廣大用戶對槓桿交易的支持,幣安將於2021年10月14日20:00推出USDT借貸優惠活動.

1900/1/1 0:00:00
BKEX Global 關于\"BNX充值交易福利來襲\"活動結果的公告_KEX

親愛的用戶: 為回饋廣大用戶,BKEX現開展"BNX充值交易福利來襲"活動詳情如下: 一、活動時間 2021年10月17日20:00-10月24日20:00 二、活動規則 1.充值返利 BKEX.

1900/1/1 0:00:00
關于WBF恢復手機短信的服務的公告_FTX

尊敬的用戶: WBF預計將于2021年10月16日20:00恢復手機短信服務。為了后續更好的為您提供優質的服務,建議您盡快綁定郵箱和谷歌驗證,具體綁定方式如下:APP:點擊左上角人頭像,點擊安全.

1900/1/1 0:00:00
ads