買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > Gate.io > Info

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

Author:

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

原文鏈接

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

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

為什么升級很重要

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

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

學習如何編寫可升級合約

什么是可升級的合約

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

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

Curve創始人地址將3800萬CRV存入Aave:金色財經報道,據Lookonchain監測,“由于CRV價格下跌16%,Curve創始人地址將3800萬CRV(2450萬美元)存入Aave。他總共向Aave存入2.9億CRV(1.87億美元),并借入7100萬美元的穩定幣。”[2023/6/10 21:28:21]

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

部署一個新版本的合約

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

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

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

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

Coinbase資助原告就美財政部制裁Tornado Cash一事提交了簡易判決動議:金色財經報道,Coinbase首席法務官paulgrewal.eth發推表示,此前Coinbase宣布資助由六人對美國財政部制裁Tornado Cash的行為提起的訴訟,現在原告提交了一份簡易判決動議,要求法院重新開放TornadoCash。其主要論點包括:Tornado Cash不是外國國民或“人”,而是軟件;根據法律規定,政府只能制裁一個人的財產;制裁違反了第一修正案等。[2023/4/6 13:47:28]

使用升級插件來升級合約

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

deployProxy將創建以下事務;

STEPN與HypeSaints將合作推出限量版聯名運動鞋、NFT和商品:2月20日消息,STEPN宣布與HypeSaints達成合作,雙方將共同推出限量版聯名運動鞋、NFT和商品。

據悉,HypeSaints是去年12月MOOAR Launchpad第1季的獲勝者,其NFT系列主要圍繞On-chain Story Gameboy和NFS(Non Fungible Stories)概念構建。[2023/2/20 12:18:08]

部署執行合約

部署ProxyAdmin合約

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

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

//contracts/Box

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

Hedera將在其分布式網絡上推出封裝AI NFT:金色財經報道,Hedera 公共分布式網絡將推出封裝人工智能 NFT,據悉該功能是歐洲深度科技初創公司 Humans.ai 與總部位于阿聯酋的咨詢公司 Deca4 合作在 Hedera 的人工智能區塊鏈 Alverse 上開發,后續還會與 Hedera 鏈上眾多項目進行整合,首個集成的項目是 AI 視頻生成工具 Klon,該項目目前處于封閉測試階段,用戶獲得 AI NFT 后可以解鎖特定功能,比如在視頻中設定特殊語音等。(prnewswire)[2023/2/3 11:45:36]

首先需要安裝升級插件。

安裝HardhatUpgrades插件。

npminstall--save-dev

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

2022中國VR 50強企業公布,百度位居榜首:11月15日消息,在2022世界VR產業大會開幕式上,虛擬現實產業聯盟名譽理事長、中國工程院院士趙沁平發布“2022中國VR 50強企業”名單,百度、HTC、歌爾股份、PICO等入選。

其中,百度位居榜首,并已連續四屆入選“中國VR 50強企業”榜單。百度副總裁馬杰表示,百度希壤將打造一個元宇宙的基礎設施平臺,幫助合作伙伴去快速構建自己的元宇宙。[2022/11/15 13:07:34]

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意味著什么?

Tags:BOXTORADEProxyMegaShiboX InuTORAvader幣最新價格ProxyNode

Gate.io
比特幣:面對瀑布 科學操作_HEX

往事成風,吹不散眉彎;執念起起落落,漫過年華。 歡迎關注鄉野老夫! 本內容中的信息及數據來源于公開可獲得資料,力求消息準確可靠,但對于資料的完整度及完全準確性不做保證.

1900/1/1 0:00:00
SWAP:1.12灰度恢復增持 是否再度引起大餅爆拉?_Just for Decentralization

楚漢財金:1.12灰度恢復增持是否再度引起大餅爆拉?-八寶飯區塊鏈據數據,從灰度去年12月22日宣布暫停接受新投資至今日恢復增持.

1900/1/1 0:00:00
OTB:Hotbit 定于2021年1月15日上線 LIBFX(libermx)_BIT

尊敬的用戶: Hotbit即將在開啟LIBFX數字資產服務。 具體安排如下: 充值時間:2021年01月15日14:00交易時間:2021年01月15日16:00(香港時間)提現時間:2021年.

1900/1/1 0:00:00
XCH:1.12 BTC午間簡評_btcs幣最新消息

行情觀點:小時級別來看,大餅午夜24:00跌破下軌支撐觸底30408一線反彈震蕩上升,早間7時遇阻35628.3一線回調,二次觸底反彈,一路震蕩走高,K線連續6連陽.

1900/1/1 0:00:00
AVE:一文瞭解頭部 DeFi 專案以及去中心化金融的真正可實施性_waves幣行情

2020年,由于COVID-19蔓延引發的經濟危機,導致世界金融體系面臨的問題越來越多。大國當局實行量化寬鬆的貨幣政策,導致貨幣價值下降,公眾對貨幣失去信心.

1900/1/1 0:00:00
OTB:Hotbit 定于2021年1月15日上線EURS(Stasis Eurs)_hotcoinglobal不能用了

尊敬的用戶: Hotbit即將在開啟EURS數字資產服務,并開放EURS理財產品。預計年化收益:10%;計息:T1.

1900/1/1 0:00:00
ads