比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

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

Author:

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

本文作者:powervip

以太坊智能合約升級

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

思路

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

動態 | 馬耳他研討會探討如何改進涉及區塊鏈的反洗錢法:據Times of Malta消息,馬耳他區塊鏈協會主席Patrick Young和管理者Max Ganado發文稱,近日在由馬耳他區塊鏈協會和馬耳他財政部共同組織的Blockfinance研討會中,包括馬耳他金融服務管理局(MFSA)、馬耳他金融情報分析部門(FIAU)和在內的利益相關者參與了活動。發言者初步進行了差距分析,使行業參與者可以就涉及區塊鏈的反洗錢法(AML)的進一步發展提出具體建議。 文章指出,這個新興產業需要表現出高標準的誠信以及合規性。此外,區塊鏈行業參與者需要為AML-CFT戰略做出貢獻。[2019/4/7]

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

聲音 | 華盛頓與李大學法學院教授:加密貨幣用途決定了如何監管:在美國眾議院農業委員會昨日舉辦的加密貨幣聽證會上,華盛頓與李大學法學院教授Josh Fairfield表示,加密貨幣的用途決定了如何對其進行監管。不同的人因為不同的目的而持有加密貨幣,有的為了消費,有的為了儲存,有的為了投機,有的為了交易,有的隨時改變主意,甚至在使用(消費或交易)加密貨幣之前,不知道其用途。Fairfield表示,一般情況下,加密貨幣作為個人財產持有和消費是沒有問題的,只有交易和投機才會引發監管方面的擔憂,尤其是一些從結構流程上看起來像是試圖繞過某些監管的交易。[2018/7/20]

例子

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

國際貨幣基金組織主席:最終幸存下來的加密資產可能會對人們如何儲蓄產生重大影響:據bitcoinist消息,國際貨幣基金組織(IMF)主席拉加德(Christine Lagarde)在其新的博客文章中表示,最終幸存下來的加密資產可能會對我們如何儲蓄,投資和支付賬單產生重大影響。拉加德指出了加密貨幣能夠進行快速和廉價的跨境金融交易的好處,并稱比特幣的基礎技術——分布式賬本技術可能會改變金融市場的運作方式。此外,拉加德指出,智能合約的革命性,可以移除中間商,而區塊鏈技術能夠安全地存儲重要文件。最后,拉加德指出,在發展中的經濟體,這種進步可以幫助確保產權,增加市場信心并促進投資。[2018/4/18]

圖1升級前的合約代碼

芝加哥商品交易所集團就比特幣期貨將如何推出做了更為具體的解釋:芝加哥商品交易所集團的股權產品負責人蒂姆-麥考特在接受外媒采訪時表示:“交易所已經采取了保護措施,如更高的保證金水平、限制頭寸和價格以抑制它即將推出的比特幣期貨的風險。”隨后芝加哥商品交易所還闡述了三個層面的細節即交易、市場數據和雙邊市場的缺乏。[2017/12/3]

我們先部署合約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:NUMCALALL加密貨幣NUM價格ethical怎么記trustwallet如何添加usdt全球加密貨幣市值

pepe最新價格
BKEX Global 關于上線 DNFT(DareNFT)并開放充值功能的公告_GLO

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

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

親愛的ZT用戶: ZT創新板即將上線NUX,並開啟NUX/USDT交易對。具體上線時間如下:充值:已開啟;交易:2021年10月18日17:00; NUX 項目簡介:Peanut花生是一套智能合.

1900/1/1 0:00:00
中央網信辦等18個部門和單位聯合印發《關于組織申報區塊鏈創新應用試點的通知》_區塊鏈

近日,中央網信辦會同中央宣傳部、國務院辦公廳、最高人民法院、最高人民檢察院、教育部、工業和信息化部、民政部、司法部、人力資源社會保障部、國家衛生健康委、中國人民銀行、國務院國資委、國家稅務總局、.

1900/1/1 0:00:00
MEXC關於支持波卡平行鏈插槽競拍的公告_MEX

尊敬的用戶:為支持波卡生態和社區發展,MEXC將於2021年11月開啟波卡平行鏈插槽競拍活動,具體安排詳見後續公告.

1900/1/1 0:00:00
法蘭西銀行對CBDC進行國債試驗_ANX

10月20日消息,由Euroclear牽頭的一個機構財團已成功試驗了中央銀行數字貨幣(CBDC),以在測試區塊鏈上結算法國國債.

1900/1/1 0:00:00
萬字長文解析 OpenSea 崛起之路:起源、發展和前景_ENS

本文編譯自TheGeneralist,以下為編譯部分。現在去哪里投資1萬美元?如今,投資者面臨著一個兩難境地。通貨膨脹正在上升.

1900/1/1 0:00:00
ads