比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > UNI > Info

OpenZeppelin Upgrades 教程 : 在 Hardhat 下如何進行合約升級

Author:

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

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny熊

使用OpenZeppelinUpgrades插件部署的智能合約可以被升級,可以在保留其地址、狀態和余額下,修改其合約代碼,同時。這允許你迭代地將新功能添加到項目中,或修復你在生產中可能發現的任何錯誤。

在本教程中,我們將展示使用OpenZeppelinHardhatUpgrades和GnosisSafe多簽錢包,進行合約創建、測試和部署,以及使用GnosisSafe多簽升級,教程包含以下內容:

創建一個可升級的合約

在本地測試該合約

將合約部署到公共網絡上

將升級的控制權轉移到Gnosis多簽賬號中

創建新的實現版本

在本地測試升級

部署新的實現

升級合約

設置環境

我們將首先創建一個新的npm項目。

mkdirmycontract&&cdmycontractnpminit-y

我們將安裝Hardhat。運行Hardhat時,選擇創建一個空的hardhat

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

在本地測試合約

記得應該始終適當地測試我們編寫的合約。為了測試可升級的合約,我們應該為實現合約創建單元測試,同時創建更高級別的測試,以測試通過代理的交互。

Blur發布版稅更新政策,包括推薦不使用OpenSea:金色財經報道,據Blur官推發布公告,該NFT市場宣布更新版稅政策,其中概述了創作者版稅一些選擇,每一種都會對Blur、創作者和OpenSea(Blur競爭獨守)產生不同的影響,主要涉及四種情況:1、如果藏品不使用Block,將無法禁止零版稅或可選版稅市場,在這種情況下,Blur將收取0.5%的版稅,而OpenSea則是可選版稅;2、Block Blur,任何禁止Blur或其他零版稅/版稅可選市場的NFT項目都將在OpenSea上被強制執行版稅,但交易仍可以在Blur上進行,需要收取最低0.5%的版稅;3、Blur推薦不使用OpenSea,Blur希望創作者不使用OpenSea,任何不使用OpenSea的NFT項目在Blur上都會被強制執行全額版稅;4、Blur要求OpenSea取消對Blur上NFT項目設置可選版稅的設置,如果OpenSea取消該政策,NFT項目將可以同時在兩個平臺上收取版稅。目前NFT項目創作者無法同時在Blur和OpenSea上收取版稅,只能在OpenSea或Blur兩者之一收取全部版稅,但不能同時收取。[2023/2/16 12:09:38]

我們在測試中使用chaiexpect,所以也需要安裝以下:

npminstall--save-devchai

我們將為實現合約創建單元測試。在項目根目錄下創建一個test目錄,然后在test目錄下創建Box

);//Testcaseit('retrievereturnsavaluepreviouslystored',asyncfunction(){//Storeavalueawaitbox

StarkNet生態游戲集成平臺Cartridge發布預覽圖,包含Dope Wars等游戲:7月29日消息,StarkNet生態游戲集成平臺Cartridge在推特發布預覽圖。圖中顯示其平臺集成Dope Wars、briq、Realms、Topology、MatchboxDAO、No Game等游戲。[2022/7/29 2:46:36]

);});

我們還可以創建通過代理進行交互的測試。注意:我們不需要在這里重復我們的單元測試,這是為了測試代理交互和測試升級。

在你的test目錄下使用以下JavaScript創建Box

);//Testcaseit('retrievereturnsavaluepreviouslyinitialized',asyncfunction(){//Testifthereturnedvalueisthesameone//Notethatweneedtousestringstocomparethe256bitintegersexpect((awaitbox

);});

然后我們可以運行測試:

$npxhardhattestDownloadingcompiler0

main()

);

我們通常會先將合約部署到本地測試,然后手動與之交互。為了節省時間,將跳過直接部署到公共測試網絡。

在本教程中,將部署到Rinkeby網絡。如果你在配置方面需要幫助,請參閱連接到公共測試網絡和Hardhat:部署到真實網絡。注意:任何如助記符或AlchemyAPI密鑰都不應提交到版本控制中。

