比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

BOX:【翻譯】升級智能合約 (Hardhat)

Author:

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

原文鏈接

使用OpenZeppelin升級插件部署的智能合約可以通過升級來修改代碼,同時保留原合約地址、狀態和余額。這讓幫助我們為項目添加新功能,或修復在生產中可能發現的任何錯誤。

在本指南中,我們將學習:

為什么升級很重要

使用升級插件升級我們的盒子。

了解升級在引擎蓋下是如何工作的

學習如何編寫可升級合約

什么是可升級的合約

以太坊中的智能合約默認情況下是不可更改的。一旦創建了就無法改變,有效地為合約參與者扮演了不可篡改的合約的角色。

然而某些場景下,我們希望能夠修改它們。想想傳統合約:如果參與雙方都同意改變它,就可以去對齊進行改變。同樣在以太坊上,我們也希望能夠修改智能合約,以修復他們發現的bug,增加額外的功能,或者僅僅是改變它所執行的規則。

加密交易所Bit2Me推出萬事達返現借記卡:2月10日消息,西班牙加密貨幣交易所Bit2Me推出返現最高9%的萬事達借記卡。除了在實體店支付外,還支持全球24小時在線支付和ATM取款。

該卡支持通過加密貨幣錢包使用B2M、比特幣、以太坊、ADA、XRP、SOL、DOT和USDT支付。Bit2Me在2023年計劃讓其錢包支持更多加密貨幣。[2023/2/10 11:58:26]

以下是你需要做的事情,以修復你無法升級的合約中的錯誤。

部署一個新版本的合約

手動將所有的狀態從舊的合約遷移到新的合約

更新所有與舊合約交互的合約,使用新合約的地址

聯系你的所有用戶,并說服他們開始使用新的部署

為了避免出現這種亂象,我們將合約升級直接內置到我們的插件中。這讓我們可以改變合約代碼,同時保留狀態、余額和地址。讓我們來看看如何實現。

Elm Partners Management創始人:SBF的風險承受能力是一個大危險信號:金色財經報道,Elm Partners Management 的創始人兼首席投資官兼聯合創始人 Victor Haghani 表示,在SBF的FTX加密貨幣帝國崩潰之前,Sam Bankman-Fried的許多公開聲明都表明他做出的決定“就好像他沒有風險厭惡”長期資本管理對沖基金。而SBF的風險承受能力是一個大危險信號。[2022/12/30 22:17:02]

使用升級插件來升級合約

使用OpenZeppelin升級插件中的deployProxy部署一個新的合約時,該合約實例就可以實現可升級的功能。默認情況下,只有最初部署合約的地址才有權限執行升級操作。

deployProxy將創建以下事務;

部署執行合約

部署ProxyAdmin合約

數據:持有至少32枚ETH的地址數量達到128,306個:12月12日消息,據Glassnodes數據顯示,持有至少32枚ETH的地址數量達128,306個,創歷史新高。[2022/12/12 21:38:05]

部署代理合約并運行初始化函數

讓我們看看它是如何工作的,通過部署我們的Box合約的可升級版本,使用與之前部署時相同的設置:

//contracts/Box

//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}}

首先需要安裝升級插件。

安裝HardhatUpgrades插件。

npminstall--save-dev

幣安發言人:創建內部團隊借助區塊鏈和加密貨幣協助推特處于早期階段:10月29日消息,幣安發言人在一份聲明中表示,幣安正在創建一個內部團隊,專注于借助區塊鏈和加密貨幣協助推特,通過集思廣益制定戰略計劃,幫助馬斯克實現他的愿景。發言人指出,這項工作處于早期階段,計劃仍在制定中。(界面)[2022/10/29 11:55:58]

在創建Solidity文件后,我們現在使用upgradeProxy函數升級之前部署的實例。

upgradeProxy將創建以下事務:

部署執行合約

調用ProxyAdmin來更新代理合約以應用新的實現

創建一個腳本,使用upgradeProxy將Box合約升級為使用BoxV2。把這個文件保存為scripts/upgrade_box

main();

加密礦企Gryphon Digital Mining 6月產出71枚BTC:7月11日消息,碳中和加密礦企Gryphon Digital Mining, Inc.公布6月運營情況:當月共產出71枚BTC,平均哈希率為548 PH/s。(PRWeb)[2022/7/11 2:06:04]

然后就可以部署我們的可升級合約。

使用run命令,可以在development網絡中部署升級Box合約。

