加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > DAI > Info

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

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

萬向區塊鏈首席經濟學:央行要考慮如何激勵支付寶等參與推廣數字人民幣:萬向區塊鏈首席經濟學家鄒傳偉認為,數字貨幣的確會對第三方支付產生一定影響。在零售支付場景下,數字人民幣和第三方支付之間會有某種相互替代關系。數字人民幣的份額漲起來了,就意味著支付寶和微信份額會下降。這個環節中,央行要考慮如何激勵支付寶、微信等機構參與推廣數字人民幣,數字人民幣應用還需依賴于支付寶、微信等線下場景拓展、二維碼滲透。鄒傳偉稱,可以設想一個激勵相容設計,支付寶、微信支付如果幫助推廣了數字人民幣應用,它們存管在央行的支付備付金就可以獲得更多利息收入。(第一財經)[2020/11/19 21:18:01]

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

直播 |“后浪”仙女魚池-青青如何乘風破浪:金色財經 · 直播主辦的《 幣圈 “后浪” 仙女直播周》第7期11:00 F2Pool 魚池|CMO青青將在直播間聊聊“幣圈‘后浪’仙女如何乘風破浪”,感興趣的朋友掃碼移步收聽![2020/7/2]

例子

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

大咖零距離 | 減產在即 如何把握接下來的行情節奏:2月13日16:00,金色盤面邀請幣圈KOL幣姥爺做客金色財經《大咖零距離》直播間,將分享《減產在即,如何把握接下來的行情節奏》,敬請關注,欲進群觀看直播掃描海報二維碼報名即可![2020/2/13]

圖1升級前的合約代碼

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

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

聲音 | 中國市場學會理事張銳:無論Libra命運如何 Facebook都是大贏家:7月18日,中國市場學會理事、經濟學教授張銳發表文章《無論Libra命運如何,Facebook都是大贏家》。文章指出,由于Libra錨定了銀行存款、政府債券以及一籃子貨幣,完全可以量度商品的價值,同時可以充當商品交換的媒介,并作為標的進入公眾財富的儲藏范疇。因此,即便是Libra不能獲得全球性法定貨幣的身份,但它完全能夠以數字貨幣的身份像比特幣那樣在商品與服務流通領域長袖善舞,而且龐大的用戶群體為其創造的價值空間一定比任何一種數字貨幣要廣闊寬泛得多。不僅如此,Libra還可像微信和支付寶那樣打開數字金融與數字社會的入口,從而將Facebook帶入新的商業模式。[2019/7/18]

圖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 ProtocolSCALE幣AlligatorkSUM價格

DAI
為何 zkEVM 在當下有可能實現?一文了解 zkEVM 的設計挑戰與工作流程_LAYER:以太坊官網公告

作者:?Ye 感謝VitalikButerin、BarryWhitehat、Chih-ChengLiang、KobiGurkan和GeorgiosKonstantopoulos的審閱和真知灼見.

1900/1/1 0:00:00
XT關于即將上線MARSRISE的公告_HTT:TPS

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

1900/1/1 0:00:00
數據:以太坊 Gas 費用一度升至 7000 Gwei 附近,Doodles 1 小時銷毀逾 3000ETH_ETH:以太坊

鏈聞消息,據Etherscan數據顯示,以太坊Gas費一度漲至7228.54Gwei,過去3小時Gas消耗排名前三的為NFT投資DAOHeadDAO、OpenSea、Doodles.

1900/1/1 0:00:00
真正中國RMBits NFT項目來了_NFT:ethyleneabsorbent

“身如玄鐵,火眼金睛,長生不老,還有七十二變。一個筋斗云啊,就是十萬八千里。”無需稱名道姓,寥寥幾句臺詞,老百姓就能準確說出這描述的人物是誰.

1900/1/1 0:00:00
BKEX Global 關于上線 BANK(Float Protocol)并開放充值功能的公告_KEX:okex數字資產交易平臺

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

1900/1/1 0:00:00
三分鐘讀懂:比特幣的閃電網絡是如何運作的?_比特幣:比特幣在中國能提現嗎知乎

2016年10月5日,比特幣測試網上的第一筆閃電交易由區塊鏈技術公司BlockStream的工程師團隊完成。戴克爾博士在接受采訪時表示:“這對閃電網絡來說是一個重要的里程碑.

1900/1/1 0:00:00
ads