易凱資本官方22周年特別紀念版數字藏品正式發行并已上架OpenSea:金色財經報道,易凱資本官方正式發行22周年校友會特別紀念版數字藏品,本套數字藏品包括22款經典款和“5+1”隱藏款,共計發行1102個,其中經典款707個,隱藏款395個。除了贈與易凱校友、現同事們,易凱資本還為投資人和合作伙伴們預留了100個稀缺的隱藏款藏品。據悉,這套數字藏品已上架OpenSea。[2022/4/27 5:13:49]

我們將使用以下hardhat

main()

);

我們可以在Rinkeby網絡上運行轉移:

$npxhardhatrun--networkrinkebyscripts/transfer_ownership

//Readsthelaststoredvaluefunctionretrieve()publicviewreturns(uint256){returnvalue;}//Incrementsthestoredvalueby1functionincrement()public{value=value1;emitValueChanged(value);}}

在本地測試升級

為了測試我們的升級,我們應該為新的實現合約創建單元測試,同時創建更高級別的測試,以測試通過代理進行的交互,檢查狀態是否在不同版本的升級中得到維護......

我們將為新的實現合約創建單元測試。我們可以添加到我們已經創建的單元測試中,以確保高覆蓋率。在你的test目錄下使用以下JavaScript創建BoxV2

DeFi平臺Developer獲200萬美元種子輪融資:3月14日消息,UGC+DAO聚合策略DeFi平臺 Developer 宣布獲200萬美元種子輪融資,泰坦資本領投。Developer致力于成為Web 2和Web 3之間的金融智能橋梁,其主網將在今年上線。(投行VCPE部落)[2022/3/14 13:55:56]

);//Testcaseit('retrievereturnsavaluepreviouslystored',asyncfunction(){//StoreavalueawaitboxV2

);//Testcaseit('retrievereturnsavaluepreviouslyincremented',asyncfunction(){//IncrementawaitboxV2

);});

還可以創建升級后通過代理進行交互的測試。注意:我們不需要在這里重復單元測試,僅測試代理交互和測試升級后的狀態。

在你的test目錄下創建BoxV2

);//Testcaseit('retrievereturnsavaluepreviouslyincremented',asyncfunction(){//IncrementawaitboxV2

);});

然后我們可以運行我們的測試。

$npxhardhattestCompiling1filewith0

main()

);

我們可以在Rinkeby網絡上運行遷移,部署新的實現:

跨鏈聚合協議OpenOcean宣布集成Fantom鏈上DEX Rango:2月10日消息,跨鏈聚合協議 OpenOcean 宣布,Fantom 鏈上多鏈 DEX 聚合器 Rango 已集成 OpenOcean API,此舉將為用戶提供更好的用戶體驗。[2022/2/11 9:43:52]

$npxhardhatrun--networkrinkebyscripts/prepare_upgrade.jsPreparingupgrade...BoxV2at:0xE8f000B7ef04B7BfEa0a84e696f1b792aC526700

升級合約

為了在GnosisSafe中管理升級,使用OpenZeppelin應用。

首先,我們需要代理的地址和新實現的地址。我們可以從我們運行deploy.js和prepare_upgrade.js腳本時的輸出中得到這些。

在Apps標簽中,選擇OpenZeppelin應用程序,在合約地址欄中粘貼代理的地址,并在新實現地址欄中粘貼新實現的地址。

該應用程序應該顯示合約是EIP1967兼容的。

GnosisSafeOpenZeppelinUpgrade

仔細檢查這些地址,然后按下升級按鈕。我們將看到一個確認對話框,提交交易。

GnosisSafeOpenZeppelinUpgradeConfirm

然后,需要在MetaMask中簽署該交易。

現在可以與升級后的合約進行交互。需要使用代理的地址與BoxV2交互。注意:BoxV2.attach(PROXYADDRESS)獲取我們代理合約的地址。

然后,我們可以調用新的increment函數,可以觀察到整個升級過程中狀態保持了一致:

