原文鏈接
使用OpenZeppelin升級插件部署的智能合約可以通過升級來修改代碼,同時保留原合約地址、狀態和余額。這讓幫助我們為項目添加新功能,或修復在生產中可能發現的任何錯誤。
在本指南中,我們將學習:
為什么升級很重要
使用升級插件升級我們的盒子。
了解升級在引擎蓋下是如何工作的
學習如何編寫可升級合約
什么是可升級的合約
以太坊中的智能合約默認情況下是不可更改的。一旦創建了就無法改變,有效地為合約參與者扮演了不可篡改的合約的角色。
然而某些場景下,我們希望能夠修改它們。想想傳統合約:如果參與雙方都同意改變它,就可以去對齊進行改變。同樣在以太坊上,我們也希望能夠修改智能合約,以修復他們發現的bug,增加額外的功能,或者僅僅是改變它所執行的規則。
A股收盤:深證區塊鏈50指數下跌3.76%:金色財經消息,A股收盤,上證指數報3150.62點,收盤下跌1.48%,深證成指報10872.3點,收盤下跌1.68%,深證區塊鏈50指數報3290.59點,收盤下跌3.76%。區塊鏈板塊收盤下跌4.11%,數字貨幣板塊收盤下跌4.59%。[2023/6/26 22:00:31]
以下是你需要做的事情,以修復你無法升級的合約中的錯誤。
部署一個新版本的合約
手動將所有的狀態從舊的合約遷移到新的合約
更新所有與舊合約交互的合約,使用新合約的地址
聯系你的所有用戶,并說服他們開始使用新的部署
為了避免出現這種亂象,我們將合約升級直接內置到我們的插件中。這讓我們可以改變合約代碼,同時保留狀態、余額和地址。讓我們來看看如何實現。
Uniswap創始人要求開發人員為DeFi協議更新做出貢獻:金色財經報道,上周,Uniswap 公布了其去中心化交易協議的第四次迭代。該推文包含指向代碼早期版本的鏈接以及“社區反饋和貢獻”的邀請。自宣布以來,DeFi 行業的領先交易所受到了批評。
Uniswap創始人Hayden Adams回應稱,可用的源代碼是對v4代碼的最好描述。DeFi以其實驗性質而自豪,它通常包括在彼此之上構建的項目,甚至分叉現有代碼的一部分以用于另一個應用程序。這種做法允許一個可組合的項目網絡利用以前的成功,但也帶來了問題。
Adams將自己的處境描述為進退兩難,無法同時取悅理論家和實用主義者。雖然Uniswap v4提案可能會受到開源社區的抨擊,但許多其他領先的DeFi協議在相同的BSL設置下運行。[2023/6/20 21:48:23]
使用升級插件來升級合約
使用OpenZeppelin升級插件中的deployProxy部署一個新的合約時,該合約實例就可以實現可升級的功能。默認情況下,只有最初部署合約的地址才有權限執行升級操作。
南京江北新區召開元宇宙產業生態大會:3月30日消息,近日,由江蘇省工業和信息化廳、江蘇省通信管理局指導,南京江北新區管理委員會、中國電子學會主辦的2023中國元宇宙產業生態大會正式開幕。開幕式上成立了“元宇宙產業智庫”,旨在發揮專家的技術支持和智力支撐作用,提高元宇宙產業領域發展規劃、項目孵育工作水平;江蘇省通信學會發布了《元宇宙產業鏈生態發展白皮書》,白皮書總結了元宇宙產業發展現狀,梳理了元宇宙技術體系與產業鏈各環節發展情況,分析了各地發展現狀和產業發展存在問題,提出了若干措施建議;舉行了“江蘇元宇宙產業與應用研究院”揭牌儀式,助力江北新區元宇宙產業發展,打開江北新區數字經濟發展新局面。[2023/3/30 13:36:01]
deployProxy將創建以下事務;
部署執行合約
部署ProxyAdmin合約
部署代理合約并運行初始化函數
ZKP硬件初創公司Ulvetanna完成1500萬美元融資:金色財經報道,零知識證明 (ZKP) 硬件公司Ulvetanna以5500萬美元估值完成1500萬美元種子輪融資,Bain Capital Crypto和Paradigm領投,Jump Crypto參投。該輪股權融資于去年6月結束。
據悉,Ulvetanna正在構建旨在加速生成 ZKP 過程的硬件,ZKP 是一種加密的身份驗證方法,可在不泄露所述信息內容的情況下證明特定信息。在加密領域,這項技術歷來被用于區塊鏈網絡的擴展解決方案,尤其是以太坊。[2023/1/19 11:21:07]
讓我們看看它是如何工作的,通過部署我們的Box合約的可升級版本,使用與之前部署時相同的設置:
//contracts/Box
//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}}
Cardano生態NFT市場JPG Store集成MoonPay支付服務:7月9日消息,Cardano生態最大的NFT市場JPG Store宣布將MoonPay支付服務集成至其平臺中。通過新的解決方案,用戶將能夠直接使用他們的銀行卡以及ApplePay或GooglePay購買ADA代幣。這意味著,投資者將能夠在JPG Store上購買基于Cardano的NFT,而無需離開該市場。
同時,JPG Store指出,通過MoonPay購買ADA只適用于某些地區,特別是針對美國用戶。MoonPay本身需要完成KYC程序,使用該服務時最好使用借記卡。(U.Today)[2022/7/10 2:02:50]
首先需要安裝升級插件。
安裝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意味著什么?
全國“不動產+區塊鏈”進程2020年1月1日,北京正式實行不動產登記電子證照。不動產登記電子證照種類包括《不動產權證書》和《不動產登記證明》,所有不動產登記電子證照已通過區塊鏈技術實現防偽數據存.
1900/1/1 0:00:00原文標題:盾2020年年度數字貨幣反洗錢報告之金融革新玩出花式DeFi攻擊篇DeFi正處于一個紛亂的戰國時代。2020年被稱為“DeFi元年”,全球涌現出上百個DeFi項目展開競爭.
1900/1/1 0:00:001月14日,檢察日報發布《從預防犯罪視角對私人數字貨幣實施刑法規制》。文章指出,為了維護貨幣的發行和流通秩序,世界上大多數國家都通過刑法來規范與貨幣相關的行為,同時用刑罰來懲罰涉及貨幣的犯罪行為.
1900/1/1 0:00:00鏈聞消息,基于幣安智能鏈的去中心化穩定幣系統Venus宣布支持CAN抵押借貸,12時30分開始,已有價值1.57億美元的CAN代幣轉入Venus平臺.
1900/1/1 0:00:00硬核預警,建議有技術基礎的同學使用~近日比特幣核心客戶端發布了新的一個大版本,這次發布主要帶來了Schnorr簽名Taproot技術.
1900/1/1 0:00:00隨著國內數字人民幣測試的正式展開,越來越多的人開始關注央行數字貨幣給社會經濟帶來的變化。其中,央行數字貨幣在跨境支付、國際清結算方面的影響最引人關注.
1900/1/1 0:00:00