買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > BNB > Info

LID:如何利用 delegatecall 進行以太坊智能合約升級_Gallant Nactive Little Super

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

周小川談加密貨幣創新:中方的態度注重于如何為實體經濟服務:博鰲亞洲論壇副理事長周小川在第十三屆陸家嘴論壇上在涉及到加密貨幣創新的時候表示,中方的態度也是在很多分析和討論上注重于如何為實體經濟服務,如果能夠為世界經濟作出重要的服務來講,大家可能給予更多幫助,反之則會弱一點。(財聯社)[2021/6/11 23:29:53]

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

大咖零距離 | 如何在幣圈期貨市場上久賭必贏?:5月19日18:00,實盤大V uTy做客金色財經《大咖零距離》直播間,將分享《如何在幣圈期貨市場上久賭必贏?》,敬請關注,欲進群觀看直播掃描下圖二維碼即可。

?[2020/5/19]

例子

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

動態 | V神闡述如何進行ETH委托挖礦:V神回復網友提問“1.可以通過合約合租一個validator(平民化參與,共享投票身份)嗎?2.一個客戶端可以跑多個valifator (共享機器)嗎?”表示,“你開一個validator,需要設置兩個公鑰:簽名的公鑰和取款的公鑰。Phase 2后,不一定需要設置取款公鑰,也可以設置取款合約。簽名的私鑰能withdraw,withdraw完成后validator里面的資金都給取款合約的地址。所以你開新的validator到時候,可以先發比如1以太幣,設置取款合約,這個合約的規則是,誰deposit多少誰按照比例withdraw多少。一段時間后,你發withdraw的交易。現在因為獎勵這個validator的balance是33.6以太幣(加 5%),33.6以太幣給合約,合約的規則分配1.05給你,8.4, 10.5和13.65 給其他的參與者。簽名的私鑰是你的,誰能withdraw多少的規則是合約定的。別人能看一個還未activated的validator的withdraw合約的規則,如果他們覺得是合理的,則他們能發他們的幣給這個validator,這個是委托的方法。”[2019/10/22]

圖1升級前的合約代碼

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

我們先部署合約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:NUMCALLIDALLNUME幣ethicalitySOLID價格Gallant Nactive Little Super

BNB
EFI:XT關于隱藏并下架BITCI/BTC交易對公告_vechaincom

尊敬的XT用戶: 應項目方要求,XT.COM將于2021年10月22日14:00(UTC8)隱藏BITCI/BTC交易對。于2021年10月26日14:00關閉其交易對.

1900/1/1 0:00:00
BAYC:關于BitMart下架 EVAI 的公告_BIT

親愛的BitMart用戶:根據BitMart“交易對的暫停交易、隱藏及下線規則”,通過對相關交易對的持續跟蹤觀察.

1900/1/1 0:00:00
HTT:ZT創新板即將上線IDEX_IDEX Token

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

1900/1/1 0:00:00
USDT:XT關于恢復MINA充提的公告_USDT幣提到錢包有風控嗎

尊敬的XT用戶: MINA錢包升級已完成,XT現已恢復MINA充值與提幣業務,暫停期間給您帶來的不便,敬請諒解.

1900/1/1 0:00:00
HTT:ZT創新板即將上線MAT_HTT價格

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

1900/1/1 0:00:00
GATE:Gate.io 關于支持 CoinDash/Blox(CDT)代幣升級兌換計劃的公告_Gate.io

根據CDT官方消息,CDT要執行代幣遷移兌換計劃,CDT代幣可按100:1的比例兌換為新SSV代幣。Gate.io將會支持此次代幣升級并為用戶提供兌換服務.

1900/1/1 0:00:00
ads