原文鏈接
使用OpenZeppelin升級插件部署的智能合約可以通過升級來修改代碼,同時保留原合約地址、狀態和余額。這讓幫助我們為項目添加新功能,或修復在生產中可能發現的任何錯誤。
在本指南中,我們將學習:
為什么升級很重要
使用升級插件升級我們的盒子。
了解升級在引擎蓋下是如何工作的
學習如何編寫可升級合約
什么是可升級的合約
以太坊中的智能合約默認情況下是不可更改的。一旦創建了就無法改變,有效地為合約參與者扮演了不可篡改的合約的角色。
然而某些場景下,我們希望能夠修改它們。想想傳統合約:如果參與雙方都同意改變它,就可以去對齊進行改變。同樣在以太坊上,我們也希望能夠修改智能合約,以修復他們發現的bug,增加額外的功能,或者僅僅是改變它所執行的規則。
OKX Web3錢包現已接入BTC L2網絡Stacks Network:6月3日消息,據官方消息,OKX Web3錢包現已正式接入比特幣Layer2網絡 Stacks Network,STX是Stacks Network的原生代幣, 用戶可使用OKX Web3 錢包app端管理自己的STX資產。此外OKX Web3錢包即將支持Ordinals NFT交易、STX&BRC20 Staking等。
據了解,OKX Web3錢包是首個支持Ordinals市場的多鏈APP錢包,已支持BRC-20代幣交易、BTC跨鏈Swap等功能。當前,OKX Web3錢包Ordinals市場0交易手續費。[2023/6/4 11:56:26]
以下是你需要做的事情,以修復你無法升級的合約中的錯誤。
部署一個新版本的合約
手動將所有的狀態從舊的合約遷移到新的合約
Sui生態DEX Cetus:Token目前僅在Sui上發布且尚未流通,用戶交易前需辨別真偽:5月10日消息,構建在Sui與Aptos生態的DEX與集中流動性協議Cetus發布公告稱,許多假冒的CETUS在不同的鏈上發行,有些已經開始交易。請用戶注意CETUS目前僅在Sui上發布且尚未流通,在采取任何行動之前,應仔細確認官方網站和社交媒體上的信息。[2023/5/10 14:54:12]
更新所有與舊合約交互的合約,使用新合約的地址
聯系你的所有用戶,并說服他們開始使用新的部署
為了避免出現這種亂象,我們將合約升級直接內置到我們的插件中。這讓我們可以改變合約代碼,同時保留狀態、余額和地址。讓我們來看看如何實現。
使用升級插件來升級合約
使用OpenZeppelin升級插件中的deployProxy部署一個新的合約時,該合約實例就可以實現可升級的功能。默認情況下,只有最初部署合約的地址才有權限執行升級操作。
NFT市場LooksRare V2上線,協議費用將削減75%:4月7日消息,NFT市場LooksRare官方宣布V2版本上線,旨在進一步降低平臺協議費用和Gas費用,以和Blur、OpenSea Pro展開競爭。根據LooksRare披露的信息顯示,LooksRare V2的協議費用將大幅削減75%(從2%降至0.5%),Gas費用將減少50%,賣家也將會直接收到ETH而不是此前的WETH。此外,LooksRare還表示新版本允許在單筆交易中一次性批量列出和購買超過70種NFT,且交易將支持可重復使用的簽名。[2023/4/7 13:49:19]
deployProxy將創建以下事務;
部署執行合約
部署ProxyAdmin合約
部署代理合約并運行初始化函數
讓我們看看它是如何工作的,通過部署我們的Box合約的可升級版本,使用與之前部署時相同的設置:
FTX新任CEO:Alameda債權人在灰度中持倉價值約為2.9億美元:3月8日,FTX 新任 CEO John J. Ray III 表示,雖然 Alameda 業務記錄可能不完整,但仍發現了一些灰度信托持倉:Alameda 債權人至少擁有 22,166,720 股比特幣信托和至少 6,318,384 股的以太坊信托。
截至 2023 年 3 月 3 日,這些份額在二級市場的價值約為 2.9 億美元。而 SBF 在 11 月發布的 FTX/Alameda 資產負債表僅列出了大約 330 萬美元的 GBTC。[2023/3/8 12:48:53]
//contracts/Box
//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}}
國家級區塊鏈新型基礎設施,“星火?鏈網”測試網開放:金色財經報道,據中國信通院消息,為更好的服務星火生態合作伙伴,加速“星火?鏈網”生態的開放進程,“星火?鏈網”開放了主鏈測試網接入,并開發了測試網節點 Quicknode 的節點鏡像程序。
其中,Quiknode 作為“星火?鏈網”測試網的節點可以同步測試網的全量數據,開發者通過 Docker 部署 Quicknode,即可參與維護測試網絡運行,并可基于本地的“星火?鏈網”測試網賬本進行 DApp 的開發。[2023/2/20 12:16:30]
首先需要安裝升級插件。
安裝HardhatUpgrades插件。
npminstall--save-dev
在創建Solidity文件后,我們現在使用upgradeProxy函數升級之前部署的實例。
upgradeProxy將創建以下事務:
部署執行合約
調用ProxyAdmin來更新代理合約以應用新的實現
創建一個腳本,使用upgradeProxy將Box合約升級為使用BoxV2。把這個文件保存為scripts/upgrade_box
main();
然后就可以部署我們的可升級合約。
使用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意味著什么?
?炒幣風險大但收益高,該不該炒幣?對于炒幣來說,能夠發財的只有兩種情況:第一、運氣足夠好,資金足夠大,踏上了一波主升浪,發財;第二、就是直接是莊家,坐莊這個幣種.
1900/1/1 0:00:00尊敬的用戶: FIRO和SNX分別將于近期進行主網升級。HuobiGlobal支持相關升級,并將于2021年1月13日21:00(GMT8)暫停FIRO和SNX的充幣和提幣業務.
1900/1/1 0:00:00幣圈的人都知道一句話,趨勢看漲,好吧,既然趨勢看漲,那這句話我就不分析了...在幣圈,你只有抓住了極端的行情,你就抓住了成功的尾巴,那么不出意外的話,你肯定是賺錢的在幣圈生財的人.
1900/1/1 0:00:00Gate.io已上線“Startup上線通道”,為給優質初創項目提供更為快捷的上幣通道,和給予用戶提供早期投資機會.
1900/1/1 0:00:00親愛的AEX安銀小伙伴:FIRO于FIRO網絡區塊高度336,888進行硬分叉及網絡升級,AEX安銀于2021年01月13日17:00關閉FIRO(原XZC)充提功能,期間交易不受影響.
1900/1/1 0:00:00木頭姐的團隊招攬來自五湖四海、背景各異的分析師,其中有癌癥科學家,人工智能專家,游戲工程師,甚至船長.
1900/1/1 0:00:00