$npxhardhatconsole--networkrinkeby>constBoxV2=awaitethers.getContractFactory("BoxV2")undefined>constboxV2=awaitBoxV2.attach("0xFF60fd044dDed0E40B813DC7CE11Bed2CCEa501F")undefined>(awaitboxV2.retrieve()).toString()'42'>awaitboxV2.increment(){hash:...>(awaitboxV2.retrieve()).toString()'43'

接下來

我們已經創建了一個可升級的合約,將升級的控制權轉移到Gnosis多簽,并升級了合約。同樣的過程也可以在主網上進行。注意:我們應該首先在公共測試網中測試升級。

我們也可以使用OpenZeppelinDefender管理升級,參考:https://docs.openzeppelin.com/defender/admin#upgrades

本翻譯由CellETF贊助支持。

來源:https://forum.openzeppelin.com/t/openzeppelin-upgrades-step-by-step-tutorial-for-hardhat/3580

參考資料

登鏈翻譯計劃:https://github.com/lbc-team/Pioneer

翻譯小組:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

GnosisSafe:https://learnblockchain.cn/article/2980

Hardhat:https://learnblockchain.cn/docs/hardhat/getting-started/

OpenZeppelin學習教程:https://docs.openzeppelin.com/learn/developing-smart-contracts#setting-up-a-solidity-project

initialize函數而不是構造函數:https://docs.openzeppelin.com/learn/upgrading-smart-contracts#initialization

連接到公共測試網絡:https://docs.openzeppelin.com/learn/connecting-to-public-test-networks

Hardhat:部署到真實網絡:https://learnblockchain.cn/docs/hardhat/tutorial/deploying-to-a-live-network.html

Rinkeby網絡上為自己創建一個GnosisSafe:https://rinkeby.gnosis-safe.io/

CreateaSafeMultisig:https://help.gnosis-safe.io/en/articles/3876461-create-a-safe-multisig

升級技術的限制更多細節,可以看這里:https://docs.openzeppelin.com/learn/upgrading-smart-contracts#upgrading

https://docs.openzeppelin.com/defender/admin#upgrades:_https://docs.openzeppelin.com/defender/admin#upgrades_

CellETF:https://celletf.io/?utm_souce=learnblockchain

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

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

登鏈社區

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

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

入駐指南:

/apply_guide/

本文網址:

/news/10404921.html

免責聲明:

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

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

上一篇:

每周編輯精選WeeklyEditors'Picks

Tags:PENOPENRETBOXBPENG幣OpenAI ERCCRETH2mbox幣怎么樣

UNI
中幣開放JASMY提幣業務_比特幣

尊敬的中幣用戶: ????中幣現已開放JASMY提幣業務。感謝您對中幣的支持與信任! 中幣運營團隊 2021年10月15日 中幣(ZB)市場研究報告:比特幣價格或將繼續上漲:據中幣(ZB)市場研.

1900/1/1 0:00:00
吳說每周礦業資訊:礦池紛紛聲明 北美算力劇增 1011-1017_ITA

吳說作者|ColinWu本期編輯|ColinWu1.吳說獲悉,據CNBC報道,礦池FoundryUSA的數據顯示,美國BTC算力有19.9%位于紐約州,18.7%位于肯塔基州.

1900/1/1 0:00:00
Gate.io 已開啟POLI/USDT新版流動性礦池獎勵(自動做市商AMM模式),新增額外限時獎勵421,470 POLI_GAT

POLI/USDT新版流動性礦池獎勵已正式上線,交易市場50%手續費收益將新增投入到流動獎金池中;Taker和Maker手續費即日起調整至0.3%(不支持點卡抵扣).

1900/1/1 0:00:00
Gate.io 將進行 BTC 以及USDT 結算永續合約升級公告(周三 23:00)

Gate.io將于2021年10月20日23:00~23:59進行BTC,USDT結算的永續合約引擎升級,時間約為1小時.

1900/1/1 0:00:00
Gate.io 已開啟COMBO、SERO、ARGON、CHESS、CHAIN新版流動性礦池獎勵(自動做市商AMM模式),今日年化收益率高達5007.73%_HTT

今日,COMBO、SERO、ARGON、CHESS、CHAIN已正式上線USDT、ETH交易池,并開啟新版流動性礦池獎勵.

1900/1/1 0:00:00
LUFFY INU (LUFFY)_LUFFY

一、項目介紹 LUFFY是ETH鏈上的通貨緊縮代幣,旨在建立一個基于動漫的NFT市場,并將動漫迷帶到NFT/加密領域。LUFFY是一個NFT協議,旨在破壞動漫和漫畫行業.

1900/1/1 0:00:00
ads