$npxhardhatrun--networklocalhostscripts/upgrade_box

//Storesanewvalueinthecontractfunctionstore(uint256newValue)public{require(msg

//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}}

部署合約時,我們需要指定initializer函數名,并提供一個管理員地址。

//scripts/deploy_upgradeable_adminbox

main();

出于實踐目的,initializer作為構造函數。然而,請記住,由于它是一個常規函數,你將需要手動調用所有基礎合約的初initializer。

要了解更多關于這一點以及編寫可升級合約時的其他注意事項,請查看我們的WritingUpgradeableContracts指南。

升級

由于技術上的限制,當你將一個合約升級到新版本時,你不能改變該合約的存儲布局。

這意味著,如果你已經在合約中聲明了一個狀態變量,你就不能刪除它,不能改變它的類型,也不能在它之前聲明其他變量。在我們的Box例子中,這意味著我們只能在value之后添加新的狀態變量。

//contracts/Box.solcontractBox{uint256privatevalue;//Wecansafelyaddanewvariableaftertheoneswehaddeclaredaddressprivateowner;//...}

幸運的是,這種限制只影響狀態變量。你可以隨心所欲地改變合約的功能和事件。

注意如果你不小心弄亂了合約的存儲布局,當嘗試升級時,升級插件提出警告。

前往ModifyingYourContracts指南了解更多限制。

測試

為了測試可升級的合約,我們應該為實現合約創建單元測試,同時創建更高級別的測試,來測試與代理的交互。可以在測試中使用deployProxy,就像我們部署時一樣。

當要升級時,我們應該為新的實現合約創建單元測試,同時創建更高級別的測試,以便在升級后使用upgradeProxy通過代理測試交互,檢查在升級過程中是否保持狀態一致。

接下來的步驟

現在你已經知道如何升級智能合約,并且可以迭代開發你的項目,是時候把你的項目帶到測試網和正式網中去了。你可以放心,如果出現bug,你有工具來修改你的合約并修復它。

_請戳↓“閱讀原文”↓獲取文中鏈接_

免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。

本文來源于非小號媒體平臺:

登鏈社區

現已在非小號資訊平臺發布105篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/9579147.html

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

幣安為何推出第三條鏈?這對BNB意味著什么?

Tags:BOXADEOXYPROgearbox幣v2CARCADE幣OxyO2PROS幣

幣安app官方下載最新版
MGD:幣圈小蝶:幣圈炒幣個人短線操作的技巧,小蝶分享

?短線操作,人們也希望買在低點,賣在高點。但是短線操作,機會稍縱即逝,略微猶豫就會錯失良機。筆者也經常進行短線操作,最初常因為追漲而被迫“站崗”,不得已總是止損出局.

1900/1/1 0:00:00
比特幣:炒幣教父1.12:三天下跌1.3萬美元 牛市行情還在?

隨著今日凌晨的比特幣下跌至3萬關口附近,被套單的朋友已經越來越多。整個凌晨的幣圈就像屏住呼吸一樣,更是讓大批的散戶無法動彈.

1900/1/1 0:00:00
比特幣:灰度重回市場 比特幣將再度上行丨幣鑫

比特幣昨日走了一波沖高回落,高位觸及36643附近,日內價格自凌晨開盤33833位置上行,高位觸及35545附近后承壓回落,下行至33300附近,目前還在不斷下探中.

1900/1/1 0:00:00
USDT:ZT支持波卡生態平行鏈插槽拍賣&開啟波卡狂歡節活動

據悉,波卡生態平行鏈插槽拍賣預計將于2021年第一季度啟動,ZT將全面支持波卡生態插槽拍賣,并將舉辦“波卡生態嘉年華活動”,回饋并激勵廣大用戶參與到波卡生態當中.

1900/1/1 0:00:00
BBK:BBKX關于BTC3L等8個ETF交易對日管理費率調整的公告

親愛的BBKX用戶 平臺已將BTC3L/USDT、BTC3S/USDT、BTC5L/USDT、BTC5S/USDT、ETH3L/USDT、ETH3S/USDT、ETH5L/USDT、ETH5S/.

1900/1/1 0:00:00
比特幣:談喻凱:比特幣以太坊處于調整 多空交易利潤雙邊豐收

本周初比特幣連續下跌,從最高42000美元下跌至最低30416美元,跌幅一度達27.78%,短短兩天之內,加密貨幣的總市值消失了1000億美元左右.

1900/1/1 0:00:00
ads