比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

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

Author:

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

原文鏈接

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

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

為什么升級很重要

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

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

學習如何編寫可升級合約

什么是可升級的合約

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

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

數據:Blend交易總額突破20億美元,較六月底增長一倍:9月4日消息,據Dune數據顯示,Blur旗下NFT借貸協議Blend交易總額已突破20億美元,現為2,016,986,212美元。目前,Blend已累計撮合超18.2萬筆貸款交易,獨立借款用戶5,182個,獨立貸款用戶2,919個,當前活躍NFT貸款交易總量為3,064筆,活躍貸款總額為7,575枚ETH。[2023/9/4 13:16:09]

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

部署一個新版本的合約

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

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

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

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

Gala Games擬于5月15日推出v2升級,并將1:1進行新代幣替換:4月18日消息,區塊鏈游戲平臺Gala Games將于5月15日推出v2升級,新增功能包括增強的刻錄機制、安全性增強和未來的可升級性。用戶必須在5月15日快照之前從任何流動性池或智能合約中移除GALA,官方已安排所有在以太坊上持有GALA(v1)的用戶直接1:1自動接收新的GALA(v2)代幣,此后GALA(v1)將不再受支持。[2023/4/18 14:09:48]

使用升級插件來升級合約

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

deployProxy將創建以下事務;

部署執行合約

部署ProxyAdmin合約

沃爾瑪提交“山姆俱樂部”商標申請,涵蓋AR、VR等虛擬商品及服務:4月5日消息,美國零售巨頭沃爾瑪的子公司沃爾瑪阿波羅已于 3 月 30 日在美國提交了“山姆俱樂部”(Sam's Club)的商標申請,涵蓋了與虛擬、增強和混合現實體驗相關的廣泛娛樂服務,以及用于用戶交互和娛樂目的的虛擬環境。

據悉,商標申請內容包括虛擬現實內容和數據的電子傳輸、在線虛擬和增強現實環境,以及各種類別的虛擬商品,如電子產品、電器、家居裝飾、體育用品等,還包括虛擬和增強現實環境中的體能訓練與教育服務。今年2月,山姆會員店為涉及虛擬貨幣、加密貨幣和 NFT 的服務申請了商標。[2023/4/5 13:46:02]

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

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

//contracts/Box

dYdX:平臺所有以USDC支付的頭寸、抵押品和資金都將以美元計價:3月11日消息,去中心化衍生品交易平臺 dYdX 在社交媒體上發文表示,鑒于最近圍繞硅谷銀行發生的事件,dYdX 決定將繼續以 USDC 的實際美元價格來運行,不假設 USDC = USD。

dYdX 對此解釋稱,與任何地方持有的 USDC 一樣,如果發生 USDC 貶值,所有以 USDC 支付的頭寸、抵押品和資金都會以美元計價。交易商不會因 USDC-USD 價格變化而被清算。資金支付將繼續正常運作,交易者以 USDC 的實際價值進行支付。[2023/3/11 12:56:02]

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

首先需要安裝升級插件。

Immutable Games Studio已解雇多名區塊鏈游戲設計師:金色財經報道,據高級游戲設計師詹姆斯韋克漢姆(James Wakeham)在社交媒體披露,Immutable Games Studio 已經解雇了包括他在內的多名員工。Immutable Games Studio是以太坊二層解決方案Immutable X背后的公司,推出過多個區塊鏈游戲,包括NFT卡牌游戲Gods Unchained、以及和即將推出的移動動作角色扮演游戲Guild of Guardians,此前以25億美元估值完成了2億美元融資。[2022/7/27 2:40:05]

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

Tags:BOXUSDProxyPROdefibox幣價格FLUSD價格ProxyNodePROT價格

火必交易所
關于WBF上線BTCST的公告_TCS

尊敬的用戶: BTCST將在WBF創新區上線BTCST/USDT交易對,具體時間安排如下:交易時間:2021-1-1216:00 項目介紹: BTCST是平臺的原生BEP-20功能型代幣.

1900/1/1 0:00:00
火幣網注冊教程 火幣下載_火幣app

隨著區塊鏈行業的飛速發展,對于我們來說,又有一次新的機遇和挑戰在我們面前,投資比特幣等數字貨幣是一次全新的投資機遇,那么選擇一家靠譜的數字貨幣交易平臺至關重要。這里小編推薦火幣網.

1900/1/1 0:00:00
LOEx|1月12日行情研報:BTC高位震蕩,注意節奏_ELLO

一、 據金十消息,美國做空機構JCapitalResearch稱,已經做空了部分數字貨幣。 二、 以太坊2.0質押地址余額超過240萬枚.

1900/1/1 0:00:00
“區塊鏈 數字身份” 道路坎坷前途光明_FUTU

中國已全面進入建設數字經濟的新時代,數字身份認證與管理及用戶隱私保護已成為數字經濟發展不可回避的核心問題之一.

1900/1/1 0:00:00
炒幣教父1.13:不定行情 灰度和機構何時再次進場?_區塊鏈

最近基本每天都有兩到三個不等的利好消息面,不管是目前很多機構還在繼續等著買進比特幣還是灰度即將開始買進,但是教父想說的是沒有任何人與機構都不會傻到行情還未下跌完就出手要來接韭菜的盤.

1900/1/1 0:00:00
Terra USD (UST)交易市場新增交易對_USD

親愛的庫幣用戶 我們非常榮幸的宣布,庫幣將新增TerraUSD(UST)交易市場將新增并支持以下6個交易對:現有交易對:BTC/UST,ETH/UST,USDT/UST.

1900/1/1 0:00:00
ads